Тема не соответствует авторизованному правилу - PullRequest
0 голосов
/ 18 июня 2019

следующий код - это то, что я использовал, чтобы публиковать данные из моей R-Pi Sense-Hat в облаке 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 дал сообщение: Тема не соответствует авторизованному правилу.

1 Ответ

1 голос
/ 18 июня 2019

Если вы публикуете события, подключенные как устройство (например, 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 , он маскирует все внутренние детали API MQTT & HTTP, такие как строки строкиспользовать.

Код с открытым исходным кодом в GitHub , доступный от PyPi и широко используемый командой разработчиков платформы Watson IoT для всех наших агентов внутреннего мониторинга.

Соответствующий код для публикации событий для приложений и устройств приведен ниже, даже если вы не хотите использовать SDK, они могут помочь вам увидеть, как используется базовый клиент Paho:

...