MQTT in Symcon ist ja echt genial. Momentan nutze ich Zigbee2MQTT sowie die Shelly Module von KaiS. Ich hab aber auch noch KNX im Einsatz und würde gerne MQTT auf den KNX bringen.
Aktuell muss ich das mit vielen Scripten machen. Gibt es dazu ein besseres „Best practise“ ?
Ideal wäre ein Modul, welches zwei Instanzen immer Syncron hält. Ändert sich was am MQTT, dann ändert sich auch automatisch die KNX Instanz.
Da musst du mal Kai anpingen Er hat ein Modul gebaut, welche Variablen zumindest in Richtung MQTT synchron hält… Mit RequestAction sollte es auch problemlos in die andere Richtung gehen.
Ja… Sowas würde funktionieren… Aber mittlerweile hab ich so ziemlich alle Funktionen auf Symcon vereint. Da hab ich bloß ein Single Point of Failure. Und Symcon unterstütz sehr viele Protokolle und Systeme.Ist daher ein ideales Gateway. Für die MQTT Bridge bräuchte ich wieder ein KNX Router, evtl… ein Mosquitto Broker. Alles viel zu umständlich. Im Notfall spiel ich das Backup von Symcon in irgendein Gerät ein und alles funktioniert.
Hab unten mal zwei Screenshoots angehängt. Im Prinzip sollten nur zwei Instanzen immer syncron gehalten werden. Die Hardware ist in den Fall ein Shelly, sendet per MQTT und deinem Modul auf Symcon. Dieser soll dann eine KNX Instanz (DPT01) immer aktuell halten und umgekehrt. Die KNX Instanz ist nur virtuell, hat aber den Vorteil, dass ich von jedem KNX Taster dann die MQTT Instanz schalten kann. Und umgekehrt. Drück ich den Shelly Taster ändert sich auch die KNX Instanz.
Das funktioniert jetzt schon durch einige Scripte, aber recht umständlich.
Ich träume von einem Modul in dem ich einfach beide Variablen eintrage und sie werden syncron gehalten.
Evtl. kann man das später dann auch auf Temperaturen, Roller Shutter usw. ausweiten.
Dann wäre Symcon ein ideales einfaches Gateway von MQTT auf KNX. Das würde mit Sicherheit auch mit LCN usw… funktionieren…
Das dürfte machbar sein.
Ändert sich die virtuelle Instanz, ändert sich auch das Shelly Gerät.
Ändert sich das Shelly Gerät, ändert sich auch die virtuelle Instanz?
Das sollte man mit einem Modul hinbekommen.
Ich überlege mir da mal was, vielleicht habe ich ja Lust das umzusetzen.
Genau so… Die Intstanz die sich dann syncron ändert muss dann den Zustand wieder aktiv senden (RequestAction).
Dann wäre Symcon ein geniales Gateway und sehr einfach zu konfigurieren…
Am einfachsten wäre wie im HomeKit Konfigurator einfach eine Liste wo ich Variable 1 und 2 eintrage.
Das Modul prüft dann die Variablen auf Veränderung und schaltet dann syncron die Instanz…
Sö wäre das absolut universell. Könnte man zum Start mit Boolean machen, später mit Werten, Temperaturen usw…
Wäre für jeden super einfach ein Gateway einzurichten. Variablen eintragen. Rest macht das Modul…
Das hat ja mit MQTT eigentlich gar nichts zu tun.
Du willst eigentlich nur wenn sich Variable A ändert auch Variable B ändern und andersrum.
Das kannst du ja jetzt mit Ereignissen abbilden.
Du willst also ein Modul haben, um es nicht mit Ereignisse abbilden zu müssen, damit die Konfiguration schneller und einfacher geht?
Ja, das Modul wäre universell. Würde halt jede Menge Arbeit mit Ereignisse und Scripte sparen. Das geht ja im Prinzip jetzt schon, aber mit viel Fleißarbeit. So ne Funktion wäre eigentlich schon im Core von Symcon toll. Symcon unterstützt so viele Systeme und Protokolle, aber sie lassen sich immer nur durch viel scripten zusammenführen. Das wünsche ich mir halt viel einfacher und schneller.
Bei OpenHAB fand ich das gut gelöst: wenn der Datentyp (z.B. Switch oder Number) identisch ist, dann schreibt man in der Items-Datei einfach nur die Adresse beider Systeme rein und der Wert wird automatisch weitergeleitet. Ohne eine Zeile weiteren Code.
Beispiel Netatmo Feuchte nach KNX weiterleiten:
Number Netatmo_Humidity „Luftfeuchte [%.0f %%]“ (gNetatmo) {netatmo=„70:ee:50:02:4e:3e#02:00:00:02:72:60#Humidity“, knx=„9.007:4/1/20“}
Beispiel Yahoo Wetter nach KNX weiterleiten:
Number Temp_Morgen_Max „Morgen max [%.1f °C]“ (Aussentemp) {weather=„locationId=home, forecast=1, type=temperature, property=max“, knx=„4/0/121“}