In Arbeit!
Der SmartfoxGateway wird mit dem Smartfox verdrahtet und anschliessend eingeschaltet und per HTML konfiguriert.
Verdrahtung des SmartfoxGateway
Der SmartfoxGateway ist ein Modul mit eigeneständiger 5VDC-Versorgung per Steckernetzteil. Am Montageort muß eine 230VAC-Steckdose verfügbar sein. Der SmartfoxGateway sollte direkt unter dem Smatfox montiert werden, um die Verbindungleitungen so kurz wie möglich zu halten.
Bild Schaltung
Bild montiertes System
Voraussetzungen für den Betrieb
Folgende Voraussetzungen müssen gegeben sein:
- PC mit Arduino-IDE 1.65 mit ESP8266-Erweiterungen
- USB-FTDI-Programmieradapter mit 5V
- WLAN mit DHCP-Adressvergabe
- Raspberry Pi mit OpenHAB HomeAutomation-Server und fixer IP-Adresse
Programmierung des SmartfoxGateway
Für die Programmierung wird ein normaler USB-FTDI-Adapter mit 5V verwendet. Aus den 5V des Adapters erzeugt der ESP8266 mit seinem eingebauten Spannungsregler die erforderliche Betriebsspannung von 3,3V.
Der Programmieradapter wird auf den SmartfoxGateway gesteckt und über ein USB-Kabel mit dem PC verbunden:
Der SmartfoxGatewaybenötigt noch keine eigene Stromversorgung, er wird aus dem Programmieradapter versorgt. Sollte das Netzteil bereits angesteckt sein, kann es stecken bleiben - es gibt keine Kurzschlüsse oder ähnliches.
Auf dem PC wird die Arduino-IDE gestartet und die Parameter für den ESP8266 eingestellt:
Die gelb markierten Einträge sind immer gleich einzustellen. Der rot hinterlegte Eintrag für den COM-Port hängt von Eurem FTDI-Adapter ab. Bei meinem PC ist es COM26. Stellt ihn auf Euren Wert ein.
Jetzt kann der Sketch auf den ESP8266 hochgeladen werden. Nach erfolgreichem Hochladen sollte der ESP8266 einmal per Reset-Taste zurückgesetzt werden. Der Programmieradapterkann entfernt werden.
Konfiguration
Hinweis: Bei der Konfiguration dürfen SSI und Passwort fürs WLAN keine Leerzeichen enthalten. Das Webformular liefert diese Infos URL-codiert zurück und dann werden falsche Daten im EEPROM gespeichert! Also nur ASCII Groß-/Kleinbuchstaben und Ziffern verwenden. Auch Umlaute sind zu vermeiden. |
Im EEPROM des ESP8266 werden die Konfigurationsdaten abgelegt und bei jedem Boot abgerufen und angewendet. Nach dem Brennen des Sketch ist das EEPROM leer und muß erst mit Konfigurationsdaten gefüllt werden. Die Schwierigkeit besteht darin, dass der ESP8266 erst einmal nicht ins WLAN des Anwenders verbinden kann, weil SSID und Passwort fehlen. Hier bietet sich an, dass der ESP8266 erst einmal ein eigenes WLAN mit Webserver erstellt, auf das sich der Anwender mit seinem Browser verbinden kann. Über ein angebotenes HTML-Formular können dann die Konfigurationsdaten eingegeben werden. Nach Absenden des Formulars werden die Daten im EEPROM gespeichert und der ESP8266 neu gebootet. Beim zweiten Reboot findet der Chip die erforderlichen WLAN- und Konfigurationsdaten im EEPROM vor und kann sich mit dem WLAN des Anwenders verbinden.
Ablauf der Konfiguration
Beim ersten Boot sind noch keine Konfigurationsdaten im EEPROM vorhanden. Nach dem Einlesen der EEPROM-Daten enthalten 'SSID' und 'Passwort' also Leerstrings.
- Der ESP8266 versucht 20 Sekunden lang, sich mit dem WLAN zu verbinden
- Jetzt erfolgt die Überprüfung, ob die Verbindung erfolgreich war. Wenn 'Nein', weiter mit Schritt (3)
- Der ESP8266 erstellt einen eigenen WLAN Access Point mit einer fester SSID ('ESPWIFI') und IP-Adresse (192.168.4.1)
- Ein Webserver mit einem HTML-Konfigurationsformular wird gestartet. Der Anwender verbindet sich über seinen PC mit dem neuen WLAN und ruft den Browser mit der IP-Adresse 192.168.4.1 auf. Das Konfigurationsformular wird angezeigt. Der Anwender gibt die richtigen WLAN-Daten und weitere Einstellungen ein und sendet das Formular ab
- Der ESP8266 empfängt die Formulardaten, wertet sie aus und speichert sie im EEPROM
- Ein automatischer Reboot des ESP8266 wird ausgeführt. Wurden die WLAN-Daten richtig konfiguriert, dann wird die WiFi-Verbindung erfolgreich sein und Schritt (7) wird abgearbeitet. Wenn nicht, erfolgt wieder Ablauf (1) bis (4).
- Im konfigurierten WLAN wird ein Webserver mit der vom DSL-Router erhaltenen DHCP-Adresse gestartet. Der Anwender kann sich über den Browser mit dem ESP8266 verbinden und das Modul bedienen oder wieder die Konfiguration ändern
Verwendete URL's Konfigurations-Webserver
Für die Konfiguration und Bedienung des ESP8266 werden die erforderlichen URL's festgelegt, welche der Anwender im Browser eingeben muß. Der ESP8266 hat feste Vorgaben bei der Erstellung eines Access Points:
- WLAN-SSID: ESPWIFI
- IP-Adresse: 192.168.4.1 (Class C Netz)
- Hostname: ESP_A6030B (die letzten 6 Stellen sind bei jedem ESP8266 unterschiedlich)
Um sich mit dem PC zu diesem WLAN zu verbinden, muß unter Windows eine Verbindung hergestellt werden. Dann kann im Browser die Konfigurationsseite aufgerufen werden:
http://192.168.4.1 (für ein nicht konfiguriertes ESP)
oder
http://ESP_A6030B (für ein konfiguriertes ESP)
Letzteres ist etwas schwieriger, weil man den Hostnamen des ESP8266 nicht kennt. Man kann ihn allerdings über die Weboberfläche des DSL-Routers ermitteln. Einfacher ist die Verbindung über die IP-Adresse.
Dem Anwender wird jetzt das Konfigurationsformular angeboten, in dem auch der Hostname angezeigt wird. Diesen Hostnamen sollte man sich für die spätere Bedienung notieren!
Verwendete URL's der Bedienoberfläche
Nach dem Reboot mit gültiger Konfiguration muß man sich am Windows-PC mit dem normalen Haus-WLAN verbinden. Der Aufruf der Weboberfläche erfolgt im Browser über
http://ESP_A6030B
Die IP-Adresse wird jetzt angezeigt. Man kann sie alternativ über den DSL-Router herausfinden. Hier die verfügbaren URL's des EnergyCounter:
Nr. | URL | Bedeutung |
Konfigurations-Web | ||
0 | http://192.168.4.1 | Nicht konfigurierter ESP8266: PC mit dem WLAN 'ESPWIFI' verbinden und diese URL im Browser aufrufen. |
Interaktive Bedienung | ||
1 | http://ESP_XXXXXX | Bedienoberfläche mit allen Befehlen (Homepage) |
2 | http://ESP_XXXXXX/cfg | Formular mit den EEPROM-Konfigurationsdaten zur Ansicht/Änderung |
3 | http://ESP_XXXXXX/val | Formular mit Anzeige der Messwerte |
4 | http://ESP_XXXXXX/boot | Der ESP8266 wird neu gebootet |
5 | http://ESP_XXXXXX/delconfig | Alle Konfigurationswerte im EEPROM löschen, dann folgt ein automatischer Reboot. Der ESP8266 startet dann wieder mit der Konfigurationsoberfläche |
Steuerung per Taste
Im Programm ist auch noch eine Steuerung über den Taster S6 vorgesehen. Je nachdem, wie lange man auf den Taster drückt, werden unterschiedliche Aktionen ausgelöst:
- fünf Sekunden: Software-Reboot des ESP8266
- ab 20 Sekunden: Löschen des EEPROM und Reboot
Das Programm entprellt die Taste S6 zusätzlich (50msec).
HTML-Webseiten des ESP8266
Mit dem WLAN des ESP8266 verbinden
Wenn der ESP8266 das erste Mal gestartet wird, dient er als Access Point für 'ESPWIFI'. Der Anwender muß sich mit seinem PC an dieses WLAN verbinden. Die folgenden Screenshots stammen von meinem Windows7-PC. Zuerst klickt man in der Taskleiste rechts unten auf das WLAN-Symbol. Daraufhin öffnet sich die Auflistung der verfügbaren Netzwerke:
Das WLAN 'ESPWIFI' ist unser Ziel, der Eintrag wird angeklickt:
Über den Button 'Verbinden' stellt man die Verbindung her. Der PC erhält automatisch eine IP-Adresse, welche zum WLAN passt. Anschliessend öffnet man den Browser und gibt die IP-Adresse ein:
Webformular Konfiguration
Es öffnet sich die Konfigurationsseite des ESP8266. Im oberen Teil werden die verfügbaren WLANs angezeigt:
Jetzt gibt man SSID und Passwort in das Formular ein, das sind die Mindestinformationen. Anschliessend klickt man den Button 'Save' an. Die Parameter werden jetzt im EEPROM des ESP8266 gespeichert und der Reboot veranlasst:
Jetzt wechselt man mit dem PC in das neu konfigurierte WLAN und kann im Browser den Hostnamen 'ESP_A5C68D' aufrufen. Der Webserver für die Bedienung wird gestartet.
Webformulare Bedienung
Der Webserver im Betrieb bietet mehrere Möglichkeiten, welche von der Homepage aus aufgerufen werden können.
Homepage
Die Homepage bietet die Auswahl aller vorhandenen Funktionen an
Darstellung der Werte (Show values)
Die zuletzt an OpenHAB übermittelten Werte für Energie und Leistung werden angezeigt. Sie ändern sich nach jedem Messintervall (normalerweise 60sec.). Die Webpage muß per Taste <F5> von Hand aktualisiert werden, um neuere Werte zu sehen.
Konfiguration
Auch im Betriebsmodus steht die Konfigurationsseite zur Verfügung. Damit können einzelne Parameter nachträglich angepasst werden. Beim Klick auf 'Save' werden sie im EEPROM gespeichert und der ESP8266 anschließend neu gebootet.
Reboot
Damit kann der Chip per Software neu gestartet werden. Die Konfigurationsdaten im EEPROM werden nicht verändert.
EEPROM löschen und booten
Über diese Funktion werden alle Parameter aus dem EEPROM gelöscht. Dies entspricht einem Zurücksetzen in den Auslieferungszustand. Damit die Änderungen übernommen werden, wird der ESP8266 anschließend neu gebootet. Der Anwender muß sich dann wieder mit dem Netzwerk 'ESPWIFI' verbinden und die Adresse 192.168.4.1 im Browser angeben.
Einzelheiten zu den Konfigurations-Parametern
Bei den Variablen für Kanal1 bis 5 werden bei der ersten Konfiguration OpenHAB-Variablennamen vorgeschlagen, welche eindeutig sind. Sie beinhalten den Hostnamen des Moduls. Es wird empfohlen, diese Vorschläge beizubehalten und in den Konfigurationsdateien von OpenHAB zu übernehmen. Die Variablen dürfen keine Umlaute oder Leerzeichen beinhalten.
Bei den 'Measurement Parameters' kann das Messinterval in Sekunden festgelegt werden. Die Empehlung ist 60 Sekunden. Wenn man hier einen zu kleinen Wert oder '0' eingibt, kann sicher der EnergyCounter 'aufhängen'. Dann muß das EEPROM über eine Hilfs-Software gelöscht werden.
Die Faktoren für die Kanäle 1 bis 5 sind Multiplikatoren für die gezählten Impulse. Über sie ist die Anpassung an die Impulswertigkeit eines Zählers möglich:
Ein S0-Stromzähler hat eine Impulswertigkeit von 0,5Wh pro Impuls (aufgedruckt auf Gehäuse). In diesem Fall stellt man den Faktor auf '0.5', dann wird die Energie in Wattstunden an OpenHAB übertragen.
Ein Gaszähler hat eine Impulswertigkeit von 100L/Impuls. Hier wäre als Faktor 100.0 einzutragen, damit der Gasverbrauch in Litern an OpenHAB übertragen wird. Hier müssen immer Floatzahlen mit einem Punkt als Trenner der Nachkommastellen eingeben werden, also '100.0' anstatt '100'.
Download des Programms
Ihr könnt Euch das Programm im Downloadbereich herunterladen.