Автономное событие или состояние подключения устройства Google Core IoT - PullRequest
0 голосов
/ 09 февраля 2019

Кто-нибудь знает простой способ вызвать событие, когда устройство в Google Core IoT отключается?До того, как я переключился на реализацию IoT от Google, это было очень легко , обработанное путем запуска события, когда MQTT отключается, но, похоже, у Google нет простого способа сделать это.

Кто-нибудь знает, есть ли что-то запланированное для этого?

Кто вернулся, мне нужно поцарапать, чтобы они увидели, что нечто подобное является основным требованием для управления устройствами IoT!

В других платформах, таких как AWS и Microsoft, это уже реализовано (или каким-либо способом легко с этим справиться): https://docs.aws.amazon.com/iot/latest/developerguide/life-cycle-events.html

Подключение устройства (онлайн / офлайн)статус с Auzure iot hub

Хотелось бы, чтобы я знал это до написания всего своего кода и реализации моих настроек с использованием платформы IoT от Google, наверное, я виноват в том, что предположил что-то , поэтомупросто и это должно быть стандартным для устройств IoT.

Как вы собираетесь конкурировать с другими поставщиками IoT, если вы даже не можете предоставитьбазовые офлайн / онлайн события?!

Мой ответ на этот вопрос SO показывает, как мне пришлось написать более 100 строк кода только для того, чтобы создать функцию firebase, чтобы проверить, подключено ли устройство (но это все еще необрабатывать автономные события, и это просто хак для того, что должно быть родным для ЛЮБОГО поставщика услуг IoT !): https://stackoverflow.com/a/54609628/378506

Я надеюсь, что кто-то ещенашел способ сделать это, так как провел много дней в поисках SO, Google, Google Core IoT Documentation и до сих пор ничего не нашел.

Даже если MQTT Last Will будет поддерживаться, мы сможем сделать этоработать, но даже это не поддерживается Google (https://cloud.google.com/iot/docs/requirements) ... давай, ребята!

1 Ответ

0 голосов
/ 20 февраля 2019

Ваш облачный проект имеет доступ к отдельным событиям подключения / отключения MQTT, но в настоящее время они отображаются только в журналах Stackdriver.В облачной консоли вы можете создать экспортер, который опубликует эти события в теме Pub / Sub:

  1. Посетите Журналы Stackdriver в Облачной консоли.
  2. Введите следующий расширенный фильтр:

    resource.type="cloudiot_device"
    jsonPayload.eventType="DISCONNECT" OR "CONNECT"
    
  3. Нажмите СОЗДАТЬ ЭКСПОРТ

  4. Введите значение для Имя раковины
  5. Выберите Cloud Pub / Sub для Служба Sink
  6. Создайте новую тему Cloud Pub / Sub в качестве Sink Destination

Экспортер публикует полную LogEntry , которую затем можно использовать из облачной функции, подписанной на ту же тему Pub / Sub:

export const checkDeviceOnline = functions.pubsub.topic('online-state').onPublish(async (message) => {
  const logEntry = JSON.parse(Buffer.from(message.data, 'base64').toString());
  const deviceId = logEntry.labels.device_id;

  let online;
  switch (logEntry.jsonPayload.eventType) {
    case 'CONNECT':
      online = true;
      break;
    case 'DISCONNECT':
      online = false;
      break;
    default:
      throw new Error('Invalid message type');
  }

  // ...write updated state to Firebase...

});

Обратите внимание, что в случае потери соединения задержка времени между недоступностью устройства и фактическим событием DISCONNECT может составлять столько же времени, сколько интервал поддержания активности MQTT.Если вам нужна немедленная проверка доступности устройства, вы можете отправить команду этому устройству.

...