home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
72.72k stars 30.45k forks source link

EnOcean : switch doesn't control the device but changes when you manually change th state #33025

Closed olivvv59 closed 3 years ago

olivvv59 commented 4 years ago

The problem

I have a nodon switch,behind a double light switch, with 2 inputs/outputs to control my lights.

Environment

Home Assistant 0.107.1

arch armv7l
dev false
docker true
hassio true
os_name Linux
os_version 4.19.106-v7
python_version 3.7.6
timezone Europe/Paris
version 0.107.1
virtualenv false

Raspberry 2

First time, i try to use it

Hostname | homeassistant System | HassOS 3.12 Deployment | production

https://www.home-assistant.io/integrations/enocean/

Problem-relevant configuration.yaml


> configuration.yaml
> enocean:
>   device: /dev/serial/by-id/usb-EnOcean_GmbH_EnOcean_USB_300_DB_FT1SEG8Y-if00-port0
> 
> 
> switch nodon_escalier01:
>   - platform: enocean
>     id: [0x00,0x00,0x00,0x00]
>     name: Lumiere_couloir
>     channel: 0
> 
> switch nodon_escalier02:
>   - platform: enocean
>     id: [0x00,0x00,0x00,0x00]
>     name: Lumiere_entree
>     channel: 1  
> 

_lovelace
 - entities:
          - entity: switch.lumiere_couloir
          - entity: switch.lumiere_entree_

Traceback/Error logs

Additional information

probot-home-assistant[bot] commented 4 years ago

Hey there @bdurrer, mind taking a look at this issue as its been labeled with a integration (enocean) you are listed as a codeowner for? Thanks!

bdurrer commented 4 years ago

If I understood correctly, you attempt to trigger the enocean switch from HA? Is it really a switching device (relay) or just a stateless button (nodon wall switch)?

Do you have any specification document for the switch? Maybe these switches expect a different message or format, I can take a look at that next week.

olivvv59 commented 4 years ago

Hello,

Sorry, i don't see your message before. I am french. I try to explain better ^^

yes, i try to control it with HA.

This a swithig device. This is this one : https://nodon.fr/wp-content/uploads/2017/12/NodOn-SIN-2-1-xx-UserGuide-170907-FR-interactive.pdf

i have 2 different type

(moreover, I have enocean Nodon rollershutters. https://nodon.fr/wp-content/uploads/2018/04/NodOn-SIN-2-RS-01-UserGuide-FR-180712-interactive.pdf I don't find how to integrate them in HA. this is difficult to make ?)

thanks a lot

olivvv59 commented 4 years ago

image

olivvv59 commented 4 years ago

If I understood correctly, you attempt to trigger the enocean switch from HA? Is it really a switching device (relay) or just a stateless button (nodon wall switch)?

Do you have any specification document for the switch? Maybe these switches expect a different message or format, I can take a look at that next week.

do you find the problem?

do you need some help to reproduce it ?

bdurrer commented 4 years ago

I am sorry to say that my python dev environment blew up. Since it is expected to rewrite the whole enocean integration in order to add features, I can't find the motivation/energy to look into it. There were merge requests in the pipelines recently, but I think they got aborted for the same reason (requested integration rewrite).

The most likely cause is that this switch sends/expects a different message than what HA is sending. It is likely HA's fault, not the switch.

PS the english doc can be found here: https://nodon.fr/wp-content/uploads/2017/11/NodOn-SIN-2-1-xx-UserGuide-170731-EN-interactive.pdf

olivvv59 commented 4 years ago

I understand. It's hard to motivate yoursellf when you know your work will be to the trash with the futur new integration.

Si, I will wait the new integration.

thank you to have taken time to have a look

Afterster commented 4 years ago

Are you working on the new integration @bdurrer? I don't have experience at home-assistant development yet so I cannot be the guy for the refactoring for now, but be sure several people are using your great work and will gladly help for stupid tasks ^^.

bdurrer commented 4 years ago

@Afterster No, I am afraid not. I wrote a lot of tests, but they did not follow the pattern so were never merged. To be honest, I lost the drive to do it, as I struggled to find de correct patterns and personally dislike python and its environment :sweat_smile:

Afterster commented 4 years ago

Ok, I understand. Not getting merged is frustrating. I can try to give a shot on my free time (which is not that big :) if you point me to a thread which explain what should be done / your unmerged trial.

bdurrer commented 4 years ago

The component would have to comply with how components nowadays are supposed to be built. Enocean was one of the earlier adaptions, when the requirements where very lax. To be honest, you would have to ask in Discord, read through the developer docs and look at other components.

All I have are some unit tests in my repo, (see commit) that verified the enocean messages are interpreted correctly.

Shkrum31 commented 4 years ago

@olivvv59 I had the exact same problem as the one you currently experience, and I have just solved it!

Your code seems right (you just need to put the correct switch IDs on the configuration.yaml file), the main problem here is that your modules do not allow instructions from your usb device. I guess that a kind of integration/learning/teaching/pairing is required (or whatever the name of the process is). I may be mistaken, but I do not think that one can deal with this via HA.

As a result, I used the DolphinView Advanced software that is used to send telegrams between devices. You need to create an account by the way. You need as well to send the right data for the pairing. I found configuration files at the following address: https://assistance.domadoo.com/category/documentations-et-manuels-produit/nodon/229/

Once you have the software installed, and the right .do files (or at least the exact codes to send for the pairing), you may follow the following steps:

If it is the case, restart HA with your dongle, and voilà!

Afterster commented 4 years ago

Ok... I can help but I don't want to take the lead, already too much projects to lead on my own... @jduquennoy following you recent comment on another PR, can you?

Sorry for hijacking the thread but the repo policy to quickly close unmerged PR and do not allow further discussion is really annoying for such discussion...

jduquennoy commented 4 years ago

Hi @Afterster , I am currently working on building a UI-ready version of the ENOcean integration (one that can be configured from the UI and detect devices automatically). I am making progresses on that project, it is now able to control a nodOn switch from hass, after the switch has been discovered automatically using the association procedure of the device, but there is still quite some work to be done. I still need to find how to restore created entities when hass is restarting notably. I am working on it, but sadely, I cannot give a date for a release. It is my first contribution to the project, I have tons to learn on the way, that takes time :-).

olivvv59 commented 4 years ago

hi,

@Shkrum31 thanks a lot. Waouw, I don't know how do you find all this procedure. I'm impressed. I will test it tonight.

@jduquennoy, this is a great news. If you need any help to test it. I may help you.

olivvv59 commented 4 years ago

@olivvv59 I had the exact same problem as the one you currently experience, and I have just solved it!

Your code seems right (you just need to put the correct switch IDs on the configuration.yaml file), the main problem here is that your modules do not allow instructions from your usb device. I guess that a kind of integration/learning/teaching/pairing is required (or whatever the name of the process is). I may be mistaken, but I do not think that one can deal with this via HA.

As a result, I used the DolphinView Advanced software that is used to send telegrams between devices. You need to create an account by the way. You need as well to send the right data for the pairing. I found configuration files at the following address: https://assistance.domadoo.com/category/documentations-et-manuels-produit/nodon/229/

Once you have the software installed, and the right .do files (or at least the exact codes to send for the pairing), you may follow the following steps:

  • Connect your dongle to your computer
  • Launch the DolphinView Advanced software, select the appropriate dongle, whose ID (written at the very end of the device name) will be needed later, and connect to it.
  • Select the "Telegram Transmit" tab (may be hidden because it is the last one) At this time, you may monitor the different telegrams transmitted around. Try different switches. After being used, they will appear on the left side of the window.
  • Load the required .do file to get the appropriate telegram that allows pairing. For example, on the .od files I used, the first one labeled "Send UTE telegram" is the one to use for pairing. For each switch:
  • Fill the "ID" box (which is the SenderID of the telegram), with the dongle ID. I guess a BaseID may be used as well, but it was not necessary in my case.
  • Fill the “DestinationID” with the switch ID (listed on the left), same as those written in your HA configuration.yaml file
  • Put your switch in pairing mode
  • Execute! Once done, you can try to send other kind of telegram, like turn ON, turn OFF, in order to check that your switches are correctly paired with your dongle.

If it is the case, restart HA with your dongle, and voilà!

Hi,

I can control it with DolphinView Advanced software (by following your instruction). But still doesn't work in ha for me (with the correct id ) :-(

