Wollte schon immer mal LUA in den ESP8266 flashen. Um billig mit einem Reed-Kontakt und einem Server den Status des Schalters drahtlos über WLAN abzufragen.
Also erst einmal eine LUA Firmware für den ESP8266 „bestellt„, da ich keine Lust hatte es selbst zu kompilieren.
Dazu hier einfach die E-Mail Adresse angeben und die default Einstellungen absenden. Nach ein paar Minuten kommt der Link per E-Mail:
1 2 3 4 5 6 |
Your NodeMCU custom build finished successfully. You may now download the firmware: - float: http://nodemcu-build.com/builds/nodemcu-master-7-modules-*-float.bin - integer: http://nodemcu-build.com/builds/nodemcu-master-7-modules-*-integer.bin This was built against the master branch and includes the following modules: node, file, gpio, wifi, net, tmr, uart. The files are guaranteed to be available for download for 24h. |
Die *float.bin runter laden und in das esptool Verzeichnis kopieren wie hier schon beschrieben.
Dann den flash Modus für den ESP8266 01 anschalten. D.h. GPIO 0 auf Masse mit 1 KOhm Pullup Widerstand legen.
Die Firmware Datei flashen mit:
1 |
python esptool.py -p /dev/cu.usbserial write_flash 0x00 nodemcu-master-7-modules-*-float.bin |
Wenn nach ein paar Minuten alles geklappt hat, wieder den GPIO 0 auf Plus 3,3 Volt legen. Und den ESP anschalten.
Nach der Verbindung am LUA Prompt
diesen Code eingeben:
1 2 3 4 5 6 7 8 9 10 11 12 |
file.open("init.lua", "w") file.writeline([[print("Info www.wenzlaff.info")]]) file.writeline([[ srv=net.createServer(net.TCP)]]) file.writeline([[ srv:listen(80, function(conn,payload)]]) file.writeline([[ conn:on("receive", function(conn,payload)]]) file.writeline([[ print(payload)]]) file.writeline([[if gpio.read(3)==1 then conn:send("<h1>Schalter ist offen</h1>") else conn:send("<h1>Schalter ist geschlossen</h1>") end]]) file.writeline([[ end)]]) file.writeline([[ conn:on("sent", function(conn) conn:close() end)]]) file.writeline([[ end)]]) file.close() node.restart() |
Nun kann im Browser die IP-Adresse des ESP angegeben werden und der Server liefert:
oder
Wer die IP-Adresse nicht kennt, gibt einfach in der Konsole:
1 |
print(wifi.sta.getip()) |
und erhält die IP-Adresse. Wer noch nützliche Anwendungsfälle kennt, bitte Posten.