NodeMCU错误连接到WiFi

时间:2016-05-28 03:59:52

标签: lua nodemcu

我已尝试在NodeMCU上工作正常,但在与WiFi进行基本连接时出现此错误:

  

init.lua:4:尝试连接全局'gw'(零值)

这是连接

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")

1 个答案:

答案 0 :(得分:2)

使用NodeMCU,许多功能都是异步的(假设这是默认设置)。因此,呼叫wifi.sta.config并不会阻止您的主要线程,因此,当您调用wifi.sta.getip时,您的设备很可能无法连接到WiFi。

如果您拥有dev分支机构的固件,则可以使用WiFi event monitor来解决此问题:

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)

我记录了一个更基本的计时器回调驱动方法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