连接到WiFi的NodeMCU错误 [英] NodeMCU error connecting to WiFi

查看:310
本文介绍了连接到WiFi的NodeMCU错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have tried a blink on the NodeMCU working ok, but when doing basic connection to WiFi I get this error:

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

init.lua:4: attempt to concatenate global 'gw' (a nil value)

这是连接

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分支中的固件,则可以使用

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错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