[Custom Component] Integrate Becker Centronic Plus shutter motors into Home Assistant using the Centronic Plus USB stick

Hi everyone,

I'd like to introduce GitHub - honsma235/hass-becker-centronic-plus: Integrate Becker Centronic Plus shutter motors into Home Assistant using the Centronic Plus USB stick an integration to control Becker Centronic Plus motors using the official Becker Centronic Plus USB Stick, bypassing the need for a CentralControl CC41 unit.

Features

  • Cover Support: Full control of shutters including open, close, stop, and absolute position (0-100%).
  • Status Feedback: Real-time position and state updates via intelligent backoff polling.
  • Advanced Controls:
    • Fly Screen Protection and Anti-freeze protection: Toggle via a switch entity.
    • Presets: Buttons to trigger "Preset 1" and "Preset 2" (Intermediate Positions). Actions to set and delete.
    • Identify: Button to make the motor "jog" for identification.
  • Diagnostics: Sensors for "Blocked" and "Overheated" states.
  • Name Sync: Changing a device name in Home Assistant automatically syncs the name to the Becker hardware.
  • USB Discovery: Automatically detects the Becker USB stick when plugged into the host.

Requirements

  • Hardware: Becker Centronic Plus USB stick (ordering codes 4036 200 001 0 or 4036 000 009 0).

This integration does not work with the older non-Plus Centronic USB sticks (4035 200 041 0 or 4035 000 041 0)! The classic Centronic RF shutters are supported by this integration.

Known Limitations

  • Currently only tested with roller shutter drives of the C01 PLUS series.
  • It likely does not support the EVO 20 R PLUS series or sun protection drives of the Cxx PLUS series!
  • Does not support pairing the Becker USB stick with covers or performing initial commissioning.
    To do this, use the USB stick with a computer or mobile device and the Becker Tool app.

I’d love to hear your feedback or contributions!

Hi, i am trying to set this up but failing with the Windows part and Becker Tool pairing. My stick finds all the 8 covers i have, and i can move them all together, but as soon as i click any of them i get a yellow warning that it cannot read all the infornation. In HA the stick is visible but sees no entity at all...

Hi, so you mean the Becker Tool complaints it cannot read all the information? I think i maybe had such a symptom once, but only temporary, and I was quite far away from my covers then.

Particularly odd if you can move them individually without problem. Maybe you can share a screenshot of the problem. Just out of curiosity, not that I could give any support regarding the Becker Tool.

Feel free to create a new issue here and attach a debug log, then I can have a look a the problem from the integration perspective.

I was able to pair the covers in becker tool, but was not working properly (becker tool gave me yellow warning that devices cannot be fully read). So idecided to move on and work in HA since the pairing was ready, as i assumed.

  1. I had to add this to the beginning of the parse_packet definition, which made my cover instantly appear in HA.
if raw_hex.startswith("0700011F"):
    return {
        "type": "device",
        "mac_id": raw_hex[8:24].lower(),
        "sn": "TEST",
        "fw": "01.07.03",
    }
  1. There was a change in the action packet, so my "UP, DOWN, STOP" actions was not working, while "Identify" was able to cluck the cover. (Maybe version difference?)
 # return f"07010118{mac}01013400000000000000{action.value}0000000501"
    return f"0701011A{mac}01013400000000002000{action.value}000000010501"

In my case i had to change f"07010118 to f"0701011A in the action packet definition.

That change immediately fixed the action buttons, and now i can move them UP/DOWN/STOP.

Sadly the position command is not working and i am pretty stucked debugging it. I can read the cover postion, but the slide or the values (25%, 50%, 75%, 100%) not moving the cover into position at all. I have Centronic Plus USB stick (4036 200 001 0) and C01 plus covers.

As a little improvement and to bypass the need of % input i added 2 more buttons, to set preset.

With these I can set any position. When i click on save preset my motors aknowledge it with cluck, then the "Go To Preset" will return to that position. Added the below in the button.py:

class BeckerSavePresetButton(BeckerCentronicPlusEntity, ButtonEntity):
    """Button to save the current position as a preset."""

    _attr_entity_category = EntityCategory.CONFIG

    def __init__(
        self,
        client: BeckerClient,
        device: CentronicPlusDevice,
        entry_id: str,
        preset_num: int,
    ) -> None:
        """Initialize the button."""
        super().__init__(client, device, entry_id)
        self._preset_num: int = preset_num
        self._attr_name = f"Save Preset {preset_num}"
        self._attr_icon = "mdi:content-save"
        self._attr_unique_id = (
            f"{format_mac(device.mac_id)}-save_preset_{preset_num}"
        )

    async def async_press(self) -> None:
        """Handle the button press."""
        action = (
            Action.SET_PRESET_1
            if self._preset_num == 1
            else Action.SET_PRESET_2
        )
        await self._device.action(action)

However this is working still not sure how to solve the move to, and how to send % input to the motors.

Hi,
well, I have not seen packages starting with 0700011F during testing. Are you sure you have regular C01 plus covers?
If you could post a debug log, I can inspect all the messages comming frorm the covers.

The action packet you use is not the simple direct action packet which the Becker Tool uses. At least not on my side. But rather some kind of group command used by the CC41 I think. Does it work to move each covers individually?

Not having "Save preset" Buttons was a design choise.
I think they will be used quite rarely (once you are happy with them, you probably wont touch them anymore). So i decided to implement them as a actions only, see here. To use them go to Settings -> Developer Tools -> Actions and then search for "Set preset".

If you can convince me that having separate buttons for that is a mayor improvement, I may add that to the integration.

Actually i don't want to convince you, but in my case preset was a good alternative since i cannot send % value to the cover or use the slider to set position. See some debug logs below when i hit 25% , 50%, 75%. or random value on the slider. My covers do nothing. But as far as i know preset positions are stored in the motor's memory so it is working. Maybe not the best solution but at least i have 2 more positions now (other then fully closed or fully open).

Well, this must be BECKER P9/16 C01 PLUS motor (based on the invoice), that I controlled with an EC5416 and EC548 handheld controller before. Is there any packet that returns the exact motor type (e.g. R20-17-C01 PLUS), or are only serial number and firmware available?

0700011F was only needed to discover the devices, without that i could not see any device in HA, only the USB stick.

The action packet solved my action buttons that was not working, with that correction now i have almost fully working integration (except the % value that i can send to the motor today, but it does not react)

Percentage call debug log:

