Как привязать к событиям телеметрии, используя MQTT и код C? - PullRequest
0 голосов
/ 09 апреля 2019

Как привязать к событиям телеметрии, используя MQTT и код C? (это код микроконтроллера) Я могу отправить данные в указанную тему, но при попытке подписаться на эту тему я получаю сообщение об ошибке

Это сообщение из журнала "mqttTopic": "/ devices / my-device / events / my_telem_topic1",

Это сообщение об ошибке из журнала
"message": "ПОДПИСАТЬСЯ: Не удалось подписаться на тему: '/devices/my-device/events/my_telem_topic1'."

Ответы [ 2 ]

2 голосов
/ 11 апреля 2019

Чтобы добавить к тому, что написал Камал:

Частично путаница заключается в том, что и MQTT, и Pub / Sub (где IoT Core помещает события телеметрии вашего устройства) называются «темами».

Существует 4 темы MQTT для устройств, с которыми нужно работать (это все на стороне устройства, а не на стороне облака):

/devices/<device-id>/commands
/devices/<device-id>/config
/devices/<device-id>/state
/devices/<device-id>/events

Первые два предназначены для устройств, на которые можно подписаться в порядкечтобы получать обновления из IoT Core Admin SDK, последние две темы являются темами для устройства для публикации данных в облаке.

Чтобы устройство могло подписаться на телеметрию другого устройства, оно должно иметь возможность подписатьсяв тему Pub / Sub, которая получает телеметрию от другого устройства.Это не будет сделано как часть реализации MQTT, скорее, вам нужно реализовать API Pub / Sub на вашем устройстве.Для этого также потребуется отдельный путь аутентификации, вероятно, ключ учетной записи службы, который вы добавляете в свой проект GCP, а затем загружаете на свое устройство.Ссылки в ответе Камала должны помочь вам начать работу по этому маршруту.

В зависимости от того, что вы делаете, однако, как говорится, вы, вероятно, можете обрабатывать входящую телеметрию с одного устройства в облакеФункция или аналогичная, затем установите конфигурацию для устройства, которое хочет реагировать на эту телеметрию.Таким образом, если устройство подключено к сети, оно сразу же получит его, или если оно не будет подключено к сети, оно получит его после повторного подключения к IoT Core.

2 голосов
/ 09 апреля 2019

События телеметрии, отправленные в Cloud IoT, отправляются в Cloud Pub / Sub topic , настроенный при создании реестра устройств и не предназначенный для получения через MQTT на устройствах. , Для подписки на эти сообщения можно использовать любой из механизмов, доступных в Google Cloud ( Облачные функции , Облачный поток данных или пользовательский подписчик ). Команды могут быть получены устройствами через MQTT. Тема для команд устройства: /devices/{device-id}/commands/#. API доступны для отправки команд на устройства.

Как правило, можно отправлять события телеметрии с устройств, анализировать их с помощью одного из вышеупомянутых облачных продуктов, а затем, возможно, генерировать команды для устройств на основе результатов этого анализа.

...