ESP8266

Aus FHEMWiki

ESP8266 ist ein WLAN-Funkmodul welches einfach programmiert werden kann und über das Sensoren und Aktoren mit FHEM kommunizieren können. Es gibt diverse Versionen des ESP8266 mit unterschiedlichem Funktionsumfang. Technische Details über ESP8266 sind auch im mikrocontroller.net zu finden.

Habe und hatte nie was dagegen das hier was geändert wird zum Wohle aller - kenne mich mit wikis leider noch nicht so gut aus

Todo: @Benutzer:Franz Tenbrock - sofern Du nicht selbst in dieser Richtung aktiv wirst, wird dieser Artikel in nächster Zeit in eine Einstiegsseite zum ESP8266-Thema umgebaut (seit deinem Versprechen, die Seite zu ergänzen ist mittlerweile ein Jahr vergangen). --Peter (Diskussion) 08:57, 4. Mai 2016 (CEST)
Info green.pngEin umfassender Überblick über das Thema ESP8266 - insbesondere in Verbindung mit der Beschreibung, wie mit ESPEasy ein Universal-Sketch auf den ESP8266 gebracht wird, findet sich in diesem Forenthema. Ein großer Teil dieser Informationen ist geeignet, auf diese Seite aufgenommen zu werden.

Um einen Einblick in die Möglichkeiten zu geben, werden hier die Schritte zum Aufbau eines ESP8266 - 01 18B20 Thermosensors beschrieben.

Soweit es mir gelingen sollte, werde ich in den nächsten Wochen einige Beispiele für Sensoren hier nach und nach hochladen.

Vorschläge von Kategorien wo die Seite auftauchen sollen werden gerne entgegengenommen.

Ich werde die Seite in den nächsten Tagen nach und nach ergänzen und mich mit dem Wiki vertraut machen. Interessieren würde es mich, ob Anfänger, die diese Anleitung Schritt für Schritt durchgegangen sind damit problemlos zurecht kommen, falls Probleme auftreten, einfach bei mir melden

ESP8266 mit einer alternativen Firmware flashen

Bauteile

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. 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.

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. 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.

Anzeige im Flasher nach dem flashen

Nun am besten den Adapter vom PC nehmen und GND von GPIO 0 trennen. Diese Verbindung wird nur beim Flashen benötigt.

Lua Scripte aufspielen

Für das Speichern der LUA Scripte nimmt man am besten den Esplorer. 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.

Esplorer Startbildschirm

Der Adapter mit ESP sowie Temperatursensor wird nun wieder mit dem Computer verbunden.

Das Programm Esplorer.jr dann starten. Es erscheint nun der nebenstehend gezeigte Startbildschirm

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. Für unser Beispiel haben wir drei Skripte die aus diesem Forenbeitrag geladen werden können.

Diese sollten nun in folgender Reihenfolge gespeichert werden: zuerst die DS18b20.lua, dann die fhem.lua und zum Abschluß die init.lua

Doch bevor dies gemacht wird, müssen noch einige Änderungen am Code vorgenommen werden. In der Init.lua die SSID und das Passwort, in der fhem..... .lua die IP Adresse des FHEM Servers.

Mit diesen Änderungen kann der ESP nun geflasht werden. Ist der FHEM Server über ein attr WEB basicAuth gesichert, muss der Anmeldevorgang 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/basicAuth von FHEM gibt es dazu einige Zeilen.

Hier ein Möglichkeit den String zu verschlüsseln: https://www.base64encode.org

Wenn ich die Seite aufrufe gebe ich im oberen Feld z.B. 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

Dummy für ESP8266 in der Details-Ansicht

Es muss eigentlich nur ein dummy eingerichtet werden, also

define esp8266temp dummy

Die Ausgabe in FHEM sollte dann so aussehen wie im nebenstehenden Bild gezeigt.

Formatierungen und Weiterverarbeitung folgen, nachdem ich es selbst verstanden habe.

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.

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