lua - movistar - cambiar dinámicamente entre redes wifi
cómo cambiar la clave de mi wi fi (1)
Tengo dos redes WiFi en casa donde quiero usar mi NodeMCU ESP8266 V1 para controlar varios relés de forma remota en la web desde cualquier parte del mundo. Para lograr esto, estaba pensando en probar la conectividad WiFi y si no obtengo una IP Dentro de 1 minuto pruebe la otra red hasta que obtenga una IP. Aquí están los documentos API para tmr que seguí en el código a continuación.
¿Hay alguna manera de cambiar entre dos o más redes wifi programáticamente usando Lua? Estoy usando el lenguaje Lua, pero puedo moverme a Arduino IDE, si es necesario.
wifi.setmode(wifi.STATION)
myRouter = "dlink"
tmr.alarm(1, 60000, tmr.ALARM_SINGLE, function()
if myRouter=="dlink" then
print("Dlink selected")
wifi.sta.config("dlink","password1")
wifi.sta.connect()
if wifi.sta.getip() == nil then
print("NO IP yet! ,Connecting...")
else
tmr.stop(1)
print("Connected, IP is "..wifi.sta.getip())
end
elseif myRouter=="cisco" then
print("Cisco selected")
wifi.sta.config("cisco","passoword2")
wifi.sta.connect()
if wifi.sta.getip() == nil then
print("NO IP yet! ,Connecting...")
else
tmr.stop(1)
print("Connected, IP is "..wifi.sta.getip())
end
else
print("No network is giving an ip")
end
end)
Lo que estoy buscando es una devolución de llamada que se activa cada vez que el temporizador "tmr" expira. De esta manera puedo cambiar la variable a myRouter = "cisco" . Observe en el código anterior que no pude cambiar la variable " myRouter ".
Consideré usar un software watchdog para monitorear la conectividad todo el tiempo, por lo que si el WiFi cae en una red, se activará el código anterior. No estoy seguro de cómo hacer esto o cómo se hace normalmente, ya que soy muy nuevo en lua. Por favor, avísenme o indíquenme un recurso que puede ayudar a este respecto. Gracias chicos.
Esta es una pieza de código no comprobada que se ensambla rápidamente.
effectiveRouter = nil
counter = 0
wifi.sta.config("dlink", "password1")
tmr.alarm(1, 1000, tmr.ALARM_SEMI, function()
counter = counter + 1
if counter < 60 then
if wifi.sta.getip() == nil then
print("NO IP yet! Keep trying to connect to dlink")
tmr.start(1) -- restart
else
print("Connected to dlink, IP is "..wifi.sta.getip())
effectiveRouter = "dlink"
startProgram()
end
elseif counter < 120 then
wifi.sta.config("cisco", "password2")
if wifi.sta.getip() == nil then
print("NO IP yet! Keep trying to connect to cisco")
tmr.start(1) -- restart
else
print("Connected to cisco, IP is "..wifi.sta.getip())
effectiveRouter = "cisco"
startProgram()
end
else
print("Out of options, giving up.")
end
end)
Primero intentará conectarse a ''dlink'' durante 60 s, luego a ''cisco'' durante otros 60 s, y eventualmente se rendirá después de eso si ninguno de los intentos fue exitoso. Utiliza un temporizador semiautomático que solo se reinicia si todavía no hay una IP.