| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657 |
- # -*- coding: utf-8 -*-
- # File Name:mqtt_chat_client.py
- # Python Version:3.5.1
- import os
- import django
- import sys
- BASE_DIR = os.path.dirname(os.path.abspath(__file__)) # 定位到你的django根目录
- sys.path.append(os.path.abspath(os.path.join(BASE_DIR, os.pardir)))
- os.environ.setdefault("DJANGO_SETTINGS_MODULE",
- "yfwlw_pro.settings") # project_name 项目名称
- django.setup()
- print("<-----python_mqtt_client_qxz is run----->")
- import paho.mqtt.client as mqtt
- import json
- from apps.AppInfoManage.models import Equip, Equip_type, MyUser, Alarm_record, QXZdata, QXZstatus, QXZswitchstatus, QXZswitchdata, QXZAutoswitch, QXZTimingswitch, QXZstatus_New, \
- QXZdata_New, QXZ_Conf, QXZ_Default_Conf, QXZ_Base_Info, QXZ_Info_Record
- import re
- import datetime
- from apps.ReportManage.all_dict import qxz_dict
- class CJSONEncoder(json.JSONEncoder):
- def default(self, obj):
- if isinstance(obj, datetime):
- return obj.strftime('%Y-%m-%d %H:%M:%S')
- elif isinstance(obj, date):
- return obj.strftime('%Y-%m-%d')
- else:
- return json.JSONEncoder.default(self, obj)
- # 连接后的操作: 0为成功
- def on_connect(client, userdata, flags, rc):
- # print("Connected with result code "+str(rc))
- client.subscribe("/yfkj/qxz/pub/#")
- client.subscribe("/yfkj/qxz/offline/#")
- # *****成功发布******
- def on_publish(msg, rc):
- if rc == 0:
- print("publish success,msg = "+msg)
- # 从服务器接受到消息后回调此函数 :
- def on_message(client, userdata, msg):
- print('\r')
- print('=================================================')
- print('\r')
- print("<-----topic:\n" + msg.topic + ';\n')
- print("Message:\n" + str(msg.payload) + "----->\n")
- # 从主题中获取imei
- # imei = msg.topic[14:len(msg.topic)]
- imei = re.sub("\D", "", msg.topic)
- print("<-----imei:", imei, "----->")
- try:
- # 判断主题:
- if "pub" in msg.topic:
- # 将json字符串解析:
- payload = json.loads(msg.payload.decode())
- qxz_exist = Equip.objects.filter(equip_id=imei)
- if payload.get("cmd") == "terminalData":
- print("<-----uploading data!----->")
- extdata = payload.get("ext")
- print(type(extdata))
- qxzdata = extdata['data']
- print(qxzdata)
-
- e1 = ''
- e2 = ''
- e3 = ''
- e4 = ''
- e5 = ''
- e6 = ''
- e7 = ''
- e8 = ''
- e9 = ''
- e10 = ''
- e11 = ''
- e12 = ''
- e13 = ''
- e14 = ''
- e15 = ''
- e16 = ''
- e17 = ''
- e18 = ''
- e19 = ''
- e20 = ''
- e21 = ''
- e22 = ''
- e23 = ''
- e24 = ''
- e25 = ''
- e26 = ''
- e27 = ''
- e28 = ''
- e29 = ''
- e30 = ''
-
-
- conf1 = ''
- conf2 = ''
- conf3 = ''
- conf4 = ''
- conf5 = ''
- conf6 = ''
- conf7 = ''
- conf8 = ''
- conf9 = ''
- conf10 = ''
- conf11 = ''
- conf12 = ''
- conf13 = ''
- conf14 = ''
- conf15 = ''
- conf16 = ''
- conf17 = ''
- conf18 = ''
- conf19 = ''
- conf20 = ''
- conf21 = ''
- conf22 = ''
- conf23 = ''
- conf24 = ''
- conf25 = ''
- conf26 = ''
- conf27 = ''
- conf28 = ''
- conf29 = ''
- conf30 = ''
- for i in qxzdata:
- if i['eNum'] == "102" and float(i['eValue']) > 100:
- i['eValue'] = "100"
- if i['eKey'] == 'e1':
- e1 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf1 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e1[0] == "#":
- continue
- elif i['eKey'] == 'e2':
- e2 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf2 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e2[0] == "#":
- continue
- elif i['eKey'] == 'e3':
- e3 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf3 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e3[0] == "#":
- continue
- elif i['eKey'] == 'e4':
- e4 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf4 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e4[0] == "#":
- continue
- elif i['eKey'] == 'e5':
- e5 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf5 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e5[0] == "#":
- continue
- elif i['eKey'] == 'e6':
- e6 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf6 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e6[0] == "#":
- continue
- elif i['eKey'] == 'e7':
- e7 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf7 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e7[0] == "#":
- continue
- elif i['eKey'] == 'e8':
- e8 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf8 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e8[0] == "#":
- continue
- elif i['eKey'] == 'e9':
- e9 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf9 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e9[0] == "#":
- continue
- elif i['eKey'] == 'e10':
- e10 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf10 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e10[0] == "#":
- continue
- elif i['eKey'] == 'e11':
- e11 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf11 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e11[0] == "#":
- continue
- elif i['eKey'] == 'e12':
- e12 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf12 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e12[0] == "#":
- continue
- elif i['eKey'] == 'e13':
- e13 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf13 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e13[0] == "#":
- continue
- elif i['eKey'] == 'e14':
- e14 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf14 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e14[0] == "#":
- continue
- elif i['eKey'] == 'e15':
- e15 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf15 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e15[0] == "#":
- continue
- elif i['eKey'] == 'e16':
- e16 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf16 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e16[0] == "#":
- continue
- elif i['eKey'] == 'e17':
- e17 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf17 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e17[0] == "#":
- continue
- elif i['eKey'] == 'e18':
- e18 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf18 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e18[0] == "#":
- continue
- elif i['eKey'] == 'e19':
- e19 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf19 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e19[0] == "#":
- continue
- elif i['eKey'] == 'e20':
- e20 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf20 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e20[0] == "#":
- continue
- elif i['eKey'] == 'e21':
- e21 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf21 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e21[0] == "#":
- continue
- elif i['eKey'] == 'e22':
- e22 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf22 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e22[0] == "#":
- continue
- elif i['eKey'] == 'e23':
- e23 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf23 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e23[0] == "#":
- continue
- elif i['eKey'] == 'e24':
- e24 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf24 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e24[0] == "#":
- continue
- elif i['eKey'] == 'e25':
- e25 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf25 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e25[0] == "#":
- continue
- elif i['eKey'] == 'e26':
- e26 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf26 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e26[0] == "#":
- continue
- elif i['eKey'] == 'e27':
- e27 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf27 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e27[0] == "#":
- continue
- elif i['eKey'] == 'e28':
- e28 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf28 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e28[0] == "#":
- continue
- elif i['eKey'] == 'e29':
- e29 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf29 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e29[0] == "#":
- continue
- elif i['eKey'] == 'e30':
- e30 = str(i['eValue']) + '#' + str(i['eNum']) + '#' + str(i['eKey'])
- conf30 = qxz_dict[i['eNum']][1] + '#' + qxz_dict[i['eNum']][2]
- if e30[0] == "#":
- continue
-
- # print("extdata:", extdata)
- # 设备存在,进一步判断状态表是否存在:
- if qxz_exist.exists():
- print("<-----this equip is existed!----->")
- try:
- e_id = Equip.objects.get(equip_id=imei)
- except:
- print("<-----this equip didn't exist!----->")
- try:
- # 设备数据表直接储存数据
- # QXZdata.objects.create(equip_id=e_id, qxz_data=extdata)
- QXZdata_New.objects.create(equip_id_id=e_id,
- e1=e1,e2=e2,e3=e3,e4=e4,e5=e5,e6=e6,e7=e7,e8=e8,e9=e9,e10=e10,
- e11=e11,e12=e12,e13=e13,e14=e14,e15=e15,e16=e16,e17=e17,e18=e18,e19=e19,e20=e20,
- e21=e21,e22=e22,e23=e23,e24=e24,e25=e25,e26=e26,e27=e27,e28=e28,e29=e29,e30=e30)
- print("<-----data update success!----->")
- except:
- print("<-----data update failed!----->")
-
- if QXZstatus_New.objects.filter(equip_id=imei).exists():
- print("<-----this equip's status is existed!----->")
- try:
- sta = QXZstatus_New.objects.get(equip_id=imei)
-
- sta.e1 = e1
- sta.e2 = e2
- sta.e3 = e3
- sta.e4 = e4
- sta.e5 = e5
- sta.e6 = e6
- sta.e7 = e7
- sta.e8 = e8
- sta.e9 = e9
- sta.e10 = e10
- sta.e11 = e11
- sta.e12 = e12
- sta.e13 = e13
- sta.e14 = e14
- sta.e15 = e15
- sta.e16 = e16
- sta.e17 = e17
- sta.e18 = e18
- sta.e19 = e19
- sta.e20 = e20
- sta.e21 = e21
- sta.e22 = e22
- sta.e23 = e23
- sta.e24 = e24
- sta.e25 = e25
- sta.e26 = e26
- sta.e27 = e27
- sta.e28 = e28
- sta.e29 = e29
- sta.e30 = e30
- sta.is_online = "1"
- sta.upl_time = datetime.datetime.now()
- sta.save()
- print("<-----status update success!----->")
- except:
- print("<-----status update failed!----->")
- else:
- # 设备状态表不存在、创建状态表:
- print("<-----this equip's status is not existed!----->")
- try:
-
- QXZstatus_New.objects.create(equip_id_id=e_id,
- e1=e1,e2=e2,e3=e3,e4=e4,e5=e5,e6=e6,e7=e7,e8=e8,e9=e9,e10=e10,
- e11=e11,e12=e12,e13=e13,e14=e14,e15=e15,e16=e16,e17=e17,e18=e18,e19=e19,e20=e20,
- e21=e21,e22=e22,e23=e23,e24=e24,e25=e25,e26=e26,e27=e27,e28=e28,e29=e29,e30=e30,is_online="1")
-
- # QXZstatus.objects.create(equip_id=e_id, qxz_status=extdata)
- print("<-----this equip's status table re-create successed!----->")
- except:
- print("<-----this equip's status table re-create failed!----->")
- # 判断标题配置表
- if QXZ_Conf.objects.filter(equip_id=e_id).exists():
- print("------conf create default-------")
- else:
- QXZ_Conf.objects.create(equip_id_id=e_id,
- e1=conf1,e2=conf2,e3=conf3,e4=conf4,e5=conf5,e6=conf6,e7=conf7,e8=conf8,e9=conf9,e10=conf10,
- e11=conf11,e12=conf12,e13=conf13,e14=conf14,e15=conf15,e16=conf16,e17=conf17,e18=conf18,e19=conf19,e20=conf20,
- e21=conf21,e22=conf22,e23=conf23,e24=conf24,e25=conf25,e26=conf26,e27=conf27,e28=conf28,e29=conf29,e30=conf30)
- QXZ_Default_Conf.objects.create(equip_id_id=e_id,
- e1=conf1,e2=conf2,e3=conf3,e4=conf4,e5=conf5,e6=conf6,e7=conf7,e8=conf8,e9=conf9,e10=conf10,
- e11=conf11,e12=conf12,e13=conf13,e14=conf14,e15=conf15,e16=conf16,e17=conf17,e18=conf18,e19=conf19,e20=conf20,
- e21=conf21,e22=conf22,e23=conf23,e24=conf24,e25=conf25,e26=conf26,e27=conf27,e28=conf28,e29=conf29,e30=conf30)
- print("------conf create success-------")
- # 设备状态表存在、刷新状态表:
- print("2222222")
-
-
- else:
- print("<-----this equip not existed!----->")
- # 设备不存在,在设备列表中创建:
- equip_t = Equip_type.objects.get(type_id=5)
- try:
- e_id = Equip.objects.create(equip_id=imei, equip_type=equip_t)
- print("<-----this imei add successed!----->")
- try:
- # 设备数据表直接储存数据
- QXZdata_New.objects.create(equip_id_id=e_id,
- e1=e1,e2=e2,e3=e3,e4=e4,e5=e5,e6=e6,e7=e7,e8=e8,e9=e9,e10=e10,
- e11=e11,e12=e12,e13=e13,e14=e14,e15=e15,e16=e16,e17=e17,e18=e18,e19=e19,e20=e20,
- e21=e21,e22=e22,e23=e23,e24=e24,e25=e25,e26=e26,e27=e27,e28=e28,e29=e29,e30=e30)
- # QXZdata.objects.create(equip_id=e_id, qxz_data=extdata)
- print("<-----data update success!----->")
- except:
- print("<-----data update failed!----->")
- try:
- QXZstatus_New.objects.create(equip_id_id=e_id,
- e1=e1,e2=e2,e3=e3,e4=e4,e5=e5,e6=e6,e7=e7,e8=e8,e9=e9,e10=e10,
- e11=e11,e12=e12,e13=e13,e14=e14,e15=e15,e16=e16,e17=e17,e18=e18,e19=e19,e20=e20,
- e21=e21,e22=e22,e23=e23,e24=e24,e25=e25,e26=e26,e27=e27,e28=e28,e29=e29,e30=e30,is_online="1")
- # QXZstatus.objects.create(equip_id=e_id, qxz_status=extdata)
- print("<-----this imei register successed!----->")
- except:
- print("<-----this imei register failed!----->")
-
- # 判断标题配置表
- if QXZ_Conf.objects.filter(equip_id=e_id).exists():
- print("------conf create default-------")
- else:
- QXZ_Conf.objects.create(equip_id_id=e_id,
- e1=conf1,e2=conf2,e3=conf3,e4=conf4,e5=conf5,e6=conf6,e7=conf7,e8=conf8,e9=conf9,e10=conf10,
- e11=conf11,e12=conf12,e13=conf13,e14=conf14,e15=conf15,e16=conf16,e17=conf17,e18=conf18,e19=conf19,e20=conf20,
- e21=conf21,e22=conf22,e23=conf23,e24=conf24,e25=conf25,e26=conf26,e27=conf27,e28=conf28,e29=conf29,e30=conf30)
- QXZ_Default_Conf.objects.create(equip_id_id=e_id,
- e1=conf1,e2=conf2,e3=conf3,e4=conf4,e5=conf5,e6=conf6,e7=conf7,e8=conf8,e9=conf9,e10=conf10,
- e11=conf11,e12=conf12,e13=conf13,e14=conf14,e15=conf15,e16=conf16,e17=conf17,e18=conf18,e19=conf19,e20=conf20,
- e21=conf21,e22=conf22,e23=conf23,e24=conf24,e25=conf25,e26=conf26,e27=conf27,e28=conf28,e29=conf29,e30=conf30)
- print("------conf create success-------")
-
-
- except Exception as e:
- print(e)
- print("<-----this imei add failed!----->")
- # elif payload.get("cmd") == "control":
- # # extdata = eval(payload.get("ext"))["runStatus"]
- # extdata = payload.get("ext")['runStatus']
- # print("extdata:", extdata)
- # # 设备存在,进一步判断开关表是否存在:
- # if qxz_exist.exists():
- # print("<-----this equip is existed!----->")
- # try:
- # e_id = Equip.objects.get(equip_id=imei)
- # except:
- # print("<-----this equip didn't exist!----->")
- # if QXZswitchstatus.objects.filter(equip_id=imei).exists():
- # print("<-----this switch status is existed!----->")
- # try:
- # sta = QXZswitchstatus.objects.get(equip_id=imei)
- # sta.qxz_switch=extdata
- # sta.save()
- # print("<-----switchstatus update success!----->")
- # except:
- # print("<-----switchstatus update failed!----->")
- # else:
- # # 设备开关表不存在、创建开关表:
- # print("<-----this switch switchstatus is not existed!----->")
- # try:
- # QXZswitchstatus.objects.create(equip_id=e_id, qxz_switch=extdata)
- # print("<-----this switchstatus table re-create successed!----->")
- # except:
- # print("<-----this switchstatus table re-create failed!----->")
- # # 气象站开关自定义名字表
- # if QXZswitchdata.objects.get(equip_id=imei).qxz_switch_data != "[]":
- # print("<-----this switchdata is existed!----->")
- # else:
- # # 设备开关配置表不存在、创建开关配置表:
- # print("<-----this switch switchdata is not existed!----->")
- # extdata = payload.get("ext")['runStatus']
- # data = []
- # for i in extdata:
- # print(i["JK"])
- # data.append({"JK":i["JK"],"name":""})
- # print(data)
- # try:
- # QXZswitchdata.objects.create(equip_id=e_id, qxz_switch_data=data)
- # print("<-----this switchdata table re-create successed!----->")
- # except Exception as e:
- # print(e)
- # print("<-----this switchdata table re-create failed!----->")
- # elif payload.get("cmd") == "auto":
- # # extdata = eval(payload.get("ext"))["runStatus"]
- # extdata = payload.get("ext")['runStatus']
- # print("extdata:", extdata)
- # # 设备存在,进一步判断阈值表是否存在:
- # if qxz_exist.exists():
- # print("<-----this equip is existed!----->")
- # try:
- # e_id = Equip.objects.get(equip_id=imei)
- # except:
- # print("<-----this equip didn't exist!----->")
- # if QXZAutoswitch.objects.filter(equip_id=imei).exists():
- # print("<-----this autoswitch is existed!----->")
- # try:
- # sta = QXZAutoswitch.objects.get(equip_id=imei)
- # sta.qxz_auto=extdata
- # sta.save()
- # print("<-----switchstatus update success!----->")
- # except:
- # print("<-----switchstatus update failed!----->")
- # else:
- # # 设备阈值表不存在、创建阈值表:
- # print("<-----this switch autoswitch is not existed!----->")
- # try:
- # QXZAutoswitch.objects.create(equip_id=e_id, qxz_auto=extdata)
- # print("<-----this autoswitch table re-create successed!----->")
- # except:
- # print("<-----this autoswitch table re-create failed!----->")
-
- # elif payload.get("cmd") == "timing":
- # extdata = payload.get("ext")['setTime']
- # print("extdata:", extdata)
- # # 设备存在,进一步判断定时表是否存在:
- # if qxz_exist.exists():
- # print("<-----this equip is existed!----->")
- # try:
- # e_id = Equip.objects.get(equip_id=imei)
- # except:
- # print("<-----this equip didn't exist!----->")
- # if QXZTimingswitch.objects.filter(equip_id=imei).exists():
- # print("<-----this timingstatus is existed!----->")
- # try:
- # sta = QXZTimingswitch.objects.get(equip_id=imei)
- # sta.qxz_timing=extdata
- # sta.save()
- # print("<-----timingstatus update success!----->")
- # except:
- # print("<-----timingstatus update failed!----->")
- # else:
- # # 设备阈值表不存在、创建阈值表:
- # print("<-----this switch timingstatus is not existed!----->")
- # try:
- # QXZTimingswitch.objects.create(equip_id=e_id, qxz_timing=extdata)
- # print("<-----this timingstatus table re-create successed!----->")
- # except:
- # print("<-----this timingstatus table re-create failed!----->")
- elif payload.get("cmd") == "Status":
- extdata = payload.get("ext")['terminalStatus']
- print(extdata)
- try:
- volt = extdata["VOLT"]
- rssi = extdata["RSSI"]
- iccid = extdata["ICCID"]
- lng = extdata["longitude"]
- lat = extdata["latitude"]
- led = extdata["Dotled"]
-
- except:
- pass
- try:
- dver = extdata["Version"]
- except:
- dver = ""
- if qxz_exist.exists():
- print("<-----this equip is existed!----->")
- try:
- e_id = Equip.objects.get(equip_id=imei)
- except:
- print("<-----this equip didn't exist!----->")
- QXZ_Info_Record.objects.create(equip_id=e_id, volt=volt,rssi=rssi)
- if QXZ_Base_Info.objects.filter(equip_id=imei).exists():
- print("<-----this qxz_base_info is existed!----->")
- try:
- sta = QXZ_Base_Info.objects.get(equip_id=imei)
- sta.volt = volt
- sta.rssi = rssi
- sta.iccid = iccid
- sta.lng = lng
- sta.lat = lat
- sta.led = led
- sta.dver = dver
- sta.save()
- sta1 = QXZstatus.objects.get(equip_id=imei)
- sta1.lng = lng
- sta1.lat = lat
- sta1.save()
- print("<-----qxz_base_info update success!----->")
- except:
- print("<-----qxz_base_info update failed!----->")
- try:
- sta = QXZ_Base_Info.objects.get(equip_id=imei)
- sta.volt = volt
- sta.rssi = rssi
- sta.save()
- print("<-----qxz_base_info update success!!!----->")
- except:
- pass
- else:
- # 设备阈值表不存在、创建阈值表:
- print("<-----this qxz_base_info is not existed!----->")
- try:
- QXZ_Base_Info.objects.create(equip_id=e_id, volt=volt,rssi=rssi,iccid=iccid,lng=lng,lat=lat,led=led)
- print("<-----this qxz_base_info table re-create successed!----->")
- except:
- print("<-----this qxz_base_info table re-create failed!----->")
- # 离线消息:
- elif "offline" in msg.topic:
- try:
- # 将json字符串解析:
- payload = json.loads(msg.payload.decode())
- if payload.get("cmd") == "offline":
- print("<-----离线消息!----->")
- print("%s is offline!" % imei)
- qxz_exist = Equip.objects.filter(equip_id=imei)
- # 设备存在,进一步判断状态表是否存在:
- if qxz_exist.exists():
- try:
- e_id = Equip.objects.get(equip_id=imei)
- # now_time = json.dumps(datetime.datetime.now(), cls=CJSONEncoder)
- # 更新状态表中未离线状态:
- QXZstatus_New.objects.filter(equip_id=imei).update(is_online = '0',off_time = datetime.datetime.now())
- # 创建预警记录:
- Alarm_record.objects.create(equip_id=e_id, alarm_desc="{'status':0,'type':'offline'}",e_type="2")
- print("update offline ok!")
- except:
- print("update offline failed!")
- else:
- print("this imei is not exist!")
- elif payload.get("cmd") == "online":
- print("<-----在线消息!----->")
- print("%s is offline!" % imei)
- qxz_exist = Equip.objects.filter(equip_id=imei)
- # 设备存在,进一步判断状态表是否存在:
- if qxz_exist.exists():
- try:
- e_id = Equip.objects.get(equip_id=imei)
- # now_time = json.dumps(datetime.datetime.now(), cls=CJSONEncoder)
- # 更新状态表中未离线状态:
- QXZstatus_New.objects.filter(equip_id=imei).update(is_online = '1')
- # 创建预警记录:
- Alarm_record.objects.create(equip_id=e_id, alarm_desc="{'status': 'relink', 'type': 'dev_sta'}",e_type="5")
- print("update online ok!")
- except:
- print("update online failed!")
- else:
- print("this imei is not exist!")
- except:
- pass
- except Exception as e:
- print(e)
- pass
- if __name__ == '__main__':
- client = mqtt.Client(
- client_id="PY_MQTT_CLIENTC_QXZ_NEW",
- clean_session=True,
- userdata=None,
- # protocol=MQTTv311,# 数据库版本
- )
- # 必须设置,否则会返回「Connected with result code 4」
- client.username_pw_set("admin", "password")
- client.on_connect = on_connect
- client.on_message = on_message
- HOST = "127.0.0.1"
- client.connect(HOST, 1883, 60)
- client.loop_forever()
|