问题描述
我尝试在NodeMCU上闪烁一下,但工作正常,但是在与WiFi进行基本连接时出现此错误:
I have tried a blink on the NodeMCU working ok, but when doing basic connection to WiFi I get this error:
这是连接
wifi.setmode(wifi.STATION)
wifi.sta.config("wifi-name","password")
ip, nm, gw=wifi.sta.getip()
print("\nIP Info:\nIP Address: "..ip.." \nNetmask: "..nm.." \nGateway Addr: "..gw.."\n")
推荐答案
使用NodeMCU,许多功能是异步的(假定这是默认功能).因此,调用wifi.sta.config
不会阻塞您的主线程,因此,在您调用wifi.sta.getip
时,您的设备很可能没有连接到WiFi.
With NodeMCU many functions are asynchronous (assume this to be the default). Hence, calling wifi.sta.config
isn't blocking your main thread and consequently your device most likely isn't connected to WiFi by the time you invoke wifi.sta.getip
.
如果您具有dev
分支中的固件,则可以使用 WiFi事件监视器可解决此问题:
If you have a firmware from the dev
branch you can use the WiFi event monitor to fix that:
wifi.sta.eventMonReg(wifi.STA_GOTIP, function()
ip, nm, gw=wifi.sta.getip()
print("\nIP Info:\nIP Address: "..ip.." \nNetmask: "..nm.." \nGateway Addr: "..gw.."\n")
end)
我记录了一个更基本的计时器回调驱动方法在要点中:
I documented a more basic timer-callback driven approach in a Gist:
wifiReady = 0
function configureWiFi()
wifi.setmode(wifi.STATION)
wifi.sta.config(WIFI_SSID, WIFI_PASS)
wifi.sta.connect()
tmr.alarm(WIFI_ALARM_ID, 1000, 1, wifi_watch)
end
-- while NOT connected to WiFi you blink a LED, see below
function wifi_watch()
-- 0: STATION_IDLE,
-- 1: STATION_CONNECTING,
-- 2: STATION_WRONG_PASSWORD,
-- 3: STATION_NO_AP_FOUND,
-- 4: STATION_CONNECT_FAIL,
-- 5: STATION_GOT_IP.
status = wifi.sta.status()
if status == 5 then
-- only do something if the status actually changed
-- you could of course combine these two 'if's but it's more explicit for this gist
if wifiReady == 0 then
wifiReady = 1
print("WiFi: connected")
turnWiFiLedOn()
-- do something
end
else
wifiReady = 0
print("WiFi: (re-)connecting")
turnWiFiLedOnOff()
wifi.sta.connect()
end
end
这篇关于连接到WiFi的NodeMCU错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!