主题订阅和数据下发


在小鹏AIoT系统中,约定“数据订阅主题”为物联网系统向设备端下发数据的端点。
主题订阅和数据下发的流程大致如下:
1. 设备端订阅主题,并设置订阅回调的处理程序;
2. 物联网系统手动下发数据或由规则触发自动下发数据;

示例程序

下面给出DHT11温湿传感器上报数据的示例程序:

(请参考"设备端接入(ESP32)"小节让设备能正确接入)

###################################
# 用物联网系统控制LED
# author: billy_zh@126.com
###################################
import wifi
import mqtt
import json
import time
from machine import Pin

# 数据订阅主题
SUB_TOPIC = b'user/******/ctrl'

# wifi 连接
wifi.connect()
# mqtt 连接
mqtt_client = mqtt.connect()

# LED
led = Pin(21, Pin.OUT)

####################
# 消息处理
####################
def on_message(topic, msg):
    try:
        payload = msg.decode();
        print('从{topic}接收到消息, data:{data}'.format(topic=topic.decode(), data=payload))
        
        dict = json.loads(payload)
        val = dict['data']['value']

        led.value(val)
            
    except Exception as e:
        print(f"消息接收出现错误:{e}")

if __name__ == "__main__":

    mqtt_client.set_callback(on_message)
    mqtt_client.subscribe(SUB_TOPIC)

    ####################
    # 主循环
    ####################
    while True:
        try:
            mqtt_client.check_msg()
            time.sleep(1)  
        except Exception as e:
            print(f"消息发送出现错误:{e}")
            mqtt_client = mqtt.connect()

数据包格式

小鹏AIoT系统下发数据包不限定格式,建议采用JSON格式,本例数据格式下:

{
    "data": {
        "value": 1
    }
}
value为1时点亮LED;为0时熄灭LED


数据订阅主题

在设备详情页,可以查看设备的数据订阅主题

主题订阅和数据下发

查看订阅者和下发数据

进入设备详情页,点击“订阅”标签,即可查看订阅者。

点击“发布数据”按钮即可手动下发数据

主题订阅和数据下发

输入要下发的数据内容,点击“发布”,

设备端接收到数据并进行处理。

由规则触发自动发布数据

请参考【规则引擎】小节。