# -*- coding: utf-8 -*- # !/usr/bin/env python import os import sys import uuid from django.conf import settings PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..') sys.path.insert(0, PROJECT_ROOT) os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'configs.production') from script.base import init_env init_env(False) from apps.web.device.models import Device from apps.web.core.networking import MessageSender from apps.web.constant import Const from apps.web.core.mqtt_client import MqttClient import simplejson as json mqttc1883 = None mqttc1884 = None try: def on_connect(client, userdata, flags, rc): pass def on_message(mqttc, obj, msg): # type: (MqttClient, object, json)->None imei = msg.topic.split('/')[1] device = Device.get_dev(imei) if device['driverCode'] == '900100': return MessageSender.send(device, 202, {'debug': False}) def on_disconnect(client, userdata, self): print('exit. client = %s' % str(client)) mqttc1883 = MqttClient(client_id = 'webapp_' + str(uuid.uuid1())) try: mqttc1883.on_message = on_message mqttc1883.on_connect = on_connect mqttc1883.on_disconnect = on_disconnect mqttc1883.username_pw_set(settings.MQTT_USER, settings.MQTT_PSWD) mqttc1883.connect(settings.MQTT_HOSTNAME, 1883, 60) mqttc1883.subscribe('server/+/log', Const.MQTT_QOS) mqttc1883.loop_forever() except Exception as e: print(e) mqttc1884 = MqttClient(client_id = 'webapp_' + str(uuid.uuid1())) try: mqttc1884.on_message = on_message mqttc1884.on_connect = on_connect mqttc1884.on_disconnect = on_disconnect mqttc1884.username_pw_set(settings.MQTT_USER, settings.MQTT_PSWD) mqttc1884.connect(settings.MQTT_HOSTNAME, 1884, 60) mqttc1884.subscribe('server/+/log', Const.MQTT_QOS) mqttc1884.loop_forever() except Exception as e: print(e) finally: if mqttc1883: mqttc1883.loop_stop() mqttc1883.disconnect() mqttc1883.close() if mqttc1884: mqttc1884.loop_stop() mqttc1884.disconnect() mqttc1884.close() print('finished')