用linkkit sdk做的python发消息给云端。
rc, mid = lk.publish_topic("/sys/a1lwzoByVcy/HYMODBUS4G01A04/thing/model/up_raw", b'\x01\x04\x20\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20\xD1\x8E')
云端在日志服务->物模型数据分析可以看到: 数据类型(上行错误),内容(result=code:6831,message:topic illegal,topic=),状态(6831)。
请问是那里错误,发送的数据有什么问题呢?文档里没有6831的处理建议。
物模型解析脚本需要什么样的topic呢?
完整的日志如下:
upstream-error - bizType=OTHER_MESSAGE,params={"aliyunPk":"1214184041343252","id":"1","iotId":"sZmU9tEpNjQDy9lCXnxE000100","method":"thing.service.property.post","params":{"prop_channel_7":2.092721713319411E-21,"prop_channel_6":7.967088090505125E-24,"prop_channel_5":3.03104765170168E-26,"prop_channel_4":1.1523248117382014E-28,"prop_addr":1,"prop_channel_3":4.377525916134508E-31,"prop_channel_2":1.6616339986002605E-33,"prop_channel_1":6.301941157072183E-36,"prop_channel_0":2.387939260590663E-38},"proxyName":"thing.service.property.post","topic":"/sys/a1lwzoByVcy/HYMODBUS4G01A04/thing/service/property/post","uniMsgId":"1161593480624018432","version":"1.0"},result=code:6831,message:topic illegal,topic=,response={},device={"aliyunCommodityCode":"iothub_senior","deviceKey":"sZmU9tEpNjQDy9lCXnxE","deviceSecret":"***","gmtCreate":1563962440000,"gmtModified":1563962440000,"id":47399502,"iotId":"sZmU9tEpNjQDy9lCXnxE000100","name":"HYMODBUS4G01A04","productKey":"a1lwzoByVcy","rbacTenantId":"0533C9F6CCD84FAFB3D1B199FC930DF9","region":"cn-shanghai","status":0,"statusLast":0,"thingType":"DEVICE"},scriptData={"upOriginalData":"0104200102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20d18e","upTransformedData":{"method":"thing.service.property.post","id":"1","params":{"prop_channel_7":2.092721713319411E-21,"prop_channel_6":7.967088090505125E-24,"prop_channel_5":3.03104765170168E-26,"prop_channel_4":1.1523248117382014E-28,"prop_addr":1,"prop_channel_3":4.377525916134508E-31,"prop_channel_2":1.6616339986002605E-33,"prop_channel_1":6.301941157072183E-36,"prop_channel_0":2.387939260590663E-38},"version":"1.0"}},useTime=69,
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
错误代码6831通常表示“topic非法”,这意味着您发送的消息主题格式不符合阿里云物联网平台的预期。在您的场景中,您尝试通过LinkKit SDK用Python向云端发布消息,但云端反馈表明该主题不被接受。
根据您提供的信息,您使用的主题是:
/sys/a1lwzoByVcy/HYMODBUS4G01A04/thing/model/up_raw
然而,从日志中可以看到,物模型数据分析期望的是与属性上报或服务调用相关的主题格式,例如在日志里出现的是:
/topic:/sys/a1lwzoByVcy/HYMODBUS4G01A04/thing/service/property/post
这表明您的设备可能需要按照物模型定义来构造消息主题。对于物模型数据上报,常见的主题格式包括但不限于:
/sys/{ProductKey}/{DeviceName}/thing/property/post
/sys/{ProductKey}/{DeviceName}/thing/event/{EventID}/post
/sys/{ProductKey}/{DeviceName}/thing/service/{ServiceID}/response
如果您的目的是直接上传原始数据,并非通过物模型定义的服务或属性,那么您可能需要检查是否物模型中定义了相应的处理逻辑,或者是否应该使用不同的主题路径来适应您的需求。
解决建议如下:
确认物模型配置:确保您的设备在物联网平台上配置的物模型与您尝试发布的消息类型相匹配。如果您的消息内容是设备属性的更新,应使用属性上报的主题格式。
检查文档和示例:再次查阅阿里云物联网平台关于LinkKit SDK的官方文档和示例代码,特别是有关如何正确构造主题以匹配物模型操作的部分。
修改主题:根据您的实际需求,调整消息发布时使用的主题,使其符合物模型规范或特定的上行数据要求。
查看日志详细信息:深入分析日志中的其他信息,看是否有更多关于为何认为主题非法的具体提示。
技术支持咨询:如果以上步骤不能解决问题,考虑联系阿里云的技术支持获取更专业的帮助,他们可以提供针对您具体问题的解决方案。