Rademacher Homepilot in Home Assistant

Hey,

for sensor you need to add this:

- platform: rest
  name: '[Cover Name] Position'
  resource: 'http://[Homepilot IP]/devices/[Device ID]'
  value_template: >-
    {% for item in value_json.payload.device.capabilities %}
      {%- if item.name == "CURR_POS_CFG" -%}
        {{ 100 - float(item.value) }}
      {%- endif -%}
    {% endfor %}
  scan_interval: 1
- platform: rest
  name: '[Cover Name] Position Tilt'
  resource: 'http://[Homepilot IP]/devices/[Device ID]'
  value_template: >-
    {% for item in value_json.payload.device.capabilities %}
      {%- if item.name == "CURR_SLAT_POS_CFG" -%}
        {{ 100 - float(item.value) }}
      {%- endif -%}
    {% endfor %}
  scan_interval: 1

Otherwise you will only get the angle cover but no value for the opening.

I also edited the cover with the (for me working) sensor names depending on the sensor name.

- platform: template
  covers:
    [cover_name]:
      device_class: shutter
      friendly_name: "Wohnzimmer Raff"
      position_template: "{{ states('sensor.[Cover Name]_position') }}"
      tilt_template: "{{ states('sensor.[Cover Name]_position_tilt') }}"
      open_cover:
        - service: rest_command.belt_winder_up
          data:
            did: [Device ID]
      close_cover:
        - service: rest_command.belt_winder_down
          data:
            did: [Device ID]
      stop_cover:
        - service: rest_command.belt_winder_stop
          data:
            did: [Device ID]
      set_cover_position:
        - service: rest_command.belt_winder_set_position
          data_template:
            did: [Device ID]
            position: "{{position}}"
      set_cover_tilt_position:
        - service: rest_command.belt_winder_set_tilt_position
          data_template:
            did: [Device ID]
            tilt: "{{tilt}}"

Thanks to @fedot and @mathi_kay!!!

I’ve edited my post with your additions, thanks for the hint. Completely forgot the cover position in sensor.yaml :man_facepalming:

Totally fine for me and definitely a good idea.

Hey together,

with the help of fedor I also integrated my Dimmer Module:

sensor:

  • platform: rest
    name: ‘Dimmer 1’ # Kannst du auch umbenennen, dann im light: Block die Namen des Sensors anpassen
    resource: ‘http://[Homepilot IP]/devices/30’ # [Homepilot IP] ersetzen
    value_template: >-
    {% for item in value_json.payload.device.capabilities %}
    {%- if item.name == “CURR_POS_CFG” -%}
    {{ item.value }}
    {%- endif -%}
    {% endfor %}
    scan_interval: 20

light.yaml or config

light:
  - platform: template
    lights:
      garden_light:
        friendly_name: "Garten Licht"
        level_template: "{{ ((states('sensor.dimmer_1')|int) * 2.55) | round(0) }}"
        value_template: "{{ states('sensor.dimmer_1')|int > 0 }}"
        turn_on:
          service: rest_command.dimmer_on
          data:
            did: 30
        turn_off:
          service: rest_command.dimmer_off
          data:
            did: 30
        set_level:
          service: rest_command.dimmer_brightness
          data_template:
            did: 30
            brightness: "{{ (brightness / 2.55) | round(0) }}"

rest_commands

rest_command: # Entfernen falls diese Zeile schon existiert bzw. du das in einer extra YAML machst
dimmer_on:
url: ‘http://[Homepilot IP]/devices/{{ did }}’ # [Homepilot IP] ersetzen
method: PUT
payload: ‘{“name”:“TURN_ON_CMD”}’
dimmer_off:
url: ‘http://[Homepilot IP]/devices/{{ did }}’ # [Homepilot IP] ersetzen
method: PUT
payload: ‘{“name”:“TURN_OFF_CMD”}’
dimmer_brightness:
url: ‘http://[Homepilot IP]/devices/{{ did }}’ # [Homepilot IP] ersetzen
method: PUT
payload: ‘{“name”:“GOTO_POS_CMD”,“value”:“{{ brightness }}”}’

