华为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

python 复制代码
# 设备发送消息到平台,又用户自定义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)

同时,正确的代码实例:

python 复制代码
# 发送用户自定义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"}]}

                               )

即可运行成功:

相关推荐
YYHPLA几秒前
【无标题】
java·spring boot·后端·缓存
木易 士心2 分钟前
加密与编码算法全解:从原理到精通(Java & JS 实战版)
java·javascript·算法
Run_Teenage2 分钟前
Linux:硬链接与软链接
linux·运维·服务器
专注于大数据技术栈2 分钟前
java学习--ArrayList
java·学习
C_心欲无痕3 分钟前
为什么前端项目部署需要 nginx 或 Apache?
前端·nginx·apache
编程大师哥5 分钟前
JavaEE初阶的核心组件
java·java-ee
华如锦6 分钟前
MongoDB作为小型 AI智能化系统的数据库
java·前端·人工智能·算法
每日出拳老爷子6 分钟前
【浏览器方案】只用浏览器访问的内网会议系统设计思路(无客户端)
运维·服务器·webrtc·实时音视频·流媒体
bug总结6 分钟前
单点登录总结速通
前端
tianxinw8 分钟前
uniapp x + vue3 实现echarts图表
前端·uni-app·vue·echarts