Superrollo GW60 with ESPHome

Hi,

I more or less solved the same problem as Max Winterstein described in Control Superrollo GW60 (and more!) by enhancing remote with ESP8266 , but I did it with ESPHome.

Step 1 is the same as described in the above mentioned posting. Note: If you connect + from the remote with 3V3 you do not need a battery on the remote.

For step 2 I assume basic knowledge of Home Assistant and ESPHome, so what I did is in the end quite simple:

  1. I defined the GPIOs, where the 4 bit from the remote are connected as switches.
  2. Then I created buttons for up, down and stop for each cover. Each of this buttons switches the switches on press as needed to get the required signal from the remote.
  3. The last step was to define time based covers with button press for the related actions.

For reading the code it might help to know, that “Rollo” is the German word for cover.

Here’s the code:

#Bit #:    3 2 1 0
#GPIO#:  19 18 17 16
#
#all up    0 0 0 1
#all down  0 0 1 0
#all stop  0 0 1 1
#
#1 up      0 1 0 1
#1 down    0 1 1 0
#1 stop    0 1 1 1
#
#2 up      1 0 0 1
#2 down    1 0 1 0
#2 stop    1 0 1 1
#
#3 up      1 1 0 1
#3 down    1 1 1 0
#3 stop    1 1 1 1 

switch:
  - platform: gpio
    id: sr_out_0
    pin: 
      number: GPIO16
    on_turn_on:
      - delay: 0.5s
      - switch.turn_off: sr_out_0
  - platform: gpio
    id: sr_out_1
    pin: 
      number: GPIO17
    on_turn_on:
      - delay: 0.5s
      - switch.turn_off: sr_out_1
  - platform: gpio
    id: sr_out_2
    pin: 
      number: GPIO18
    on_turn_on:
      - delay: 0.5s
      - switch.turn_off: sr_out_2
  - platform: gpio
    id: sr_out_3
    pin: 
      number: GPIO19
    on_turn_on:
      - delay: 0.5s
      - switch.turn_off: sr_out_3
button:
### Cover 1 ###
  - platform: template
    name: "SR R1 up"
    id: sr_r1_up
    on_press:
      - switch.turn_on: sr_out_0
      - switch.turn_off: sr_out_1
      - switch.turn_on: sr_out_2
      - switch.turn_off: sr_out_3
  - platform: template
    name: "SR R1 down"
    id: sr_r1_down
    on_press:
      - switch.turn_off: sr_out_0
      - switch.turn_on: sr_out_1
      - switch.turn_on: sr_out_2
      - switch.turn_off: sr_out_3
  - platform: template
    name: "SR R1 stop"
    id: sr_r1_stop
    on_press:
      - switch.turn_on: sr_out_0
      - switch.turn_on: sr_out_1
      - switch.turn_on: sr_out_2
      - switch.turn_off: sr_out_3
### Cover 2 ###
  - platform: template
    name: "SR R2 up"
    id: sr_r2_up
    on_press:
      - switch.turn_on: sr_out_0
      - switch.turn_off: sr_out_1
      - switch.turn_off: sr_out_2
      - switch.turn_on: sr_out_3
  - platform: template
    name: "SR R2 down"
    id: sr_r2_down
    on_press:
      - switch.turn_off: sr_out_0
      - switch.turn_on: sr_out_1
      - switch.turn_off: sr_out_2
      - switch.turn_on: sr_out_3
  - platform: template
    name: "SR R2 stop"
    id: sr_r2_stop
    on_press:
      - switch.turn_on: sr_out_0
      - switch.turn_on: sr_out_1
      - switch.turn_off: sr_out_2
      - switch.turn_on: sr_out_3

# Now let's make a cover out of it
cover:
### Cover Bathroom ###
  - platform: time_based
    name: "Bad Rollo"
    id: badrollo
    open_action:
      - button.press: sr_r1_up
    open_duration: 19s
    close_action:
      - button.press: sr_r1_down
    close_duration: 16s
    stop_action:
      - button.press: sr_r1_stop
### Cover Kitchen ###
  - platform: time_based
    name: "Kueche Rollo"
    id: kuecherollo
    open_action:
      - button.press: sr_r2_up
    open_duration: 18s
    close_action:
      - button.press: sr_r2_down
    close_duration: 15s
    stop_action:
      - button.press: sr_r2_stop

So with ESPHome Step 3 is not necessary any more, since the buttons and covers appear automatically in Home Assistant.

Special thanks to Max for his initial work and to everybody, who provided good ideas in the thread Set more than one GPIO pins *simultanously*, when I needed some hints.

I hope, this helps. Have fun.

mfg
CR