Seite 1 von 2
KNX switch-control wiederholende Telegramme
Verfasst: 12. Nov 2019 15:49
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
Re: KNX switch-control wiederholdende Telegramme
Verfasst: 12. Nov 2019 19:57
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.
Re: KNX switch-control wiederholdende Telegramme
Verfasst: 13. Nov 2019 07:39
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
Re: KNX switch-control wiederholende Telegramme
Verfasst: 13. Nov 2019 09:55
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...
Re: KNX switch-control wiederholende Telegramme
Verfasst: 13. Nov 2019 12:41
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?
Re: KNX switch-control wiederholende Telegramme
Verfasst: 13. Nov 2019 20:36
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.
Re: KNX switch-control wiederholende Telegramme
Verfasst: 14. Nov 2019 14:22
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.

Re: KNX switch-control wiederholende Telegramme
Verfasst: 14. Nov 2019 17:02
von udo1toni
Ich hoffe mal, dass es auch so fix funktioniert.

Re: KNX switch-control wiederholende Telegramme
Verfasst: 20. Nov 2019 13:08
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
Re: KNX switch-control wiederholende Telegramme
Verfasst: 20. Nov 2019 16:18
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.