my Idea ist to have a knx Switch trigger a rule in openab and then openhab should answer “ON” to the switch like any physical knx actor does to a switch.
I created the following thing for a control-switch and derived an item from that.
Type switch-control : KNX_Switch_No_Real_Aktoror "MySwitch" [ ga="0/1/207"]
When the pysical switch is pressed, the rule triggers. I would expect that openhab would send a “ON” to the group address “0/1/207” but nothig happens. Do I need a rule for that?
If I get this right your plan is to trigger some logic in the rule that may reply ON or OFF, depending on its calculation. You expect to have the state being available from OH, being able to query it from knx and being send over to knx after the rule completes.
Correct?
What I do not understand is your group address setup.
0/1/207 is the address your physical switch is sending to the bus when being pushed?
Then to which address do you want an answer to be written to ?
Maybe create an item to the group address of a things channel that shall receive the information and send a corresponding command to it from within the rule.
Some more details on what you try to achieve would help to help you.
Not quite.
0/1/7 is the group address for the state of the knx thing. 0/1/6 is the group address on which the physical switch sends on or off to openhab via the knx bus. Openhab receives this on or off but sends no state reply as an actor would. In my post I left 0/1/6 out of the config, it should be ga=“0/1/6+0/1/7”. Even with that, I get no reply from openhab on 0/1/7
The switch-control should answer on or off on 0/1/7. Did I miss something in the config of the thing?
As far as I understand, I could set the state of the physical switch with postUpdate(On), which sends a state update using the state group address, correct?
If you send a command “ON” to the physical actors group address for switching it, it will - depending on the settings of your physical actor and the outcome of your switching request - send an update for the status group address onto the knx bus.
In case you configured an openHab item with the physical actors state knx group address you will receive an update on that item in OH setting it to “ON”.
For the KNX binding, xxx-control type channels work in opposite sense to ordinary channels.
Reception of a KNX message triggers an openHAB command to the linked Item.
A state update of the openHAB Item results in a message to KNX.
Correct, those are used to „simulate“ a knx device.
You can use them to e.g. link a device connected to another binding with knx.
Maybe looking at the „follow“ profile for items would help to achieve similar effects.
Thing device knx_virtual “knx_virtual” [ ]
{
//virtuel KNX switch and openhap is the actor sending state
Type switch-control : KNX_Switch “KNX Switch” [ ga=“0/1/206+<0/1/207”]
}
and that is the rule which updates the item the thing is connected to
KNX_Switch.postUpdate(ON)
Then the pysical switch should be informed using the group address “0/1/207” that is has to show “ON”, right?
Your “KNX_Switch” is a channel within the thing, not an item.
You need to create an item based on that channel first.
Switching the item to ON or OFF then should afaik cause the status to be sent onto the bus using the group address for the status. Ideally it does not require a rule for that behavior.
Just give it a try.
Guess this should solve it:
The “virtual actor” only sends on the first knx group address (as all knx devices do).
A switch-control ignores the “<”, your channel responds on both group addresses defined, but replies only on the first one.
Consider switching the order of your group addresses in the channel definition - the status address should come first.
Type switch-control : KNX_Switch “KNX Switch” [ ga=“0/1/207+0/1/206”]
I would expect the following behaviour:
Whenever you switch the item to a different state through "SWITCH_A"´s group address, the secondary channel (“STATUS_A”) should receive the same value. So the state should be propagated from the switching channel to the status channel and therefor onto the bus.
I did something similar for my room thermostats and the thermostats on the radiators. Setting the room thermostat triggers setting the radiators setpoints as they are linked with the “follow” profile to the same item. (Could have been done with ZWave associations but was not familiar with how to configure this in OH)
To be honest: if this does not work I´m out of ideas.
Thank you very much, two separate switch-control (one for the switching message knx->openhab, one for transferring the state openhab->knx) work now perfectly.