Rademacher Homepilot in Home Assistant

Tags: #<Tag:0x00007f7395ae8110>

Rademacher Homepilot is a hub for their “DuoFern” line of products.
Since the last big update their API changed, still undocumented though :frowning:

I managed to get my covers integrated into Home-Assistant, but since I don’t own any of their other products, maybe someone can expand this list?

sensor.yaml for DuoFern “Gurtwickler” (electronic belt winder)

- platform: rest
  name: 'Cover Dining West Position'
  resource: 'http://[Homepilot IP]/devices/[Device ID]'
  value_template: '{{ 100 - float(value_json["payload"]["device"]["capabilities"][0]["value"]) }}'
  scan_interval: 20

A short explanation:
name: The name for the device that will show up inside Home-Assistant
resource: The API endpoint, make sure to specify the correct IP. Turn of DHCP for the Homepilot so the IP is static.
The Device ID can be found out by going to http://[Homepilot IP]/devices/1 - Look for the “NAME_DEVICE_LOC” parameter in the json the website spits out: This is the name for the device specified in the Homepilot UI. Then increment the number at the end of the URL to find out which device is the next one
value_template: Since Rademacher decides the 0-100 scale of opening a cover needs to be flipped, we need to subtract the result of the API call from 100.
scan_interval: Time in seconds between each update of the cover position. Rademacher doesn’t provide real time information, so setting this to 1 doesn’t result in the position to update every second, instead the API will return the value the cover is expected to be in after it finished moving. Using the hardware buttons on the belt winders themselves causes an update of this value once they finished moving.

rest.yaml for DuoFern “Gurtwickler” (make sure to include rest_command: !include rest.yaml in your configuration.yaml)

  belt-winder_up:
    url: 'http://[Homepilot IP]/devices/{{ did }}'
    method: PUT
    payload: '{"name":"POS_UP_CMD"}'
  belt-winder_runter:
    url: 'http://[Homepilot IP]/devices/{{ did }}'
    method: PUT
    payload: '{"name":"POS_DOWN_CMD"}'
  belt-winder_stop:
    url: 'http://[Homepilot IP]/devices/{{ did }}'
    method: PUT
    payload: '{"name":"STOP_CMD"}'
  belt-winder_set_position:
    url: 'http://[Homepilot IP]/devices/{{ did }}'
    method: PUT
    payload: '{"name":"GOTO_POS_CMD","value":"{{ 100 - float(position)|int }}"}'

Make sure to specify the correct IP, you shouldn’t need to change anything else.

cover.yaml for DuoFern “Gurtwickler” (make sure to include cover: !include cover.yaml in your configuration.yaml)

- platform: template
  covers:
    living-room_west: # Change this to sth. that matches your setup
      device_class: shutter
      friendly_name: "Living Room West" # Change this too
      position_template: "{{ states('sensor.cover_dining_west_position') }}" # make sure to use the correct sensor name here
      open_cover:
        - service: rest_command.belt-winder_up
          data:
            did: 1 # This is the Device ID also used in sensor.yaml
      close_cover:
        - service: rest_command.belt-winder_down
          data:
            did: 1 # This is the Device ID also used in sensor.yaml
      stop_cover:
        - service: rest_command.belt-winder_stop
          data:
            did: 1 # This is the Device ID also used in sensor.yaml
      set_cover_position:
        - service: rest_command.belt-winder_set_position
          data_template:
            did: 1 # This is the Device ID also used in sensor.yaml
            position: "{{position}}"

Maybe it’s possible to make this setup easier and shorter? I’d love to have a few less lines in my config :laughing:

If you own a different DuoFern device please describe how you’ve set it up :slight_smile:

1 Like