KNX switch-control wiederholende Telegramme

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

blackbruce
Beiträge: 6
Registriert: 12. Nov 2019 15:23
Answers: 0

KNX switch-control wiederholende Telegramme

Beitrag von blackbruce »

Hallo zusammen

Ich versuche gerade mein Shelly1 in Openhab zu integrieren. Dies funktoniert soweit auch bestens.
Nun möchte ich aber von einem KNX Taster (MDT Glastaster Smart 2) den Shelly1 schalten können.

Hier nun mein Problem mit dem switch-control im Zusammenspiel von Shelly und KNX (wahrschenlich betrifft es aber auch andere Geräte mit KNX zusammen).

Zunächst mal mein Aufbau:

Openhab 2.4.0 Release Build

KNX Dummy:
Schalten 5/4/6
Status 5/4/7

knx.things

Code: Alles auswählen

Bridge knx:ip:bridge [
        type="TUNNEL",
        ipAddress="10.0.0.40",
        portNumber=3671,
        localIp="10.0.0.30",
        readingPause=50,
        responseTimeout=10,
        readRetriesLimit=3,
        autoReconnectPeriod=60,
        localSourceAddr="1.3.252"
] {

        Thing device generic[     
        ] {

                Type switch-control : shelly1temp             "Socket"             [ ga="5/4/7+5/4/6" ]
        }
}

mqtt.things

Code: Alles auswählen

Bridge mqtt:broker:MosquittoBroker "Mosquitto MQTT Broker" @ "MQTT" [ host="127.0.0.1", secure=false, username="xxxx", password="xxxxxxx", clientID="openHAB2"]
{
    Thing topic shelly1whz "Shelly1Whz" @ "MQTT" {
        Channels:

        Type switch : switch "Power Switch" [ 
            stateTopic="shellies/shelly1-XXXXXX/relay/0",
            commandTopic="shellies/shelly1-XXXXX/relay/0/command",
            on="on",
            off="off"          
            ]
    }
}
Shelly.items

Code: Alles auswählen

Switch Shelly1Whz      "Wohnzimmer"           { channel="mqtt:topic:MosquittoBroker:shelly1whz:switch", channel="knx:device:bridge:generic:shelly1temp" }
Mein Problem ist nun, dass openhab alle 30 Sekunden den Wert auf den KNX Bus sendet.
Hatte zufällig jemand von euch dieses Problem schon einmal oder kann mir weiterhelfen?

Vielen Dank bereits im voraus.

MFG Blacki
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von blackbruce am 13. Nov 2019 07:40, insgesamt 1-mal geändert.

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: KNX switch-control wiederholdende Telegramme

Beitrag von udo1toni »

Siehst Du Updates für das Item Shelly1Whz im events.log?

Im Zweifel musst Du ein zweites Item verwenden und die beiden Links über eine Rule miteinander koppeln, dann kannst Du verhindern, dass einfache Updates (also ohne Wertänderung) auf den knx Bus durchgereicht werden.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

blackbruce
Beiträge: 6
Registriert: 12. Nov 2019 15:23
Answers: 0

Re: KNX switch-control wiederholdende Telegramme

Beitrag von blackbruce »

Guten Morgen und besten Dank für die Hilfe
Siehst Du Updates für das Item Shelly1Whz im events.log?
Nein im events.log sind keinerlei Einträge zu Shelly1Whz.

Wie würde dann das 2. item und die Rule aussehen? Bringt dieser Schritt denn überhaupt etwas wenn im Log nichts zu sehen ist?
Schade das dies nicht ohne weiteres so funktioniert.

Beste Grüsse

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: KNX switch-control wiederholende Telegramme

Beitrag von udo1toni »

Auf die Schnelle:

Code: Alles auswählen

Switch Shelly1Whz      "Wohnzimmer"           { channel="mqtt:topic:MosquittoBroker:shelly1whz:switch" }
Switch knxShelly1Whz      "Wohnzimmer"           { channel="knx:device:bridge:generic:shelly1temp" }
rule:

Code: Alles auswählen

rule "Shelly1 Wohnzimmer out"
when
    Item Shelly1Whz received update
then
    if(Shelly1Whz.state != knxShelly1Whz.state) knxShelly1Whz.postUpdate(Shelly1Whz.state)
end

rule "Shelly1 Wohnzimmer in"
when
    Item knxShelly1Whz received command
then
    Shelly1Whz.sendCommand(receivedCommand)
end
Die ein Rule reicht den Befehl weiter, die andere Rule reicht das Update weiter, aber nur, falls es sich vom aktuellen Status unterscheidet. Beide Rules lassen sich mittels Gruppenfunktionen so verallgemeinern, dass sie für beliebig viele Itemkombinationen verwendet werde können (die Itemnamen müssen dann so gestaltet sein, dass man von dem einen Item auf das andere Item schließen kann) - Nur falls Du mehrere gleichartige Kombinationen hast...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

blackbruce
Beiträge: 6
Registriert: 12. Nov 2019 15:23
Answers: 0

Re: KNX switch-control wiederholende Telegramme

Beitrag von blackbruce »

Vielen Dank.
Es sieht soweit sehr gut aus. Keine Telegramme mehr auf dem Bus.

Da ich mehrere solche Fälle habe, versuche ich nun gerade die Rule so zu gestalten das sie mit Gruppen funktioniert.
Komme aber leider nicht weiter.

Ich habe 2 Gruppen angelegt

gShellyKNX -> hier kommen alle Items vom Channel Typ Shelly (mqtt) rein
gKNXShelly -> hier kommen alle Items vom Channel Typ KNX rein

Nun wird es wohl wieder 2 rules geben.

Code: Alles auswählen

rule "gShellyKNX out"
	when 
		Member of gShellyKNX received update
	then 
		//hier komme ich nicht weiter
end

Code: Alles auswählen

rule "gKNXShelly in"
	when 
		Member of gKNXShelly received update
	then 
		//hier komme ich nicht weiter
end
Wie kann ich denn das genaue Mitglied welches die rule triggert identifizieren bzw. in der rule verweisen?
Oder befinde ich mich hier komplett auf dem Holzweg?

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: KNX switch-control wiederholende Telegramme

Beitrag von udo1toni »

Aaaalso...

Nehmen wir unsere Items von oben an:

Code: Alles auswählen

Group gShellyKNX
Group gKNXShelly

Switch Shelly1Whz         "Wohnzimmer" (gShellyKNX)          { channel="mqtt:topic:MosquittoBroker:shelly1whz:switch" }
Switch knxShelly1Whz      "Wohnzimmer" (gKNXShelly)          { channel="knx:device:bridge:generic:shelly1temp" }
Und die Rules:

Code: Alles auswählen

rule "Shelly1 Wohnzimmer out"
when
    Member of gShellyKNX received update
then
    gKNXShelly.members.filter[ i|i.name.endsWith(triggeringItem.name) && triggeringItem.state != i.state]head.postUpdate(triggeringItem.state)
end

rule "Shelly1 Wohnzimmer in"
when
    Member of gKNXShelly received command
then
    gShellyKNX.members.filter[ i|triggeringItem.name.endsWith(i.name) ].head.sendCommand(receivedCommand)
end
Sollte funktionieren. Hier wird vorausgesetzt, dass die Itemnamen sich nur darin unterscheiden, dass die knx-Items ein paar zusätzliche Zeichen vorne dran haben.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

blackbruce
Beiträge: 6
Registriert: 12. Nov 2019 15:23
Answers: 0

Re: KNX switch-control wiederholende Telegramme

Beitrag von blackbruce »

Vielen lieben Dank für die Hilfe.
Ist ja echt wahnsinn das du das sogar fix fertig geliefert hast.
Ich hätte eher mit nem Link zu nem Design Pattern gerechnet oder so.

Ich ziehe meinen virtuellen Hut vor dir. :P

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: KNX switch-control wiederholende Telegramme

Beitrag von udo1toni »

Ich hoffe mal, dass es auch so fix funktioniert. ;)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

blackbruce
Beiträge: 6
Registriert: 12. Nov 2019 15:23
Answers: 0

Re: KNX switch-control wiederholende Telegramme

Beitrag von blackbruce »

udo1toni hat geschrieben: 14. Nov 2019 17:02 Ich hoffe mal, dass es auch so fix funktioniert. ;)
Hallo

Ich konnte es leider noch nicht weiter austesten, da zuerst die weiter Verkabelung der anderen Shellys ansteht.
Werde aber berichten ob es funktioniert.

Nun ist aber erstmal der Shelly Dimmer eingetroffen bei dem ich nicht weiterkomme.

Dieser sollte auch mit einem Glastaster Smart 2 geschaltet werden.
Allerdings hänge ich hier schon an den things. Wenn ich die API richtig verstehe, dann sollte die things Datei in etwa so aussehen:

Code: Alles auswählen

    Thing topic shellyDimm "ShellyDimmer" @ "MQTT" {
        Channels:

        Type switch : switch "Dimmer Switch" [
          stateTopic="shellies/shellydimmer-<deviceid>/light/0",
          commandTopic="shellies/shellydimmer-<deviceid>/light/0/command",
          on="on",
          off="off"
        ]
        Type string : dimmer "Dimmer" [
          stateTopic="shellies/shellydimmer-<deviceid>/light/0/status",
          transformationPattern="JSONPATH:$.brightness",
          commandTopic="shellies/shellydimmer-<deviceid>/light/0/set"
        ]

    }
Das würde bedeuten ich benötige 2 items um den Dimmer aus Openhab zu betätigen. Ist dies so korrekt?
Die Steuerung des "set" comands müsste dann wohl über eine rule gemacht werden incl. json transformation?!

Irgendwie habe ich die Vermutung das dies wohl nicht ganz so einfach zu realisieren wird gerade in Verbindung mit dem KNX Taster.

Kannst du mir vielleicht etwas auf die Sprünge helfen?

Besten Dank

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: KNX switch-control wiederholende Telegramme

Beitrag von udo1toni »

Nein, das ist nicht korrekt. Die eine Sache ist, ob der Shelly überhaupt ein ON bzw. OFF benötigt, oder ob ein set 0 / set 100 ausreicht.
Falls nein (oder falls Du darauf Wert legst, auch ein ON bzw. OFF an den Dimmer senden zu können, ohne dass eine Rule diese Befehle umsetzt), reicht es aber, die beiden Channel einem Dimmer Item zuzuordnen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten