Постоянный статус подключения устройства через MQTT с JWT, с использованием GCP IoT Core - PullRequest
0 голосов
/ 03 августа 2020

У меня есть несколько устройств, которые производят данные через MQTT, отправленные в ядро ​​GCP IoT. Я хочу отслеживать, подключено ли устройство в настоящее время или отключено от брокера MQTT. На это уже был дан ответ в другом месте на SO , и это подход, который я сейчас использую: отслеживайте журналы Stackdriver для сообщений CONNECT / DISCONNECT и публикуйте их sh в отдельном разделе Pub / Sub c. Этот topi c затем читается функцией Firebase для обновления поля моего устройства в сети / офлайн.

Теоретически это работает, но из-за поля истечения срока действия JWT я вынужден повторно подключать свои устройства каждые время истечения срока действия токена, вызывая множество ложных срабатываний онлайн / офлайн. Есть ли способ, возможно, обновить sh токен при сохранении соединения? Или лучший подход, чтобы просто контролировать возможность подключения устройства?

Я, вероятно, могу использовать событие Heartbeat и рассматривать устройство только в автономном режиме, если в течение N минут не было получено Heartbeat, или даже периодически отправляя какой-либо ping команду на устройство. Хотя было бы неплохо просто знать, подключено ли устройство в данный момент или нет.

1 Ответ

0 голосов
/ 13 августа 2020

Я думаю, что способ мониторинга устройств с помощью Stackdriver logging и PubSub является наиболее подходящим.

В то же время, что касается истечения срока действия токена JWT, я рекомендую вам проверить эта документация , в ней приводится несколько примеров того, как обновить sh токен и, таким образом, предотвратить отключение устройств.

...