2017-09-22 18 views
-1

私はESP8266にとってかなり新しいです。 WebSocketをLuaコードに追加しようとしていますが、毎回documentationを参照してWebSocketを使用しようとすると、グローバルwebsocketnil値)のインデックスを作成しようとすると、デバイスがエラーをスローします。私は本当に何かがある場合は、私はこれで私を助けてもらえますか?グローバル 'websocket'のインデックスを作成しようとしています

function connectToSocket() 
    print ("Connect to socket called, OK.") 
    local ws_client = websocket.createClient() 
end 

wifi.setphymode(wifi.PHYMODE_N) 
wifi.setmode(wifi.STATION) 
wifi.sta.config("SSID","PWD") 
wifi.sta.eventMonReg(wifi.STA_IDLE, function() print("IDLE") end) 
wifi.sta.eventMonReg(wifi.STA_CONNECTING, function() print("CONNECTING...") end) 
wifi.sta.eventMonReg(wifi.STA_WRONGPWD, function() print("WRONG PASSWORD!!!") end) 
wifi.sta.eventMonReg(wifi.STA_APNOTFOUND, function() print("NO SUCH SSID FOUND") end) 
wifi.sta.eventMonReg(wifi.STA_FAIL, function() print("FAILED TO CONNECT") end) 
wifi.sta.eventMonReg(wifi.STA_GOTIP, function() 
    print("GOT IP "..wifi.sta.getip()) 
    connectToSocket() 
end) 
wifi.sta.eventMonStart() 
wifi.sta.connect() 
+1

NodeMCUファームウェアのビルドはどのように設定しましたか? (https://nodemcu-build.com/) 'websocket = require(" websocket ")'をスクリプトの最初の行に入れようとしましたか? –

答えて

0

上記のコードに3つの問題があります。

主な問題は、ご使用のファームウェアにwebsocketモジュールがないことです。手動で構築する場合は、https://github.com/nodemcu/nodemcu-firmware/blob/master/app/include/user_modules.h#L75のコメントを外してください。

さらに、イベントハンドラは、それぞれのイベントが発生する前に登録する必要があります。私はあなたを参照してくださいは、正確にそれを行うつもりです。ただし、デフォルトでwifi.sta.configauto connect=trueを使用します。この場合、イベントモニターが開始される前にWiFi登録プロセスが開始されます。

最後に、wifi.sta.configの署名が数か月前に変更されました(詳細はdocsを参照)。今ではwifi.sta.config{"SSID","PWD"}と言って、それによってLuaテーブルを渡す必要があります。

+0

あなたは絶対に正しいです、再起動後にメッセージを見たとき、websocketモジュールがありません。それから私はウェブソケットで別のビルドを作った。ありがとう@Marcel – maheshgupta024

関連する問題