I2C WLAN Gateway

Das I2C WLAN Modul mit Wemos D1 mini und die dazu passenden I2C I/O Module von www.Horter-Shop.de habe ich euch bereits vorgestellt. Ich habe viele Anfragen zu einer Web-GUI und der Einbindung ins Smart Home bekommen. Deswegen gibt es jetzt den noch nicht fertigen aber bereits funktionsfähigen Sketch für das I2C WLAN Modul. Damit wird es zum I2C WLAN Gateway und fungiert als Schnittstelle zum Smart Home. Wenn es Erweiterungen gibt, aktualisiere ich auch das GitHub Repository. So habt ihr immer die aktuellste Version. Wenn ihr Fragen, Anregungen oder eigene Erweiterungen durchgeführt habt, teilt diese doch gerne mit anderen Nutzern!
I2CWLANGateway - WebGUI

Übersicht

Das I2C WLAN Gateway ist nicht intelligent und ist nur eine Schnittstelle die mit einer vorhandenen Smart Home Steuerung wie z. B. dem Loxone Miniserver kommuniziert. Zusätzlich ist noch die direkte Steuerung über eine Web-GUI möglich. Folgend eine kleine Übersicht welche Funktionen bereits enthalten, welche noch nicht vollständig implementiert und welche geplant bzw. eventuell noch umgesetzt werden.

Folgende Funktionen sind in der Steuerung enthalten:
Web-GUI – Steuerung und Visualisierung der I2C I/O Module über eine Webseite
UDP ausgehend – Das I2C Input Modul sendet ein UDP Paket an eine Steuerung
HTTP GET eingehend – Das Output Modul über HTTP GET Befehl schalten
OTA – Over the Air Update vom Gateway
Telnet – Debugging ohne serielle Verbindung

Nicht vollständig implementiert:
Interrupt – Aktuell wird das Input Module nur bei Signal auf PIN 0 abgefragt
HTTP POST eingehend – Wird von der Webseite zum schalten der I2C Output Module benutzt, ist aber nicht dokumentiert
HTTP GET ausgehend mit Authorization – Sendet aktuell nur beim Start einen Befehl an den Loxone Miniserver

Features die geplant bzw. möglich sind:
Watchdog – Funktion der Steuerung überwachen und bei Problemen neustarten
UDP eingehend – Das I2C Output Modul über UDP Pakete steuern
I2C direkt – Direkte Ansteuerung der I2C Module ohne Library
Touch LCD – Steuerung und Visualisierung der I2C Module über ein Nextion LCD
20×4 LCD – Anzeige von Warnmeldungen etc. über ein 20×4 Zeichen LCD
Ethernet Shield – Aufgrund einer Anfrage habe ich auch mal das Thema Ethernet Modul für den Wemos D1 mit auf den Plan genommen

Einsatzszenario

Meine Werkstatt wird jetzt seit ein paar Monaten über das I2C WLAN Gateway gesteuert. Es sind nur ein paar Ein- und Ausgänge angeschlossen, dies ist aber für ein Beispiel genau richtig. Am I2C Input Modul sind aktuell ein Taster für Licht und der GEV Bewegungsmelder angeschlossen. Das I2C Output Modul schaltet über Finder Koppelrelais Licht, Steckdosen, Ladegeräte und über einen Schütz den Drehstromanschluss.

Der Sketch

Das Wichtigste vorweg, in meinem GitHub Repository findet ihr alles was ihr benötigt. Über den grünen „Clone or Download“ Button könnt ihr auch alles herunterladen.

 GitHub Repository I2CWLANGateway (Externer Link)

Leider ist der Sketch teilweise nicht so leicht verständlich, dafür ist der Sketch einfach zu groß und noch nicht ausreichend optimiert. Wie schon gesagt, wenn ihr eine einfachere oder bessere Lösung für die einzelnen Punkte habt, schreibt sie gerne als Kommentar oder schickt mir eine E-Mail über das Kontaktformular.

Struktur

Der Sketch besteht aktuell aus zwei Dateien. Die Datei I2CWLANGateway.ino enthält den eigentlichen Gateway Sketch, benötigt aber noch die I2CWLANGateway_HTML.ino für den Aufbau der Webseiten. Legt einfach beides in einen Ordner I2CWLANGateway und startet den Sketch.

Definition der Module

Für jedes I/O Modul muss ein entsprechender Block angelegt werden. Weiter unten müssen zusätzlich noch mehrere Funktionen für die Input und Output Module kopiert und angepasst werden. Das ist nicht wirklich schön, aber es funktioniert. 🙂 Es ist geplant, alles irgendwann etwas übersichtlicher zu gestalten.

Function OpenLoxoneURL

Für die Anmeldung über den Webservice am Loxone Miniserver werden Username und Password benötigt. Diese Informationen werden verschlüsselt in der Variable LoxoneAuthorization abgelegt. Mit dem folgenden Windows Powershell Befehl kann die Kombination für die Basic Authentication verschlüsselt werden.

Output Modul – HTTP

Der HTTP-Befehl zum setzen der Ausgänge auf dem Output Modul lautet wie folgt und teilt sich in drei Parameter auf.

http://<IP-Adresse>/board=21&output=0&command=1

Mit diesem Befehl könnt ihr auf dem Board mit der Adresse 0x21 die Ausgänge schalten. Für andere Adressen muss der Sketch entsprechend angepasst bzw. erweitert werden. Im Beispiel wäre es der erste Ausgang (0) und der Befehl diesen einzuschalten (1).

Rückblick und kurzer Ausblick

Die Steuerung der Werkstatt war, wie im Arduino Smart Home Projekt Beitrag beschrieben, zunächst ganz anders geplant. Seitdem sind viele neue Produkte auf dem Markt erschienen. Das Projekt Arduino Smart Home soll aber trotzdem noch umgesetzt werden, wenn auch mit geänderter Hardware und anderen Protokollen. Es schwirren noch viele Ideen in meinem Kopf umher und die Kisten sind voll mit Sensoren und Technik die erprobt werden möchte. Viele kleinere aber doch nicht unwichtige Hürden wie z. B. der energiesparende Betrieb eines Mikrocontrollers mit Solarzelle und LiPo-Akku sind hoffentlich bald erledigt! Dann geht es weiter!

2 Gedanken zu „I2C WLAN Gateway

  1. Hallo, habe mir mal die zusammenstellung bei Horter besorgt leider komme ich beim Kompilieren leider diese meldung :

    ………I2CWLANGateway.ino:12:24: fatal error: PCF8574.h: No such file or directory

    #include //

    ^

    compilation terminated.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

code