【发布时间】:2021-04-28 16:53:10
【问题描述】:
我正在关注 AWS IoT using MQTT here 的 pubsub.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 注册了设备。
【问题讨论】:
-
我已在问题中添加了详细信息,并引用了该页面的具体详细信息。我已经阅读了几次,它并没有消除作为“客户端”连接与注册“设备”之间的歧义。 SDK 中的
pubsub.py示例似乎仅作为“客户端”连接。我留下了同样的问题。如何将 MQTT(通过 WSS)连接为“设备”而不仅仅是通用“客户端”?
标签: amazon-web-services mqtt aws-iot