有人想帮助我解决这个问题吗?
如何从不同的网络连接/控制Nodemcu esp8266 wi-fi模块以从任何家庭/房屋外部控制IoT设备?
我用于IOT家庭自动化的来自不同网络的NodeMCU ESP8266的Internet连接问题。
实际上,在一个班级项目的情况下,我使用了一些来自互联网的代码(也复制了一些代码并从某些网站获得了帮助),还使用了Blynk来控制我的ESP8266。 但是我不想制作一个个人应用程序,通过该应用程序,我可以在家中外面控制设备。
我已经通过家庭网络连接了WI-FI路由器!! 效果很好 但是我不知道如何从不同的网络上做同样的事情。
如果可能的话,我认为任何人都可以帮助我。...
谢谢。 给大家
答案 0 :(得分:0)
在Arduino和Internet of Things StackExchange网站上都对此进行了更详细的解答。总结:
为了安全起见,很难开始与另一个本地网络上的设备的连接。 WiFi网络上的设备受到防火墙的保护,可以通过Internet进行保护,防火墙通常配置为返回对设备发送的请求的响应,但阻止所有未经请求的消息。即使防火墙允许给定端口上的传入连接,意外消息也需要“端口转发”或其他自定义配置才能到达网络上的多个设备之一(这些设备通常共享相同的网络公用IP地址,并且未经路由器转发,外部系统的消息就无法到达正确的本地地址。
任何暴露于此类主动请求的设备都有遭受攻击的风险,并且可能会对网络上的其他系统造成威胁。因此,将防火墙保持不变,而是让设备订阅外部Web服务器(充当传入消息的邮箱),会更安全。然后,您可以从具有Internet连接的任何设备向服务器发送请求,服务器会存储这些请求,并在ESP询问时将其中继到ESP8266。在您的ESP8266上使用诸如Mosquitto这样的服务器端代理程序和诸如PubSubClient这样的客户端的MQTT协议可以用于这种发布-订阅模型,并且两个工具站点都提供了MQTT教程和说明。和堆栈网站。
答案 1 :(得分:0)
您可以使用Arduino IDE对ESP8266设备进行编程。
https://randomnerdtutorials.com/how-to-install-esp8266-board-arduino-ide/
在Arduino IDE中安装ESP8266之后。您需要将ESP8266与WiFi路由器(已连接互联网)连接。将设备与WiFi路由器连接后。您可以使用MQTT协议与服务器进行通信。您可以在Arduino中使用以下库在ESP8266中实现MQTT客户端。 ESP8266用于从不同的网络发送和接收数据。 ESP8266已订阅特定主题。您可以从其他MQTT客户端将数据发布到该主题。
https://github.com/Imroy/pubsubclient
使用以下链接可以更熟悉MQTT协议
https://www.hivemq.com/blog/mqtt-essentials-part-1-introducing-mqtt
您可以使用MQTTfx桌面应用程序从NodeMcu(ESP8266)发送和接收数据。