华为iotda sdk发送消息无法更新quickstartpython问题解决
问题描述:
华为官方智慧路灯python代码: quickstartpython/IoT_device_demo/message_sample.py上报消息时,无法更新设备数据信息。
经过排查和对比后发现:
传递的数据格式与mqtt.fx不一致,导致平台无法解析。
(排查方式: iotda实例网页--设备管理--设备详情--消息跟踪--查看发送的消息内容发现,多了content字段。同时“流转规则触发”失败 )
解决办法:
把IoT_device/client/IoT_client.py中的payload代码改为:payload = device_message
# 设备发送消息到平台,又用户自定义topic
def __publish_raw_message(self, topic, device_message):
# payload = {"content": device_message}
payload = device_message
payload = json.dumps(payload)
self.__publish_result, _ = self.__client.publish(topic, payload, qos=1)
同时,正确的代码实例:
# 发送用户自定义topic消息 e.g.订阅操作等
iot_client.publish_message(r'$oc/devices/' + str(client_cfg.device_id) + r'/sys/properties/report',
{"services": [
{"service_id": "BasicData", "properties": {"luminance": 20}, "event_time": "null"}]}
)
即可运行成功: