Looking for remote wall switches to operate roller shutters

Hi,

I have 2 roller shutters and 2 sun screens I want to control from HA. I’m planning on using Shelly 2.5 relays to control the shutter/ screen motor. Aside from letting HA close the shutters/ screens automatically at certain times or certain weather conditions (maybe incorporate a light sensor in the future) I also want to be able to just hit a switch to open or close them.

For this I’m looking for three wall mounted remote switches. Two with a single rocker that can be pressed up for opening the shutter and down for closing them. And one dual rocker to operate both screens in a similar way.

I’ve recently been trying to use an Aqara double rocker switch for a different project but I still haven’t found out how to distinguish between the left or right rocker being pressed. So I’m looking for switches that are a bit more newbie friendly and integrate well with HA out of the box. The switches can be either WifFi or Zigbee (I have a Conbee II stick).

I found this double rocker switch that seems to be able to do exactly what I want but I have no idea of how hard it will be to integrate in HA:
https://www.robbshop.nl/en/detail/ff438edbfe504dacbdadf5d89f9278f8

Any suggestions are very welcome!

Thanks,
Wouter

I understand that the shutters could be set to 50% perhaps, but the sunscreens? Do you ever need them to be at a percentage open/closed?

What I’m thinking is that one rocker could do it all.
(If sunscreen does not need to be at a percentage)

Click up/down: open/close sunscreens.
Click and hold up/down: open close shutters until you let go.
Double click up/down: open/close both sunscreen and shutters.

This may make it easier to find a suitable rocker switch.
I use all these commands with an IKEA on/off button in Node red (software implemented double click).

I understand that the shutters could be set to 50% perhaps, but the sunscreens? Do you ever need them to be at a percentage open/closed?

I do regularly have the screens partially closed but that will probably only be done manually, not through automation. So never set to a specific percentage. Nor do I want them to close to 50% at the click of a button or anything like that. I’m fine holding down the button until they are closed to where I want them.

I never thought about having a single rocker do more than 2 functions though. That’s a good point.

At the moment I’m using COCO 433MHz switches and controllers to operate the shutters and screens. They work like this:

Click up/down: open/close the screen
Click the same direction again: stop

I was thinking in using the same options but just replace everything with something I can use with my HA as I want to automatically close the shutters in the evening and open them in the morning, close the screens in the evening etc.

But of course I could use different functions for the buttons like you suggest. That may be easier.

Single click up/down: open/close the screen all the way
Click and hold up/down: open/close until the button is released

The shutters are for two bedrooms (one shutter for each bedroom). So I want to be able to operate the shutter of a room from within that room. That’s why I was thinking a single up/down rocker for each bedroom.

The sunscreens are both for the living room, but they have different functions. One is a screen that rolls down in front of the windows like this:
image

The other one is a fold out screen like this:
image

So they have different uses. The vertical screen will still be used even if it is windy, while the fold out screen is not used when windy or when we’re not at home. Also we may have the vertical screen closed all the way with the fold out screen only partially open or when the sun is still shining into the yard but not into the windows, the vertical screen may have been raised already while the fold out screen is still all the way extended to provide some shade.

So I want to be able to operate both separately, but from the same location. I now have a COCO double up/down rocker switch with the left rocker controlling the vertical screen and the right rocker controlling the fold out screen.

Using for instance an ikea tradfri remote while having enough buttons to do the trick would mean using up/down for one screen and left/right for the other screen. I don’t necessarily want to use a double up/down rocker but I do feel that is the most intuitive solution (up for up, down for down). Having an additional button that would close both screens with one button press would be nice to have, but with double rockers you can easily press both rockers at the same time.

I forgot to say so yesterday, but I would like to know how you use all that functionality with an Ikea button in Node-RED. I have a whole bunch of Ikea remotes that I wouldn’t mind expanding their functionality :slight_smile:

This is our hallway IKEA on off button.

