Anbindung an verschiedene SmartHome Systeme - GollmerSt/SolvisSmartHomeServer GitHub Wiki

FHEM-Anbindung

Für das Smarthome-System FHEM existiert ein spezielles Modul, das die Client-Server-Schnittstelle nutzt. Es ist im Programmpaket enthalten und sollte in das FHEM-Verzeichnis kopiert werden.

Wenn das FHEM auf einem Linux-Rechner installiert ist, kann es mittels Make - wie hier beschrieben – in das System eingebunden werden. Dabei werden auch die Rechte entsprechend gesetzt.

iOBroker-Anbindung

Für ioBroker existiert (bisher) kein spezieller Adapter. Zu Anbindung kann der Adapter MQTT Broker/Client oder MQTT-Client verwendet werden.

Verwendung vom MQTT Broker/Client

Leider habe ich mit der aktuellen Version 2.1.2 des MQTT Broker/Clients keinen stabilen Betrieb. Dieses Problem scheinen auch andere zu besitzen:

https://forum.iobroker.net/topic/32143/mqtt-problem

Wenn die stable-Version des MQTT Broker wieder aktualisiert ist, werde ich mich damit beschäftigen. Es kann natürlich daher kommen, weil ich ioBroker auf einer virtuellen Maschine laufen lasse und der Server auf dem Entwicklungs-PC läuft. Da ich selber als MQTT Broker den Mosqitto schon jahrelang verwende, hat das aktuell eine niedrige Priorität.

Verwendung vom MQTT Client

Dazu muss ein MQTT Broker im System existieren. Ich empfehle den Mosquitto. Mit diesem läuft mein SmartHome-System schon seit Jahren problemlos. Den MQTT-Test des SolvisSmartHomeServers erfolgte ebenfalls mit diesem Broker.

Der MQTT-Client ist wie folgt einzurichten:

Einstellung Wert Bedeutung
MQTT Broker IP 192.168.0.71 (Beispiel) IP-Adresse des MQTT Brokers, z.B. Mosquitto (Server)
Client ID ioBrokerSolvisClient (Beispiel) Im MQTT-System eindeutige ClientId
Topic bei Verbindung Topic/Client/online Topic, der bei Verbindung gesendet wird
Meldung bei Verbindung true Meldung, welche bei Verbindung gesendet wird
last will topic Topic/Client/online Topic, der bei Verbindungsverlust gelten soll
last will message false Meldung, welche bei Verbindungsverlust gilt
Zusätzliche subscriptions Topic/# Subscription, welche automatisch geholt werden, nur erforderlich, wenn man die Objektliste selber erstellen will.

Hierbei ist

Topic Der Wert von topicPrefix der in die base.xml einzutragen ist.
Client Ein vom User festzulegender Name, über den der ioBroker MQTT Client beim SolvisSmartHomeServer identifiziert wird (z.B. ioBroker).

Im Installationspaket befindet sich die Datei mqtt.0.SolvisSmartHomeServer.json mit der Objektliste für die Heizungsanlage.

Erstellung Der Objektliste und eines Pairing-Skripts für iobroker

Der Server kann über eine Command-Line-Option eine zu der aktuellen Anlagenkonfiguration passende Objektliste mit einem Pairing-Skript generieren.

Dazu ist in der base.xml die Iobroker-Sektion entsprechend der aktuellen iobroker-Konfiguration anzupassen. Dabei handelt es sich um folgende Attribute:

Attribut Bedeutung
iobrokerName Name, unter dem sich der iobroker beim Server identifiziert (default: IoBroker).
mqttInterface Name des Mqtt-Interface auf der iobroker-Seite. Dieser wird der Prefix des Objektnamens (default: mqtt-client.0).
javascriptInterface Prefix der generierten Pairing-Objekte (default: javascript.0).

Den Server kann man mit den entsprechenden CLI-Optionen dann entweder unter Linux mittels dem Makefile mit folgendem Befehl generieren

sudo make iobroker

oder man nutzt unter Windiows den Startmenüpunkt SolvisSmarthomeServer\CreateIobroker.

Wichtig: Vorher muss einmal das Learning fehlerfrei durchgelaufen sein, da ein Teil der Anlagen-Konfiguration während des Learnings ermittelt wird.

Unter dem im base.xml beschreibaren Pfad liegen dann folgende Dateien:

Name Bedeutung
Appendix/mqtt-client.0.SolvisSmartHomeServer.json Json-Datei mit den Iobroker-Objekten passen zur Anlage
Appendix/solvis_pairing.js Der dazugehörige Pairing-Skript

Die Beschreibung der MQTT-Topics findet sich im Anhang unter der MQTT-Schnittstelle. Die Dateien mqtt.0.SolvisSmartHomeServer.json sowie solvis_pairing.js basierwn auf folgenden Werten:

Zu jedem Kanal gibt es folgende Objekte:

