Willkommen auf unserer neuen Forenplattform für das Bus-Profi Forum

Neue Felder für die persönlichen Daten
Man kann jetzt seine öffentlich einsehbare Daten genau bestimmen. Details findet ihr in in diesem Beitrag.

Durch die neue Forensoftware und die Portierung der Daten konnten die Passwörter aus dem alten Forum nicht übernommen werden, bitte lassen Sie sich ein neues Passwort über die Passwort vergessen Funktion zusenden. Sollte es zu Problemen kommen kontaktieren Sie das Bus-Profi Team per E-Mail.

Openhab als MQTT Koppler

OpenHAB

Themenersteller
Sefina
Fleißiges Mitglied
Fleißiges Mitglied
Beiträge: 277
Registriert: Mo 20. Mai 2013, 19:36
Danksagung erhalten: 1 Mal

#1 Openhab als MQTT Koppler

Beitragvon Sefina » Sa 11. Apr 2020, 16:56

Hi zusammen,

Also ich hatte folgendes Problem ....
Ich benutze IOBroker als absolutes Overlay das heisst es muss alles was mit Smarthome zu tun hat in IOBroker um es von da aus zu steuern.

Der mitgelieferte Adapter funktioniert nur sparnatisch und so brauchte ich ein anderen Koppler.
OpenHAB ist dank der Firma Issendorf und ihr selbst erstelltes Binding perfekt dafür geeignet.

IOBroker hat auch für OpenHAB einen Adapter der ebenfalls Perfekt funktioniert .... Perfekt .... Nein nicht Perfekt ...

Problem :

LCN -> PKE -> OpenHAB -> IOBroker

Bei Normalen Relais under Schaltern, auch Variablen und Regler geht es doch Dimmerausgänge sind für diese Konstelation der Tot

Der LCN sendet beim Hochdimmen mit deinem Schaltern immer wieder den derzeitigen Zustand ...
OpenHAB bekommt auch diesen Zustand und sendet es an IOBroker mit ..... und jetzt kommt es zu einen Loop

Dimme ich zu lange und es werden 2 Werte gesendet springt zwischen OpenHAB und IOBroker immer 2 Werte und so befindet sich die Beleuchtung in einer Endlosschleife die nur mit Abwürgen von IOBroker oder OpenHAB beenden lässt ....

Die Lösung gibt es einmal in teuer (€) oder in teuer (Arbeitszeit)