Hey together,

i´ve added the files as shown on top of this post and get the following error when i check the config:

Invalid config for [rest]: [belt_winder_up] is an invalid option for [rest]. Check: rest->rest->0->belt_winder_up. (See /config/configuration.yaml, line 39).

Can somebody help? Thanks for your support.

You either have to create an extra yaml file and include it rest_command: !include rest.yaml
Or just put rest_command: into your configuration.yaml and add the block underneath.
Please re-read step 2.
If you’re already using rest.yaml for something different, just create a file with a different name like rest_command.yaml and include that one.

1 Like

Hi @mathi_kay,

Thanks for your input :smiley:

Mehrfachwandtaster (DuoFern Mehrfachwandtaster)
I just modified it a little bit to avoid counting items in the capabilities-array:

- scan_interval: 0
  resource: "http://[Homepilot IP]/devices/[Device ID]"
  method: GET
  sensor:
    - name: "Taster 1"
      value_template: >-
        {% for item in value_json.payload.device.capabilities %}
          {%- if item.name == "KEY_PUSH_CH1_EVT" -%}
            {{ float(item.timestamp) }}
          {%- endif -%}
        {% endfor %}
    - name: "Taster 2"
      value_template: >-
        {% for item in value_json.payload.device.capabilities %}
          {%- if item.name == "KEY_PUSH_CH2_EVT" -%}
            {{ float(item.timestamp) }}
          {%- endif -%}
        {% endfor %}
    - name: "Taster 3"
      value_template: >-
        {% for item in value_json.payload.device.capabilities %}
          {%- if item.name == "KEY_PUSH_CH3_EVT" -%}
            {{ float(item.timestamp) }}
          {%- endif -%}
        {% endfor %}
    - name: "Taster 4"
      value_template: >-
        {% for item in value_json.payload.device.capabilities %}
          {%- if item.name == "KEY_PUSH_CH4_EVT" -%}
            {{ float(item.timestamp) }}
          {%- endif -%}
        {% endfor %}
    - name: "Taster 5"
      value_template: >-
        {% for item in value_json.payload.device.capabilities %}
          {%- if item.name == "KEY_PUSH_CH5_EVT" -%}
            {{ float(item.timestamp) }}
          {%- endif -%}
        {% endfor %}
    - name: "Taster 6"
      value_template: >-
        {% for item in value_json.payload.device.capabilities %}
          {%- if item.name == "KEY_PUSH_CH6_EVT" -%}
            {{ float(item.timestamp) }}
          {%- endif -%}
        {% endfor %}        

Switches (z.B. Zwischenstecker oder Aktoren)

- platform: rest
  resource: "http://[Homepilot IP]/devices/[Device ID]"
  method: put
  name: "Wohnzimmer Licht"
  body_on: '{ "name": "TURN_ON_CMD" }'
  body_off: '{ "name": "TURN_OFF_CMD" }'
  is_on_template: >-
    {% for item in value_json.payload.device.capabilities %}
      {%- if item.name == "CURR_SWITCH_POS_CFG" -%}
        {% if item.value == "true" %}
          True
        {% else %}
          False
        {% endif %}
      {%- endif -%}
    {% endfor %}

and if the switch is for a light, I added a ligth-switch:

light:
  - platform: switch
    name: Wohnzimmer Licht
    entity_id: switch.wohnzimmer_licht

perhaps, that’s helpful for the community.

In my current project, I created a PowerShell-script to create sensors and covers for Rademacher-Covers using the device.json you can obtain from your homepilot.

PowerShell-Scripts

Just download and store that json from http://[Homepilot IP]/devices in the script-directory.

Then open “CreateRademacherCoverInfos.ps1” in ISE or Visual Studio code.

Change the variables in the first region

