我正在开发家庭自动化项目,我想将移动应用程序连接到ESP8266。
我可以将消息从移动应用程序发布到设置为代理的AWS服务器。 (工作)
我可以将消息从AWS发布到Raspberry PI。 (工作)
我还可以将Raspberry PI的Mqtt消息发布到NodeMCU / ESP8266。 (工作)。
但是当我试图将所有这些设置在一起时,问题就出现了。从AWS发布消息时,Raspberry PI会收到该消息,但它不会反映在NodeMCU / ESP8266上。
这是code in use。
这就是我在ESP8266中使用的内容。当我从Raspberry PI发布时它工作正常,即使我在我的移动设备上连接PI将MQTT客户端应用程序正常工作。但是当我从AWS发布时,ESP8266没有任何反应,但是PI能够接收消息。
答案 0 :(得分:0)
您的问题应与消息的相关保留标志。发布者可以指示代理将最后发送的消息传递给所有新订阅者。这是通过将retain标志设置为true来完成的。当代理获得保留消息时,它知道必须将消息推送给新订户。此功能对于使新订户以与其他订户相同的状态加速非常有用,否则在发布消息后,只有已经连接的客户端才能接收它(RasPi)而不是新订户(NodeMCU)。 / p>