如何在 Web 控制台上检查 AWS IoT 设备连接状态?

poz*_*gno 1 amazon-web-services iot aws-iot

我刚开始玩 AWS IoT。我创建了一个东西并使用 mqtt-spy 连接到 AWS 服务器。一切正常。

现在我想在网络控制台中检查每件事的状态,但是我在设备附近找不到这样有用的信息。

小智 7

通过启用AWS IoT Fleet Indexing Service,您可以获得事物的连接状态。此外,您可以查询当前连接/断开的设备。

首先,您必须通过 aws-cli 或通过控制台启用索引 (thingConnectivityIndexingMode)。

aws iot update-indexing-configuration --thing-indexing-configuration thingIndexingMode=REGISTRY_AND_SHADOW,thingConnectivityIndexingMode=STATUS
Run Code Online (Sandbox Code Playgroud)

然后您可以查询事物的连接状态,如下所示

aws iot search-index --index-name "AWS_Things" --query-string "thingName:mything1"
{  
    "things":[{  
         "thingName":"mything1",
         "thingGroupNames":[  
            "mygroup1"
         ],
         "thingId":"a4b9f759-b0f2-4857-8a4b-967745ed9f4e",
         "attributes":{  
            "attribute1":"abc"
         },
         "connectivity": { 
            "connected":false,
            "timestamp":1641508937
         }         
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:Fleet Indexing Service 索引连接数据与设备生命周期事件 ($aws/events/presence/connected/)。在某些情况下,在发生连接或断开连接事件后,服务可能需要一分钟左右的时间来更新索引。

编辑:这个 javascript 版本:

var iot = new AWS.Iot({
    apiVersion: "2015-05-28"
});
...
var params = {
    queryString: "thingName:" + data.Item.thingName, // using result from DynamoDB
    indexName: 'AWS_Things'
    //   maxResults: 'NUMBER_VALUE',
    //   nextToken: 'STRING_VALUE',
    //   queryVersion: 'STRING_VALUE'
};

iot.searchIndex(params, function(err, data) {
    if (err) {
        console.log("error from iot.searchIndex");
        console.log(err, err.stack); // an error occurred
    } else {
        console.log("success from iot.searchIndex");
        console.log(data.things[0].connectivity.connected); // t/f
    }
});
Run Code Online (Sandbox Code Playgroud)