Raspberry pi充当本地主机,我正尝试使用带有节点mcu的mqtt和两个不同主题的mqtt将数据发送到raspbberry pi。 例如: 如果x> 10,那么我发送1,否则发送0
我在两个节点mcu中都使用了相同的逻辑。
如果我仅与一个nodemcu进行通信,它将获得良好的响应,但是如果我同时与两个nodemcu进行连接,则有时在树莓派控制台中将无法获得价值。
答案 0 :(得分:0)
这通常取决于所使用的客户端和代理,以及两者的配置。两个存在一个问题的事实并不意味着客户端ID冲突:每个MQTT客户端设备必须具有不同的客户端ID。如果代理从两个具有相同ID的客户端接收订阅,则该代理可能会断开一个客户端(通常是第一个客户端)的连接。如果将每个客户端配置为重新连接,则可能导致这两个客户端之间无休止的断开连接,每个断开连接的时间都为一半。
任何不断开重复客户端的代理仍然可能无法传递给一个,因为它使用客户端ID来跟踪已将消息传递给哪个客户端。对订阅中的消息执行ping操作的第一个客户端将收到最新消息,而以后的任何客户端都将丢失该消息,因为该消息已被标记为已传递给该客户端ID。
大多数客户都可以使用随机ID 来避免这些问题,但是让开发人员手动设置一个。您是否使用相同的逻辑设置了客户端ID?您可以通过经纪人的日志来验证每台设备上的实际设置。