私はLua言語を使用して無線LAN接続を解決しようとしています。私は解決策を見つけるためにthe apiまで櫛を切ってきましたが、まだ何も解決していません。私は前の質問 dynamically switch between wifi networksを尋ねました。私がそれを求めたところで答えが出ましたが、私が期待したことは達成できませんでした。NodeMCU WiFi自動接続
基本的に、私は2つの異なるプロバイダから2つの異なるネットワークを持っています。 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)
私はそのコードを実行すると、私はコンソール上はnilとしてeffectiveRouterを取得します。これは、メソッド呼び出しが完了する前にprintステートメントが実行されたことを示しています。print(effectiveRouter)
これは私の初めての言語であるため、私は非常に非常に新しいluaです。私はこのボイラープレートのコードが以前に行われていなければならないと確信しています。誰かが私を正しい方向に向けることができますか? NodeMCU ESP8266用にすでに設定しているので、私はarduino IDEに移行しています。私はjava-OOPの背景から来ているので、私はより良いロジックを追うことができるかもしれません。
effectiveRouterは、指定されたコードでは決してasignedされません。どのようにそれ以外の何かになる必要はありません? 1000ミリ秒後に最初にオフになるタイマーを開始します。その時点ではもちろん、effectiveRouterを印刷します。 effectiveRouterを印刷した後、最初の接続が試みられます。しかし、あなたのタイマーのコールバックで何が起こっても、effectiveRouterの値には影響しません – Piglet
@ピグレットそれを指摘してくれてありがとう、私の間違いです。上のコードは、私が周りに遊んだ多くのバリエーションの一つです。関数のelse部分の中には、どこから空行がありますか? "effectiveRouter = dlink"という割り当てを削除しました – Binaryrespawn