This operates the hallway light (duh!) and the kitchen light since it’s placed in the intersection between the two.
So if I click with less than 800 ms in between the clicks is considered a double click.
You can also in the function node change the code to }else if(msg.count == 3){ and just add another output to get trippel click.

The loops will keep looping until the release command is sent from the remote.
I think when you import this the nodes will be reset since you don’t have the device.
So here is how they are set up:

Hold down:

Down release:

And I understand your reasoning for wanting more buttons and since I don’t have any remotes with more buttons (except IKEA Styrbar) I can’t advice you on this.

[{"id":"32b28db994678e72","type":"api-call-service","z":"a787a77.9c16458","name":"Köket off","server":"4bbca37b.1700ec","version":3,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.kokslampa","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":640,"y":1160,"wires":[[]]},{"id":"d2fcd6e1a6abc0ec","type":"api-call-service","z":"a787a77.9c16458","name":"Köket on","server":"4bbca37b.1700ec","version":3,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.kokslampa","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":640,"y":1000,"wires":[[]]},{"id":"e3cccd4158d914d9","type":"api-call-service","z":"a787a77.9c16458","name":"Hallen on","server":"4bbca37b.1700ec","version":3,"debugenabled":false,"service_domain":"switch","service":"turn_on","entityId":"switch.hallen","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":640,"y":940,"wires":[[]]},{"id":"07cea14578610314","type":"ha-device","z":"a787a77.9c16458","name":"Click down","server":"4bbca37b.1700ec","version":0,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"inputs":0,"deviceType":"trigger","device":"770b0eca92df31064acad1ab9a76ec51","event":{"device_id":"770b0eca92df31064acad1ab9a76ec51","domain":"zha","platform":"device","type":"remote_button_short_press","subtype":"turn_off"},"capabilities":[],"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":140,"y":1140,"wires":[["0f62da852a7ff1ca"]]},{"id":"b31db815b45e4574","type":"api-call-service","z":"a787a77.9c16458","name":"Hallen off","server":"4bbca37b.1700ec","version":3,"debugenabled":false,"service_domain":"switch","service":"turn_off","entityId":"switch.hallen","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":640,"y":1100,"wires":[[]]},{"id":"3ebb7b1e28e1b0c4","type":"ha-device","z":"a787a77.9c16458","name":"Click up","server":"4bbca37b.1700ec","version":0,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"inputs":0,"deviceType":"trigger","device":"770b0eca92df31064acad1ab9a76ec51","event":{"device_id":"770b0eca92df31064acad1ab9a76ec51","domain":"zha","platform":"device","type":"remote_button_short_press","subtype":"turn_on"},"capabilities":[],"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":140,"y":980,"wires":[["369f09d5301f8e12"]]},{"id":"7c6c3b834945bbd1","type":"api-call-service","z":"a787a77.9c16458","name":"","server":"4bbca37b.1700ec","version":3,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.kokslampa","data":"{\t    \"color_temp\": msg.data.attributes.color_temp+15\t}","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":950,"y":1500,"wires":[["56aef9bbc63db595"]]},{"id":"04413f16f4097883","type":"api-current-state","z":"a787a77.9c16458","name":"","server":"4bbca37b.1700ec","version":2,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"light.kokslampa","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":710,"y":1500,"wires":[["7c6c3b834945bbd1"]]},{"id":"e34e4e76bcf78caa","type":"debug","z":"a787a77.9c16458","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":950,"y":1400,"wires":[]},{"id":"dfd1e4aafc64495e","type":"api-call-service","z":"a787a77.9c16458","name":"","server":"4bbca37b.1700ec","version":3,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.kokslampa","data":"{\t    \"color_temp\": msg.data.attributes.color_temp-15\t}","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":950,"y":1340,"wires":[["42ccfe1f89f9211a"]]},{"id":"3ec4b50588ff519c","type":"api-current-state","z":"a787a77.9c16458","name":"","server":"4bbca37b.1700ec","version":2,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"light.kokslampa","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":710,"y":1340,"wires":[["dfd1e4aafc64495e"]]},{"id":"42ccfe1f89f9211a","type":"delay","z":"a787a77.9c16458","name":"","pauseType":"delay","timeout":"100","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":1150,"y":1340,"wires":[["3f6b726c41247c6f"]]},{"id":"81423ebd234c4b9d","type":"change","z":"a787a77.9c16458","name":"","rules":[{"t":"set","p":"hold_down","pt":"flow","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":1340,"wires":[["3ec4b50588ff519c"]]},{"id":"3f6b726c41247c6f","type":"switch","z":"a787a77.9c16458","name":"","property":"hold_down","propertyType":"flow","rules":[{"t":"true"}],"checkall":"true","repair":false,"outputs":1,"x":650,"y":1260,"wires":[["3ec4b50588ff519c"]]},{"id":"56aef9bbc63db595","type":"delay","z":"a787a77.9c16458","name":"","pauseType":"delay","timeout":"100","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":1150,"y":1500,"wires":[["45dad87fa3ac107e"]]},{"id":"45dad87fa3ac107e","type":"switch","z":"a787a77.9c16458","name":"","property":"hold_up","propertyType":"flow","rules":[{"t":"true"}],"checkall":"true","repair":false,"outputs":1,"x":650,"y":1420,"wires":[["04413f16f4097883"]]},{"id":"a390899f6dcda103","type":"change","z":"a787a77.9c16458","name":"","rules":[{"t":"set","p":"hold_down","pt":"flow","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":1280,"wires":[[]]},{"id":"5bc0c5760fc9fab5","type":"change","z":"a787a77.9c16458","name":"","rules":[{"t":"set","p":"hold_up","pt":"flow","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":1440,"wires":[[]]},{"id":"b595e505de63eafd","type":"change","z":"a787a77.9c16458","name":"","rules":[{"t":"set","p":"hold_up","pt":"flow","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":320,"y":1500,"wires":[["04413f16f4097883"]]},{"id":"3766cbecf2bb2202","type":"comment","z":"a787a77.9c16458","name":"Hallen","info":"","x":230,"y":880,"wires":[]},{"id":"737c153902bb4c13","type":"ha-device","z":"a787a77.9c16458","name":"Hold down","server":"4bbca37b.1700ec","version":0,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"inputs":0,"deviceType":"trigger","device":"770b0eca92df31064acad1ab9a76ec51","event":{"device_id":"770b0eca92df31064acad1ab9a76ec51","domain":"zha","platform":"device","type":"remote_button_long_press","subtype":"dim_down"},"capabilities":[],"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":140,"y":1340,"wires":[["81423ebd234c4b9d"]]},{"id":"e5d94e2f2ba9fd6e","type":"ha-device","z":"a787a77.9c16458","name":"Hold down release","server":"4bbca37b.1700ec","version":0,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"inputs":0,"deviceType":"trigger","device":"770b0eca92df31064acad1ab9a76ec51","event":{"device_id":"770b0eca92df31064acad1ab9a76ec51","domain":"zha","platform":"device","type":"remote_button_long_release","subtype":"dim_down"},"capabilities":[],"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":170,"y":1280,"wires":[["a390899f6dcda103"]]},{"id":"303a43314799ef69","type":"ha-device","z":"a787a77.9c16458","name":"Hold up","server":"4bbca37b.1700ec","version":0,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"inputs":0,"deviceType":"trigger","device":"770b0eca92df31064acad1ab9a76ec51","event":{"device_id":"770b0eca92df31064acad1ab9a76ec51","domain":"zha","platform":"device","type":"remote_button_long_press","subtype":"dim_up"},"capabilities":[],"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":130,"y":1500,"wires":[["b595e505de63eafd"]]},{"id":"fcfe8a36dc73be30","type":"ha-device","z":"a787a77.9c16458","name":"Hold up release","server":"4bbca37b.1700ec","version":0,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"inputs":0,"deviceType":"trigger","device":"770b0eca92df31064acad1ab9a76ec51","event":{"device_id":"770b0eca92df31064acad1ab9a76ec51","domain":"zha","platform":"device","type":"remote_button_long_release","subtype":"dim_up"},"capabilities":[],"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":160,"y":1440,"wires":[["5bc0c5760fc9fab5"]]},{"id":"369f09d5301f8e12","type":"function","z":"a787a77.9c16458","name":"Count clicks","func":"var count = context.get(\"count\") || 0;\n\nif(msg.count === count && count !== 0){\n    context.set(\"count\",0);\n    if(msg.count == 1){\n        return [null,msg];\n    }else if(msg.count == 2){\n        return [null,null,msg];\n    }\n}\n\nif(count < 3){\n     if(msg.delay === undefined){\n        count++\n        context.set(\"count\",count);\n     }\n     msg.delay = true;\n     msg.count = count;\n     return [msg,null];\n}\n\n","outputs":3,"noerr":0,"initialize":"","finalize":"","libs":[],"x":390,"y":980,"wires":[["ae82c7370bb69a8d"],["e3cccd4158d914d9"],["d2fcd6e1a6abc0ec"]]},{"id":"ae82c7370bb69a8d","type":"delay","z":"a787a77.9c16458","name":"","pauseType":"delay","timeout":"800","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":390,"y":920,"wires":[["369f09d5301f8e12"]]},{"id":"0f62da852a7ff1ca","type":"function","z":"a787a77.9c16458","name":"Count clicks","func":"var count = context.get(\"count\") || 0;\n\nif(msg.count === count && count !== 0){\n    context.set(\"count\",0);\n    if(msg.count == 1){\n        return [null,msg];\n    }else if(msg.count == 2){\n        return [null,null,msg];\n    }\n}\n\nif(count < 3){\n     if(msg.delay === undefined){\n        count++\n        context.set(\"count\",count);\n     }\n     msg.delay = true;\n     msg.count = count;\n     return [msg,null];\n}\n\n","outputs":3,"noerr":0,"initialize":"","finalize":"","libs":[],"x":390,"y":1140,"wires":[["8c039729a4805df5"],["b31db815b45e4574"],["32b28db994678e72"]]},{"id":"8c039729a4805df5","type":"delay","z":"a787a77.9c16458","name":"","pauseType":"delay","timeout":"800","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":390,"y":1080,"wires":[["0f62da852a7ff1ca"]]},{"id":"4bbca37b.1700ec","type":"server","name":"Home Assistant","version":1,"legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]

Thanks!

I really need to invest some time into getting to know Node-RED. Having this as an example will help a lot.

We have several Ikea on/off switches, 1 strybar and a whole bunch of those original round remotes that got replaced by the strybar. All just used with their basic Ikea functions. Looking forward to playing around with those remotes and making them do more.

This is my Styrbar automations:

It controls a Shelly RGB bulb and this gives me.

single press: 100% brightness white light
double press 25% brightness white light ( feels like 50%)
tripple press 5% brightness white light
click and hold up/down is dim up and down
if light is off and I click "off": 5% brightness white light
left/right button set to a colored light and each press moves it 30 degrees in hue.
hold left/right button move hue color until button is released (moves 3 degrees per 100 ms).
single click off: turn off
double click off: starts an automation to move the hue value around 3 degrees at the time and moves the saturation up and down.
tripple click off: random RGB light every 250 ms 

In case it’s not clear, this is kids room.

Wow, that’s a lot of functions in 1 remote :slight_smile: I’m going to start it off a little more simple.

@Hellis81 Last night I realized the IKEA Tradfri on/off switches will do very nicely for the roller shutters. I immediately ordered two of them.

Maybe I’ll end up using two more for the screens as well, but as those remotes are to be mounted right next to a regular light switch I was hoping to use something that looks more like a regular light switch.

I’ve got the roller shutters working. I’m using Ikea Tradfri dimmers


as the remotes and I have Shelly 2.5’s set up in shutter mode to control them. I’ve set the dimmers up like this:

Single press on: same room shutters up/ open
Single press on again: same room shutters stop
Single press off: same room shutters down/ close
Single press off again: same room shutters stop
Long press on: both rooms shutters up/ open
Long press on again: both rooms shutters stop
Long press off: both rooms shutters down/ close
Long press off again: both rooms shutters stop

There is also an inject that will close the shutters in my daughters room 30 min before her bedtime.

I have Aqara window sensors tide into the loop to prevent the shutters from being activated when the windows are open. And I will get a notification on my phone when a window is open.

Thanks for your help @Hellis81, your example helped me a lot with setting this up.

1 Like