2017-06-20 86 views
1

我的设置如下所示:Nodemcu和树莓派连接到WiFi路由器。我在Nodemcu中的lua代码需要通过WLAN调用托管在树莓派中的REST API。nodemcu私有IP(WLAN)连接失败

但我看得出来,连接失败:

http.get("http://192.168.43.100:8080/api/logdevice", nil, function (code, resp) print(code, resp) end) 
> --http.get("http://example.com", nil, function (code, resp) print(code, resp) end)HTTP client: Disconnected with error: -11 
HTTP client: Connection timeout 
HTTP client: Connection timeout 

当我给一个互联网地址(http://example.com),请求成功。

我能够从同一WiFi网络中的另一台笔记本电脑访问REST API。

我已验证的无线网络设置是通过使用Lua代码正确:

ip, netmask, gateway = wifi.sta.getip() 

是否有任何限制在nodemcu在访问私有IP地址?

UPDATE 1:我将nodemcu设置为接入点并将API服务器连接到它。现在nodemcu能够访问API。但这不是我需要的WiFi设置。我需要nodemcu成为WiFi站。所以我认为这可能是路由表中的问题。在将nodemcu连接到外部AP后,是否应该执行额外的路由配置?

+0

如果您使用底层的'net'模块而不是'http'模块,它可以工作:https://nodemcu.readthedocs.io/en/latest/en/modules/net/#netsocketon –

+0

@MarcelStör那也失败了 – Kiran

+0

因此,您可以从NodeMCU访问互联网,但不能访问您的专用网络中的资源?我不知道这方面的已知问题或限制。事实上,无论是HTTP还是网络操作,私有资源都不会成功。恕我直言,建议在您的一端使用“阻塞”网络组件。 –

回答

0

如果我正确理解这一点,您似乎通过调用外部站点来解决nodemcu设备和Internet之间的连接(超出您的路由器)。您还检查了您可以使用其他设备在本地调用网络中的REST API,这表明该问题似乎与无线网络上nodemcu和rpi之间的通信有关。

我会检查路由器上的DHCP屏幕来验证nodemcu和rpi的IP地址。尝试ping rpi或笔记本电脑上的nodemcu。打开rpi网络服务器上的任何日志记录来检查入站请求(从笔记本电脑,然后nodemcu),并验证nodemcu的网络掩码设置与rpi相同(因为网络服务器响应可以路由出网关如果它们不同)。

如果你想尝试一个“更简单”的更直接的测试,你也可以尝试使用nodemcu中的简单telnet客户端连接到rpi。

对于nodemcu,rpi和笔记本电脑,IP地址,网络掩码和网关的实际值需要进一步探讨,这将有所帮助。