+ Antworten
Seite 1 von 8 1 2 3 ... LetzteLetzte
Ergebnis 1 bis 10 von 75

Thema: eBus Manager

  1. #1
    Registriert seit
    Jan 2012
    Ort
    Wien
    Beiträge
    77

    Standard eBus Manager

    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 eBus Koppler Ethernet 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 WLAN-Bridge 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 eBus Connector 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

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Screenshot1.png 
Hits:	983 
Größe:	48.8 KB 
ID:	19962

    Details

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Screenshot2.png 
Hits:	822 
Größe:	70.4 KB 
ID:	19806

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Screenshot3.png 
Hits:	575 
Größe:	59.5 KB 
ID:	19777

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Screenshot4.png 
Hits:	528 
Größe:	58.1 KB 
ID:	19778

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Screenshot5.png 
Hits:	557 
Größe:	68.6 KB 
ID:	19963

    Skripte

    Die ganze Logik ist in den sieben Skripten

    • eBusDefinitionen.php
    • eBusManager.php
    • eBusEmpfaenger.php
    • eBusSender.php
    • eBusMonitorRegler.php
    • eBusMonitorSpeicher.php
    • eBusMonitorService.php

    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!
    Angehängte Dateien Angehängte Dateien
    Geändert von terenyi (19.01.13 um 19:40 Uhr) Grund: Update auf Version 1.4

  2. #2
    Registriert seit
    Apr 2011
    Ort
    Cologne
    Beiträge
    801

    Moin terenyi,

    ich habe mir das jetzt mal angeschaut - sieht schon wirklich sehr gut aus!

    Kleine Anmerkung zur Installation bzw. Portierbarkeit: man kann in deinen Skripts ja alle Variablen in eBusDefinitionen.php definieren, muss diese aber vorher manuell anlegen und Profile zuweisen. Könnte man dies auf IPSInstaller oder IPS-RS-Project-Exporter umstellen? Würde die Installation bzw. Test unheimlich vereinfachen.

    Danke& Gruß, Axel

  3. #3
    Registriert seit
    Jan 2012
    Ort
    Wien
    Beiträge
    77

    Gute Idee, das mit dem Installer - wusste gar nicht, dass es sowas gibt!

    Ich habe die Files gerade auf Version 1.1 upgedated und dabei gleich auch ein mit dem IPS RS Project Exporter erstelltes Installer-Skript hinzugefügt.

    Wie ich oben schon geschrieben habe: 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. Das Erstellen der Definitionen für eBusDefinitionen.php (falls überhaupt nötig) lässt sich sicher auch noch skripten, aber das überlasse ich jemand anderem als Übung.

  4. #4
    Registriert seit
    Sep 2008
    Ort
    Hamburg
    Beiträge
    1,065

    Ich glaube, ich muss meine eBus-Struktur beizeiten mal komplett einreißen und neu machen. Das sieht sehr gut aus wie du es gelöst hast
    LCN | HM | FS20, HMS und FHT | Arduino | ESP usw.
    "Der RGB-Streifen ist das Arschgeweih der Home Automation. "

  5. #5
    Registriert seit
    Jan 2012
    Ort
    Wien
    Beiträge
    77

    Habe jetzt noch auf die Version 1.2 upgedated, wo ich die Abfrage des Heizungsstatus (wie er beim Drücken der i-Taste direkt auf der Heizung angezeigt wird) hinzugefügt habe. Das sollte es damit dann aber für's Erste mal gewesen sein.
    Geändert von terenyi (07.01.13 um 13:23 Uhr)

  6. #6
    Registriert seit
    Jan 2012
    Ort
    Wien
    Beiträge
    77

    Ok, ein Update noch (v1.3): Monitor verbessert.
    Aber das war's jetzt wirklich...

  7. #7

    Super Projekt - großer Respekt! Und funktioniert auch mit Raketenschnecke's Installer (Ereignisse müssen händisch aktiviert werden). Leider ist meine Weishaupt gar nicht gewillt die gleichen Befehle wie die Vaillant zu nutzen. Kommt nichts sinnvolles an. Thomas, Du hast eine PN!
    IPS Ninja \\ Webfront auf 15" ELO Touch \\ z-wave \\ IPS-868 \\ FS20 \\ 1-wire \\ Oregon WMRS200 \\ Mediaportal \\ 4x Squeezebox \\ SONOS \\ Denon AVR1912 \\ Kostal Piko 5.5 \\ 7x Vivotek \\ 1x INStar \\ Gardena R40Li mit Robonect HX30
    Mehr auf www.diewuppers.de

  8. #8

    Thomas, nach einem reboot auf meinen 2008R2 x64 startet der eBus Manager (asl Dienst) nur, um sich dann nach ca. 1 Minute einfach zu beenden. Neu-Installation behebt das Problem bis zum nächsten reboot.

    EDIT: "Allow Service to interact with the desktop" behebt das Problem.
    Geändert von wupperi (15.01.13 um 07:42 Uhr)
    IPS Ninja \\ Webfront auf 15" ELO Touch \\ z-wave \\ IPS-868 \\ FS20 \\ 1-wire \\ Oregon WMRS200 \\ Mediaportal \\ 4x Squeezebox \\ SONOS \\ Denon AVR1912 \\ Kostal Piko 5.5 \\ 7x Vivotek \\ 1x INStar \\ Gardena R40Li mit Robonect HX30
    Mehr auf www.diewuppers.de

  9. #9
    Registriert seit
    Jan 2012
    Ort
    Wien
    Beiträge
    77

    Zitat Zitat von wupperi Beitrag anzeigen
    Super Projekt - großer Respekt! Und funktioniert auch mit Raketenschnecke's Installer (Ereignisse müssen händisch aktiviert werden). Leider ist meine Weishaupt gar nicht gewillt die gleichen Befehle wie die Vaillant zu nutzen. Kommt nichts sinnvolles an. Thomas, Du hast eine PN!
    Dass die Weishaupt gar nicht will, ist leider nicht überraschend, da die "oberen Schichten" meiner Lösung (eBusSender.php und eBusEmpfaenger.php) nur Vaillant-Befehle senden und auswerten, welche die Weishaupt sicher weder sendet, noch annimmt.

    Von meiner Lösung solltest du aber zumindest die "unteren Schichten" vewenden können (d.h. eBus Connector und eBusManager.php), da dort die generischen Funktionen enthalten sind, die das eBus Protokoll an sich dekodieren, aber noch nicht die Nutzdaten und Hersteller-spezifischen Befehle verarbeiten.

  10. #10
    Registriert seit
    Jan 2012
    Ort
    Wien
    Beiträge
    77

    Zitat Zitat von wupperi Beitrag anzeigen
    Thomas, nach einem reboot auf meinen 2008R2 x64 startet der eBus Manager (asl Dienst) nur, um sich dann nach ca. 1 Minute einfach zu beenden. Neu-Installation behebt das Problem bis zum nächsten reboot.

    EDIT: "Allow Service to interact with the desktop" behebt das Problem.
    Danke für die Info! Wusste gar nicht mal, dass es diese Einstellung gibt.

    Bei mir (Windows 8) ist das zwar nicht angehakt und es gibt auch keine Probleme, aber wenn das bei dir hilft, dann umso besser.

    Ansonsten hätte ich bei Problemen generell vorgeschlagen, den eBus Connector zuerst mal in der Konsole laufen zu lassen (um zu sehen, ob das Problem am Service Wrapper oder am eBus Connector selbst oder etwa an dem darunterliegenden virtuellen COM-Port liegt). Wenn es als Service läuft, bietet sich dann noch an, das Event-Log auf Meldungen (vom Service selbst und von Windows) zu checken.

Ähnliche Themen

  1. eBus Connector
    Von terenyi im Forum Externe Zusatzsoftware
    Antworten: 83
    Letzter Beitrag: 30.07.17, 21:59
  2. eBus Adapter da
    Von wupperi im Forum Haustechnik
    Antworten: 45
    Letzter Beitrag: 01.05.17, 11:36
  3. Anbindung WOLF Therme mittels eBus-Adapter und eBus-Modul
    Von Brownson im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 27
    Letzter Beitrag: 20.05.16, 11:24
  4. eBus Adapter
    Von Brownson im Forum Entwicklung mit PHP-SDK/Delphi-SDK
    Antworten: 87
    Letzter Beitrag: 26.01.16, 07:30
  5. Auswertung eBus
    Von wupperi im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 3
    Letzter Beitrag: 30.06.11, 15:22

Stichworte