Hallo zusammen!
Ich möchte hier auch mein eBus-Projekt vorstellen. Ich bin nur dank der Hilfe aus diesem Forum überhaupt erst soweit gekommen und vielleicht ist dafür hier etwas Nützliches für wen anderen dabei.
Kurz vorweg, ich habe eine Vaillant atmoTEC plus Gastherme (mit Warmwasserspeicher) und einen VRT 370 Regler, welche über den eBus miteinander verbunden sind. Da habe ich mich dazugehängt, um die Heizung über den Computer überwachen und steuern zu können.
Meine Skripte sind klarerweise an meine spezielle Situation und meine Ziele angepasst.
Nun aber zu den Details:
Konzept
Konzeptionell kann man die ganze Lösung in mehrere Schichten unterteilen:
Schicht 1: Physischer Zugriff
Ich habe den [b]eBus Koppler Ethernet[/b] von E-Service Online in Verwendung, welcher den physischen Zugriff auf den eBus herstellt, den Datenstrom abgreift, diesen via Ethernet an den Computer weiterleitet, wo er über eine virtuelle COM-Schnittstelle abgegriffen werden kann.
Zusätzlich habe ich den eBus Koppler an eine [b]WLAN-Bridge[/b] angeschlossen, sodass ich kein Ethernet-Kabel zum eBus Koppler brauche, sondern via WLAN vom Computer darauf zugreifen kann.
Schicht 2: Datenstrom-Management
Ich habe mit C# einen [b]eBus Connector[/b] entwickelt, welcher im Hintergrund als Windows-Service läuft, den Datenstrom von der virtuellen COM-Schnittstelle in einzelne Nachrichten unterteilt und dann jede Nachricht einzeln als UDP-Paket an IP-Symcon weiterleitet.
Außerdem lauscht der eBus Connector auf UDP-Pakete von IP-Symcon, welche zu sendende eBus Nachrichten enthalten, die dann vom eBus Connector mit dem Bus synchronisiert verschickt werden.
Schicht 3: Low-level Funktionen
Im Skript eBusManager.php sind alle low-level Funktionen zusammengefasst. Dazu gehört das Interpretieren von empfangenen Nachrichten entsprechend des Protokolls: welches Byte bedeutet was (QQ, ZZ, PB, SB, NN, DB1, …, DBn, CRC, ACK usw.), A9 expandieren, CRC berechnen usw. Der eigentliche Inhalt (Befehl und Daten-Bytes) wird erst in der nächsten Schicht behandelt. Weitere Funktionen sind das Erzeugen von Nachrichten aus gegebenen Parametern (Befehl und Daten), Funktionen zum Kodieren und Dekodieren von Werten (z.B. DATA2c) usw.
Schicht 4: High-level Funktionen
Das Skript eBusEmpfaenger.php wird (als Ziel-Skript der Register-Variable des UDP-Sockets, der die Verbindung zum eBus Connector herstellt) beim Empfang einer jeden Nachricht aufgerufen und verarbeitet dann die entsprechende Nachricht. Hier wird der Inhalt der Nachrichten analysiert und die empfangenen Werte werden in IP-Symcon Variablen gespeichert.
Das Skript eBusSender.php enthält Funktionen zum Senden von eBus Nachrichten, z.B. „Zeitfenster setzen“, „Temperatur auslesen“ usw., wobei nur die Ziel-Werte (z.B. Soll-Temperatur) angegeben werden müssen und die Funktionen selber wissen, was mit welchem Befehl gemacht werden muss. Zum Setzen von Werten werden entsprechende Nachrichten gesendet und zum Auslesen von Werten werden die nötigen Anfragen geschickt. Die Antworten auf solche Anfragen (mit den gewünschten Werten) werden im Empfänger-Skript behandelt, welches die Werte in die entsprechenden IP-Symcon Variablen schreibt.
Manche Werte (z.B. Ist-Speichertemperatur) lassen sich rein durch das Abhören der Kommunikation zwischen Heizung und Regler aktuell halten. Andere Werte (z.B. Raum-Soll-Temperatur) müssen explizit abgefragt werden. Das Skript eBusMonitorRegler.php wird über ein Timer-Event zyklisch gestartet und fordert genau diese Werte regelmäßig an.
Zusätzlich gibt es noch die Skripte eBusMonitorSpeicher.php (überwacht die Speichertemperatur aufgrund des hier beschriebenen Problems und sendet einen Stopp-Befehl an die Heizung bei Überhitzung) und eBusMonitorService.php (startet die Windows-Services für den virtuellen COM-Port und den eBus Connector neu, wenn zu lange nichts mehr über den eBus empfangen wurde).
Schicht 5: Geschäftslogik
Mit den zuvor beschriebenen Funktionen ist es nun möglich, die Heizung zu steuern (über die vom Sender-Skript bereitgestellten Funktionen) und zu überwachen (hierzu sind keine Funktionsaufrufe notwendig, sondern es müssen nur die entsprechenden IP-Symcon Variablen ausgelesen werden, welche immer aktuell sein sollten). Dies kann verwendet werden, um die Heizung in die Haus-Automatisierung nach Wunsch einzubinden (z.B. Temperatur absenken, sobald man das Haus verlässt usw.).
Hier sind der Fantasie keine Grenzen gesetzt und daran werde ich mich als Nächstes machen, nachdem jetzt die nötigen Grundlagen dafür geschaffen sind.
IP-Symcon Setup
Hier ein paar Screenshots meines IP-Symcon Setups. Die Variablen sind nötig, weil darin die Daten aus empfangenen Nachrichten gespeichert werden. Die Struktur und die Namen sind egal, die Skripte greifen rein über die IDs zu, welche alle zentral im Skript eBusDefinitionen.php gespeichert sind. Dieses Skript muss also jeder an seine eigenen Bedürfnisse anpassen. Neben Variablen-IDs sind dort noch Parameter (z.B. Logging ein/aus), sonstige Konstanten und dergleichen enthalten.
Übersicht
Details
Skripte
Die ganze Logik ist in den sieben Skripten
[ul]
[li]eBusDefinitionen.php
[/li][li]eBusManager.php
[/li][li]eBusEmpfaenger.php
[/li][li]eBusSender.php
[/li][li]eBusMonitorRegler.php
[/li][li]eBusMonitorSpeicher.php
[/li][li]eBusMonitorService.php
[/li][/ul]
enthalten, welche oben schon näher beschrieben wurden. Wie zuvor gesagt, zum Lesen braucht man nur die entsprechenden IP-Symcon Variablen abfragen, zum Schreiben muss man nur eBusSender.php inkludieren und kann dann die jeweiligen Funktionen nutzen. In eBusDefinitionen.php wird alles parametrisiert.
Installer
Ich habe jetzt auch ein mit dem IPS RS Project Exporter erstelltes Installer-Skript hinzugefügt. Ich habe den Import nicht probiert, also kann ich leider für nichts garantieren. Ich weiß nicht, ob der Installer die originalen Objekt-IDs verwendet. Falls nicht, muss auf jeden Fall trotzdem noch eBusDefinitionen.php angepasst werden, aber man erspart sich dann zumindest das händische Anlegen aller Elemente. Die Events müssen nach dem Import auch noch händisch angelegt werden, glaube ich gelesen zu haben.
So, das war es auch schon! Über Feedback freue ich mich natürlich jederzeit!
Grüße an alle!
eBus Manager v1.4 Installer.zip (29.2 KB)
eBus Manager v1.4.zip (15.2 KB)