factory/apps/mqtt/client.py

44 lines
1.4 KiB
Python

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()