|
|
@@ -1,181 +0,0 @@
|
|
|
-# coding:utf-8
|
|
|
-import os
|
|
|
-import sys
|
|
|
-import time
|
|
|
-local_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
|
|
|
-if local_path not in sys.path:
|
|
|
- sys.path.append(local_path)
|
|
|
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "kedong.settings")
|
|
|
-from django.conf import settings
|
|
|
-from kedong.tools import RedisPool
|
|
|
-from scripts.tools.utils import dashuju_pub_mqtt
|
|
|
-
|
|
|
-
|
|
|
-cbd_redis_pool = RedisPool().get_redis_pool(settings.redis_db["cbd"])
|
|
|
-
|
|
|
-
|
|
|
-def re_cbd_publish(payload):
|
|
|
- if settings.DEBUG:
|
|
|
- return None
|
|
|
-
|
|
|
- imei_id = payload['imei_id']
|
|
|
- at, ah = payload['at'], payload['ah']
|
|
|
- try:
|
|
|
- at = str(round(float(at)))
|
|
|
- except ValueError as e:
|
|
|
- at = "25"
|
|
|
- try:
|
|
|
- ah = str(round(float(ah)))
|
|
|
- except ValueError as e:
|
|
|
- print('at_error', e, payload)
|
|
|
- ah = "30"
|
|
|
-
|
|
|
- publics = "/yfkj/cbd/sub/#"
|
|
|
-
|
|
|
- TASK_TOPIC = publics.replace("#", imei_id)
|
|
|
- payload_1 = {"cmd": "sensor", "ext": {"new_hum": ah, "new_tem": at}}
|
|
|
- dashuju_pub_mqtt(TASK_TOPIC, payload_1)
|
|
|
-
|
|
|
-
|
|
|
-def re_pub_cbd_publish(data):
|
|
|
- if settings.DEBUG:
|
|
|
- return None
|
|
|
-
|
|
|
- imei_id = data['imei_id']
|
|
|
- payload = data['payload']
|
|
|
- TASK_TOPIC = ""
|
|
|
- if TASK_TOPIC:
|
|
|
- dashuju_pub_mqtt(TASK_TOPIC, payload)
|
|
|
-
|
|
|
-
|
|
|
-class CbdDeviceController(DeviceController):
|
|
|
-
|
|
|
- def cbd_device(self, data):
|
|
|
- table_name = "sa_device_cbd_data"
|
|
|
- DEVICE_NAME = "测报灯"
|
|
|
- DTYPE = 3
|
|
|
- serverconf = ''
|
|
|
- payload = data['payload']
|
|
|
- imei_id = data['imei_id']
|
|
|
-
|
|
|
- re_cbd_publish(data)
|
|
|
- re_pub_cbd_publish(data)
|
|
|
-
|
|
|
- ext = payload["ext"]
|
|
|
- dver_num = ext.get("dver", "")
|
|
|
- # 0-手动,1-GPS,2-基站
|
|
|
- gps = ext["gps"]
|
|
|
- lng, lat = data['lng'], data['lat']
|
|
|
-
|
|
|
- device_code = 0
|
|
|
- try:
|
|
|
- device_code = int(ext.get("vtype", 0))
|
|
|
- except Exception as e:
|
|
|
- pass
|
|
|
-
|
|
|
- now_time = int(time.time())
|
|
|
- device_config = {
|
|
|
- "cmd": "paramconf",
|
|
|
- "ext": {
|
|
|
- "hst": ext.get("hst", "0"),
|
|
|
- "collt": ext.get("collt", ""),
|
|
|
- "et": ext.get("et", ""),
|
|
|
- "datt": ext.get("dat_f", 30),
|
|
|
- "shake_sec": ext.get("shake_sec", 1),
|
|
|
- "tpl": ext.get("tpl", 5),
|
|
|
- "shake": ext.get("shake", 0),
|
|
|
- "tph": ext.get("tph", 0),
|
|
|
- "ts": ext.get("ts", 0),
|
|
|
- "st": ext.get("st", 0),
|
|
|
- "htim": ext.get("htim", 0),
|
|
|
- "tt": ext.get("tt", 0),
|
|
|
- "ds": ext.get("ds", 0),
|
|
|
- "ws": ext.get("ws", 0),
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- temp_dict = {
|
|
|
- 'device_id': imei_id,
|
|
|
- 'device_type_id': DTYPE,
|
|
|
- 'dver_num': dver_num,
|
|
|
- 'addtime': now_time,
|
|
|
- 'uptime': now_time,
|
|
|
- 'device_name': DEVICE_NAME,
|
|
|
- 'lng': lng,
|
|
|
- 'lat': lat,
|
|
|
- 'gps': gps,
|
|
|
- 'serverconf': serverconf,
|
|
|
- 'device_status': 1,
|
|
|
- 'device_code': device_code
|
|
|
- }
|
|
|
- return temp_dict, device_config, table_name
|
|
|
-
|
|
|
- def xct_device(self, data):
|
|
|
- """吸虫塔设备"""
|
|
|
- table_name = "sa_device_xct_data"
|
|
|
- DEVICE_NAME = "吸虫塔"
|
|
|
- # 设备类型id
|
|
|
- DTYPE = 12
|
|
|
-
|
|
|
- serverconf = ''
|
|
|
- payload = data['payload']
|
|
|
- imei_id = data['imei_id']
|
|
|
-
|
|
|
- re_cbd_publish(data)
|
|
|
-
|
|
|
- ext = payload["ext"]
|
|
|
- dver_num = ext["dver"]
|
|
|
- # 0-手动,1-GPS,2-基站
|
|
|
- gps = ext["gps"]
|
|
|
- lng, lat = data["lng"], data["lat"]
|
|
|
- now_time = int(time.time())
|
|
|
- device_config = {
|
|
|
- "cmd": "paramconf",
|
|
|
- "ext": {
|
|
|
- "dat_f": ext.get("dat_f", 30), # 数据上传时间
|
|
|
- "shake_sec": ext["shake_sec"], # 震动时间
|
|
|
- "shake": ext["shake"], # 震动开关, 1开启 0关闭
|
|
|
- "ds": ext["ds"], # 设备开关机,1开机,0关机
|
|
|
- "dver": ext["dver"], # 版本号
|
|
|
- "st": ext["st"],
|
|
|
- "et": ext["et"],
|
|
|
- }
|
|
|
- }
|
|
|
- temp_dict = {
|
|
|
- 'device_id': imei_id, 'device_type_id': DTYPE, 'dver_num': dver_num,
|
|
|
- 'addtime': now_time, 'uptime': now_time, 'device_name': DEVICE_NAME,
|
|
|
- 'lng': lng, 'lat': lat, 'gps': gps, 'serverconf': serverconf, 'device_status': 1,
|
|
|
- 'device_code': DTYPE
|
|
|
- }
|
|
|
-
|
|
|
- return temp_dict, device_config, table_name
|
|
|
-
|
|
|
- def make_device_config(self, data):
|
|
|
- payload = data['payload']
|
|
|
- ext = payload["ext"]
|
|
|
- try:
|
|
|
- vtype = int(ext["vtype"])
|
|
|
- if vtype == 6:
|
|
|
- return self.xct_device(data)
|
|
|
- except Exception as e:
|
|
|
- pass
|
|
|
- return self.cbd_device(data)
|
|
|
-
|
|
|
-
|
|
|
-if __name__ == "__main__":
|
|
|
- # 正常消息订阅
|
|
|
- PUBLICS = "/yfkj/cbd/pub/#"
|
|
|
- # 离线消息订阅
|
|
|
- OFFLINE = "/yfkj/cbd/offline/#"
|
|
|
- cbd = CbdDeviceController()
|
|
|
- key = "/yfkj/cbd"
|
|
|
- while True:
|
|
|
- try:
|
|
|
- data = cbd_redis_pool.bpop(key)
|
|
|
- now_time = int(time.time())
|
|
|
- create_time = data['create_time']
|
|
|
- if now_time - create_time > 3600:
|
|
|
- continue
|
|
|
- cbd.device_controller(data)
|
|
|
- except Exception as e:
|
|
|
- print(e)
|