2017-06-20 76 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地址,網絡掩碼和網關的實際值需要進一步探討,這將有所幫助。