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

Erstellt am 15. Dezember 2015 von It_berater

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:

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

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:

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:

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?