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

                               )

即可运行成功:

相关推荐
G***E3163 分钟前
前端路由懒加载实现,Vue Router与React Router
前端·vue.js·react.js
Hard but lovely14 分钟前
linux: udp服务器与客户端 CS 基于ipv4的地址结构体
linux·服务器·udp
leonardee15 分钟前
Android和JAVA面试题相关资料
java·后端
长沙红胖子Qt18 分钟前
公司禅道笔记(一):公网服务器centos6上成功部署禅道20.8版本
服务器·禅道·研发管理·禅道云端部署
Jonathan Star20 分钟前
前端需要做单元测试吗?哪些适合做?
前端·单元测试·状态模式
w***42427 分钟前
Spring Boot 条件注解:@ConditionalOnProperty 完全解析
java·spring boot·后端
eason_fan41 分钟前
解决 Monorepo 项目中 node-sass 安装失败的 Python 版本兼容性问题
前端·debug
q***735541 分钟前
删除文件夹,被提示“需要来自 TrustedInstaller 的权限。。。”的解决方案
android·前端·后端
小满zs1 小时前
Next.js第八章(路由处理程序)
前端
半桶水专家1 小时前
ES Module 原理详解
前端·javascript