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

                               )

即可运行成功:

相关推荐
哦豁灬6 分钟前
linux查看硬件信息
linux·运维·服务器
傻小胖10 分钟前
路由组件与一般组件的区别
前端·vue.js·react.js
Elena_Lucky_baby12 分钟前
在Vue3项目中使用svg-sprite-loader
开发语言·前端·javascript
m0_7482526013 分钟前
在Linux系统上使用nmcli命令配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)
linux·服务器·网络
raysync88821 分钟前
如何保留企业传输系统操作习惯来实现企业无缝FTP替代升级
运维·服务器·网络
快乐非自愿37 分钟前
一文解秘Rust如何与Java互操作
java·开发语言·rust
小万编程40 分钟前
基于SpringBoot+Vue毕业设计选题管理系统(高质量源码,提供文档,免费部署到本地)
java·vue.js·spring boot·计算机毕业设计·java毕业设计·web毕业设计
重生之搬砖忍者40 分钟前
uniapp使用canvas生成订单小票图片
前端·javascript·canva可画
m0_7482350743 分钟前
使用rustDesk搭建私有远程桌面
java
万水千山走遍TML1 小时前
console.log封装
前端·javascript·typescript·node·log·console·打印封装