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

                               )

即可运行成功:

相关推荐
小钰能吃三碗饭1 分钟前
第五篇:【React 性能优化秘籍】让你的应用丝滑流畅,告别卡顿!
前端·javascript·react.js
Zww08912 分钟前
vue3+vite+ts使用daisyui/tailwindcss
前端·vue.js·postcss
kevin不会飞2 分钟前
防抖、节流
前端·javascript
ak啊2 分钟前
Webpack热更新模块-HMR
前端·webpack·源码
Spirited_Away5 分钟前
还在用document.cookie操作cookie吗?试试这个
前端·javascript·面试
Z编程8 分钟前
elemenPlus中,如何去掉el-input中 文本域 textarea自带的边框和角标
前端·javascript·vue.js
独立开阀者_FwtCoder8 分钟前
不要再像我这样使用 React 导入了,试试 Wrapper 模式吧!
前端·javascript·数据库
有诺千金9 分钟前
深入理解 Spring Boot 的@AutoConfiguration注解
java·spring boot·后端
代码吐槽菌10 分钟前
基于SpringBoot的律师事务所案件管理系统【附源码】
java·数据库·spring boot·后端·毕业设计
chxii16 分钟前
6.3es新特性web worker
前端·javascript·ecmascript