Looking for the simplest way to integrate EnOcean OPUS Greennet + Eltako EnOcean devices directly into Home Assistant

Hi everyone,

I’m looking for advice on the simplest and most reliable way to integrate my OPUS and Eltako devices into Home Assistant.
Currently I’m running for home automation an Mediola AIO Gateway V6 plus for now round 5 years. The point is, they stopped selling the AIO Gateway V6 plus and don’t offer an upgrade or replacement path in case all the customers have a broken gateway.
It seems to be an EOL product. I’m looking at the moment to migrate to Home Assistant. My entire home automation is running now on the Mediola AIO Gateway with a lot of automation tasks, push notifications etc.

For test I made a setup on a Raspberry Pi 3B+ with an EnOcean USB310 USB stick.

My current house use now +/- 35 devices across OPUS and Eltako. And this will be more in the future. (still adding devices)

All of these devices use EnOcean 868 MHz, and I already have an EnOcean USB310 USB stick with an external antenna. I would prefer to keep using this USB stick and prefere not to add an OPUS gateway or another proprietary gateway.

The native EnOcean integration in HA doesn’t support my devices. So I’ve added for test the EnOcean Custom Integration to HA.
I got the OPUS roller shutter / blind actuator working with a lot of hours customizing configurations in the EnOcean Custom Integration. I can move it up, down and stop the shutter. (it’s actually used for a sun screen)
However, I cannot currently get the actual position/status feedback into Home Assistant.

And to get this device working cost me hours of playing and customizing Python code with Chatgpt and little self experience.
To do this for my entire house with a lot of different devices, will be very hard.

My goal is:

EnOcean devices → USB310 → Home Assistant

Ideally, I would like one integration/solution that can handle both my OPUS and Eltako devices and automatically expose them as normal Home Assistant devices/entities, including state feedback where the device supports it.

My devices

OPUS

  • 2x OPUS 563.031 – roller shutter / blind actuator
  • 11x OPUS 563.076 – 1-channel universal dimmer
  • 2x OPUS 561.411 Wall Sensor (maybe get this work by adding the device id to the configurations.yml in HA)
  • 1x OPUS 563.010 Switch
  • 2x NoDon / OPUS magnet window sensor SDO-2-1-05
  • In the future window handles

Eltako

  • 2x FL62 (Garden light, Garage light)
  • 1x FUD61NPN (light dimmer cabinet)
  • 4x FJ62NP (for the curtains)
  • 1x FL62NP (bathroom towel radiator)

What I am looking for

I would like to find out whether anyone is using a setup similar to mine:

  • Home Assistant
  • EnOcean USB300/USB310
  • OPUS devices
  • Eltako devices
  • 868 MHz EnOcean

And especially whether there is a solution that can:

  1. Use my USB310 directly
  2. Support both OPUS and Eltako
  3. Automatically discover/configure devices where possible
  4. Provide both control and feedback/status
  5. Provide actual blind/shutter position in HA (e.g. “current_position”)
  6. Avoid having to create lots of custom YAML/configuration for every device

I am open to using something like an EnOcean → MQTT bridge if that provides a much cleaner solution, but I would prefer to keep the architecture as simple as possible.

I am not looking for an OPUS GreenNet gateway solution. I want the devices to communicate directly through my existing USB310 and ultimately be controlled from Home Assistant. the OPUS GreenNet doesn’t support Eltako devices.

Has anyone successfully integrated OPUS + Eltako together using a USB300/USB310 directly with Home Assistant, especially with position/status feedback from OPUS and Eltako roller shutters, lightning, dimmers?

Any recommendations or working configurations would be greatly appreciated.

Hi,

That’s the first time I heard about these OPUS devices.

This might be because those devices are based on EEP D2-05-02 and do not report as other. Please send logs so we can confirm this point.
image

Welcome to the jungle of EnOcean compatibility where we (developers on free time) are unable to synchronize ourselves and where the EnOcean company doesn’t bother become a partner of the Open Home Foundation. I try to follow the different status of integrations here :

But I would recommend 3 possibilities :

  • My addon for stability but with no UI
  • This one with UI but less stable (because really new)
  • This one have its UI under development but it’s really promissing because rely on the stability of mak_gitdev work

Hi,

Thank you for the reply.

The OPUS devices are used a lot here in The Netherlands for home automation by technicall installers.

I prefere an addon / stability for the Eltako devices we use and if possible the OPUS devices as well. I understand it need development and free time for the configuration.

I’ve added the last 10 lines from the log from the OPUS device, just changed my device ID for security reason, is this enough log information? (private message maybe better?) I used the down and up button, last 10 lines will be the up button directly from the device.

2026-09-28 19:41:20.855 DEBUG (EnOceanSerialCommunicator) [custom_components.enocean_custom.dongle] Received EnOcean packet: type=1 rorg=246 sender=05:98:34:AB data=['F6', '70', '05', '98', '62', '1C', '30'] optional=['00', 'FF', 'FF', 'FF', 'FF', '3D', '00'] status=48 dBm=-61
2026-09-28 19:41:20.857 DEBUG (EnOceanSerialCommunicator) [custom_components.enocean_custom.enocean_library.communicators.serialcommunicator] Received EnOcean packet type=1
2026-09-28 19:41:20.857 DEBUG (EnOceanSerialCommunicator) [custom_components.enocean_custom.enocean_library.protocol.packet] parse_msg called with buffered_bytes=11
2026-09-28 19:41:20.960 DEBUG (EnOceanSerialCommunicator) [custom_components.enocean_custom.enocean_library.protocol.packet] parse_msg called with buffered_bytes=24
2026-09-28 19:41:20.961 DEBUG (EnOceanSerialCommunicator) [custom_components.enocean_custom.dongle] Received EnOcean packet: type=1 rorg=210 sender=05:98:34:AB data=['D2', '15', '7F', '00', '04', '05', '98', '62', '1C', '80'] optional=['00', 'FF', 'FF', 'FF', 'FF', '4F', '00'] status=0 dBm=-79
2026-09-28 19:41:20.962 DEBUG (EnOceanSerialCommunicator) [custom_components.enocean_custom.enocean_library.communicators.serialcommunicator] Received EnOcean packet type=1
2026-09-28 19:41:29.786 DEBUG (EnOceanSerialCommunicator) [custom_components.enocean_custom.enocean_library.protocol.packet] parse_msg called with buffered_bytes=16
2026-09-28 19:41:29.890 DEBUG (EnOceanSerialCommunicator) [custom_components.enocean_custom.enocean_library.protocol.packet] parse_msg called with buffered_bytes=21
2026-09-28 19:41:29.891 DEBUG (EnOceanSerialCommunicator) [custom_components.enocean_custom.dongle] Received EnOcean packet: type=1 rorg=246 sender=05:98:34:AB data=['F6', '60', '05', '98', '62', '1C', '30'] optional=['00', 'FF', 'FF', 'FF', 'FF', '4C', '00'] status=48 dBm=-76
2026-09-28 19:41:29.896 DEBUG (EnOceanSerialCommunicator) [custom_components.enocean_custom.enocean_library.communicators.serialcommunicator] Received EnOcean packet type=1

Logs shows that a status have been received for the shutter (position 21%, angle unknown). They are not from the addon I maintain. It seems to be EnOcean custom integration but I don’t know how it works. You may open on issue on the correct Github repository. If you can stipulate the EEP in the configuration, try D2-05-00 instead. EnOcean MQTT addon should be able to handles those devices (and Eltako ones) by using EEP D2-05-00.

My journey until now:

installed the app EnOcean MQTT from ChristopheHD from github.

OPUS 563.031 roller shutter, I can pull it up, down, get status when user used the button, but moving the slider it just goes totally up or totally down instead of the % open / close I set.

OPUS 563.076 can teach it in, but can only switch on, max dim or switch on minimal dim. Not turn of or set other % in dim mode or turn it off.

Eltako FL62 > can add the entitie, pairing function is not accepted on the Eltako.

enoceanmqtt.devices configuration:

[OPUS_563.031]                                                                                                                                                                                 
address = 0x0XXXXXXX                                                                                                                                                                                         
rorg = 0xD2                                                                                                                                                                                                  
func = 0x05                                                                                                                                                                                                  
type = 0x02                                                                                                                                                                                                  
sender = 0x0XXXXXXX                                                                                                                                                                                          
                                                                                                                                                                                                             
[OPUS_563.031_RPS]                                                                                                                                                                                                                                                                                                                                                                       
address = 0x0XXXXXXX                                                                                                                                                                                        
rorg = 0xF6                                                                                                                                                                                                  
func = 0x02                                                                                                                                                                                                  
type = 0x02                                                                                                                                                                                                  
sender = 0x0XXXXXXX                                                                                                                                                                                          
virtual = 1                                                                                                                                                                                                  
                                                                                                                                                                                                             
[OPUS_563.076]                                                                                                                                                                                     
address = 0x0XXXXXXX                                                                                                                                                                                         
rorg = 0xD2                                                                                                                                                                                                  
func = 0x01                                                                                                                                                                                                  
type = 0x03                                                                                                                                                                                                  
sender = 0x0XXXXXXX                                                                                                                                                                                          
                                                                                                                                                                                                             
[OPUS_563.076_RPS]                                                                                                                                                                                 
address = 0x0XXXXXXX                                                                                                                                                                                         
rorg = 0xF6                                                                                                                                                                                                  
func = 0x02                                                                                                                                                                                                  
type = 0x02                                                                                                                                                                                                  
sender = 0x0XXXXXXX                                                                                                                                                                                          
virtual = 1                                                                                                                                                                                                  
                                                                                                                                                                                                             
[Eltako_FL62]                                                                                                                                                                                 
address = 0x0XXXXXXX                                                                                                                                                                                         
rorg = 0xA5                                                                                                                                                                                                  
func = 0x38                                                                                                                                                                                                  
type = 0x08                                                                                                                                                                                                  
sender = 0x0XXXXXXX                                                                                                                                                                                          
                                                                                                                                                                                                             
[Eltako_FL62]                                                                                                                                                                          
address = 0x0XXXXXXX                                                                                                                                                                                         
rorg = 0xF6                                                                                                                                                                                                  
func = 0x02                                                                                                                                                                                                  
type = 0x01  

and some configuration changes in the configuration.yaml for the OPUS 563.031

According to the manual, it is expected that % open /close are not taken into account :

ACHTUNG: Die Fahrzeiten für Öffnen, Schließen und Ankippen sind bei Einsatz des EEP D2-05-02 individuell zu kalibrieren!

Which according to AI means : ATTENTION: The operating times for opening, closing, and tilting must be calibrated individually when using the EEP D2-05-02!

EEP D2-01-03 is currently not supported by the addon. I will write the mapping and send it to you so you can test it.

This device is not supported by the addon. Eltako uses proprietary telegram and I can’t manage to find the correct ones for this device.

I found the FL62 telegram, these are the sames as FR62, so change your EEP based configuration to model=eltako/fr62 and this should work.