【问题标题】:How to find all the esp8266 connected to a router如何找到所有连接到路由器的 esp8266
【发布时间】:2016-11-19 01:11:22
【问题描述】:

大家好,我想将多个 esp8266 设备连接到我的路由器,并创建一个可以找到这些设备并使用 udp 向它们发送消息的移动应用程序。 目前我的计划是让 esp 设备监听一个端口,然后我的应用程序会在该端口上发送一条消息,esp 会响应并且应用程序将存储 IP。

有没有更好的方法来做到这一点? 我的一个朋友告诉我,如果更改路由器的网关,这种方法将失败。是真的吗?

我只是调用 WiFi.begin(Ssid, Password);无需对 wifi.conf() 进行任何更改即可连接到 wifi。

我正在使用 arduino SDK。

【问题讨论】:

  • 移动应用程序是在网络内还是在互联网上?
  • @leetibbett 移动应用将在网络内。

标签: android networking arduino android-wifi esp8266


【解决方案1】:

为您的 ESP8266 设备提供一个静态 IP 地址,以便移动应用提前知道可以“找到”它们的位置:

IPAddress ip(192,168,1,xx);               // desired static IP address
IPAddress gateway(192,168,1,yy);          // IP address of the router
IPAddress subnet(255,255,255,0);

WiFi.begin(ssid, password);
WiFi.config(ip, gateway, subnet);

while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
}

并使用带有端口转发的动态 DNS 服务(除非您有静态 IP 地址)来访问每个 ESP。您可以选择端口 8266, 8267, 8268, 8269, ... 或高于 1024 的任何其他端口,然后在路由器设置中设置端口转发,以便端口 8266 将转发到您的第一个 ESP 的 IP 地址和端口 80(或任何其他),端口 8267 将被转发到您的第二个 ESP 的 IP 地址和端口 80 等。

之后,您可以使用类似http://xx.xx.xx.xx:8266http://xx.xx.xx.xx:8267http://xx.xx.xx.xx:8268http://xx.xx.xx.xx:8269 的 URL 从移动应用(或互联网)访问您的 ESP,或者使用动态 DNS 服务:http://myhome.something.com:8266 , http://myhome.something.com:8267 等。或者您可以通过已知的静态 IP 地址从本地网络访问它们。也就是说 - 您的移动应用程序必须确定它是否在本地网络内。或者您始终可以使用代理访问 ESP - 在这种情况下,URL 将不依赖于本地网络内部或外部。

【讨论】:

    【解决方案2】:

    您的朋友可能有您解决方案的更多详细信息,但 IMO 网关与它无关。如果所有客户端和服务器都在路由器本地网络内的同一子网上,则网关不会发挥作用。

    我会做一个 UDP 多播。您的移动应用只需发送一个请求,然后在几秒钟内听取 ESP 的回复。

    【讨论】:

    • 是否可以从windows pc发送多播数据包?我在 Windows 10 上安装了 bojour 打印机。但我不知道如何继续验证我的设备是否响应多播请求。
    • Bonjour 是 mDNS,它可以帮助您通过名称定位事物。在 Android 上,您可以 try an app like this
    • 不知道esp的IP/主机名怎么办?
    • 更多关于多播的信息可以在en.wikipedia.org/wiki/Multicast找到
    【解决方案3】:

    一种方法是检查网络上的所有 Mac 地址。前 6 位数字是制造 wifi 加密狗的公司的唯一代码。

    这是假设您在网络上没有任何其他设备使用相同的加密狗,并且不是您要搜索的设备。

    您可以通过对每个 IP 执行 ARP 请求来查找网络上的所有 Mac 地址。

    但是所有设备都必须在同一个子网上。

    如果您的设备是远程的,那么我会采用您的原始计划,但是如果网关发生更改,您的朋友是正确的,这需要更强大的东西。使用动态 DNS 服务和域名。如果您的网关地址发生变化,动态 DNS 将几乎实时更新您的 DNS 记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-14
      • 2016-11-13
      • 2023-01-15
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多