ESP8266
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.
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) |
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.
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.
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.
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 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 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
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 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 Anleitung
- Im Netz gibt es ein entsprechendes Forum www.esp8266.com