Wie kann LUA vom Mac in den ESP8266 geflasht werden um einen Reedkontakt per WLAN abzufragen?

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.

reedschalter

Also erst einmal eine LUA Firmware für den ESP8266 “bestellt“, da ich keine Lust hatte es selbst zu kompilieren.
LUA Firmware
Dazu hier einfach die E-Mail Adresse angeben und die default Einstellungen absenden. Nach ein paar Minuten kommt der Link per E-Mail:

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:

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

Lua Prompt

diesen Code eingeben:

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()

Wie hier:
lua

Nun kann im Browser die IP-Adresse des ESP angegeben werden und der Server liefert:
offen
oder
geschlossen

Wer die IP-Adresse nicht kennt, gibt einfach in der Konsole:

print(wifi.sta.getip())

und erhält die IP-Adresse. Wer noch nützliche Anwendungsfälle kennt, bitte Posten.

Ähnliche Artikel:

  1. Wie kann PySerial und Esptool auf einem Mac OS X El Capitan zum flashen einer neuen Firmware für den ESP8266 installiert werden?
  2. Wie kann der ESP8266 per WLAN mit AT über die Cloud upgedated werden?
  3. Wie kann der ESP8266 mit dem Raspberry Pi verwendet werden?

wallpaper-1019588
Die Algarve feiert 50 Jahre Nelkenrevolution
wallpaper-1019588
Mobile Suit Gundam SEED FREEDOM: Bandai Namco zeigt den Film in den deutschen Kinos
wallpaper-1019588
[Manga] Demon Slayer [2]
wallpaper-1019588
Soundtrack einer Generation: Musik und visuelle Medien harmonisieren