KNX Rollershutter UpDown/StopMove with Alexa skill V3

Hello,

I have problems to configure KNX rollershutter devices for Alexa V3 skill
My rollershutters work with UpDown / StopMove configuration, see things and items configuration below.

KNX.things
Type rollershutter :  Shutter_OG2_Arbeitszimmer_Fenster 	"Arbeitszimmer Fenster"			[ upDown="2/0/102", stopMove="2/0/103" ]

KNX.items
Rollershutter Shutter_OG2_Arbeitszimmer_Fenster "Arbeitszimmer Fenster" (gOG2, gOG2_Elvizimmer, gRolladen) 	["Control"]	 {alexa="RangeController.rangeValue" [category="EXTERIOR_BLIND", friendlyNames="@Setting.Opening", supportedRange="0:1:1", actionMappings="Close=0,Open=1,Lower=1,Raise=1", stateMappings="Closed=0,Open=1"] , channel="knx:device:bridge:generic:Shutter_OG2_Arbeitszimmer_Fenster" }

This configuration works flawlessly when the rollershutter is controlled through Basic UI. These are the OH log entries. As you can see, commands UP / DOWN / STOP are sent to KNX bus.

CLOSE Command
19:54:33.269 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'Shutter_OG2_Arbeitszimmer_Fenster' received command DOWN
19:54:33.269 [INFO ] [arthome.event.ItemStatePredictedEvent] - Shutter_OG2_Arbeitszimmer_Fenster predicted to become NULL

OPEN Command
19:55:12.647 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'Shutter_OG2_Arbeitszimmer_Fenster' received command UP
19:55:12.647 [INFO ] [arthome.event.ItemStatePredictedEvent] - Shutter_OG2_Arbeitszimmer_Fenster predicted to become NULL

STOP Command
19:54:34.691 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'Shutter_OG2_Arbeitszimmer_Fenster' received command STOP

When talking to Alexa, It seems that speech recognition and message flow between Alexa and OH is OK, devices and commands are recognized.
But OH does not send the right command to KNX bus. Therefore the rollershutter does not move.

Alexa recognizes the UP command “Alexa, Arbeitszimmer Fenster öffnen”.
This is the Log entry in OH:

19:30:16.645 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'Shutter_OG2_Arbeitszimmer_Fenster' received command 1
19:30:16.645 [INFO ] [arthome.event.ItemStatePredictedEvent] - Shutter_OG2_Arbeitszimmer_Fenster predicted to become NULL

"command 1" is wrong. It should be "command DOWN" - see logs above

Alexa recognizes the DOWN command “Alexa, Arbeitszimmer Fenster schliessen”
This is the Log entry in OH:

19:31:40.070 [INFO ] [smarthome.event.ItemCommandEvent     ] - Item 'Shutter_OG2_Arbeitszimmer_Fenster' received command 0
19:31:40.070 [INFO ] [arthome.event.ItemStatePredictedEvent] - Shutter_OG2_Arbeitszimmer_Fenster predicted to become NULL

"command 0" is wrong. It should be "command DOWN" - see logs above

I assume that the problem is located around the “actionMappings” directive, so that the right values are passed to KNX bus.

Can anybody please have a look at it and provide input for the Alexa-part of the items definition with a UpDown / StopMove rollershutter type?

Kind regards,

Peter

Please use code fences when posting config, logs, rules, etc…

I have a same issue: want to use alexa skill for rollershutter type items with UP/DOWN/STOP commands.

Currently, there is not easy way to set this up with the skill but there are planned to do so. You should search some of @m4rk previous posts on this forum giving couple workarounds on how to accomplish that.

Thanks for swift reply will research.

I have the same issue as mentioned above. Have you guys @TheSwitcher or @TRIROG had any luck? I tried searching through past posts but wasn’t able to locate the one that would lift me onto the solution. If you have working items and maybe even things file would be really helpful!

You should check this post:

Thanks for pointing me to that point @jeshab which will become handy once I need to be able to map the STOP command. Currently I am still experiencing the issue, that when tell alexa to e.g. open the rollershutter, the command it sends is numeric:

2021-01-19 10:39:01.346 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'Office_RollerShutter' received command 100
2021-01-19 10:39:01.358 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Office_RollerShutter' predicted to become 100
2021-01-19 10:39:01.367 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Office_RollerShutter' changed from 0 to 100

which is different from when I send the command through the UI

2021-01-19 10:40:20.504 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'Office_RollerShutter' received command DOWN
2021-01-19 10:40:20.512 [INFO ] [penhab.event.ItemStatePredictedEvent] - Item 'Office_RollerShutter' predicted to become DOWN
2021-01-19 10:40:20.524 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Office_RollerShutter' changed from 0 to 100

The command coming through the UI works while the one through Alexa does not.

Here is my thing:

Type rollershutter : rollladenDGSued "Rollladen DG Süd" [ upDown="3/1/22", stopMove="3/2/22", position="3/3/22+<3/5/22" ]

And here are my items:

Group gOfficeBlind "zwei" {alexa="Endpoint.EXTERIOR_BLIND"}

    String OfficeShutter_Command "zwei befehl" (gOfficeBlind) {alexa="ModeController.mode" [supportedModes="STOP=STOP,UP=OPEN,DOWN=CLOSE", autoupdate="false"],  channel="knx:device:bridge:knx:rollladenDGWest"  } //friendlyNames="@Setting.Opening" @Value.Open @Value.Close

    Rollershutter Office_RollerShutter "zwei controller [%d %%]" <blinds> (gOfficeBlind) {alexa="RangeController.rangeValue" [supportedRange="0:100:10", unitOfMeasure="Percent", actionMappings="Close=100,Open=0,Lower=(+10),Raise=(-10)", stateMappings="Closed=100,Open=0:99"], channel="knx:device:bridge:knx:rollladenDGWest" }

And the finally using the post you referred to @jeshab I have also a rule:

rule "Alexa command" // Converts String command to RollerShutter command

when

    Member of gOfficeBlind received command

then

    val itemName = new StringBuilder()

    itemName.append = (triggeringItem.name.replace("Shutter_Command", ""))

    itemName.append('_RollerShutter')

    sendCommand(itemName.toString, receivedCommand.toString)

    logInfo("Blinds", receivedCommand + " command sent to "+ itemName )

end

Not sure how much that would change and if it helps but I send commands to Alexa in German.

This example with the same issue might be easier to debug (without rule etc).

Thing:

Type rollershutter : rollladenDGSued "Rollladen DG Süd" [ upDown="3/1/22", stopMove="3/2/22", position="3/3/22+<3/5/22" ]

Item:

Rollershutter rollladenDGSued "drei" { channel="knx:device:bridge:knx:rollladenDGSued", alexa="RangeController.rangeValue" [category="INTERIOR_BLIND", friendlyNames="@Setting.Opening", supportedRange="0:100:20", unitOfMeasure="Percent", actionMappings="Close=100,Open=0,Lower=(+20),Raise=(-20)", stateMappings="Closed=100,Open=0:99"] }

Ok I found the issue. My KNX actor was not setup to be able to recieve numeric 1 byte position commands but rather 1 bit. Now it reacts to my commands. The up a step and down a step i.e. lower and raise are inverted but I should be able to find a solution to that as I remember others had this issue also.

To invert, you need to update the semantic extension configuration actionMappings="Close=100,Open=0,Lower=(+20),Raise=(-20)", stateMappings="Closed=100,Open=0:99" accordingly.

1 Like

It would be great if you could explain, where exactly I have to do this. Can it be done in the OH3 UI? I don’t have a lot of experience with file based config.

I guess it’s not possible to define custom actions, right? My shutters support up, down, stop and shade, but no percentage. I would love to realise the shade position. My plan so far was to map 50% with the shade command + maybe work with scenes to make Alexa understand the word “shade”. But creating a custom action would be even nicer, I guess.

Hm, for my KNX system and OH 3.0.2 the step function is also inverted. “Rolladen auf” (open) und “Rolladen zu” (close) is correct, but “Rolladen hoch” (up) “Rolladen runter” (down) is wrong.

Rollershutter Rolladen_Buero_OG "Rolladen Büro oben [%d %%]" <rollershutter> (Buero_OG) [ "Blinds" ] { 
    channel="knx:device:bridge:bus:Rolladen_Buero_OG", 
    alexa="RangeController.rangeValue" [category="EXTERIOR_BLIND", friendlyNames="@Setting.Opening", supportedRange="0:100:10", unitOfMeasure="Percent", actionMappings="Close=100,Open=0,Lower=(+20),Raise=(-20)", stateMappings="Closed=100,Open=0:99"],
    autoupdate="false" }

Any idea why is this?

Could you describe what you mean by wrong? What command is your OH server receiving? And what are you expecting?

Ah sorry, sure. It’s basically what @miki was saying. It’s mixed up. “up” is making the shutter going down and vice versa. But only for the “steps”.
This happens if I say “Rolladen hoch” (up), two times.

2021-07-16 17:40:23.610 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'Rolladen_Buero_OG' received command 60
2021-07-16 17:40:26.396 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Rolladen_Buero_OG' changed from 50 to 60
2021-07-16 17:42:23.877 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'Rolladen_Buero_OG' received command 70
2021-07-16 17:42:26.650 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Rolladen_Buero_OG' changed from 60 to 70

So it is adding 10 percent instead of substracting. 100 is closed for me, 0 is open. If I say “Rolladen auf” (open) it correctly sets it to 0 and it’s open.

2021-07-16 17:44:50.425 [INFO ] [openhab.event.ItemCommandEvent      ] - Item 'Rolladen_Buero_OG' received command 0
...
2021-07-16 17:45:14.801 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Rolladen_Buero_OG' changed from 24 to 0

Having said 10 percent. Now I’m wondering why 10. Is it taken from the supportedRange instead of actionMapping (Lower/Raise)? That would explain why “inverting” those values (Lower/Raise) did not have an effect for me.

Interesting. I read somewhere that it depends on, how you talk to Alexa - and that seems correct:

If I say

"Alexa, fahre Rolladen Büro oben hoch/runter"

then it works correctly with the up/down order and with the 20 percent.

If I just say

"Alexa, Rolladen Büro oben hoch/runter"

then it mixes up the order and uses 10 percent. Is this expected behavior? If so, from whom? Alexa itself or the binding :)? Is there any configuration to adjust this somehow (to support leaving “fahre” out)?

This is expected behavior coming from Alexa end. This becomes tricky with non-English languages such as German as you noticed.

Basically, Increase/Decrease requests are driven by the supportedRange precision value, while Raise/Lower requests by the actionMappings semantic adjust values Lower=(+20),Raise=(-20) in this case.

Anyway, some major changes to the skill will be introduced very soon including an update to blind support using Rollershutter items. These changes will switch the semantic extensions to use the UP/DOWN/STOP commands instead of specific percentage values and also will invert the percentage value by default.

Hey, thanks for the detailed feedback. That currently the increase/decrease is inverted for me can’t be changed currently, right? As I understood this will bring the update then?

It can’t unfortunately with the current skill version unless you use a proxy item to handle the inversion. This will be possible in the upcoming changes.

1 Like

This will be possible in the upcoming changes.

Amazing, thank you such much!