华为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"}]}

                               )

即可运行成功:

相关推荐
zfj3211 分钟前
Linux内核和发行版的的区别、职责
linux·运维·服务器·内核·linux发行版
自由生长20249 分钟前
为什么我们需要流式系统?
前端
北辰alk14 分钟前
从零设计一个Vue路由系统:揭秘SPA导航的核心原理
前端·vue.js
廋到被风吹走15 分钟前
【Spring】Spring Cache 深度解析
java·后端·spring
计算机毕设VX:Fegn089525 分钟前
计算机毕业设计|基于springboot + vue个人博客系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
鱼鱼块33 分钟前
彻底搞懂 React useRef:从自动聚焦到非受控表单的完整指南
前端·react.js·面试
2501_9466756435 分钟前
Flutter与OpenHarmony打卡轮播图组件
java·javascript·flutter
`林中水滴`37 分钟前
Linux Shell 命令:nohup、&、>、bg、fg、jobs 总结
linux·服务器·microsoft
appearappear39 分钟前
阿里云同区域不同账户下两个服务器打通内网
服务器·阿里云·云计算
helloworddm41 分钟前
防止应用多开-WPF
服务器·架构·c#