RFLink and Somfy RTS

Just in the process of setting this up - does anyone know if it’s possible to assume the position of the blind based on the last seen command? I.e. if the original remote is used (not HA) to raise the blind, RFLink receives the UP command from the remote and HA updates the position?

Thanks!

You can set up yours covers with the remote’s ID as aliases. This way, HA devices will report state changes if a remote button is detected.

That’s great, thanks, will try soon. I can’t get the STOP command to return the blind to the MY position with the RFLink Loader, but UP and DOWN seem fine. Any ideas?

Thanks again.

Done quite a bit of Googling on this, doesn’t look like I’m going to fix it which is unfortunately a deal breaker for me. Maybe I shouldn’t have gone down the RFLink route and should have spent more on the RFXCom. At least the RFLink’s Arduino can be used for other things!

If UP and DOWN commands are working, STOP is expected to work as well. Do you can stop the cover from running up or down with the STOP command?
The MY position also is expected to work in the same way your remote does. Does your cover have correctly set the MY position?
In my case, my RFLink is working without problem the UP, DOWN and STOP commands. Also with the MY position is working as expected.

Had a brainwave on this but haven’t had the time to try it out.

I was putting another Somfy up the other day and couldn’t get the MY position to register or apply with the bundled remote. Turns out the instructions I got with the blind were wrong. A PDF I managed to find online gave me the right info, apparently the motor sees the remotes in two modes; installer and user. This is separate to the blind’s first time config, where the lights remain on. I paired the remote, set the limits, exited the setup so that normal operation worked all as per the instructions (light went off) but the guide I had missed the vital step of pressing the pair button briefly on the remote to set the remote to USER mode. Once I found this out and pressed it, the blind jogged and allowed me to set the MY position as it should. Took me ages to find that one out!

I’m now wondering if I should have done something similar with RFLink on the other blind. I paired RFLink as a second remote and send commands but the blind did not respond to the STOP command to put it in the MY position. I’m wondering if the blind was seeing the RFLink and treating it like a remote in installer mode, not user mode and I should have sent another PAIR command to put it in user mode.

I’m going to reset the motor to factory and try again when I get the time, will post back findings.

Didn’t work. Really not getting anywhere! Wondering if there’s a problem in RFLink R48. What versions do folks have working?

Motor model is Tilt Only 50 WF RTS.

Nope, tried R47 and R46. Looks like my blind just isn’t supported. Gutted, wasted a lot of cash!

Change of plan now. Reckon I’m going to hack an original remote using an ESP module and ESPHome to control the blind, no need for RFLink.

1 Like

For anyone interested, I sort of followed this guide but connected two Somfy remotes to one D1 mini and flashed ESPHome. Working flawlessly so far, if anyone wants to replicate this I can share the ESPHome yaml, whole thing cost about £5 and no need for RFLink in the end.

Done!


In your esphome code do you managed also the position of the blinds with e.g. a timer?

Nope, not something I need it to do but it can be done fairly easily by the looks of it (here). I only use the ‘My’, open and closed positions, nothing in between. My HA is now the only thing I have controlling the blinds as well so state can be safely assumed and it’s never wrong. I use Zigbee buttons for control and the Somfy remotes are plugged into my HA machine in the loft for power. Been a couple of months now and true ‘set and forget’.

I did find one of my blinds that behaves strangely though (the Tilt Only 50 WF RTS), even with the original remote. Sometimes a momentary press would take it all the way up/down and sometimes it would just move an increment. To mitigate this I have ESPHome programmed to press multiple times. For example sometimes pressing the down button will only tilt it a few degrees and other times it will close it completely so I have ESPHome programmed to repeat the momentary press ten times when it’s asked by HA to open/close/MY to make sure the blind goes where I want it. Works perfectly, I just have to live with the blind sometimes shutting smoothly and sometimes ‘stepping’ itself shut. It also has a paddy if I change my mind and try to change the state of the blind back before it’s finished pressing buttons. In fairness I think Somfy is overpriced garbage for what it is but I haven’t found anything better yet!

Yes, I’d be interested. Is the code somewhere to find?

Right here. It’s pretty long because of all the repetition. I have my HA ‘Up’ mapped to ‘My’ and Ha ‘Down’ to ‘Down’. I don’t use the stop button.

esphome:
  name: bed1and3blinds
  platform: ESP8266
  board: d1_mini

wifi:
  ssid: !secret ssid
  password: !secret wpa2

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Garagelightsw Fallback Hotspot"
    password: ""

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: ""

ota:
  password: ""

