以下代码是我用来将数据从r-pi感知帽发布到IBM云的代码
topic = 'iot-2/evt/temperature/fmt/json'
print("Publishing data from pito cloud",json.dumps(payload))
client.publish(topic,json.dumps(payload), qos=1)
IBM Cloud上的发布格式是否已更改? IBM云连接日志显示以下消息:主题与授权规则不匹配。
答案 0 :(得分:1)
如果您要发布作为设备连接的事件(例如,clientId = d:{orgId}:{typeId}:{deviceId} ),则该主题是正确的:
iot-2/evt/temperature/fmt/json
如果您要发布作为应用程序连接的事件(例如,clientId = a:{orgId}:{appId} ),则需要使用的主题结构是不同的:
iot-2/type/{typeId}/id/{deviceId}/evt/temperature/fmt/json
好像您使用的是Python paho客户端,如果您使用的是Python,我强烈建议您尝试使用官方SDK wiotp-sdk 程序包,它会掩盖MQTT和HTTP API的所有内部细节。例如要使用的主题字符串。
该代码是GitHub中的开源代码,可从PyPi获得,并且被Watson IoT Platform开发团队广泛用于我们所有的内部监控代理。
下面是有关应用程序和设备的事件发布的相关代码,即使您不想使用SDK,这些代码也可能有助于您了解如何使用底层Paho客户端: