ESP8266: Unterschied zwischen den Versionen

Aus FHEMWiki
(→‎Tasmota: webbasiert flashen)
 
(25 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[ESP8266]] ist ein 32-Bit-Mikrocontroller mit WLAN-Funkmodul von der chinesischen Firma Espressif, der einfach programmiert werden kann. Er erlaubt einerseits den Anschluss von Sensoren und Aktoren via GPIO, SPI oder serieller Schnittstelle und andererseits via WLAN-Schnittstelle die Verbindung mit dem FHEM-Server. Mehrere Schaltaktoren haben diesen Chip verbaut und können daher umgeflasht werden, so dass eine Einbindung in FHEM möglich ist.


== Das Modul - Die Module ==
== ESP8266 Technische Daten ==
Dieses kleine Bauteil, welches für wenige Euros zu bekommen ist, ist ein WLAN-Funkmodul welches einfach programmiert werden kann und über Sensoren und Aktoren mit FHEM kommunizieren kann.
Das Datenblatt kann man auf der [https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf Webseite von espressif] herunterladen.  Weitere technische Details über ESP8266 sind im [https://www.mikrocontroller.net/articles/ESP8266 mikrocontroller.net] zu finden. Auch in der [https://de.wikipedia.org/wiki/ESP8266 Wikipedia] finden sich interessante Informationen. Die umfangreichsten Informationen aber hat Neil Kolban in einem kostenfreien [http://neilkolban.com/tech/esp8266/ eBook] zusammengetragen.
Es gibt mindestens 13 verschiedene Versionen des ESP8266 mit unterschiedlichem Funktionsumfang.
 
https://www.mikrocontroller.net/articles/ESP8266
 
Um einen Einblick in die Möglichkeiten zu geben werden hier die Schritte zum Aufbau eines ESP8266 - 01 beschrieben.
 
''Ich werde die Seite in den nächsten Tagen nach und nach ergänzen und mich mit dem Wiki vertraut machen''


== ESP8266 mit einer alternativen Firmware flashen ==
== ESP8266 mit einer alternativen Firmware flashen ==
Wir benötigen einen ESP8266 01, einige Jumper Kabel, ein USB Kabel und einen USB-Uart Adapter mit 3,3 Volt. Es gibt aber auch solche Adapter mit 3,3 und 5 Volt die man dann per Jumper einstellen kann.
Sehr viel Informationen zum flashen des Chips findet man {{Link2Forum|Topic=46205|LinkText=in diesem Forumthread}}. Ein hilfreiches Video findet sich [https://www.youtube.com/watch?v=Gh_pgqjfeQc hier].
Da der kleine ESP nicht auf ein Breadboard passt, kann man sich ein Jumperkabel, wie es auf dem Bild zu sehen ist, anfertigen. So kann man schnell die benötigten Verbindungen anfertigen.
 
Ein Video das mir sehr geholfen hat findet sich hier:
https://www.youtube.com/watch?v=Gh_pgqjfeQc
 
[[Datei:Bauteile.jpg]]
 
Hier ein Bild von der Verdrahtung im Orginal
 
[[Datei:Verdrahtung.jpg]]
 
ESP  < - > USB-Adapter ;  TX    < - > RX  ,  RX    < - > TX  ,  VCC  < - > 3.3V  ,  CH_PD < - > 3.3V  ,  GND  < - > GND  ,  GPIO0 < - > GND
 
Es ist unbedingt darauf zu achten, daß der ESP nur mit 3,3 Volt betrieben werden darf.
Also den Jumper auf dem Board noch einmal kontrollieren, bevor man diesen an den Computer anschließt.
 
Nachdem der USB Adapter am Computer angeschlossen wurde, sollte man im Gerätemanager den zugewiesenen Port nachsehen.
 
Im kommenden Schritt müssen wir uns den nodemcu-flasher z.B. von dieser Seite laden und installieren:
https://github.com/nodemcu/nodemcu-flasher
 
dazu noch die benötigten Firmware Dateien:
https://github.com/nodemcu/nodemcu-firmware
 
Der Flasher wird nun gestartet und die benötigte Firmware Datei in den Flasher geladen.
 
nodemcu_integer_0.9.6-dev_20150406.bin
 
Der Flashvorgang kann nun mit einem Klick gestartet werden und sollte vollautomatisch durchlaufen.


Am Ende sollte es so aussehen:
[[Datei:Verdrahtung.jpg|mini|rechts|Verdrahtung im Original]]


[[Datei:ESP_Flash.jpg]]
ESP  < - > USB-Adapter
TX    < - > RX
RX    < - > TX
VCC  < - > 3.3V
CH_PD < - > 3.3V
GND  < - > GND
GPIO0 < - > GND


Nun am besten den Adapter vom PC nehmen und GND von GPIO 0 trennen. '''Diese Verbindung wird nur beim flashen benötigt.'''
Es ist unbedingt darauf zu achten, dass der ESP nur mit 3,3 Volt betrieben werden darf. Allerdings sind die PINs des ESP sehr wohl 5V-tolerant, siehe hierzu [https://forum.fhem.de/index.php/topic,108669.msg1026465.html#msg1026465 diesen Thread]. Entscheidend ist, dass der Stromfluss von dem 5V-Element begrenzt wird, da sonst die innenliegende Diode durchbrennt.


== Lua Scripte aufspielen ==
=== ESPLink ===
Für das speichern der LUA Scripte nimmt man am besten den Esplorer.
ESPLink ist eine open-source Firmware von [https://github.com/jeelabs/esp-link jeelabs], deren Weiterentwicklung anscheinend eingestellt wurde. Sie erlaubt die Anbindung einer seriellen Schnittstelle ans Internet (Port 23) über den ESP. Weitere Sensoren können nicht oder nur mit Abänderung der Firmware verwendet werden.


http://esp8266.ru/esplorer/
Es findet sporadisch eine Weiterentwicklung an ESPLink statt, im Jahr 2020 wurde eine Version 3.0 erwähnt. Eine wichtige Anmerkung zur derzeit stabilen Version 2.2.3: Einige Versionen des ESP-01 enthalten den so genannten Puya-Speicherchip  (googled man Puya und ESP-01 so finden sich zahlreiche Hinweise). Hat man einen solchen Puya-Chip, so gibt es beim flashen Probleme: Zwar erfolgt der Schreibvorgang fehlerfrei, es kann aber nicht im internen ESP-Speichersystem (so genannte SPIFFS) geschrieben werden, so dass das eigentliche Programm auf dem ESP nicht läuft und man zum Beispiel keine Wifi-Angaben speichern oder keine Webseiten aufrufen kann. Es ist möglich, dass ESPLink Version 2.2.3 von diesem Fehler betroffen ist. In diesem Fall muss man auf eine andere Software ausweichen, siehe zum Beispiel diesen [https://forum.fhem.de/index.php/topic,108435.msg1024056.html#msg1024056 Forumsbeitrag mit Sketch].
Den Esplorer downloaden und installieren.


In diesem Beispiel werde ich einen Temperatursensor 18B20 mit dem ESP verbinden, um die Temperatur auszugeben. Dazu verbinde ich die Datenleitung des Temperatursensors mit dem GPIO0 und versorge den Sensor mit VCC und GND.  
=== ESPEasy ===
ESPEasy ist eine open-source Firmware von [https://www.letscontrolit.com/wiki/index.php/ESPEasy Letscontrolit], die beständig weiterentwickelt wird. Sie erstellt eine GUI, mit der eine Einbindung in FHEM leicht gelingt und verschiedene Sensoren eingebunden werden können. Dabei muss man davon ausgehen, dass man den Chip selbst verdrahten muss. Mehr Informationen in diesem [[ESPEasy|Eintrag]].


Den Adapter mit ESP sowie Temperatursensor wird nun wieder mit dem Computer verbunden.
=== Tasmota ===
Tasmota ist eine open-source Firmware von [https://github.com/arendst/Sonoff-Tasmota Theo Arends], die beständig weiterentwickelt wird. Sie erstellt eine GUI, die eine Einbindung in FHEM erlaubt und zudem eine MQTT-Einbindung erstellt. Oft kann man Tasmota ohne größere Umbauten am Gerät auf den Chip übertragen.


Das Programm Esplorer.jr dann starten.
Inzwischen kann man Tasmota webbasiert flashen, wenn eine USB-Verbindung mit dem ESP besteht: https://arendst.github.io/Tasmota/
Es erscheint nun folgender Startbildschirm


[[Datei:esplorer_open.jpg]]
== Bekannte Geräte ==
Mehrere Geräte, die in FHEM eingebunden werden können, enthalten den ESP8266 und eignen sich daher zum flashen. Zu nennen sind (Angabe mit Forenthreads oder Wikieinträgen)


Hier wurde der Adapter erkannt und der esp mit der alternativen Firmware gestartet
{|
Im folgenden kann der ESP nun mit den erforderlichen LUA Skripten versehen werden.
| Sonoff-Gerätegruppe
für unser Beispiel haben wir 3 Skripte die im FHEM Forum geladen werden können.
| [https://wiki.fhem.de/wiki/Sonoff Wikieintrag]
http://forum.fhem.de/index.php/topic,28905.msg297133.html#msg297133
|-
 
| Shelly-Aktoren
Diese sollten nun in folgender Reihenfolge gespeichert werden.
| [https://wiki.fhem.de/wiki/Shelly-Aktoren Wikieintrag]
zuerst die DS18b20.lua, dann die fhem.lua und zum Abschluß die init.lua
|-
 
| diverse Eigenbauprojekte
Doch bevor dies gemacht wird müssen noch einige Änderungen am Code vorgenommen werden.
| {{Link2Forum|Topic=91042|LinkText=Forumthread}}
In der Init.lua die SSID und das Passwort
|}
In der fhem..... .lua die IP Adresse vom FHEM Server.
 
Mit diesen Änderungen kann der ESP nun geflasht werden.
'''Ist der FHEM Server allerding über ein attr WEB basicAuth gesichert, so muss der Anmeldvorgang noch erweitert werden.'''
 
Der gesamte Code muss dann so aussehen
--fhem.lua
require('ds18b20')
-- ESP-01 GPIO Mapping
gpio0 =3
gpio2 =4
ds18b20.setup(gpio0)
t=ds18b20.read()
print("Temp:" .. ds18b20.read() .. " C\n")
if(t==nil) then
t=0
end
tmr.alarm(0,30000, 1, function()
t=ds18b20.read()
conn=net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload) print(payload) end )
conn:connect(8083,"192.168.178.46")
conn:send("GET /fhem?cmd=setreading%20esp8266temp%20state%20T:%20" ..t.. "\r\n"
            .. "HTTP/1.1\r\n"
            .. "Host: www.local.lan\r\n"
            .. "Authorization: Basic Rsdfsfdsno6MDYwMg==\r\n"
            .. "Connection: keep-alive\r\n"
            .. "Accept: */*\r\n\r\n")
end)
 
Dieser Anteil muss nun gegen ausgetauscht werden. Er ist hier mit base64encode verschlüsselt.  
In der commandref von FHEM gibt es dazu einige Zeilen
http://fhem.de/commandref.html#basicAuth
 
Hier ein Möglichkeit den String zu verschlüsseln:
https://www.base64encode.org
 
Wenn ich die Seite aufrufe gebe ich im oberen Feld zB ein:
user:1234
und es erscheint dann im unteren Feld der benötigte String
dXNlcjoxMjM0
 
Dieser String ist nun meine Anmeldung am FHEM Server und wird im lua Code eingefügt.
 
Nun kann dies in der oben beschrieben Reihenfolge geflasht werden.
 
== Hinweise zum Betrieb mit FHEM ==
Es muss eigentlich nur ein dummy eingerichtet werden
Also
define esp8266temp dummy
Die Ausgabe in FHEM sollte dann so aussehen:
 
[[Datei:ESP_FHEM_1.jpg]]
 
Formatierungen und Weiterverarbeitung folgen, nachdem ich es selbst verstanden habe.


== Bekannte Probleme ==
== Bekannte Probleme ==
Mein USB Seriell Adapter hatte scheinbar Probleme beim Flashen der alternativen Firmware. Nach einem Tipp aus dem Forum, alternativ einen Arduino nano mit FTDI Chip zu nehmen, den ich zum Glück hatte, lief alles problemlos.


Mein USB Seriell Adapter hatte scheinbar Probleme beim flashen der alternativen Firmware.
Der ESP ist intern so programmiert, dass er nach 5 Minuten Inaktivität die Kommunikation mit WLAN einstellt. Dadurch kann es zu Verzögerungen bei nachfolgenden Sende- und Empfangsbefehlen kommen. Hierbei kann es sich als hilfreich erweisen, regelmäßig einen ping-Befehl zu senden, damit die WLAN-Kommunikation wieder aufgenommen wird. Allerdings basiert ping auf ICMP (siehe [https://www.tippscout.de/internet-was-sind-tcp-ip-udp-und-icmp_tipp_2268.html diese Erklärung]) und daher kann es sein, dass die TCP-Kommunikation davon gerade nicht beeinflusst und damit aktiviert wird.
Nach einem Tipp aus dem Forum alternativ einen Ardunio nano mit FTDI Chip zu nehmen, den ich zum Glück hatte, lief alles problemlos.


== Links ==
== Links ==
 
* Hier schon mal die Anleitung als Word Dokument, meinen Dank an alle die dabei im Vorfeld geholfen haben {{Link2Forum|Topic=28905|Message=297646|LinkText=Anleitung}}
Hier schon mal die Anleitung als Word Dokument, meinen Dank an alle die dabei im Vorfeld geholfen haben
* Im Netz gibt es ein entsprechendes Forum [http://www.esp8266.com www.esp8266.com]
[ http://forum.fhem.de/index.php/topic,28905.msg297646.html#msg297646 Anleitung]
* [[Sonoff]]
 
[[Kategorie:Other Components]]
 
[[Kategorie:IP Components]]
 
[[Kategorie:ESP8266]]
Im Netz gibt es ein entsprechendes Forum
[http://www.esp8266.com www.esp8266.com]

Aktuelle Version vom 1. August 2021, 16:19 Uhr

ESP8266 ist ein 32-Bit-Mikrocontroller mit WLAN-Funkmodul von der chinesischen Firma Espressif, der einfach programmiert werden kann. Er erlaubt einerseits den Anschluss von Sensoren und Aktoren via GPIO, SPI oder serieller Schnittstelle und andererseits via WLAN-Schnittstelle die Verbindung mit dem FHEM-Server. Mehrere Schaltaktoren haben diesen Chip verbaut und können daher umgeflasht werden, so dass eine Einbindung in FHEM möglich ist.

ESP8266 Technische Daten

Das Datenblatt kann man auf der Webseite von espressif herunterladen. Weitere technische Details über ESP8266 sind im mikrocontroller.net zu finden. Auch in der Wikipedia finden sich interessante Informationen. Die umfangreichsten Informationen aber hat Neil Kolban in einem kostenfreien eBook zusammengetragen.

ESP8266 mit einer alternativen Firmware flashen

Sehr viel Informationen zum flashen des Chips findet man in diesem Forumthread. Ein hilfreiches Video findet sich hier.

Verdrahtung im Original
ESP  < - > USB-Adapter
TX    < - > RX
RX    < - > TX
VCC   < - > 3.3V
CH_PD < - > 3.3V
GND   < - > GND
GPIO0 < - > GND

Es ist unbedingt darauf zu achten, dass der ESP nur mit 3,3 Volt betrieben werden darf. Allerdings sind die PINs des ESP sehr wohl 5V-tolerant, siehe hierzu diesen Thread. Entscheidend ist, dass der Stromfluss von dem 5V-Element begrenzt wird, da sonst die innenliegende Diode durchbrennt.

ESPLink

ESPLink ist eine open-source Firmware von jeelabs, deren Weiterentwicklung anscheinend eingestellt wurde. Sie erlaubt die Anbindung einer seriellen Schnittstelle ans Internet (Port 23) über den ESP. Weitere Sensoren können nicht oder nur mit Abänderung der Firmware verwendet werden.

Es findet sporadisch eine Weiterentwicklung an ESPLink statt, im Jahr 2020 wurde eine Version 3.0 erwähnt. Eine wichtige Anmerkung zur derzeit stabilen Version 2.2.3: Einige Versionen des ESP-01 enthalten den so genannten Puya-Speicherchip (googled man Puya und ESP-01 so finden sich zahlreiche Hinweise). Hat man einen solchen Puya-Chip, so gibt es beim flashen Probleme: Zwar erfolgt der Schreibvorgang fehlerfrei, es kann aber nicht im internen ESP-Speichersystem (so genannte SPIFFS) geschrieben werden, so dass das eigentliche Programm auf dem ESP nicht läuft und man zum Beispiel keine Wifi-Angaben speichern oder keine Webseiten aufrufen kann. Es ist möglich, dass ESPLink Version 2.2.3 von diesem Fehler betroffen ist. In diesem Fall muss man auf eine andere Software ausweichen, siehe zum Beispiel diesen Forumsbeitrag mit Sketch.

ESPEasy

ESPEasy ist eine open-source Firmware von Letscontrolit, die beständig weiterentwickelt wird. Sie erstellt eine GUI, mit der eine Einbindung in FHEM leicht gelingt und verschiedene Sensoren eingebunden werden können. Dabei muss man davon ausgehen, dass man den Chip selbst verdrahten muss. Mehr Informationen in diesem Eintrag.

Tasmota

Tasmota ist eine open-source Firmware von Theo Arends, die beständig weiterentwickelt wird. Sie erstellt eine GUI, die eine Einbindung in FHEM erlaubt und zudem eine MQTT-Einbindung erstellt. Oft kann man Tasmota ohne größere Umbauten am Gerät auf den Chip übertragen.

Inzwischen kann man Tasmota webbasiert flashen, wenn eine USB-Verbindung mit dem ESP besteht: https://arendst.github.io/Tasmota/

Bekannte Geräte

Mehrere Geräte, die in FHEM eingebunden werden können, enthalten den ESP8266 und eignen sich daher zum flashen. Zu nennen sind (Angabe mit Forenthreads oder Wikieinträgen)

Sonoff-Gerätegruppe Wikieintrag
Shelly-Aktoren Wikieintrag
diverse Eigenbauprojekte Forumthread

Bekannte Probleme

Mein USB Seriell Adapter hatte scheinbar Probleme beim Flashen der alternativen Firmware. Nach einem Tipp aus dem Forum, alternativ einen Arduino nano mit FTDI Chip zu nehmen, den ich zum Glück hatte, lief alles problemlos.

Der ESP ist intern so programmiert, dass er nach 5 Minuten Inaktivität die Kommunikation mit WLAN einstellt. Dadurch kann es zu Verzögerungen bei nachfolgenden Sende- und Empfangsbefehlen kommen. Hierbei kann es sich als hilfreich erweisen, regelmäßig einen ping-Befehl zu senden, damit die WLAN-Kommunikation wieder aufgenommen wird. Allerdings basiert ping auf ICMP (siehe diese Erklärung) und daher kann es sein, dass die TCP-Kommunikation davon gerade nicht beeinflusst und damit aktiviert wird.

Links

  • Hier schon mal die Anleitung als Word Dokument, meinen Dank an alle die dabei im Vorfeld geholfen haben Anleitung
  • Im Netz gibt es ein entsprechendes Forum www.esp8266.com
  • Sonoff