switch:
  - platform: gpio
    pin: D5
    id: masterbedup
    inverted: yes
  - platform: gpio
    pin: D6
    id: masterbedmy
    inverted: yes
  - platform: gpio
    pin: D7
    id: masterbeddown
    inverted: yes
  - platform: template
    id: mastermomup
    turn_on_action:
    - switch.turn_on: masterbedup
    - delay: 400ms
    - switch.turn_off: masterbedup
  - platform: template
    id: mastermommy
    turn_on_action:
    - switch.turn_on: masterbedmy
    - delay: 400ms
    - switch.turn_off: masterbedmy
    - delay: 4s
    - switch.turn_on: masterbedmy
    - delay: 400ms
    - switch.turn_off: masterbedmy
    - delay: 4s
    - switch.turn_on: masterbedmy
    - delay: 400ms
    - switch.turn_off: masterbedmy
  - platform: template
    id: mastermomdown
    turn_on_action:
    - switch.turn_on: masterbeddown
    - delay: 400ms
    - switch.turn_off: masterbeddown
    - delay: 4s
    - switch.turn_on: masterbeddown
    - delay: 400ms
    - switch.turn_off: masterbeddown
    - delay: 4s
    - switch.turn_on: masterbeddown
    - delay: 400ms
    - switch.turn_off: masterbeddown
    - delay: 4s
    - switch.turn_on: masterbeddown
    - delay: 400ms
    - switch.turn_off: masterbeddown
    - delay: 4s
    - switch.turn_on: masterbeddown
    - delay: 400ms
    - switch.turn_off: masterbeddown
    - delay: 4s
    - switch.turn_on: masterbeddown
    - delay: 400ms
    - switch.turn_off: masterbeddown
    - delay: 4s
    - switch.turn_on: masterbeddown
    - delay: 400ms
    - switch.turn_off: masterbeddown
    - delay: 4s
    - switch.turn_on: masterbeddown
    - delay: 400ms
    - switch.turn_off: masterbeddown
    - delay: 4s
    - switch.turn_on: masterbeddown
    - delay: 400ms
    - switch.turn_off: masterbeddown
    - delay: 4s
    - switch.turn_on: masterbeddown
    - delay: 400ms
    - switch.turn_off: masterbeddown
  - platform: gpio
    pin: D1
    id: chestup
    inverted: yes
  - platform: gpio
    pin: D2
    id: chestmy
    inverted: yes
  - platform: gpio
    pin: D3
    id: chestdown
    inverted: yes
  - platform: template
    id: chestymomup
    turn_on_action:
    - switch.turn_on: chestup
    - delay: 400ms
    - switch.turn_off: chestup
  - platform: template
    id: chestymommy
    turn_on_action:
    - switch.turn_on: chestmy
    - delay: 400ms
    - switch.turn_off: chestmy
    - delay: 20s
    - switch.turn_on: chestmy
    - delay: 400ms
    - switch.turn_off: chestmy
    - delay: 20s
    - switch.turn_on: chestmy
    - delay: 400ms
    - switch.turn_off: chestmy
  - platform: template
    id: chestymomdown
    turn_on_action:
    - switch.turn_on: chestdown
    - delay: 400ms
    - switch.turn_off: chestdown
    - delay: 20s
    - switch.turn_on: chestdown
    - delay: 400ms
    - switch.turn_off: chestdown    
    - delay: 20s
    - switch.turn_on: chestdown
    - delay: 400ms
    - switch.turn_off: chestdown
cover:
  - platform: template
    name: "Bedroom Blind"
    open_action:
      - switch.turn_on: mastermommy
    close_action:
      - switch.turn_on: mastermomdown
#    stop_action:
#      - switch.turn_on: mastermommy
    optimistic: true
  - platform: template
    name: "Chester Blind"
    open_action:
      - switch.turn_on: chestymommy
    close_action:
      - switch.turn_on: chestymomdown
#    stop_action:
#      - switch.turn_on: chestymommy
    optimistic: true

Hope that helps.

1 Like

Thanks much. But why all those repetitions / turn on for 400ms / turn off for 4s / turn on for 400ms blocks?

It’s just to make sure the blind actually does as it’s told. As I said before, one of them sometimes only moves an increment and not all the way, so the repetitions make sure that it repeats enough times to step the blind shut.

1 Like

Take a look at this reply for the movement behavior:

Maybe can help.

Gotcha. Thanks!

(I still need to find an old remote that I can tear open and build in with an ESPHome device)

Thanks, but didn’t work for me unfortunately. The problem with mine is that it seems to work sometimes and not others!