Shkrum31 commented 4 years ago

I guess this means that at least your NodOn modules are paired with your dongle. Can you still monitor with HA when you toggle a switch ?

It could be a probleme with your HA configuration.

Just to crosscheck your code, please find below an extract of my configuration.yaml, the indication to consider on the NodOn module being "ID : 0528415D" (and not the SN). FYI I only have 1 channel modules.

enocean:
  device: /dev/ttyUSB0

switch nodon_ch2_0:
  - platform: enocean
    id: [0x05,0x28,0x41,0x5D]
    name: Chambre_2
    channel: 0

As this worked for me (HA 107.7), I do not have any other suggestion...

olivvv59 commented 4 years ago

thank you to help me.

Yep, it still monitor. Same config than you. In the first time, i forget the channel but I add it.

For the moment i like ha a lot but i go back to jeedom. My Enocean rollerShutter doesn't work at all. I wait for an update.

i stay in touch :-) ;-)

stale[bot] commented 4 years ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest Home Assistant version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue now has been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

zedapolo commented 4 years ago

I've the same issue on my side with a NODON SIN-2-2-01 , i did it working with openhab but not with HA.

jhpaulsen commented 3 years ago

Really sad.. may house is full with nodon roller shutters but enocean seams to be a real issue here... don't know what to do

olivvv59 commented 3 years ago

Really sad.. may house is full with nodon roller shutters but enocean seams to be a real issue here... don't know what to do

a developper is working on it.he tries to rewrite enocean's integration.

Maybe, it would give us a solution.

we should just be patient

Bubule02 commented 3 years ago

Hello,

I've got some issues with Enocean Integration.

I start with HA which is my first home integration. All equipments in my house are in Enocean standard (Nodon, Eltako, Peha) and I hoped Home Assistant could work with. It does't seems so easy...

Just to say, for a newbee, begin with HA and Enocean at the same time is very hard... Most part of tutoriels are helpfull when you have standard systems (like Hue). But there is no tutorial for Enocean devices. This message is just to encourage you to continue Enocean development. I nice tutorial (for me) will be to know how integrate Nodon relay ON/OFF (SIN-2-x-x - EEP : D2-01-0F) with a wall switch with momentary impulses (CWS-2-1-01 - EEP : F6-02-01 (same as Eltako FT55). So simple ! But so difficult (for me) with HA.

That was my first message on Github ...

Franck

ChriKn commented 3 years ago

Hi there, Just to add myself to the list for more enocean support. I allready posted a message on the forums about my roller shutters for which there is apparently no support... https://community.home-assistant.io/t/enocean-need-help-to-install-eltako-nsb61np-230v-roller-shutters/255731

Feel free if I can help with something or test something !

KarlKl commented 3 years ago

Hey. Just wanted to say that I have the same problem and messed around a bit in the code last year. I got it working. At least until now, because I updated HA to latest version and my code doesn't work anymore. 😄

The problem is that the NodOn does await a SenderId(like in the light integration), but a zero sender id is getting sent. Its long time ago and tried a lot of things, but I think I've got this working when I used a fake SenderId from an already paired device. So there needs to be a "teach in" functionality to get this working correctly.

I have struggled on the teach in part because my base_id is not set when I query it. Has someone had the same problem? There is a sample code at the enocean repo that can be used for reference.

And yes, I know that frustrating part of submitting a pull request but get rejected because of reasons... 😢 I am wondering why someone (except frenck) still develops something for HA. 😄

KarlKl commented 3 years ago

I have found out that v0.60.0 of the enocean python lib does have auto teach-in. At least if the base_id is set, which I have done manually. 🎉

The teach in looks like it is working, but HA is still not able to turn lights on or off. 😢

In case it helps someone, here is my log output(turned debug logging on for enocean):

my nodon has the following id: 05:08:2C:37

reset of my nodon(button long press)
05:08:2C:37->FF:FF:FF:FF (-70 dBm): 0x01 ['0xd2', '0x4', '0x60', '0xe4', '0x5', '0x8', '0x2c', '0x37', '0x0'] ['0x1', '0xff', '0xff', '0xff', '0xff', '0x46', '0x0'] OrderedDict()
05:08:2C:37->FF:FF:FF:FF (-70 dBm): 0x01 ['0xd2', '0x4', '0x61', '0xe4', '0x5', '0x8', '0x2c', '0x37', '0x0'] ['0x1', '0xff', '0xff', '0xff', '0xff', '0x46', '0x0'] OrderedDict()

teach in(button pressed three times)
05:08:2C:37->FF:FF:FF:FF (-67 dBm): 0x01 ['0xd4', '0xa0', '0x2', '0x46', '0x0', '0x12', '0x1', '0xd2', '0x5', '0x8', '0x2c', '0x37', '0x0'] ['0x1', '0xff', '0xff', '0xff', '0xff', '0x43', '0x0'] OrderedDict()
05:08:2C:37->FF:FF:FF:FF (-68 dBm): 0x01 ['0xd2', '0x4', '0x60', '0xe4', '0x5', '0x8', '0x2c', '0x37', '0x0'] ['0x1', '0xff', '0xff', '0xff', '0xff', '0x44', '0x0'] OrderedDict()
05:08:2C:37->FF:FF:FF:FF (-65 dBm): 0x01 ['0xd2', '0x4', '0x61', '0xe4', '0x5', '0x8', '0x2c', '0x37', '0x0'] ['0x1', '0xff', '0xff', '0xff', '0xff', '0x41', '0x0'] OrderedDict()

I have also tried sending the packet by hand, without success. Maybe something broken in the enocean lib?

packet = RadioPacket.create(rorg=RORG.VLD, rorg_func=0x01, rorg_type=0x01, destination=destination, sender=communicator.base_id, command=0, IO=0x00, OV=output_value)
print('Send packet: %s' % packet)
communicator.send(packet)
whadaff commented 3 years ago

Hi @Afterster , I am currently working on building a UI-ready version of the ENOcean integration (one that can be configured from the UI and detect devices automatically). I am making progresses on that project, it is now able to control a nodOn switch from hass, after the switch has been discovered automatically using the association procedure of the device, but there is still quite some work to be done. I still need to find how to restore created entities when hass is restarting notably. I am working on it, but sadely, I cannot give a date for a release. It is my first contribution to the project, I have tons to learn on the way, that takes time :-).

Hello all. Yet another french guy with the same issue with nodon SIN 2-2-XX. HA get the refreshed state but can't change it. @jduquennoy Your messages sounded promising, any progress ? Need any help ? Please tell us you're on the edge to success...

matthieuvw commented 3 years ago

I have found out that v0.60.0 of the enocean python lib does have auto teach-in. At least if the base_id is set, which I have done manually. tada

The teach in looks like it is working, but HA is still not able to turn lights on or off. cry

In case it helps someone, here is my log output(turned debug logging on for enocean):

my nodon has the following id: 05:08:2C:37

reset of my nodon(button long press)
05:08:2C:37->FF:FF:FF:FF (-70 dBm): 0x01 ['0xd2', '0x4', '0x60', '0xe4', '0x5', '0x8', '0x2c', '0x37', '0x0'] ['0x1', '0xff', '0xff', '0xff', '0xff', '0x46', '0x0'] OrderedDict()
05:08:2C:37->FF:FF:FF:FF (-70 dBm): 0x01 ['0xd2', '0x4', '0x61', '0xe4', '0x5', '0x8', '0x2c', '0x37', '0x0'] ['0x1', '0xff', '0xff', '0xff', '0xff', '0x46', '0x0'] OrderedDict()

teach in(button pressed three times)
05:08:2C:37->FF:FF:FF:FF (-67 dBm): 0x01 ['0xd4', '0xa0', '0x2', '0x46', '0x0', '0x12', '0x1', '0xd2', '0x5', '0x8', '0x2c', '0x37', '0x0'] ['0x1', '0xff', '0xff', '0xff', '0xff', '0x43', '0x0'] OrderedDict()
05:08:2C:37->FF:FF:FF:FF (-68 dBm): 0x01 ['0xd2', '0x4', '0x60', '0xe4', '0x5', '0x8', '0x2c', '0x37', '0x0'] ['0x1', '0xff', '0xff', '0xff', '0xff', '0x44', '0x0'] OrderedDict()
05:08:2C:37->FF:FF:FF:FF (-65 dBm): 0x01 ['0xd2', '0x4', '0x61', '0xe4', '0x5', '0x8', '0x2c', '0x37', '0x0'] ['0x1', '0xff', '0xff', '0xff', '0xff', '0x41', '0x0'] OrderedDict()

I have also tried sending the packet by hand, without success. Maybe something broken in the enocean lib?

packet = RadioPacket.create(rorg=RORG.VLD, rorg_func=0x01, rorg_type=0x01, destination=destination, sender=communicator.base_id, command=0, IO=0x00, OV=output_value)
print('Send packet: %s' % packet)
communicator.send(packet)

I add 'direction=1' arg to RadioPacket.create() function and it works.

KarlKl commented 3 years ago

I have found out that v0.60.0 of the enocean python lib does have auto teach-in. At least if the base_id is set, which I have done manually. tada The teach in looks like it is working, but HA is still not able to turn lights on or off. cry In case it helps someone, here is my log output(turned debug logging on for enocean):

my nodon has the following id: 05:08:2C:37

reset of my nodon(button long press)
05:08:2C:37->FF:FF:FF:FF (-70 dBm): 0x01 ['0xd2', '0x4', '0x60', '0xe4', '0x5', '0x8', '0x2c', '0x37', '0x0'] ['0x1', '0xff', '0xff', '0xff', '0xff', '0x46', '0x0'] OrderedDict()
05:08:2C:37->FF:FF:FF:FF (-70 dBm): 0x01 ['0xd2', '0x4', '0x61', '0xe4', '0x5', '0x8', '0x2c', '0x37', '0x0'] ['0x1', '0xff', '0xff', '0xff', '0xff', '0x46', '0x0'] OrderedDict()

teach in(button pressed three times)
05:08:2C:37->FF:FF:FF:FF (-67 dBm): 0x01 ['0xd4', '0xa0', '0x2', '0x46', '0x0', '0x12', '0x1', '0xd2', '0x5', '0x8', '0x2c', '0x37', '0x0'] ['0x1', '0xff', '0xff', '0xff', '0xff', '0x43', '0x0'] OrderedDict()
05:08:2C:37->FF:FF:FF:FF (-68 dBm): 0x01 ['0xd2', '0x4', '0x60', '0xe4', '0x5', '0x8', '0x2c', '0x37', '0x0'] ['0x1', '0xff', '0xff', '0xff', '0xff', '0x44', '0x0'] OrderedDict()
05:08:2C:37->FF:FF:FF:FF (-65 dBm): 0x01 ['0xd2', '0x4', '0x61', '0xe4', '0x5', '0x8', '0x2c', '0x37', '0x0'] ['0x1', '0xff', '0xff', '0xff', '0xff', '0x41', '0x0'] OrderedDict()

I have also tried sending the packet by hand, without success. Maybe something broken in the enocean lib?

packet = RadioPacket.create(rorg=RORG.VLD, rorg_func=0x01, rorg_type=0x01, destination=destination, sender=communicator.base_id, command=0, IO=0x00, OV=output_value)
print('Send packet: %s' % packet)
communicator.send(packet)

I add 'direction=1' arg to RadioPacket.create() function and it works.

I managed to get it working (without the direction flag). The problem with my RadioPacket was, that the command should be 1, not 0.

RadioPacket.create(rorg=RORG.VLD, rorg_func=0x01, rorg_type=0x01, destination=destination, sender=communicator.base_id, command=1, IO=channel, OV=output_value)

I will try to get this into my HA in the coming days. We'll see.

matthieuvw commented 3 years ago

I answered too quickly : no matter the direction argument ...

I try with custom sources using py-enocean and I see this behaviour (with paired devices) :

  1. I send command 1 to turn OFF my D20112 device with EEP D20101
  2. My switch turn OFF
  3. Then I received an actuator status response from my switch (CMD 0x4)
  4. I send command 1 to turn ON my D20112 device with EEP D20101
  5. My switch turn OFF
  6. But I never receive status response

I tried several times and I already receive a status after turning OFF but never after turning ON.

KarlKl commented 3 years ago

@matthieuvw I have a NodOn SIN-2-2-00 and can't reproduce your behavior. I always get the status back.

I now have everything set up and working inside HA. I resetted everything and started all over with these steps:

whadaff commented 3 years ago
* `docker exec -it homeassistant /bin/bash` -> sneak into the container

* `pip install --upgrade enocean` -> install latest python enocean lib

  * this gets resetted after each restart, but you only need it ones for the teach-in

* `apk add nano` -> could also be skipped if you use `vi`

* `nano -c /usr/src/homeassistant/homeassistant/components/enocean/dongle.py` -> add the following changes

  * **set the base_id manually** after creating the SerialCommunicator (this should work out of the box, but it doesn't) (line number 30)
    `self._communicator.base_id = [0xFF, 0x99, 0x87, 0x0] # this is the id of my dongle, don't know if any other id is working here too`
  * **add the base_id to each message**, by changing the `_send_message_callback` (this is not a "release ready" implementation, don't know if this breaks something else) (line number 49)
    I had also a version where I added the ID directly in the _switch.py_, but we do not have the communicator object there. 🤔
    ```
    def _send_message_callback(self, command):
            """Send a command through the EnOcean dongle."""
            base_id_location = 4
            for i in range(len(self._communicator.base_id)):
                command.data[base_id_location + i] = self._communicator.base_id[i]
            self._communicator.send(command)
    ```

* `exit` -> leave docker bash

* `docker restart homeassistant` -> restart core

* Go to your device and trigger a "teach-in", on my NodOn its a triple button press

So nice ! Thanks @KarlKl ! I hope this trick stay stable in time. For those who wants to try, take extra care to avoid the "TabError: inconsistent use of tabs and spaces in indentation" modifyng dongle.py file. FYI, I didn't need to configure and connect via SSH on port 2222. I have HA-core in a docker, so I just connect via SSH (port 22) onto my machine, and then directly connect into the docker container as discribed.

github-actions[bot] commented 3 years ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest Home Assistant version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

ghost commented 3 years ago

What is this Site? 🧐😅

KarlKl commented 3 years ago

Updated to latest version and tested it. Does not work. 😞 Please reopen.

ChriKn commented 3 years ago

The problem still isn't solved. The integration is nothing more than an alpha for the moment sadly... Openhab seems to have worked it out (?) maybe look in that direction (for a maintainer ?)

bdurrer commented 3 years ago

The problem is that the HA team does not accept changes to the enocean component unless it is refactored to comply with the latest code style. But nobody want's to do the upgrade (myself included), so things won't change....

I did a few changes a while back and to be honest, the manufacturers are to blame too, (IMO) needlessly adding multiple device types to the protocol instead of using the existing ones. It's almost impossible to deal with all "switches" in an uniform way (e.g. my standard-type switches work just fine but nodon thought it would be cool to use a different device type message)

ChriKn commented 3 years ago

The problem is that the HA team does not accept changes to the enocean component unless it is refactored to comply with the latest code style. But nobody want's to do the upgrade (myself included), so things won't change....

I did a few changes a while back and to be honest, the manufacturers are to blame too, (IMO) needlessly adding multiple device types to the protocol instead of using the existing ones. It's almost impossible to deal with all "switches" in an uniform way (e.g. my standard-type switches work just fine but nodon thought it would be cool to use a different device type message)

Thank you for the explanation of the situation ! It's sad that everything seems to work against the Dev and user in this case...

andreas-bulling commented 2 years ago

I have a very similar problem but with two Eltako actuators (one dimmer FD62NPN-230V and one switch FL62NP-230V). The first is connected to the dining room (dimmable), the second to the kitchen (not dimmable) light. I am using an Enocean USB300 USB dongle directly connected to my HA machine. I have set the debug logging level accordingly and I can see packages coming in from an additional wall switch (that I don't want to connect to HA). that is, the dongle is working under HA. I'd like to be able to operate both actuators from HA.

I've successully "paired" the dongle and both actors. I have confirmed that controlling both actuators in principle works using a python script that I found here: https://community.home-assistant.io/t/enocean-switch/1958/24 On the command line, when plugging in the dongle to my laptop, I can control both lights just fine.

However, configuring both in HA using the same destination and sender ids doesn't work. I can see the dining room control toggle when I press the additional wall switch (but not for the kitchen for some reason) but I can't switch on/off the lights from HA.

From the above script, this is how the packet is created that allows 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)