Как часто бэкэнд Google IOT обновляет состояние устройства? - PullRequest
0 голосов
/ 21 мая 2018

Я выполняю GET каждую минуту по указанному ниже URL-адресу, чтобы получить состояние устройства для всех устройств в моем реестре IOT

GET https://cloudiot.googleapis.com/v1/{name=projects/*/locations/*/registries/*/devices/*}

Как только я получу устройство , меня интересуетопределение того, находятся ли следующие поля в последней минуте текущей метки времени:

  "lastHeartbeatTime": string
  "lastStateTime": string
  "lastEventTime": string

Мои устройства часто проверяют связь с удаленным посредником с временем MQTT Keep Alive, равным 10 с, поэтому я предполагаю, что это 6 тактов вне более минуты.

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

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

Мои вопросы:

  • Как быстро обновляются периоды сердцебиения моего устройства в состоянии устройства?Не слишком ли коротка минута?

  • Вы бы порекомендовали лучший способ достижения вышеуказанного?Что это влечет за собой?

Ответы [ 2 ]

0 голосов
/ 20 июля 2018

«lastHeartbeatTime» - это последний раз, когда был получен PINGREQ, и он получен, если соединение не используется, и другие сообщения не отправлялись.PINGREQ - это ваш MQTT Keep Alive, время 10 с.Таким образом, если в течение 10 секунд нет сообщений, вы должны получить PINGREQ.Эта информация должна быть доступна в журналах устройства.Я рекомендую отправлять журналы устройства на stacdriver и использовать журналы для получения статистики устройства о доступности и времени безотказной работы. Здесь - пример того, как вы можете это сделать.

0 голосов
/ 23 мая 2018

При более внимательном рассмотрении документов API для устройства кажется, что состояние может быть «устаревшим на несколько минут».Есть ли какой-нибудь намек на то, что это максимальное значение может быть?Это поле относится только к устройствам, подключенным через MQTT.Клиенты MQTT обычно отправляют сообщения PINGREQ только в том случае, если соединение не используется и другие сообщения не отправлялись.Временные метки периодически собираются и записываются в хранилище; они могут устареть на несколько минут .

Метка времени в формате RFC3339 UTC "Zulu", с точностью до наносекунд.Пример: «2014-10-02T15: 01: 23.045123456Z».

lastEventTime string (Timestamp format)

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

Метка времени в формате RFC3339 UTC "Zulu", с точностью до наносекунд.Пример: «2014-10-02T15: 01: 23.045123456Z».

lastStateTime string (Timestamp format)

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

Метка времени в формате RFC3339 UTC "Zulu", с точностью до наносекунд.Пример: «2014-10-02T15: 01: 23.045123456Z».

...