# basepath - working directory
$basepath = "D:\temp\rademacher"
# Name of json-File from homepilot, get it from http://[Homepilot IP]/devices and save it
$devicesJSONFileName = "Rademacher-Devices.json"
# parts of devicenames, that should be excluded, e.g. switche, ligths, ...
$excludeNamesContaining = @("stecker", "duofern", "licht", "leucht")
# Homepilot-IP
$homepilotIP = "192.168.66.99"

The basepath should be the path, where you stored the json-file and where the yml-files will be created.

If you want to exclude some devices, like lights, you can use the excludeNamesContaining-array.
Then add you own homepilot-IP and start the script.

Did you have already a look to the HACS integration? In the meantime I switched completely and it is running very smoothly.

Hello together,
my HA 2022-2-6 is running in a Docker Container with Bridged Network.
I’ve installed HACS 1.22 and then Rademacher Homepilot Integration (peribeir) successful,
but I can’t connect to my Homepilot at Host-Network.
Error-Message in then Dialogbox “Hostname/IP-Adresse der Bridge eingeben”:
Unbekannter Fehler.
Must there more ports be accessible from outside in the HA Container?
Uli

After a fix of the Version 1.4.1 => Version 1.5.0 it works fine :wink:
Version v1.5.0-beta3 now recognise my homepilot automatically and I can add all my DuoFern und Z-Wave devices (about 42) :slight_smile:
Thanks a lot.

Hey guys I am thinking about buying Rademacher 1550 for my window.

Does this work with Home assistant and do I need the official Rademacher bridge? Would love to do it without. Anyways, does anyone have experience with different products of this kind?

I have the exact same product, since they speak some sort of proprietary protocol on 433MHz you’ll either need a bridge (easy) or the USB stick which is hard to get and not as easy to implement (if at all)

Given that you have the same product, how does it go together with Home Assistant in terms of compatibility?
And may I ask how it works range wise, I have to cover two platforms…

I’d go with a bridge. You then have two options:

The second option is much easier, and given that the repository is quite active it might be a good place to start. However the first method, while requiring more setup time, is more robust. I haven’t touched it for 2 years and it still works 100%.
Be aware that the custom integration is more likely to break when Home Assistant changes its core API between versions.
Still, the integration probably is a better place to start.

With the REST integration:

What works:

  • Sending commands like Open, Close, Stop, Set Position
  • Reading the current position

What doesn’t work:

  • The covers don’t have a “opening” or “closing” state, the Rademacher Hub only reports the target state while the cover is moving and the current one while it isn’t
  • Setting the position to 0 or 100 doesn’t close/open the covers completely (missing about 1cm), only a open/close command will

As I said, I haven’t really touched my setup for a few years, so firmware updates might resolve those issues, I just don’t really care.
If you’re starting fresh, go with the cheaper hub and install the integration from HACS.

As for the range I don’t really know, I’ve installed 8 motors, and since they form a mesh network and relay commands I haven’t had a single issue with that.

1 Like

Thank you so much for that profound sum up. It’s highly appreciated

Servus dexxger, bin neu hier und wollte fragen ob du mich unterstützen kannst meine Rademacher Dimmer einzubinden? :slight_smile: gilt das für die 9476-Dimmer?

Moin
Guck mal weiter oben. Da steht genau was du in die yamls eintragen musst.

Hi @ all!

I just installed the custom component from GitHub => GitHub - peribeir/homeassistant-rademacher: This custom integration provides access to Rademacher Devices connected to a HomePilot (or Start2Smart) bridge. and tried to configure my Rademacher Devices with it.
But it seems to be that the HACS component does not deliver the current “position” of the cover (e.g. cover is on 48%). Do you have any ideas for that “problem” and how to solve it?

Thanks in advance!

Cannot confirm this.

current_position: 78
device_class: shutter
friendly_name: Rollladen xxx
supported_features: 15

Ahh … I think it was my fault => I thought, that the current position is an entity of each shutter - but it is an attribute. :slight_smile: