【问题标题】:How to check AWS IoT Device connection status on the web console?如何在 Web 控制台上检查 AWS IoT 设备连接状态?
【发布时间】:2019-11-05 16:48:19
【问题描述】:

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

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

【问题讨论】:

    标签: amazon-web-services iot aws-iot


    【解决方案1】:

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

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

    aws iot update-indexing-configuration --thing-indexing-configuration thingIndexingMode=REGISTRY_AND_SHADOW,thingConnectivityIndexingMode=STATUS
    

    然后你可以像下面这样查询一个事物的连接状态

    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
             }         
        }
    }
    

    注意: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
        }
    });
    

    【讨论】:

    • 我听从了 AWS docs.aws.amazon.com/iot/latest/developerguide/… 的建议,我创建了延迟队列并将所有生命周期断开事件排队。 5 秒后,我首先检查 ThingIndex 设备是否真的离线,然后再采取进一步措施。但是,如果 ThingIndex 需要一分钟来更新,我应该如何将其作为连接状态的真实来源?我会得到陈旧的数据。我错过了什么吗?
    【解决方案2】:

    您需要在 aws iot 控制台订阅主题,AWS IoT-core 右上角的测试部分。例如,您订阅此主题将您的客户端替换为 . $aws/events/presence/connected/<Your_clientId> 如果您有不止一件事,那么您必须使用您的 ClientID 订阅 供参考检查此链接https://docs.aws.amazon.com/iot/latest/developerguide/life-cycle-events.html

    【讨论】:

    • 在这种情况下,我将收到连接/断开连接事件。如果我登录控制台并需要知道事物的当前状态怎么办?我期望一个显示当前连接状态的绿色/红色图标。如果我订阅事件主题,我收到事件,但我对当前状态存有疑问。
    • 不,没有什么比绿色/红色图标更能显示连接的物联网事物的状态了。您可以订阅已连接/断开连接,让您知道您的设备是断开连接还是连接。
    • 绿色/红色图标只是一个例子。我对这个确切的事情并不感兴趣。我解释得更好。在某个时刻,我打开了我的 AWS IOT 控制台。我怎么知道那一刻有什么关联?我可以订阅生命周期事件主题,但我接收连接/断开连接的事件。我想知道现在是否连接了一个东西(通过红色/绿色图标或简单的文本字符串CONNECTED/DISCONNECTED)。
    • 是的,我明白你的意思了,你可以通过外观和活动来帮助你了解活动,例如 i.stack.imgur.com/oMKi7.png 请查看一下
    • 你知道为什么我的这个页面是空白的吗?仅当我使用尚未使用的 Device Shadow 时才有效吗?
    猜你喜欢
    • 2021-09-04
    • 2020-07-15
    • 1970-01-01
    • 2019-12-02
    • 2018-07-27
    • 2021-04-28
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    相关资源
    最近更新 更多