在没有端口转发的情况下通过互联网联系 Arduino

物联网 协议
2021-06-28 05:48:21

我有一个 Arduino 板连接到可以访问互联网的 Wifi 网络。我想要的是,我需要从任何其他网络联系这个 Arduino 板,而无需在 Arduino 的家庭网络中进行端口转发。目前我正在做的是每隔两秒让 Arduino ping 到我的网络服务器,我认为这不切实际。

像智能wifi LED灯这样的设备如何连接到互联网?我们可以用我们的手机操作它们而无需任何端口转发或任何其他路由器配置调整,对吗?他们是如何做到的呢?

1个回答

为了避免需要在允许入站流量的网络上,您需要将出站连接到服务器,该服务器将中继来自客户端的请求,这些客户端也与它建立出站连接。

这本质上就像通信卫星的模型。用户的计算机或电话或其他任何东西,以及物联网设备,都在云中维护与此服务器的“向上”链接,它接收来自一侧的每条消息并将其发送到另一侧,反之亦然。

有许多可能的方法来实现这样的服务器。目前流行的一种方式是使其成为MQTT Broker在 MQTT 中,客户端(IoT 设备和用户设备)与代理建立出站连接,并且一个客户端在“主题”上“发布”到已“订阅”该“主题”的所有客户端的断开的共享消息“ 话题。

  • 因为已经建立了连接,代理可以将未经请求的流量向下发送,而没有任何轮询间隔延迟

  • 为了保持连接建立,偶尔会发送保持活动的流量

  • 如果连接中断,则有尝试重新建立连接的规则

  • 从本质上讲,只有当代理尝试将消息中继下来时才会出现明显的延迟,并且连接被证明已断开且尚未修复,在这种情况下,消息将被延迟,直到重新连接完成。(有用于保存消息、丢弃消息等的选项)。