import os import sys import django import paho.mqtt.client as mqtt import logging import json from django.conf import settings BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) sys.path.insert(0, BASE_DIR) os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'server.settings') django.setup() _logger = logging.getLogger('log') def on_connect(mqttc, userdata, flags, rc, properties): if rc == 0: _logger.info('Mqtt Connected successfully') if settings.KING_ENABLED: # 订阅亚控的mqtt转发 mqttc.subscribe('datachange_S_KIO_Project') # 订阅主题 _logger.info('订阅亚控主题成功') else: _logger.error('Mqtt Bad connection. Code:', rc) def on_message(mqttc: mqtt, userdata, msg): print(f'Received message on topic: {msg.topic} with payload: {msg.payload}') topic = msg.topic payload = json.loads(msg.payload) if topic == 'datachange_S_KIO_Project': print(payload) mqttc.publish('testtopic/#', 'ok') def start_mqtt(): if settings.MQTT_ENABLE: client = mqtt.Client(callback_api_version=mqtt.CallbackAPIVersion.VERSION2, client_id=settings.BASE_PROJECT_CODE) client.on_connect = on_connect client.on_message = on_message # client.enable_logger(_logger) client.connect(host=settings.MQTT_HOST,port=settings.MQTT_PORT) client.loop_forever() if __name__ == '__main__': start_mqtt()