【问题标题】:How does an AWS IoT device show as "connected"AWS IoT 设备如何显示为“已连接”
【发布时间】:2021-04-28 16:53:10
【问题描述】:

我正在关注 AWS IoT using MQTT herepubsub.py 示例代码。特别是我使用awsiotsdk 连接到MQTT。

该示例工作正常,但它作为通用客户端连接到 MQTT,而不是作为特定设备。

我想连接到 MQTT 以作为特定设备发布和订阅。特别是我希望能够查询已连接的设备并看到此设备出现。

在演示代码中,我看到包含--client-id。默认情况下,它使用 UUID 为演示生成唯一的客户端 ID。我尝试将 client-id 设置为 ARN arn:aws:iot:us-west-2:123456789012:thing/test

我想要/期望看到的是以下搜索显示连接的thing。在 pubsub 演示运行时,查询返回为空。它为空的事实告诉我 pubsub 示例是作为 MQTT 客户端连接的,而不是作为设备连接的。如何作为设备连接?

aws iot search-index --query-string connectivity.connected:true
{
    "things": []
}

请注意,我已通过 AWS CLI 启用 thingConnectivityIndexingMode=STATUS


来自 cmets 的更多细节:

来自文档:

当消息代理收到设备或客户端发布的消息时,它会重新发布该消息

看来我总是作为“客户端”连接到 MQTT(通过 WSS)。我看不到如何连接为“设备”。文档对这一点非常不具体。 pubsub.py 示例似乎作为通用“客户端”连接,而不是作为特定“设备”。

我可以并且已经通过 AWS 控制台或 boto3 注册了设备。

【问题讨论】:

  • 注册您的东西并关注文档docs.aws.amazon.com/iot/latest/developerguide/…。开始使用mqttlab.iotsim.io/aws
  • 我已在问题中添加了详细信息,并引用了该页面的具体详细信息。我已经阅读了几次,它并没有消除作为“客户端”连接与注册“设备”之间的歧义。 SDK 中的pubsub.py 示例似乎仅作为“客户端”连接。我留下了同样的问题。如何将 MQTT(通过 WSS)连接为“设备”而不仅仅是通用“客户端”?

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


【解决方案1】:

clientId 必须等于 Registry 中注册的事物的事物名称。

仅为客户端 ID 具有匹配事物名称的连接编制索引。

https://docs.aws.amazon.com/iot/latest/developerguide/aggregation-troubleshooting.html

【讨论】:

  • 太棒了!我可以发誓我试过了,但显然我没有,或者没有正确地这样做,它与 --client test 完美配合,其中 test 是一个注册的东西。
猜你喜欢
  • 2018-07-27
  • 1970-01-01
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
  • 2020-07-15
  • 2020-02-10
相关资源
最近更新 更多