2017-09-22 3 views
-1

Je suis assez nouveau sur l'ESP8266. J'essaye d'ajouter les WebSockets au code de Lua, mais chaque fois que j'essaye d'employer le WebSocket regardant le documentation, le dispositif jette l'erreur comme tentative d'indexer global websocket (une valeur de nil). Je ne suis pas vraiment sûr s'il y a quelque chose à importer, quelqu'un peut-il m'aider s'il vous plaît avec ceci.Tenter d'indexer le 'websocket' global

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

Comment avez-vous configuré votre build de firmware NodeMCU? (https://nodemcu-build.com/) Avez-vous essayé de mettre 'websocket = require (" websocket ")' comme première ligne du script? –

Répondre

0

Je vois trois problèmes avec le code ci-dessus.

Le problème principal semble être que le module websocket est absent de votre micrologiciel. Décommentez https://github.com/nodemcu/nodemcu-firmware/blob/master/app/include/user_modules.h#L75 s'il vous arrive de le construire manuellement.

En outre, tous les gestionnaires d'événements doivent être enregistrés avant que les événements respectifs aient une chance d'être déclenchés. Je vous vois l'intention pour faire exactement cela. Cependant, par défaut, wifi.sta.config utilise auto connect=true, auquel cas le processus d'enregistrement WiFi commence avant le démarrage du moniteur d'événements.

Enfin, la signature pour wifi.sta.config a changé il y a quelques mois (voir docs pour les détails). Maintenant, vous devez dire wifi.sta.config{"SSID","PWD"} passant ainsi une table Lua.

+0

Vous avez absolument raison, quand j'ai observé le message après le redémarrage, le module websocket est manquant. Ensuite, j'ai fait une autre construction avec des websockets. Merci @Marcel – maheshgupta024