I have a problem setting up Enocean in HA with two Eltako actors (one dimmer FD62NPN-230V and one switch FL62NP-230V). The first is connected to the dining room light (dimmable), the second to the kitchen light (not dimmable). I am using an Enocean USB300 USB dongle directly connected to my HASSOS machine. I have set the debug logging level and I can see packets coming in from a separate Enocean wall switch (that I don’t want to connect to HA). That is, I think the dongle is working properly in HA.
Example packets when switching both lights on and off:
2021-12-04 07:54:54 DEBUG (Thread-3) [homeassistant.components.enocean.dongle] Received radio packet: 00:3E:06:FF->FF:FF:FF:FF (-68 dBm): 0x01 ['0xf6', '0x30', '0x0', '0x3e', '0x6', '0xff', '0x30'] ['0x0', '0xff', '0xff', '0xff', '0xff', '0x44', '0x0'] OrderedDict()
2021-12-04 07:54:54 DEBUG (Thread-3) [homeassistant.components.enocean.dongle] Received radio packet: 00:3E:06:FF->FF:FF:FF:FF (-67 dBm): 0x01 ['0xf6', '0x0', '0x0', '0x3e', '0x6', '0xff', '0x20'] ['0x0', '0xff', '0xff', '0xff', '0xff', '0x43', '0x0'] OrderedDict()
2021-12-04 07:54:55 DEBUG (Thread-3) [homeassistant.components.enocean.dongle] Received radio packet: 04:14:7F:22->FF:FF:FF:FF (-60 dBm): 0x01 ['0xf6', '0x70', '0x4', '0x14', '0x7f', '0x22', '0x30'] ['0x0', '0xff', '0xff', '0xff', '0xff', '0x3c', '0x0'] OrderedDict()
2021-12-04 07:54:55 DEBUG (Thread-3) [homeassistant.components.enocean.dongle] Received radio packet: 04:14:7F:22->FF:FF:FF:FF (-60 dBm): 0x01 ['0xa5', '0x2', '0x10', '0x0', '0x9', '0x4', '0x14', '0x7f', '0x22', '0x0'] ['0x0', '0xff', '0xff', '0xff', '0xff', '0x3c', '0x0'] OrderedDict()
2021-12-04 07:54:57 DEBUG (Thread-3) [homeassistant.components.enocean.dongle] Received radio packet: 00:3E:06:FF->FF:FF:FF:FF (-61 dBm): 0x01 ['0xf6', '0x10', '0x0', '0x3e', '0x6', '0xff', '0x30'] ['0x0', '0xff', '0xff', '0xff', '0xff', '0x3d', '0x0'] OrderedDict()
2021-12-04 07:54:57 DEBUG (Thread-3) [homeassistant.components.enocean.dongle] Received radio packet: 00:3E:06:FF->FF:FF:FF:FF (-61 dBm): 0x01 ['0xf6', '0x0', '0x0', '0x3e', '0x6', '0xff', '0x20'] ['0x0', '0xff', '0xff', '0xff', '0xff', '0x3d', '0x0'] OrderedDict()
2021-12-04 07:54:58 DEBUG (Thread-3) [homeassistant.components.enocean.dongle] Received radio packet: 04:14:7F:22->FF:FF:FF:FF (-60 dBm): 0x01 ['0xf6', '0x50', '0x4', '0x14', '0x7f', '0x22', '0x30'] ['0x0', '0xff', '0xff', '0xff', '0xff', '0x3c', '0x0'] OrderedDict()
2021-12-04 07:54:59 DEBUG (Thread-3) [homeassistant.components.enocean.dongle] Received radio packet: 04:14:7F:22->FF:FF:FF:FF (-61 dBm): 0x01 ['0xa5', '0x2', '0x0', '0x0', '0x8', '0x4', '0x14', '0x7f', '0x22', '0x0'] ['0x0', '0xff', '0xff', '0xff', '0xff', '0x3d', '0x0'] OrderedDict()
2021-12-04 07:54:59 DEBUG (Thread-3) [homeassistant.components.enocean.dongle] Received radio packet: 00:3E:06:FF->FF:FF:FF:FF (-65 dBm): 0x01 ['0xf6', '0x70', '0x0', '0x3e', '0x6', '0xff', '0x30'] ['0x0', '0xff', '0xff', '0xff', '0xff', '0x41', '0x0'] OrderedDict()
2021-12-04 07:54:59 DEBUG (Thread-3) [homeassistant.components.enocean.dongle] Received radio packet: 00:3E:06:FF->FF:FF:FF:FF (-67 dBm): 0x01 ['0xf6', '0x0', '0x0', '0x3e', '0x6', '0xff', '0x20'] ['0x0', '0xff', '0xff', '0xff', '0xff', '0x43', '0x0'] OrderedDict()
2021-12-04 07:54:59 DEBUG (Thread-3) [homeassistant.components.enocean.dongle] Received radio packet: 04:14:B2:66->FF:FF:FF:FF (-58 dBm): 0x01 ['0xf6', '0x70', '0x4', '0x14', '0xb2', '0x66', '0x30'] ['0x0', '0xff', '0xff', '0xff', '0xff', '0x3a', '0x0'] OrderedDict()
2021-12-04 07:55:00 DEBUG (Thread-3) [homeassistant.components.enocean.dongle] Received radio packet: 00:3E:06:FF->FF:FF:FF:FF (-65 dBm): 0x01 ['0xf6', '0x50', '0x0', '0x3e', '0x6', '0xff', '0x30'] ['0x0', '0xff', '0xff', '0xff', '0xff', '0x41', '0x0'] OrderedDict()
2021-12-04 07:55:00 DEBUG (Thread-3) [homeassistant.components.enocean.dongle] Received radio packet: 00:3E:06:FF->FF:FF:FF:FF (-65 dBm): 0x01 ['0xf6', '0x0', '0x0', '0x3e', '0x6', '0xff', '0x20'] ['0x0', '0xff', '0xff', '0xff', '0xff', '0x41', '0x0'] OrderedDict()
2021-12-04 07:55:01 DEBUG (Thread-3) [homeassistant.components.enocean.dongle] Received radio packet: 04:14:B2:66->FF:FF:FF:FF (-60 dBm): 0x01 ['0xf6', '0x50', '0x4', '0x14', '0xb2', '0x66', '0x30'] ['0x0', '0xff', '0xff', '0xff', '0xff', '0x3c', '0x0'] OrderedDict()
I’ve successfully trained in the dongle and both actors using a python script that I found here: Enocean switch - #24 by cgrueter. I’ve figured out the base id of the dongle and added “1” and “2” to it to obtain sender ids for training in the two actors. I have confirmed that controlling both actors works using a slightly modified version of the same script (simulating single button presses to turn on/off the light).
However, configuring both actors in HA using the same destination and sender ids doesn’t work. Although packets from the wall switch appear in the log, the entity doesn’t toggle when I press the Enocean switch. Only one of them (why no idea) toggles when I flip the local physical switch connected to the Eltako. Most importantly, I can’t switch on/off the lights from HA.
This is my configuration:
light:
- platform: enocean
id: [0x04,0x14,0x7F,0x22]
sender_id: [0xFF,0xE3,0x01,0x82]
name: diningroom_light
- platform: enocean
id: [0x04,0x14,0xB2,0x66]
sender_id: [0xFF,0xE3,0x01,0x81]
name: kitchen_light
In the above script, this is how the packets are created that allow me to toggle the light:
def assemble_packet_press_a_1():
return Packet.create(packet_type=PACKET.RADIO, rorg=0xF6, rorg_func=0x02, rorg_type=0x02, destination=destination_id, sender=sender_id, R1=0, EB=1, R2=0, SA=0, T21=True, NU=True)
In contrast, HA seems to do the following:
def turn_on(self, **kwargs):
"""Turn the light source on or sets a specific dimmer value."""
if (brightness := kwargs.get(ATTR_BRIGHTNESS)) is not None:
self._brightness = brightness
bval = math.floor(self._brightness / 256.0 * 100.0)
if bval == 0:
bval = 1
command = [0xA5, 0x02, bval, 0x01, 0x09]
command.extend(self._sender_id)
command.extend([0x00])
self.send_command(command, [], 0x01)
self._on_state = True
The separate wall switch also uses the F6 RORG (in contrast to HA that uses A5) but not sure if this could be the reason for the problems I encounter.
Any ideas/suggestions for how to get this working?
UPDATE (04 Dec):
When I add a binary_sensor for the separate enocean wall switch I don’t see any change in the entity/logbook entry when I press it (not toggling when I flick the switch):
binary_sensor:
- platform: enocean
id: [0x00,0x3E,0x06,0xFF]
name: diningroom_kitchen_switch
UPDATE 2:
I’ve been reading into the official Enocean protocol and packet specifications, looking at tons of logfiles, testing different teaching in strategies all day. And I came to the conclusion that the problem is that the HA enocean implementation is simply not compatible with the Eltako actors. I have already started debugging with a custom enocean component (copy of the original) that I will now continue to modify to send and analyse received packets geared to the Eltako actors. Let’s see - I already managed to get the status of the kitchen actor and have the HA entity toggle it’s state accordingly. Let’s see…