我成功地做了以下事情:
- 创建 hono 租户并为其注册设备。
- 将一个简单的基于 python 的边缘设备连接到 hono。
- 将 hono 连接到同上。
- 为上述边缘设备创建双胞胎。
通过 hono 将遥测数据从边缘设备发送到同上效果很好。
我还通过 hono每隔一秒从边缘设备发送一个伪事件到同上,如下所示:
# sending an event from edge-device to ditto through hono-mqtt-adapter
correlation_id = ''.join(random.choices(string.ascii_uppercase + string.digits, k=10))
data = {
"topic": "de.iot1/dev1/things/live/messages/fire",
"headers": {
"content-type": "text/plain",
"correlation-id": correlation_id
},
"path": "/outbox/messages/fire",
"value": "Fire detected"
}
payload = json.dumps(data)
mqtt_client.publish("event", payload=payload, qos=1)
另一方面,我编写了一个简单的同上-amqp-client,它只接收所有同上的传入消息。我以正确的间隔接收所有传入的遥测消息 - 即每秒。在事件消息的情况下,它们似乎被同上缓冲并每隔几秒钟发送到 amqp-client,而不是在从设备发送时发送!为什么?
据我从同上文档中了解到,同上提供了两个沟通渠道。双通道用于通过命令和事件与双胞胎进行通信,而实时通道则通过消息直接与设备进行通信。但是在协议主题部分 中,通道可以是双胞胎,也可以是活动的,也可以用于事件或命令,这是令人困惑的。
- 我想知道将事件从设备发送到同上的推荐方式是什么?
- 是否应该使用事件或消息(发件箱)通过实时频道发送?
- 将事件定义为双胞胎中的一个特征并将正常命令/修改发送到它的值是否更好?
提前感谢您的任何建议!