루아 어를 사용하여 wifi 연결을 해결하려고합니다. 나는 해결책을 찾기 위해 the api을 샅샅이 뒤졌지만 아직은 단단한 것이 없다. 나는 이전 질문 인 dynamically switch between wifi networks을 물었고 나는 그 질문에 답을했으나 예상했던대로 성취하지 못했습니다.NodeMCU WiFi 자동 연결
기본적으로 두 개의 서로 다른 제공 업체의 두 가지 네트워크가 있습니다. 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 문이 실행되었음을 알려줍니다. print(effectiveRouter)
. 나는이 언어를 처음 사용하기 때문에 루아에 대해 매우 새롭다. 나는이 보일러 플레이트 코드가 전에 이루어 졌음에 틀림 없다는 것을 확신합니다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까? NodeMCU ESP8266을 이미 설정했기 때문에 arduino IDE로 전환 할 수 있습니다. 내가 java-OOP 배경에서 왔을 때 나는 논리를 더 잘 따라갈 수 있을지 모른다.
effectiveRouter는 제공된 코드에서 어떠한 값도 할당되지 않습니다. 어떻게 다른 일이 될 수 있습니까? 1000ms 후에 처음으로 꺼지는 타이머를 시작합니다. 그 시점에서 물론 effectiveRouter를 인쇄합니다. effectiveRouter를 인쇄 한 후 첫 번째 연결 시도가 발생합니다. 그러나 타이머 콜백에서 어떤 일이 발생하더라도 effectiveRouter – Piglet
@ Piglet 값에 영향을 미치지 않습니다.이를 지적 해 주셔서 감사합니다. 실수입니다. 위의 코드는 내가 가지고 놀았던 많은 변형 중 하나입니다. 함수의 else 부분에서 "effectiveRouter = dlink"라는 과제를 삭제 한 곳의 빈 줄이 있습니다 – Binaryrespawn