Eltako EUD62NPN-IP using REST-API

Has anyone tried to use an Eltako EUD62NPN-IP dimmer with Home Assistant?
https://www.eltako.com/en/catalog/products/1233/eud62npn-ip110-240v/

They also provide a small guide on how to use the REST-API which could probably be used for an integration:
https://www.eltako.com/fileadmin/downloads/en/_bedienung/Series_62-IP_Developer_Guide.pdf

1 Like

i didnā€™t do it yet, but Iā€˜ll look into it soonish.

It turned out to be impossible connecting this device to HA via matter. Keep me posted if you make any progress.

Just wanted to let you know you are not alone :wink:

1 Like

Thanks for your reply!
I currently only use Eltako dimmers in my home and they work great so I really like to stick with them.
Eltako released a new version of their dimmers, for example EUD64NPN-IPM maybe they work out of the box with HA and Matter. I am just not a huge Matter fan because I want to seperate my IoT devices on different vlans/subnets and Matter is not build with network segmentation in mind.

By the way, the new version still supports REST-API.

True. Unfortunately I assumed that ā€žready for matterā€œ actually supports matter. Now its too late to send it back and I have to deal with it. Thatā€™s annoying.

Anyway, I started playing with the REST API using Postman. I can get the states of the EUD62, like brightness etc., but I am not able to change them using PUT commands. It always ends with Error code 500. If I could make it work, Iā€™d try to bring it to HA.

Did you try anything about the REST API?

I made a first configuration as a simple switch using RESTful Switch - Home Assistant

Iā€™d recommend to Postman to get into it. You need to generate an api-key for authentification first. In Postman it is pretty straightforward.
You also have to get your device-ID. I did it also in Postman using a function called ā€œGet a list with all devicesā€.

Once this is done, you can add it to your configuration.yaml with the following code:

# EUD62NPN-IP integration via REST-API
switch:
  - platform: rest
    resource: https://[IP_OF_EUD62NPN-IP]:443/api/v0/devices/DEVICE_ID_OF YOUR_DIMMER/functions
    name: "DIMMER_XXX"
    method: "put"
    body_on: '[{"type":"number","identifier":"targetBrightness","value":80}]'
    body_off: '[{"type":"number","identifier":"targetBrightness","value":0}]'
    headers:
        Authorization: [YOUR_API-KEY]
    verify_ssl: false

With this switch, you can only set the brightness to 80% (or you have to adapt it). I might implement it as a dimmer at some point, but I am not too familiar with templates and I would have to read into it first. Does anyone have a tip on where to start?

I made some more progress with the implementation using the light-template to make it a dimmer. However, the the latency is pretty high and I did not manage to update the state of my light, if you change it e.g. via Apple Homekit.

The effort to get it running properly is way too high, so I decided to send send it back and get the EUD64NPN-IPM, which supports Matter natively. The technical support of Eltako told me, that there will be no update of the EUD62NPN-IP to make it Matter-compatible, even though the packaging says ā€œbuilt for Matterā€.
Hereā€™s my last implementation of the REST-API, in case someone needs it. It is inspired by this thread: Rest Command brightness to build a template light - #4 by koying

light:
    - platform: template
      lights:
          dein_rest_licht:
            friendly_name: "EUD62NPN-IP"
            turn_on:
              action: rest_command.dimmen
              data:
                brightness: 100
            turn_off:
              action: rest_command.dimmen
              data:
                brightness: 0  
            set_level:
              action: rest_command.dimmen
              data:
                brightness: "{{ (brightness | float / 255 * 100) }}"

rest_command:
  dimmen:
    url: https://[IP_OF_EUD62NPN-IP]:443/api/v0/devices/[DEVICE_ID_OF YOUR_DIMMER]/functions
    method: PUT
    headers:
      authorization: [YOUR_API-KEY]
    #payload: '{"targetBrightness": {{ brightness }} }'
    payload: '[{"type":"number","identifier":"targetBrightness","value": {{ brightness }} }]'
    content_type:  'application/json; charset=utf-8'
    verify_ssl: false