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

                               )

即可运行成功:

相关推荐
青衫码上行12 小时前
SpringBoot多环境配置
java·spring boot·后端·学习
爬山算法12 小时前
Hibernate(54)Hibernate中的批量更新如何实现?
java·后端·hibernate
Elieal12 小时前
零基础入门 WebSocket:从原理到 Java 实战
java·websocket·网络协议
敲敲了个代码12 小时前
前端指纹技术是如何实现的?(Canvas、Audio、硬件API 核心原理解密)
前端·javascript·学习·算法·面试·web
老毛肚12 小时前
Spring 4.0 Spring MVC。
java·spring·mvc
sheji341612 小时前
【开题答辩全过程】以 某高校教学仪器设备管理系统设计与开发为例,包含答辩的问题和答案
java
Amumu1213812 小时前
Vue简介
前端·javascript·vue.js
放逐者-保持本心,方可放逐12 小时前
React核心组件 及 钩子函数应用
前端·javascript·react.js·非阻塞更新·延迟更新·同步更新
小宇的天下12 小时前
Calibre nmDRC-H 层级化 DRC
java·服务器·前端
毕设源码-钟学长12 小时前
【开题答辩全过程】以 面向社区的网上书店为例,包含答辩的问题和答案
java