IoT Core опубликовать в теме в другом реестре
Я пытаюсь опубликовать сообщение с устройства в одном реестре на устройство в другом реестре.
Я обнаружил, что вы можете публиковать только темы в реестре, в котором находится ваше устройство, и если вы попытаетесь опубликовать тему в другом реестре, вы получите EOFException
и вы отключаетесь от сервера MQTT.
Поток, на который я пытался пойти, у меня есть registry
мобильных устройств (телефонов), которые имеют свои собственные темы, чтобы делать вещи, но они также должны общаться с hub registry
который связывается с устройствами IoT (получает / обновляет информацию об устройстве), которые также имеют свои собственные IoT registry
Как я уже сказал, я могу публиковать сообщения в темах моего реестра без ошибок, но как только я пытаюсь сделать это вне своего реестра, я получаю сообщение об ошибке.
Нет ли возможности вести межрегиональную связь?
Что такое "стандартный" способ общения между устройствами через разные темы, если вы не можете сделать кросс-реестр?
1 ответ
Вы можете достичь своей цели с помощью облачных функций, которые обрабатывают полученные данные с помощью Cloud IoT Core и PubSub в реестре A, а затем отправляют эти данные в виде сообщения конфигурации в устройство B.
Поток будет выглядеть примерно так: Устройство 1 > Реестр серверов MQTT A > Реестр Pub/Sub Topic A > Облачные функции> Сообщение конфигурации HTTP для> Реестр B > Реестр серверов MQTT B > Устройства 2
В этом руководстве вы можете увидеть, как я писал об Cloud IoT Core, и я показываю, как отправлять сообщения конфигурации на устройства. В вашем случае единственное изменение, которое вам нужно, это то, что сообщение конфигурации будет отправлено на устройство в другом реестре.
Ссылка на учебник: https://medium.com/google-cloud/gps-cellular-asset-tracking-using-google-cloud-iot-core-firestore-and-mongooseos-4dd74921f582
Часть кода, которая отправляет сообщения конфигурации, но в моем коде реестр является постоянной переменной: https://github.com/alvarowolfx/asset-tracker-gcp-mongoose-os/blob/master/functions/index.js#L22
Надеюсь, что это поможет вам.