主题订阅和数据下发
在小鹏AIoT系统中,约定“数据订阅主题”为物联网系统向设备端下发数据的端点。
主题订阅和数据下发的流程大致如下:
1. 设备端订阅主题,并设置订阅回调的处理程序;
2. 物联网系统手动下发数据或由规则触发自动下发数据;
主题订阅和数据下发的流程大致如下:
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
数据订阅主题
在设备详情页,可以查看设备的数据订阅主题
查看订阅者和下发数据
进入设备详情页,点击“订阅”标签,即可查看订阅者。
点击“发布数据”按钮即可手动下发数据
输入要下发的数据内容,点击“发布”,
设备端接收到数据并进行处理。
由规则触发自动发布数据
请参考【规则引擎】小节。