2026-07-08 05:49:07.957 WARNING (MainThread) [custom_components.becker_centronic_plus.cover] SET POSITION CALLED: Nappali FR Right -> 53
2026-07-08 05:49:07.958 WARNING (MainThread) [pybeckerplus.packet] MOVETO percentage=47 pos_hex=7851 cnt=23 cnt_hex=0017
2026-07-08 05:49:07.958 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded010134000000005340000000785100170501
2026-07-08 05:49:07.958 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded010134000000005340000000785100170501
2026-07-08 05:49:07.960 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000080A0000000000000180501
2026-07-08 05:49:08.209 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000080A0000000000000180501
2026-07-08 05:49:08.278 DEBUG (MainThread) [pybeckerplus.client]  <-- USB 0700011AA0DC04FFFED73DED010111000000008030CE1440000000180001
2026-07-08 05:49:08.278 WARNING (MainThread) [pybeckerplus.client] RAW PACKET: 0700011AA0DC04FFFED73DED010111000000008030CE1440000000180001
2026-07-08 05:49:08.278 WARNING (MainThread) [pybeckerplus.client] PARSED: {'type': 'device', 'mac_id': 'a0dc04fffed73ded', 'status': b'\x14@', 'pos': 0.0, 'rssi': 206}
2026-07-08 05:49:08.278 WARNING (MainThread) [pybeckerplus.device] UPDATE STATUS a0dc04fffed73ded
2026-07-08 05:49:08.278 DEBUG (MainThread) [pybeckerplus.device] Device: a0dc04fffed73ded updated
2026-07-08 05:49:08.279 WARNING (MainThread) [custom_components.becker_centronic_plus] >>> DEVICE CALLBACK <<< MAC=a0dc04fffed73ded NAME=Nappali FR Right POS=0.0
2026-07-08 05:49:08.279 DEBUG (MainThread) [custom_components.becker_centronic_plus] Device update from a0dc04fffed73ded. No changes
2026-07-08 05:49:11.711 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000080A0000000000000190501
2026-07-08 05:49:11.712 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000080A0000000000000190501
2026-07-08 05:49:11.783 DEBUG (MainThread) [pybeckerplus.client]  <-- USB 0700011AA0DC04FFFED73DED010111000000008030CD1440000000190001
2026-07-08 05:49:11.783 WARNING (MainThread) [pybeckerplus.client] RAW PACKET: 0700011AA0DC04FFFED73DED010111000000008030CD1440000000190001
2026-07-08 05:49:11.784 WARNING (MainThread) [pybeckerplus.client] PARSED: {'type': 'device', 'mac_id': 'a0dc04fffed73ded', 'status': b'\x14@', 'pos': 0.0, 'rssi': 205}
2026-07-08 05:49:11.784 WARNING (MainThread) [pybeckerplus.device] UPDATE STATUS a0dc04fffed73ded
2026-07-08 05:49:11.784 DEBUG (MainThread) [pybeckerplus.device] Device: a0dc04fffed73ded updated
2026-07-08 05:49:11.784 WARNING (MainThread) [custom_components.becker_centronic_plus] >>> DEVICE CALLBACK <<< MAC=a0dc04fffed73ded NAME=Nappali FR Right POS=0.0
2026-07-08 05:49:11.784 DEBUG (MainThread) [custom_components.becker_centronic_plus] Device update from a0dc04fffed73ded. Changes: {'rssi': (206, 205)}
2026-07-08 05:50:42.546 WARNING (MainThread) [custom_components.becker_centronic_plus.cover] SET POSITION CALLED: Nappali FR Right -> 25
2026-07-08 05:50:42.547 WARNING (MainThread) [pybeckerplus.packet] MOVETO percentage=75 pos_hex=BFFF cnt=26 cnt_hex=001A
2026-07-08 05:50:42.547 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded010134000000005340000000BFFF001A0501
2026-07-08 05:50:42.547 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded010134000000005340000000BFFF001A0501
2026-07-08 05:50:42.549 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000080A00000000000001B0501
2026-07-08 05:50:42.798 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000080A00000000000001B0501
2026-07-08 05:50:42.869 DEBUG (MainThread) [pybeckerplus.client]  <-- USB 0700011AA0DC04FFFED73DED010111000000008030CB14400000001B0001
2026-07-08 05:50:42.869 WARNING (MainThread) [pybeckerplus.client] RAW PACKET: 0700011AA0DC04FFFED73DED010111000000008030CB14400000001B0001
2026-07-08 05:50:42.869 WARNING (MainThread) [pybeckerplus.client] PARSED: {'type': 'device', 'mac_id': 'a0dc04fffed73ded', 'status': b'\x14@', 'pos': 0.0, 'rssi': 203}
2026-07-08 05:50:42.869 WARNING (MainThread) [pybeckerplus.device] UPDATE STATUS a0dc04fffed73ded
2026-07-08 05:50:42.869 DEBUG (MainThread) [pybeckerplus.device] Device: a0dc04fffed73ded updated
2026-07-08 05:50:42.870 WARNING (MainThread) [custom_components.becker_centronic_plus] >>> DEVICE CALLBACK <<< MAC=a0dc04fffed73ded NAME=Nappali FR Right POS=0.0
2026-07-08 05:50:42.870 DEBUG (MainThread) [custom_components.becker_centronic_plus] Device update from a0dc04fffed73ded. Changes: {'rssi': (205, 203)}
2026-07-08 05:50:43.976 WARNING (MainThread) [custom_components.becker_centronic_plus.cover] SET POSITION CALLED: Nappali FR Right -> 100
2026-07-08 05:50:43.977 WARNING (MainThread) [pybeckerplus.packet] MOVETO percentage=0 pos_hex=0000 cnt=28 cnt_hex=001C
2026-07-08 05:50:43.977 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000053400000000000001C0501
2026-07-08 05:50:43.977 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000053400000000000001C0501
2026-07-08 05:50:43.997 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000080A00000000000001D0501
2026-07-08 05:50:44.228 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000080A00000000000001D0501
2026-07-08 05:50:44.411 DEBUG (MainThread) [pybeckerplus.client]  <-- USB 0700011AA0DC04FFFED73DED010111000000008030CB14400000001D0001
2026-07-08 05:50:44.411 WARNING (MainThread) [pybeckerplus.client] RAW PACKET: 0700011AA0DC04FFFED73DED010111000000008030CB14400000001D0001
2026-07-08 05:50:44.411 WARNING (MainThread) [pybeckerplus.client] PARSED: {'type': 'device', 'mac_id': 'a0dc04fffed73ded', 'status': b'\x14@', 'pos': 0.0, 'rssi': 203}
2026-07-08 05:50:44.411 WARNING (MainThread) [pybeckerplus.device] UPDATE STATUS a0dc04fffed73ded
2026-07-08 05:50:44.411 DEBUG (MainThread) [pybeckerplus.device] Device: a0dc04fffed73ded updated
2026-07-08 05:50:44.412 WARNING (MainThread) [custom_components.becker_centronic_plus] >>> DEVICE CALLBACK <<< MAC=a0dc04fffed73ded NAME=Nappali FR Right POS=0.0
2026-07-08 05:50:44.412 DEBUG (MainThread) [custom_components.becker_centronic_plus] Device update from a0dc04fffed73ded. No changes
2026-07-08 05:50:47.731 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000080A00000000000001E0501
2026-07-08 05:50:47.731 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000080A00000000000001E0501
2026-07-08 05:50:47.802 DEBUG (MainThread) [pybeckerplus.client]  <-- USB 0700011AA0DC04FFFED73DED010111000000008030CB14400000001E0001
2026-07-08 05:50:47.802 WARNING (MainThread) [pybeckerplus.client] RAW PACKET: 0700011AA0DC04FFFED73DED010111000000008030CB14400000001E0001
2026-07-08 05:50:47.802 WARNING (MainThread) [pybeckerplus.client] PARSED: {'type': 'device', 'mac_id': 'a0dc04fffed73ded', 'status': b'\x14@', 'pos': 0.0, 'rssi': 203}
2026-07-08 05:50:47.802 WARNING (MainThread) [pybeckerplus.device] UPDATE STATUS a0dc04fffed73ded
2026-07-08 05:50:47.803 DEBUG (MainThread) [pybeckerplus.device] Device: a0dc04fffed73ded updated
2026-07-08 05:50:47.803 WARNING (MainThread) [custom_components.becker_centronic_plus] >>> DEVICE CALLBACK <<< MAC=a0dc04fffed73ded NAME=Nappali FR Right POS=0.0
2026-07-08 05:50:47.803 DEBUG (MainThread) [custom_components.becker_centronic_plus] Device update from a0dc04fffed73ded. No changes

Normal action packet Debug log:

2026-07-08 06:08:34.876 WARNING (MainThread) [custom_components.becker_centronic_plus.cover] CLOSE COVER CALLED: Nappali FR Right
2026-07-08 06:08:34.876 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000000200040000000010501
2026-07-08 06:08:34.876 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000000200040000000010501
2026-07-08 06:08:34.878 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000080A00000000000001F0501
2026-07-08 06:08:35.128 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000080A00000000000001F0501
2026-07-08 06:08:35.202 DEBUG (MainThread) [pybeckerplus.client]  <-- USB 0700011AA0DC04FFFED73DED010111000000008030CE12403303001F0001
2026-07-08 06:08:35.202 WARNING (MainThread) [pybeckerplus.client] RAW PACKET: 0700011AA0DC04FFFED73DED010111000000008030CE12403303001F0001
2026-07-08 06:08:35.202 WARNING (MainThread) [pybeckerplus.client] PARSED: {'type': 'device', 'mac_id': 'a0dc04fffed73ded', 'status': b'\x12@', 'pos': 1.249713893339437, 'rssi': 206}
2026-07-08 06:08:35.202 WARNING (MainThread) [pybeckerplus.device] UPDATE STATUS a0dc04fffed73ded
2026-07-08 06:08:35.203 DEBUG (MainThread) [pybeckerplus.device] Device: a0dc04fffed73ded updated
2026-07-08 06:08:35.203 WARNING (MainThread) [custom_components.becker_centronic_plus] >>> DEVICE CALLBACK <<< MAC=a0dc04fffed73ded NAME=Nappali FR Right POS=1.2
2026-07-08 06:08:35.203 DEBUG (MainThread) [custom_components.becker_centronic_plus] Device update from a0dc04fffed73ded. Changes: {'position': (0.0, 1.2), 'moving': (False, True), 'upper_limit': (True, False), 'rssi': (203, 206)}
2026-07-08 06:08:37.556 WARNING (MainThread) [custom_components.becker_centronic_plus.cover] STOP COVER CALLED: Nappali FR Right
2026-07-08 06:08:37.556 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000000200010000000010501
2026-07-08 06:08:37.556 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000000200010000000010501
2026-07-08 06:08:37.558 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000080A0000000000000200501
2026-07-08 06:08:37.807 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000080A0000000000000200501
2026-07-08 06:08:37.876 DEBUG (MainThread) [pybeckerplus.client]  <-- USB 0700011AA0DC04FFFED73DED010111000000008030CE10406D2600200001
2026-07-08 06:08:37.877 WARNING (MainThread) [pybeckerplus.client] RAW PACKET: 0700011AA0DC04FFFED73DED010111000000008030CE10406D2600200001
2026-07-08 06:08:37.877 WARNING (MainThread) [pybeckerplus.client] PARSED: {'type': 'device', 'mac_id': 'a0dc04fffed73ded', 'status': b'\x10@', 'pos': 15.01029983978027, 'rssi': 206}
2026-07-08 06:08:37.877 WARNING (MainThread) [pybeckerplus.device] UPDATE STATUS a0dc04fffed73ded
2026-07-08 06:08:37.877 DEBUG (MainThread) [pybeckerplus.device] Device: a0dc04fffed73ded updated
2026-07-08 06:08:37.877 WARNING (MainThread) [custom_components.becker_centronic_plus] >>> DEVICE CALLBACK <<< MAC=a0dc04fffed73ded NAME=Nappali FR Right POS=15.0
2026-07-08 06:08:37.877 DEBUG (MainThread) [custom_components.becker_centronic_plus] Device update from a0dc04fffed73ded. Changes: {'position': (1.2, 15.0), 'moving': (True, False)}
2026-07-08 06:08:38.962 WARNING (MainThread) [custom_components.becker_centronic_plus.cover] OPEN COVER CALLED: Nappali FR Right
2026-07-08 06:08:38.962 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000000200020000000010501
2026-07-08 06:08:38.962 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000000200020000000010501
2026-07-08 06:08:38.964 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000080A0000000000000210501
2026-07-08 06:08:39.146 DEBUG (MainThread) [pybeckerplus.client]  <-- USB 0700011AA0DC04FFFED73DED010111000000008030001140502663000001
2026-07-08 06:08:39.146 WARNING (MainThread) [pybeckerplus.client] RAW PACKET: 0700011AA0DC04FFFED73DED010111000000008030001140502663000001
2026-07-08 06:08:39.146 WARNING (MainThread) [pybeckerplus.client] PARSED: {'type': 'device', 'mac_id': 'a0dc04fffed73ded', 'status': b'\x11@', 'pos': 14.96604867627985, 'rssi': 0}
2026-07-08 06:08:39.147 WARNING (MainThread) [pybeckerplus.device] UPDATE STATUS a0dc04fffed73ded
2026-07-08 06:08:39.147 DEBUG (MainThread) [pybeckerplus.device] Device: a0dc04fffed73ded updated
2026-07-08 06:08:39.147 WARNING (MainThread) [custom_components.becker_centronic_plus] >>> DEVICE CALLBACK <<< MAC=a0dc04fffed73ded NAME=Nappali FR Right POS=15.0
2026-07-08 06:08:39.147 DEBUG (MainThread) [custom_components.becker_centronic_plus] Device update from a0dc04fffed73ded. Changes: {'rssi': (206, 0)}
2026-07-08 06:08:39.213 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000080A0000000000000210501
2026-07-08 06:08:39.288 DEBUG (MainThread) [pybeckerplus.client]  <-- USB 0700011AA0DC04FFFED73DED010111000000008030CE1140432300210001
2026-07-08 06:08:39.288 WARNING (MainThread) [pybeckerplus.client] RAW PACKET: 0700011AA0DC04FFFED73DED010111000000008030CE1140432300210001
2026-07-08 06:08:39.288 WARNING (MainThread) [pybeckerplus.client] PARSED: {'type': 'device', 'mac_id': 'a0dc04fffed73ded', 'status': b'\x11@', 'pos': 13.77431906614786, 'rssi': 206}
2026-07-08 06:08:39.288 WARNING (MainThread) [pybeckerplus.device] UPDATE STATUS a0dc04fffed73ded
2026-07-08 06:08:39.288 DEBUG (MainThread) [pybeckerplus.device] Device: a0dc04fffed73ded updated
2026-07-08 06:08:39.289 WARNING (MainThread) [custom_components.becker_centronic_plus] >>> DEVICE CALLBACK <<< MAC=a0dc04fffed73ded NAME=Nappali FR Right POS=13.8
2026-07-08 06:08:39.290 DEBUG (MainThread) [custom_components.becker_centronic_plus] Device update from a0dc04fffed73ded. Changes: {'position': (15.0, 13.8), 'rssi': (0, 206)}
2026-07-08 06:08:42.350 WARNING (MainThread) [custom_components.becker_centronic_plus.cover] STOP COVER CALLED: Nappali FR Right
2026-07-08 06:08:42.350 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000000200010000000010501
2026-07-08 06:08:42.350 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000000200010000000010501
2026-07-08 06:08:42.352 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000080A0000000000000220501
2026-07-08 06:08:42.601 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000080A0000000000000220501
2026-07-08 06:08:42.676 DEBUG (MainThread) [pybeckerplus.client]  <-- USB 0700011AA0DC04FFFED73DED010111000000008030CE1440000000220001
2026-07-08 06:08:42.676 WARNING (MainThread) [pybeckerplus.client] RAW PACKET: 0700011AA0DC04FFFED73DED010111000000008030CE1440000000220001
2026-07-08 06:08:42.676 WARNING (MainThread) [pybeckerplus.client] PARSED: {'type': 'device', 'mac_id': 'a0dc04fffed73ded', 'status': b'\x14@', 'pos': 0.0, 'rssi': 206}
2026-07-08 06:08:42.677 WARNING (MainThread) [pybeckerplus.device] UPDATE STATUS a0dc04fffed73ded
2026-07-08 06:08:42.677 DEBUG (MainThread) [pybeckerplus.device] Device: a0dc04fffed73ded updated
2026-07-08 06:08:42.678 WARNING (MainThread) [custom_components.becker_centronic_plus] >>> DEVICE CALLBACK <<< MAC=a0dc04fffed73ded NAME=Nappali FR Right POS=0.0
2026-07-08 06:08:42.678 DEBUG (MainThread) [custom_components.becker_centronic_plus] Device update from a0dc04fffed73ded. Changes: {'position': (13.8, 0.0), 'upper_limit': (False, True)}
2026-07-08 06:08:44.229 DEBUG (MainThread) [pybeckerplus.client]  <-- USB 0700011AA0DC04FFFED73DED010111000000008030001440000064000001
2026-07-08 06:08:44.229 WARNING (MainThread) [pybeckerplus.client] RAW PACKET: 0700011AA0DC04FFFED73DED010111000000008030001440000064000001
2026-07-08 06:08:44.229 WARNING (MainThread) [pybeckerplus.client] PARSED: {'type': 'device', 'mac_id': 'a0dc04fffed73ded', 'status': b'\x14@', 'pos': 0.0, 'rssi': 0}
2026-07-08 06:08:44.229 WARNING (MainThread) [pybeckerplus.device] UPDATE STATUS a0dc04fffed73ded
2026-07-08 06:08:44.230 DEBUG (MainThread) [pybeckerplus.device] Device: a0dc04fffed73ded updated
2026-07-08 06:08:44.230 WARNING (MainThread) [custom_components.becker_centronic_plus] >>> DEVICE CALLBACK <<< MAC=a0dc04fffed73ded NAME=Nappali FR Right POS=0.0
2026-07-08 06:08:44.230 DEBUG (MainThread) [custom_components.becker_centronic_plus] Device update from a0dc04fffed73ded. Changes: {'rssi': (206, 0)}
2026-07-08 06:08:46.105 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000080A0000000000000230501
2026-07-08 06:08:46.105 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000080A0000000000000230501
2026-07-08 06:08:46.174 DEBUG (MainThread) [pybeckerplus.client]  <-- USB 0700011AA0DC04FFFED73DED010111000000008030CE1440000000230001
2026-07-08 06:08:46.174 WARNING (MainThread) [pybeckerplus.client] RAW PACKET: 0700011AA0DC04FFFED73DED010111000000008030CE1440000000230001
2026-07-08 06:08:46.174 WARNING (MainThread) [pybeckerplus.client] PARSED: {'type': 'device', 'mac_id': 'a0dc04fffed73ded', 'status': b'\x14@', 'pos': 0.0, 'rssi': 206}
2026-07-08 06:08:46.174 WARNING (MainThread) [pybeckerplus.device] UPDATE STATUS a0dc04fffed73ded
2026-07-08 06:08:46.174 DEBUG (MainThread) [pybeckerplus.device] Device: a0dc04fffed73ded updated
2026-07-08 06:08:46.175 WARNING (MainThread) [custom_components.becker_centronic_plus] >>> DEVICE CALLBACK <<< MAC=a0dc04fffed73ded NAME=Nappali FR Right POS=0.0
2026-07-08 06:08:46.175 DEBUG (MainThread) [custom_components.becker_centronic_plus] Device update from a0dc04fffed73ded. Changes: {'rssi': (0, 206)}

Preset press Debug log:

2026-07-08 06:10:32.571 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000000200024000000010501
2026-07-08 06:10:32.571 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000000200024000000010501
2026-07-08 06:10:32.575 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000080A0000000000000240501
2026-07-08 06:10:32.823 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000080A0000000000000240501
2026-07-08 06:10:32.898 DEBUG (MainThread) [pybeckerplus.client]  <-- USB 0700011AA0DC04FFFED73DED010111000000008030CE1240630300240001
2026-07-08 06:10:32.899 WARNING (MainThread) [pybeckerplus.client] RAW PACKET: 0700011AA0DC04FFFED73DED010111000000008030CE1240630300240001
2026-07-08 06:10:32.899 WARNING (MainThread) [pybeckerplus.client] PARSED: {'type': 'device', 'mac_id': 'a0dc04fffed73ded', 'status': b'\x12@', 'pos': 1.3229571984435797, 'rssi': 206}
2026-07-08 06:10:32.899 WARNING (MainThread) [pybeckerplus.device] UPDATE STATUS a0dc04fffed73ded
2026-07-08 06:10:32.899 DEBUG (MainThread) [pybeckerplus.device] Device: a0dc04fffed73ded updated
2026-07-08 06:10:32.899 WARNING (MainThread) [custom_components.becker_centronic_plus] >>> DEVICE CALLBACK <<< MAC=a0dc04fffed73ded NAME=Nappali FR Right POS=1.3
2026-07-08 06:10:32.899 DEBUG (MainThread) [custom_components.becker_centronic_plus] Device update from a0dc04fffed73ded. Changes: {'position': (0.0, 1.3), 'moving': (False, True), 'upper_limit': (True, False)}
2026-07-08 06:10:36.326 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000080A0000000000000250501
2026-07-08 06:10:36.326 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000080A0000000000000250501
2026-07-08 06:10:36.396 DEBUG (MainThread) [pybeckerplus.client]  <-- USB 0700011AA0DC04FFFED73DED010111000000008030CF12408B3500250001
2026-07-08 06:10:36.396 WARNING (MainThread) [pybeckerplus.client] RAW PACKET: 0700011AA0DC04FFFED73DED010111000000008030CF12408B3500250001
2026-07-08 06:10:36.396 WARNING (MainThread) [pybeckerplus.client] PARSED: {'type': 'device', 'mac_id': 'a0dc04fffed73ded', 'status': b'\x12@', 'pos': 20.915541313801786, 'rssi': 207}
2026-07-08 06:10:36.397 WARNING (MainThread) [pybeckerplus.device] UPDATE STATUS a0dc04fffed73ded
2026-07-08 06:10:36.397 DEBUG (MainThread) [pybeckerplus.device] Device: a0dc04fffed73ded updated
2026-07-08 06:10:36.397 WARNING (MainThread) [custom_components.becker_centronic_plus] >>> DEVICE CALLBACK <<< MAC=a0dc04fffed73ded NAME=Nappali FR Right POS=20.9
2026-07-08 06:10:36.397 DEBUG (MainThread) [custom_components.becker_centronic_plus] Device update from a0dc04fffed73ded. Changes: {'position': (1.3, 20.9), 'rssi': (206, 207)}
2026-07-08 06:10:40.879 WARNING (MainThread) [pybeckerplus.client] SEND: 0701011Aa0dc04fffed73ded0101340000000080A0000000000000260501
2026-07-08 06:10:40.879 DEBUG (MainThread) [pybeckerplus.client]  --> USB 0701011Aa0dc04fffed73ded0101340000000080A0000000000000260501
2026-07-08 06:10:40.953 DEBUG (MainThread) [pybeckerplus.client]  <-- USB 0700011AA0DC04FFFED73DED010111000000008030CD10402C7300260001
2026-07-08 06:10:40.953 WARNING (MainThread) [pybeckerplus.client] RAW PACKET: 0700011AA0DC04FFFED73DED010111000000008030CD10402C7300260001
2026-07-08 06:10:40.953 WARNING (MainThread) [pybeckerplus.client] PARSED: {'type': 'device', 'mac_id': 'a0dc04fffed73ded', 'status': b'\x10@', 'pos': 44.98970016021973, 'rssi': 205}
2026-07-08 06:10:40.953 WARNING (MainThread) [pybeckerplus.device] UPDATE STATUS a0dc04fffed73ded
2026-07-08 06:10:40.953 DEBUG (MainThread) [pybeckerplus.device] Device: a0dc04fffed73ded updated
2026-07-08 06:10:40.953 WARNING (MainThread) [custom_components.becker_centronic_plus] >>> DEVICE CALLBACK <<< MAC=a0dc04fffed73ded NAME=Nappali FR Right POS=45.0
2026-07-08 06:10:40.953 DEBUG (MainThread) [custom_components.becker_centronic_plus] Device update from a0dc04fffed73ded. Changes: {'position': (20.9, 45.0), 'moving': (True, False), 'rssi': (207, 205)}
2026-07-08 06:10:43.154 DEBUG (MainThread) [pybeckerplus.client]  <-- USB 0700011AA0DC04FFFED73DED0101110000000080300010402C7365000001
2026-07-08 06:10:43.154 WARNING (MainThread) [pybeckerplus.client] RAW PACKET: 0700011AA0DC04FFFED73DED0101110000000080300010402C7365000001
2026-07-08 06:10:43.154 WARNING (MainThread) [pybeckerplus.client] PARSED: {'type': 'device', 'mac_id': 'a0dc04fffed73ded', 'status': b'\x10@', 'pos': 44.98970016021973, 'rssi': 0}
2026-07-08 06:10:43.154 WARNING (MainThread) [pybeckerplus.device] UPDATE STATUS a0dc04fffed73ded
2026-07-08 06:10:43.155 DEBUG (MainThread) [pybeckerplus.device] Device: a0dc04fffed73ded updated
2026-07-08 06:10:43.155 WARNING (MainThread) [custom_components.becker_centronic_plus] >>> DEVICE CALLBACK <<< MAC=a0dc04fffed73ded NAME=Nappali FR Right POS=45.0
2026-07-08 06:10:43.155 DEBUG (MainThread) [custom_components.becker_centronic_plus] Device update from a0dc04fffed73ded. Changes: {'rssi': (205, 0)}