Objekt Bedeutung
data Daten des Kanals vom letzten Auslesen
meta Die Beschreibung des Kanals
cmnd Objekt über das man beschreibbare Werte ändern kann
update Objekt, mit dem man einen Update eines nur von dem Gui der SolvisControl lesbaren Kanals anstoßen kann. (Beliebigen Wert in dieses Objekt schreiben).

Das Objekt cmnd existiert nur für beschreibbare Känale, wie Solltemperaturen, Pumpensteuerung etc. Das Object update existiert nur für Känale, welche nur über das Gui der SolvisControl gelesen werden können.

Der Pairing-Skript dient dazu, die bei den beschreibbaren Kanälen vorhandenen cmnd- und data-Objekte zu "pairen". Ich habe mich dabei von diesem ioBroker-Forums-Beitrag inspirieren lassen. Auch sie kann entsprechend angepasst werden. Der Hintergrund für das Pairing ist der, dass die meisten ioBroker-Elemente wie z.B. Schieberegeler für Objekte gedacht sind, welche sowohl eine Lese- als auch Schreibmöglichkeit besitzen.

Durch den Script solvis_pairing.js werden noch die sowohl les- als auch beschreibbaren .rw-Objekte erstellt. Es sind folgende Objekte (im Maximal-"Ausbau"):

Objekt-Name
javascriptInterface.id.C01:StartsBrenner.rw
javascriptInterface.id.C02:LaufzeitBrenner.rw
javascriptInterface.id.C03:LaufzeitAnforderung2.rw
javascriptInterface.id.C04:WarmwasserPumpe.rw
javascriptInterface.id.C05:WassertemperaturSoll.rw
javascriptInterface.id.C06:Anlagenmodus_HK1.rw
javascriptInterface.id.C07:Tagestemperatur_HK1.rw
javascriptInterface.id.C08:Nachttemperatur_HK1.rw
javascriptInterface.id.C09:TemperaturFeineinstellung_HK1.rw
javascriptInterface.id.C10:Raumeinfluss_HK1.rw
javascriptInterface.id.C11:Vorlauf_Soll_HK1.rw
javascriptInterface.id.C12:Anlagenmodus_HK2.rw
javascriptInterface.id.C13:Tagestemperatur_HK2.rw
javascriptInterface.id.C14:Nachttemperatur_HK2.rw
javascriptInterface.id.C15:TemperaturFeineinstellung_HK2.rw
javascriptInterface.id.C16:Raumeinfluss_HK2.rw
javascriptInterface.id.C17:Vorlauf_Soll_HK2.rw
javascriptInterface.id.C18:Anlagenmodus_HK3.rw
javascriptInterface.id.C19:Tagestemperatur_HK3.rw
javascriptInterface.id.C20:Nachttemperatur_HK3.rw
javascriptInterface.id.C21:TemperaturFeineinstellung_HK3.rw
javascriptInterface.id.C22:Raumeinfluss_HK3.rw
javascriptInterface.id.C23:Vorlauf_Soll_HK3.rw
javascriptInterface.id.C24:LaufzeitSolarpumpe.rw
javascriptInterface.id.C25:LaufzeitSolarpumpe2.rw
javascriptInterface.id.C26:Warmwasserzirkulation_Puls.rw
javascriptInterface.id.C27:Warmwasserzirkulation_Zeit.rw
javascriptInterface.id.C28:WW_Pumpe_Min_Laufzeit.rw
javascriptInterface.id.C29:WaermemengeWW.rw
javascriptInterface.id.C30:WaermemengeSolar.rw
javascriptInterface.id.C31:BetriebsartVT_HK1.rw
javascriptInterface.id.C32:Steilheit_HK1.rw
javascriptInterface.id.C33:Fix_Vorlauf_Tag_HK1.rw
javascriptInterface.id.C34:Fix_Vorlauf_Absenk_HK1.rw
javascriptInterface.id.C35:Min_Vorlauf_Temp_HK1.rw
javascriptInterface.id.C36:BetriebsartVT_HK2.rw
javascriptInterface.id.C37:Steilheit_HK2.rw
javascriptInterface.id.C38:Fix_Vorlauf_Tag_HK2.rw
javascriptInterface.id.C39:Fix_Vorlauf_Absenk_HK2.rw
javascriptInterface.id.C40:Min_Vorlauf_Temp_HK2.rw
javascriptInterface.id.C41:BetriebsartVT_HK3.rw
javascriptInterface.id.C42:Steilheit_HK3.rw
javascriptInterface.id.C43:Fix_Vorlauf_Tag_HK3.rw
javascriptInterface.id.C44:Fix_Vorlauf_Absenk_HK3.rw
javascriptInterface.id.C45:Min_Vorlauf_Temp_HK3.rw

Hierbei ist javascriptInterface das Attribut javascriptInterface aus der Sektion Iobroker und id das Attribut id der Sektion Unit aus der base.xml. Je nach Konfiguration gibt es nur eine teilmenge der gepairten Objekte.

⚠️ **GitHub.com Fallback** ⚠️