连接移动设备与ESP8266

11

我正在进行一个家庭自动化项目,希望将一个移动应用程序连接到ESP8266。

  • 我可以从移动应用程序向AWS服务器发布消息,该服务器设置为代理。(正常工作)

  • 我可以从AWS发布一条消息到树莓派。(正常工作)

  • 我还可以从树莓派向NodeMCU / ESP8266发布Mqtt消息。(正常工作)

但是当我试图将所有这些功能集成在一起时,问题就出现了。 在从AWS发布消息时,它被树莓派接收,但未反映在NodeMCU / ESP8266上。

以下是代码的使用情况

这是我在ESP8266中使用的代码。 当我从树莓派发布时,它运行良好,甚至当我将PI与我的手机上的MQTT客户端应用程序连接时,也能正常工作。 但是当我从AWS发布时,ESP8266没有任何反应,但PI能够接收到消息。


1
在我们能够提供帮助之前,我们需要更多的信息。您是否已经配置了一个桥接器?如果是这样,它是如何配置的?所有主题都发布/订阅在哪里?您是如何测试的? - hardillb
这是我在ESP8266中使用的内容。当我从树莓派发布时,它可以正常工作,即使我连接到我的移动设备上的MQTT客户端应用程序也可以正常工作。但是当我从AWS发布时,ESP8266没有反应,但是树莓派能够接收到消息。 - Mitul Verma
5
请将文本从英语翻译成中文。仅返回翻译后的文本:编辑问题以包含主要细节(不要只是链接到其他地方) - hardillb
1
你能发布串行日志吗?我在网上看到了一个类似的例子(http://m2mio.tumblr.com/post/30048662088/a-simple-example-arduino-mqtt-m2mio),但他们连接/订阅的顺序略有不同(也使用以太网)。 - leetibbett
你检查了来自AWS发送的消息的QOS吗?也许使用QOS1或2可以解决这个问题。或者尝试停用树莓派,看看是否能在ESP上接收到消息。 - SolvedForHome
1个回答

0

你的问题应该与消息的保留标志有关。发布者可以指示代理将最后发送的消息传递给所有新订阅者。这是通过将保留标志设置为true来完成的。当代理获取保留的消息时,它知道必须将消息推送给新的订阅者。此功能非常有用,可以使新的订阅者与其他订阅者处于相同的状态。否则,在消息发布后,只有已连接为订阅者的客户端(RasPi)才能接收到它,而新的订阅者(NodeMCU)则不能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接