Hi,
I have a KNX Binding and I successfully use OpenHAB to switch on and off my lights, and to move my rollershutters up and down. But I don’t seem to find a way to control its postion or to use them in groups or give other commands.
I think the problem starts at the Group Address at the KNX Binding in Paper UI itself. All my rollershutters have this type of Group Address:
My third rollershutter has the GA UpDown 1/0/3, StopMove 1/1/3
My fourth rollershutter has 1/0/4 and 1/1/4
And so on.
How do I find what I can fill in as Group Address for the exact position?
And will that open up a world of possibilities?
I don’t use a *.things, only a *.items and a *.sitemap.
Hardware: Zennio KNX ABB i-bus IPS/S 2.1
Log:
2021-02-18 18:03:24.585 [ome.event.ItemCommandEvent] - Item ‘Rolluik_0_Bureau’ received command DOWN
2021-02-18 18:03:24.593 [nt.ItemStatePredictedEvent] - Rolluik_0_Bureau predicted to become DOWN
2021-02-18 18:03:24.605 [vent.ItemStateChangedEvent] - Rolluik_0_Bureau changed from 0 to 100
You have to link a group address to the position object of your actuator in ETS and then link your roller shutter channel to it in OH.
See the roller shutter documentation for the KNX binding.
To have them act in groups there are basically two options:
link them on KNX level by using the same group address for multiple actors objects (e.g.for all up/down objects) and link this GA to any item in OH.
Link by creating group items in OH and have the items become a member of the group
Advantage of solution 1: Your can put that address on a switch and trigger it without OH running.
I have set up both solutions, the KNX one as a backup in case OH fails.
In fact, you can use both options at the same time. But in question of position, it’s unusual to control absolute position directly in knx.
A more common way to control position of multiple blinds in knx would be to configure knx scenes.
So, I’ll recommend two exclusive GA per actuator channel, one for control position, the other for position status. This way you’re able to control the position and get the actual position, may it be a command originated from openHAB or from knx.
Actually I use the absolute positioning through Alexa voice commands and (very seldom) in my UI.
With button switches it’s impossible (or you have to buy expensive wall controllers) and having scenes is the way to go. But utilizing my Echo it is quite useful.
I second your setup with separate addresses for position and setpoint, I had proven useful for me that way too.
Thank you both for your inspiration. I found out in ETS that there are no configured group addresses for position and positioning. I will try to add them and then add those addresses in the OpenHAB binding.
Sorry to hijack this thread, but mainly directed @Oggerschummer and @Udo_Hartmann : how would I define the absolute position in knx, and how (if at all) do I define the setpoint / position status?
as a sample definition from my setup:
Type rollershutter : WJ_EG_L "WJ_EG_L" [ upDown = "2/0/0", stopMove = "2/0/1", position = "2/0/2" ]
2/0/2 would be the absolute position . where does the status of the position go to? Like this, I assume?
I’m using scenes so OH3 is always guessing if they are open or closed.
This is the reason why I’m also using the absolute position now, in this case GA “<1/1/12”.
But OH3 is still guessing, e.g. first it jumps from 0%->100%, after a stop between it jumps back from 100% to e.g. 35%. I think it is the autoupdate features. Can I somehow disable it in OH3?
If you are working with absolut positions, the OH3 MainUI can not handle this. A value > 0% and < 100% always completely removes the rollershutter icon in the MainUI.
Maybe another approach is even better. Is something like this is working?
upDown: 1/1/10<1/1/13
The GA 1/1/13 would send a 0 for up, and a 1 for down.
I have a related problem with KNX rollershutter, which I hope someone can assist with.
I have this my Things file:
Type rollershutter : WindowMaster "Light" [ upDown="1/0/2+1/0/3", stopMove="1/0/4", position="1/0/1" ]
Type rollershutter : WindowMaster1 "Light" [ upDown="<1/0/2+<1/0/3" ]
Type rollershutter : WindowMaster2 "Light" [ stopMove="<1/0/4" ]
Type rollershutter : WindowMaster3 "Light" [ position="<1/0/1" ]
where #1, 2 and 3 is simply to try some alternatives.
Here is a snippet from ETS diagnostics
# Time Service Flags Prio Source Address Source Name Destination Address Destination Name Hop Count Type DPT Info
11 19-01-2023 20:22:28,739 from bus Low 1.1.23 BE-JTA5504.01 Blind Push Button Smart 55 with time switch and colour display 1/0/2 Up 6 GroupValue_Write $01 | Down
12 19-01-2023 20:22:34,810 from bus Low 1.1.23 BE-JTA5504.01 Blind Push Button Smart 55 with time switch and colour display 1/0/4 Stop 6 GroupValue_Write $01 | Start
13 19-01-2023 20:22:34,857 from bus Low 1.1.4 Satel WindowMaster 1/0/1 PositionFeedback 6 GroupValue_Write $40 | 25%
My problem is that I never get any start/stop values or up/down values. Rows in OH event.logs file only shows update of the actual position. It is the items, which are connected to “Windowmaster” and “Windowmaster3”. As you can see from the ETS log the GA mentioned is actually updated.
Can anyone spot, what I have missed?
WindowMaster: Why link two group addresses in upDown (as Pavel mentioned) ? You only need the one that is is linked to the knx communication object for up and down movement as defined in ETS.
As always with knx only the first GA linked will be written to.
WindowMaster2: Why two addresses again? The “<” makes no sense here.
The “Light” seems to be wrong as well btw.
Taken from my YAML example from above (I use the first part of the GA to differentiate the kind of communication object/functionality that lies behind it):
3/x/x is the GA to trigger the movement, 3/x/x ist linked to the communication object for stoping it. 13/x/x is the for setting a position and 12/x/x is the one used to have the actual position (status) of the shutter.
So in your notation this would look somehow like this:
@Pavel , @Oggerschummer
Thank you both for your input, which I will look into. Unfortunately, I am travelling now with no access to my KNX setup, so it will take 1-2 weeks before I can try it out and respond.
# Time Service Flags Prio Source Address Source Name Destination Address Destination Name Hop Count Type DPT Info
2 02-03-2023 21:19:31,657 from bus Low 1.1.23 BE-JTA5504.01 Blind Push Button Smart 55 with time switch and colour display 1/0/2 Up 6 GroupValue_Write $00 | Up
3 02-03-2023 21:19:53,005 from bus Low 1.1.23 BE-JTA5504.01 Blind Push Button Smart 55 with time switch and colour display 1/0/4 Stop 6 GroupValue_Write $00 | Stop
4 02-03-2023 21:19:53,063 from bus Low 1.1.4 Satel WindowMaster 1/0/1 PositionFeedback 6 GroupValue_Write $00 | 0%
The ETS Diagnostics clearly shows:
an Up command is sent to 1/0/2
a Stop command is sent to 1/0/4
The command “tail -f events.log” never shows Up or Stop being sent to my WindowMaster item. It only shows “Item ‘WindowMaster’ changed from 100 to 0” or “Item ‘WindowMaster’ changed from 0 to 100” depending on the direction.
I would like to be able to detect the commands up/down or stop in openhab. I have found a workaround based on the changes in actual position, where I can derive up/down + stop physical press. But it is a more clean solution to get it directly from the KNX bus.
Easy done simply use the correct Channel Type, this is rollershuter-control, NOT rollershutter.
When using the *-control channel, openHAB will act as an actuator, not as the switch (i.e.: an incomming message will be interpreted as a received command, while a non-control channel will be interpreted as an update), so you only need a rule with trigger received command like this:
when
Item MyRollershutterControlItem received command
then
switch(receivedCommand) {
case UP : {...}
case STOP : {...}
case DOWN : {...}
}
I would like to know this, because I have extended status information in my UI. Very often you only have opened/closed or maybe actual position state. However, I also have current actual live movement. So if the blinds are up, and someone press the physical down button, the blinds begin moving down. In my UI, I am then showing “closing…” until either a Stop or position state is all down.
My UI is Apple Homekit which supports a variety of extended live status for hardware, which is quite nice.