Hallo liebe Community, nach Absprache mit @HerrP, möchte ich Euch mit großer Freude ein kleines "Schwesterprojekt" zum mittlerweile legendären Optolink Splitter von Phil vorstellen! Die Optolink Bridge verfolgt ein sehr ähnliches Ziel wie der Optolink Splitter von Phil, jedoch steht bei meinem Projekt der kombinierte Einsatz mit einer Vitoconnect im Fokus! Während Phil's Splitter / Switch auch grundsätzlich ohne Vitoconnect funktioniert, setzt mein Projekt eine angeschlossene Vitoconnect vorraus. Anders als bei Phils Splitter, welcher mit Zustandsübergängen arbeitet, also erst eigene Datenpunkte über den Bus Anfragt, dann die / eine Vitoconnect Anfrage abarbeitet, usw., wird bei der Bridge die Kommunikation über den Optolink Bus grundsätzlich nicht beeinflusst! Das sorgt für die höchstmögliche Betriebssicherheit Eurer Anlage. Ansonsten sind die Topologie, als auch die Hardwareanfordungen die selben, d.h. ein Wechsel von Phil's Splitter zu meiner Bridge und zurück, sind jederzeit und ohne Einschränkungen möglich! Mein Projekt kann also ohne Risiko ausprobiert werden! Im Standard Modus (dem sogenannten "Pass-Through Mode"), wird die komplette Optolink Bus Kommunikation mit voller Baud-Rate des Seriellen Busses zwischen Eurer Heizung und der Vitoconnect durchgeschleift. Meine Bridge "hört" komplett Passiv die Kommunikation des Busses mit, und kann übertragene Datenpunkte (ähnlich zu den "Poll Items" bei Phil) per MQTT veröffentlichen. Da die Vitoconnect in 90% der Fälle bereits alle Daten die man für generelle Einsatzzwecke brauch mehrfach pro Minute über den Bus überträgt, ist dieses Vorgehen 1. besonders effizient, da keinerlei zusätzliche / doppelte Kommunikation über den Bus stattfindet und 2. überaus sicher, da egal was bei der Verarbeitung der Pakete passiert oder schief gehen könnte, die Bus Kommunikation nicht beeinflusst wird! Für mich war es besonders wichtig, dass ich in kritische Komponenten in meinem Haus, z.B. meiner Heizung, möglichst wenig eingreife. Deswegen war es einer meiner Ziele und auch eines der Hauptmotivationen für mein Projekt, dass die angeschlossenen Viessmann Komponenten gar nicht mehr "merken" können, dass eine weitere Komponente "dazwischen hängt". Da der Optolink Splitter in erster Linie auch für den Stand-Alone Einsatz ohne Vitoconnect ausgelegt war und ist, greift dieser, mit angeschlossener Vitoconnect doch stark in das Timing der Bus Pakete ein. Das wollte ich in meinem Projekt anders lösen, weswegen ich auf diesen neuen Ansatz, in Kombination mit einer gänzlich asynchronen (auf Node.js / Event-Loops basierenden) Prozessierung der Nachrichten gesetzt habe. Neben dem, dass mein Projekt eine angeschlossene Vitoconnect voraussetzt, ist ein Nachteil dass der "Pass-Through" Modus ausschließlich die Kommunikation überwachen kann, welche von der Vitoconnect vorgegeben wird. Soll heißen, wenn man auf Datenpunkte zugreifen muss, die von der Vitoconnect nicht ausgetauscht werden, kann meine Bridge (zumindest in diesem Betriebsmodus) keine zusätzlichen Datenpunkte anfragen. Wie gesagt, habe ich diese Entscheidung in Anbetracht der erhöhten Betriebssicherheit absichtlich getroffen. Die Vitoconnect tauscht jede Minute bereits Hunderte von Datenpunkten aus (im Endeffekt alles was in der ViCare App, aber auch im ViGuide, usw. angezeigt wird). Es ist also sehr wahrscheinlich, dass die meisten Attribute irgendwo in der Kommunikation schon über die Leitung gehen. Wenn man ein Attribut sucht, bietet mein Projekt auch erweiterte Analysefunktionen, um den Optolink Traffic auszuwerten und Datenpunkt zu finden, die vielleicht nur über eine andere Adresse ausgetauscht werden, als angenommen. Um dennoch auch erweiterte Anwendungsfälle zu Ermöglichen, gibt es mit dem zweiten Betriebsmodus, dem sogenannten "Intercept Mode" eine Art "Hybrid-Modus", welcher es nun erlaubt, ähnlich zum Optolink Splitter, auch Telegramme in die Kommunikation "einschleusen". Auch bei diesem Betriebsmodus habe ich den größten Wert auf die sichere Übertragung der bestehenden Bus Kommunikation geachtet. Anstatt wie bei Phil zwischen jedes Telegramm der Vitoconnect, ein eigenes Paket "unterzumogeln", nutze ich hier das komplett asynchrone Design meiner Bridge aus, um Pakete in festen Zeitabständen (z.B. jede 10 Sekunden) in die Kommunikation zu integrieren. Auch hier wird darauf geachtet, dass die Bus Kommunikation sicher pausiert, das zusätzliche Paket bearbeitet und effizient wieder fortgesetzt wird. Also auch der zweite Modus schränkt die Bus Kommunikation kaum ein, wer jedoch Wert auf höchste Betriebssicherheit legt, sollte sich überlegen weiterhin den "Pass-Through" Modus zu verwenden und eher zu schauen, ob die Datenpunkte die man benötigt nicht vielleicht doch unter einer anderen Adresse als gedacht ausgetauscht werden. Das Ganze ist auch nochmal in meiner Readme Datei in aller Ausführlichkeit beschrieben. Ich hoffe das ich mit meinem Projekt der Community eine sichere Alternative, mit leicht anderem Ansatz zu Phil's Splitter zur Verfügung stellen kann und, dass Ihr Euch natürlich gerne mit Feedback und / oder Contributions am Projekt beteiligen könnt! Ich habe bei der Entwicklung des Projekts drauf geachtet, dass keine "Magie" passiert, d.h. kein Timing dass man beachten muss, oder Zustände, die wenn man sie nicht beachtet Probleme machen könnten. Grundsätzlich kann man, auch bei Erweiterungen des Projekts, kaum etwas falsch machen, da die Bus Kommunikation erstmal durchgeleitet wird, bevor irgend etwas anders mit dem Paket passiert. Damit hoffe ich, dass auch Erweiterungen am Projekt besonders einfach zu machen sind und jeder das Projekt für seine Bedürfnisse anpassen kann. Ich habe das Projekt zwar erst gestern auf GitHub veröffentlicht, die Entwicklungsversionen der Bridge waren aber jetzt bereits seit über einem halben Jahr (sowohl im Pass-Through, als auch im Intercept Modus) bei mir in der Anlage ohne Probleme im Einsatz! D.h. erste "Kinderkrankheiten" sollten bereits ausgemerzt sein! Falls Ihr natürlich Probleme mit dem Betrieb habt, oder generelle Fragen, stehe ich Euch natürlich gerne zur Verfügung! Schreibt mir einfach hier oder auf GitHub! Nachdem ich letzte Woche noch das automatische veröffentlichen aller Datenpunkte via Home Assistant Device Discovery ins Projekt eingefügt habe (solltet Ihr also Home Assistant einsetzen, solltet Ihr die Attribute der Bridge automatisch als Entitäten angezeigt bekommen!), habe ich mich entschlossen (nach Absprache mit Phil) das Projekt zu veröffentlichen und die Veröffentlichung hier im Forum anzukündigen. Ich hoffe ich kann mit dem Projekt einen guten Beitrag in die Community leisten und freue mich auf Euer Feedback! Beste Grüße, Kristian
... Mehr anzeigen