Как я могу получить статус соединения от aws-iot-device-sdk - PullRequest
0 голосов
/ 03 мая 2018

Как проверить, подключен клиент или нет?

Из примера класса Device я понимаю, что Device является экземпляром, возвращаемым mqtt.Client()
mqtt.js имеет флаг подключения https://github.com/mqttjs/MQTT.js#connected

Однако, device.connected дает мне undefined

Ответы [ 3 ]

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

Создайте правило в механизме правил IoT и прослушивайте события жизненного цикла. При подключении устройства IoT в теме о подключенном устройстве появится сообщение.

https://docs.aws.amazon.com/iot/latest/developerguide/life-cycle-events.html

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

Я нашел трюк, чтобы получить текущий статус Чтобы отслеживать этот статус после, вы должны использовать тему, связанную с устройством, как предложено в предыдущих ответах Если у вас включены настройки индексации флота убедитесь, что вы включили "Thing Connectivity": включите данные подключения вещей в ваш Thing Index.

Затем вы можете запустить поиск (для определенной вещи или группы вещей) и получить статус подключения для каждой вещи:

`    AWS = require('aws-sdk');
     var iot = new this.AWS.Iot({
                    accessKeyId: this.AccessKeyId,   
                    secretAccessKey: this.SecretAccessKey,
                    //endpoint: this.host,
                    maxResults: 500,
                    region: this.regionData
                    }); 
    var params = {
              queryString: 'shadow.reported.isConnected.connected = *', 
              indexName: 'AWS_Things',
              nextToken: nexttoken 
            };
    iot.searchIndex(params, function(err, data)
    for (const robot of data.things[0])
        connectivity = robot.connectivity.connected;`

Примечание - приведенный выше код не является рабочим примером, просто чтобы показать принципы Примечание 2 - помните, что результаты поиска появляются на страницах и должны обрабатываться таким образом

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

Потому что его там нет.

DeviceClient {
  publish: [Function],
  subscribe: [Function],
  unsubscribe: [Function],
  end: [Function],
  handleMessage: [Function: bound ],
  updateWebSocketCredentials: [Function],
  getWebsocketHeaders: [Function],
  updateCustomAuthHeaders: [Function],
  simulateNetworkFailure: [Function],
  _events: 
   { connect: [Function],
     close: [Function],
     reconnect: [Function],
     offline: [Function],
     error: [Function],
     message: [Function] },
  _eventsCount: 6 }

Хотя вы можете прослушать событие «connect» и добавить свойство «connected» самостоятельно, как показано ниже

device.on('connect', function() {
   device.connected = true;
});

Снова проверьте DeviceClient, и теперь он у вас есть.

DeviceClient {
  publish: [Function],
  subscribe: [Function],
  unsubscribe: [Function],
  end: [Function],
  handleMessage: [Function: bound ],
  updateWebSocketCredentials: [Function],
  getWebsocketHeaders: [Function],
  updateCustomAuthHeaders: [Function],
  simulateNetworkFailure: [Function],
  _events: 
   { connect: [Function],
     close: [Function],
     reconnect: [Function],
     offline: [Function],
     error: [Function],
     message: [Function] },
  _eventsCount: 6,
  connected: true }
...