Home - GollmerSt/SolvisSmartHomeServer GitHub Wiki
Einführung
Dieses Programm dient der Anbindung der SolvisMax 6 und 7 mit SolvisControl2 in Kombination der SolvisRemote an Smart-Home-Systeme wie z.B. Fhem, ioBroker, OpenHAB, Indigo.
Die Anlagenparameter und Aktor-/Sensor-Werte werden in dieser Dokumentation Kanäle bezeichnet.
Eine Liste der Kanäle der Solvis-Anlage, welche das Programm dem Smart-Home-System zugänglich macht, findet sich u.a. im Kapitel MQTT-Schnittstelle. Hierbei handelt es sich um einen groben Überblick. Die genaue Kanalliste im CSV-Format kann das Programm selber für die eingestellte Konfiguration mittels CLI-Option ausgeben.
Es eignet sich nicht für die neueren Anlagen der SolvisMax7 und SolvisBen, welche mit der neuen SolvisControl3 ausgeliefert werden. Bei diesen sollte man zur Smart-Home-System-Anbindung das Modbus-Interface nutzen.
Die für diese Anlagen erhältliche SolvisRemote bietet einen Zugriff über mehrere Web-Seiten an. Über diese kann der aktuelle Status der Anlage angezeigt und Einstellungen der Anlage verändert werden.
Dieser Zugriff eignen sich jedoch nicht so ohne weiteres zur Integration in ein SmartHome-System wie z.B. Fhem, ioBroker, OpenHAB, Indigo, Node-Red. Bisher existierte für das SmartHome-System FHEM ein Modul, das die Messwerte der Anlage in FHEM zugänglich machen sowie den Anlagenmodus (Tag/Nacht/Standby/Timer) verändern konnte. Letzteres funktionierte nicht zuverlässig. Ähnliches gibt es auch für einige andere Smart-Home-Systeme.
Ziel des vorliegenden Projektes war, auch weitere Anlagenparameter von einem SmartHome-System einstellen zu können und zusätzlich eine Insel-Lösung nur für das Fhem-SmartHome-System zu vermeiden.
Bei dem neuen Modul handelt es sich daher um eine Server-Client-Lösung.
Der Server dient zum Auslesen der Messwerte und Auslesen/Einstellen der Anlagenparameter. Der Server ist in Java geschrieben, da ich in den letzten Jahren beruflich viel in Java programmiert hatte.
Mit diesem Server können sich mehrere SmartHomeSysteme gleichzeitig verbinden. Auf diese Weise kann man von verschiedenen SmartHome-Systemen den Server ansprechen. Die etwas CPU-zeitintensive Verarbeitung erfolgt nur an einer Stelle, dem Server.
Zur Anbindung des SmartHome-Systems stehen zwei unterschiedliche Schnittstellen zur Verfügung, eine proprietäre Server-/Client-Schnittstelle sowie einen MQTT-Schnittstelle.
Die Server-Client-Schnittstelle erfordert einen einfachen an das verwendete System angepasster Client (aktuell nur für FHEM vorhanden) oder man nutzt die MQTT-Schnittstelle des Servers.
Der Datentransfer der Server-Client-Schnittstelle erfolgt über das JSON-Format, welche recht einfach über eine Library eingelesen/erstellt werden können. Das Format im Einzelnen ist im vorliegenden Dokument im Anhang unter Server-Client-Schnittstelle beschrieben.
Neben der Server-Client-Lösung ist wie gesagt zusätzlich eine MQTT-Client-Schnittstelle integriert. Mit dieser Lösung kann man der SolvisSmartHomeServer auch ohne einen speziellen Client von den meisten SmartHome-Systemen aus ansprechen, da sie meist ein entsprechendes MQTT-Modul besitzen. Die definierten Topics sind in dem Anhang unter der MQTT-Schnittstelle beschrieben.
Beide Lösungen haben gemeinsam, dass diese Schnittstellen zwischen dem SmartHomeSystem und SolvisSmartHomeServer "Event"-basiert sind, das bedeutet, dass das SmartHomeSystem nur dann aktiv wird, wenn wirklich neue Daten (z.B. Sensorwerte) vorliegen. Ein "Polling", also eine regelmäßige Abfrage ist nicht mehr erforderlich. Natürlich ist nach wie vor ein Polling zwischen dem Server und der Solvis-Anlage notwendig, für das SmartHomeSystem ist das transparent.