Я пытаюсь разрешить соединение wifi с использованием языка Lua. Я расчесывал the api, чтобы найти решение, но ничего не получилось. Я задал предыдущий вопрос, dynamically switch between wifi networks, и ответ затронул вопрос так, как я его спросил, но он не выполнил то, что я ожидал.NodeMCU WiFi auto connect
В принципе, у меня есть две разные сети от двух разных поставщиков. Все, что я хочу сделать ESP8266 12e, это определить, когда или нет текущей сети нет доступа в Интернет и автоматически переключается на следующую сеть. Он должен постоянно пытаться подключиться, скажем, на 3-минутный интервал, пока он не будет успешным, а не просто сдастся.
В целях тестирования я пробовал этот код ниже. Планируется использовать переменную «effectiveRouter» и написать некоторую логику для переключения на основе текущего маршрутизатора.
effectiveRouter = nil
function wifiConnect(id,pw)
counter = 0
wifi.sta.config(id,pw)
tmr.alarm(1, 1000, tmr.ALARM_SEMI, function()
counter = counter + 1
if counter < 10 then
if wifi.sta.getip() == nil then
print("NO IP yet! Trying on "..id)
tmr.start(1)
else
print("Connected, IP is "..wifi.sta.getip())
end
end
end)
end
wifiConnect("myNetwork","myPassword")
print(effectiveRouter)
Когда я запускаю этот код, я получаю effectiveRouter в ноль на консоли. Это говорит мне, что оператор печати выполнялся до завершения вызова метода, print(effectiveRouter)
. Я очень новичок в lua, так как это мой первый раз с языком. Я уверен, что этот код котловой плиты должен был быть сделан раньше. Может ли кто-нибудь указать мне в правильном направлении? Я открыт для перехода в среду разработки arduino, поскольку я уже настроил ее для NodeMCU ESP8266. Возможно, я смогу лучше следовать логике, поскольку я исхожу из фона java-OOP.
effectiveRouter никогда не присваивается никаким значением в предоставленном коде. как он должен стать чем-то другим, кроме нуля? вы запускаете таймер, который отключится в первый раз после 1000 мс. то вы сразу же печатаете эффективный Router, который, конечно, ноль в этот момент. первая попытка подключения произойдет после того, как вы напечатали эффективный роутер. Но независимо от того, что происходит в вашем обратном вызове таймера, это не влияет на значение effectiveRouter – Piglet
@Piglet Спасибо, что указали это, моя ошибка. Код выше является одним из многих вариантов, с которыми я играл. Внутри другой части функции у меня есть пустая строка, из которой я удалил назначение «effectiveRouter = dlink» – Binaryrespawn