ESP8266

Aus FHEMWiki

Das Modul - Die Module

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

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: https://www.youtube.com/watch?v=Gh_pgqjfeQc

Bauteile.jpg

Hier ein Bild von der Verdrahtung im Orginal

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:

ESP Flash.jpg

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.

http://esp8266.ru/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.

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

Das Programm Esplorer.jr dann starten. Es erscheint nun folgender Startbildschirm

Esplorer open.jpg

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 3 Skripte die im FHEM Forum geladen werden können. http://forum.fhem.de/index.php/topic,28905.msg297133.html#msg297133

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

ESP FHEM 1.jpg

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 Ardunio 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 [ http://forum.fhem.de/index.php/topic,28905.msg297646.html#msg297646 Anleitung]


Im Netz gibt es ein entsprechendes Forum www.esp8266.com