1. Lösung (2 PKE Lizenzen für die Anbindung benötigt

für alles was nicht Dimmen kann :
LCN -> PKE -> OpenHAB (1 Instanz) -> IOBroker

für alle Dimmer :
LCN -> PKE -> OpenHAB (2 Instanz) -> NodeRed -> IOBroker

diese beiden sind beide nötig was eine Überwachung ob alles geht sehr schwer ist.
NodeRed arbeitet mit einer Timer- Schleife das sich die Werte 20 Sekunden nicht geändert haben um sie dann weiterzureichen.

Diese Lösung arbeitet auch mit 2 Openhab Instalationen (2x VM, 2x Docker Container, 2x LXC Container)

Diese Version lief bei mit ca. 1 Jahr erfolgreich

Da ich nun meinen Server neu aufgesetzt habe, welcher nun auf Proxmox bassiert bin ich nun dieses Problem ein weiteres mal angegangen um mehr Ordnung zu bekommen.

Die Lösung ist MQTT ....

Der Aufbau :

LCN -> PKE -> OpenHAB (Reine LCN Instanz) -> MQTT Broker (Mosquitto)

Bei mir und wie ich es Vorstelle :

LCN -> PKE -> OpenHAB (Reine LCN Instanz) -> MQTT Broker (Mosquitto) -> OpenHAB (Hauptinstanz) -> IOBroker

Die erste OpenHAB Instanz benötigt in der Config die 1,x Binding Unterstützung

Bindings : LCN, MQTT beides als Version 1,X (Alles mit Config Datein)

In der Normalen Instalation sind die Pfade :

Service (für die Bindings) /etc/openhab2/services
dort wird benötigt, die lcn.cfg und die mqtt.cfg (Einrichten sollte kein Problem sein)

Items (dort werden die IP-Punkte Festegelegt, die man Steuern kann) /etc/openhab2/items
für die Übersicht nutze ich dort für jede Art ein eigenes File :
LCN-Ausgaenge.items, MQTT-LCN-Ausgaenge.items

Rules (für die Verküpfung zwischen LCN- Items und MQTT- Items) /etc/openhab2/rules
dort nehmen wir wieder für jede Art ein eigenes File :
LCN-Ausgaenge.rules

Beispiel ein Dimmbarer Ausgang :
/etc/openhab2/items/LCN-Ausgaenge.items

Code: Alles auswählen

Dimmer M011A1 "Spots EG Flur [%s]" {lcn="[LCN-Sefina:OUTPUT_STATUS.0.11.1], [INCREASE:LCN-Sefina:ADD.0.11.1.5%], [DECREASE:LCN-Sefina:SUB.0.11.1.5%]


Die erklärung findet man unter das Binding selbst, wichtig ist der Name = M011A1, dieser muss einmalig sein und darf nie wieder vorkommen.
Dieser beinhaltet das Modul, was es ist und welche Nummer er hat. Also Modul Nummer 11, es ist ein Ausgang und es ist der erste.

/ezc/openhab2/items/MQTT-LCN-Ausgaenge.items

Code: Alles auswählen

Dimmer LCNM011A1 "Spots EG Flur MQTT"
   { mqtt=">[mosquitto:LCN/M011/A1:command:*:default],
               <[mosquitto:LCN/M011/A1:state:default]"}


Auch hier ist die erklärung in den Jeweiligen Binding zu finden, hier heisst der Datenpunkt LCNM011A1, da er einmalig sein muss wurde dort LCN davor geschrieben, hätte aber auch alles andere sein können.
der MQTT Pfad wird dort ebenfalls angegeben : LCN/M011/A1 also :
LCN (alles was mit LCN zu tun hat)
M011 (Die Modulnummer)
A1 (Ausgang 1)

ändert man den wert in OpenHAB wird es sofort dort geschrieben, schreibt man selbst was in diesen dann ändert es auch in Openhab den Wert.

nun müssen wir diese beiden noch Verbinden

/etc/openhab2/rules/LCN-Ausgaenge.rules

Code: Alles auswählen

rule "M011A1"
   when
      Item LCNM011A1 changed
   then
      if ( LCNM011A1.state != M011A1.state ) {
         M011A1.sendCommand(LCNM011A1.state)
         }
end
rule "LCNM011A1"
   when
      Item M011A1 changed
   then
      if ( LCNM011A1.state != M011A1.state ) {
         LCNM011A1.sendCommand(M011A1.state)
         }
end
//-----------------------------------------------------------//


Diese Funktion ist nur für 1 Ausgang und muss für alle Ausgänge, Variablen, LED´s und Relais angepasst werden.
Diese ist auch doppelt da es Bidirektional funktionieren muss.

Teil 1 :
Wenn etwas über MQTT reinkommt wird es ja in LCNM011A1 geschrieben ->

dadurch ändert sich das Item LCNM011A1, es wird nun geprüft ob LCNM011A1 ungleich M011A1 ist erst dann wird der Wert
im Item M011A1 mit dem Wert in LCNM011A1 ersetzt.
Das passiert nur 1x und erzeugt keine Weitere Schleife.

Das gleiche nur aus der Anderen sicht kommt in Teil 2

Da man in der MQTT.cfg den Broker angibt hat man diese werte nun im Broker und nun kann man dort alles Anbinden was man möchte.
Die Problemschleifen sind nicht mehr Vorhanden ....

Bei Mir kommt eine Weitere OpenHAB Instanz die sich um alles kümmert was nicht direkt in IOBroker einbindbar ist.
MQTT ist eins davon da es damit angenehmer ist.

Dort wird nur noch das MQTT Binding installiert und dort ebenfalls eine Itemdatei angelegt

/etc/openhab2/items/LCN-Ausgaenge.items

Code: Alles auswählen

Dimmer M011A1 "Spots EG Flur MQTT"
   { mqtt=">[mosquitto:LCN/M011/A1:command:*:default],
               <[mosquitto:LCN/M011/A1:state:default]"}


Zur Übersicht heist der Datenpunkt nun M011A1 um ihn so zu haben wie in der Programmierung,
die Detailnahme weißt noch daraufhin das es ein MQTT Item ist.

Die Test waren erfolgreich es wird alles sofort übertragen und das ohne schleifen und ohne Fehler.

Dadurch das sich nur noch ein Client mit dem PKE verbindet benötigt man nur noch eine Lizens und was man an dem MQTT- Broker hängt ist komplett offen.

Theoretisch kann man nun eine CCU mit den LCN Verbinden und so Homematic Aktoren und Sensoren in den LCN bringen.

MfG

Zurück zu „OpenHAB“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste