Integrating Becker Motors in to Hassio

@arythm

The pairing process stores the unit and channel number of your remote or USB stick within your shutter.
Therefore if you change your unit or channel in your HA configuration, you need to do the following steps:

  1. Remove your old configuration from your shutter (see manual of your master remote: remove all remotes except master).
  2. Pair the USB stick with the new unit and channel settings

@arythm

Looks like there is an format error in your configuration. Therefore the third cover might not show up.

If you still need help, please post your Becker configuration and any errors in the long related to the Becker integration.

Centronic Plus motors should work. You just cannot make usage of the plus features. But I haven’t tried so far.

Has anyone successfully integrated Centronic Plus motors with the Becker integration in HA?

Hmmm. I can’t get this to work.

I’ve got two skylights with Becker motors. Each has its own single channel EC411-III remote.

Here’s what I’ve done so far.

  • Inserted the Becker centronics stick into my server (using an 1m extension cord; distance to both windows is ~6m) and passed it to the VM that is running Home Assistant OS and rebooted. The device shows up inside of the VM.
  • Added the repository (v0.3.3) in HACS as a custom repository and restarted HA.
  • Enabled debug logging for the custom component and added the following configuration to configuration.yaml
cover:
  - platform: becker
    device: "/dev/serial/by-id/usb-Becker-Antriebe_GmbH_CDC_RS232_v125_Centronic-if00"
    filename: "becker-centronic.db"
    covers:
      east_skylight:
        friendly_name: "East Skylight"
        channel: "1:1"
      stairs_skylight:
        friendly_name: "Stairs Skylight"
        channel: "1:2"
  • I fully rebooted Home Assistant OS. Log entries after reboot:
2023-07-17 15:54:29.454 DEBUG (MainThread) [custom_components.becker.cover] device: /dev/serial/by-id/usb-Becker-Antriebe_GmbH_CDC_RS232_v125_Centronic-if00; filename: becker-centronic.db
2023-07-17 15:54:29.455 WARNING (MainThread) [custom_components.becker.rf_device] Filename becker-centronic.db does not exist. Create a new file.
2023-07-17 15:54:29.455 DEBUG (MainThread) [custom_components.becker.rf_device] Use filename: /config/becker-centronic.db
2023-07-17 15:54:29.455 DEBUG (MainThread) [custom_components.becker.pybecker.becker_helper] Try to open connection.
2023-07-17 15:54:29.458 INFO (MainThread) [custom_components.becker.pybecker.database] Create database...
2023-07-17 15:54:29.497 DEBUG (Thread-3) [custom_components.becker.pybecker.becker_helper] BeckerCommunicator thread started.
2023-07-17 15:54:29.498 WARNING (MainThread) [custom_components.becker.pybecker.becker] Unit 1 of East Skylight with channel 1:1 not registered in database file /config/becker-centronic.db!

Note that the becker-centronic.db file has not been created, even though it says so.

  • I press the programming button on the master remote of the “East Skylight” window until the motor ‘clacks’.
  • I call the pairing service like this:
service: becker.pair
data:
  channel: 1
  unit: 1

There are no further ‘clacks’, no matter how often I call the service. Only the following log messages appear every time I call the service:

2023-07-17 16:01:09.810 DEBUG (Thread-3) [custom_components.becker.pybecker.becker_helper] Sent packet: unit_id: 1737B, channel: 1, command: TRAIN, argument: 1, packet: b'\x020000000002010B001B0000001737B0210101008138\x03'
2023-07-17 16:01:09.912 DEBUG (Thread-3) [custom_components.becker.pybecker.becker_helper] Sent packet: unit_id: 1737B, channel: 1, command: RELEASE, argument: 0, packet: b'\x020000000002010B001C0000001737B02101010000B8\x03'

What am I missing here?

The becker-centronic.db not created is curious. This could be a reason for your problems. Is it working when you remove the filename option? The default filename is fine as well. It should only complain once, that the database is not there. After another reboot this issue should be gone.
Do you see any debug messages when you press the key of any of your master remotes? This should be the case, as the Becker integration recieives commands from the USB stick.
Did you buy the right USB stick? The Centronic USB Stick with the Becker order number 4035 200 041 0 is the right one.
There was also a non functional USB stick in the past. Consider to send it back as non functional.

Thank you for the reply, RainerS!

No, removing the filename option doesn’t generate the DB with the default name either. That’s the reason why I picked a custom name in the first place.

No, I don’t see any log messages when I control the blinds with my EC411-III remotes.

My USB stick has the order number 4035 000 041 0. The seller (an official Becker distributor) advertised it as “V2” and in fact, mentions the order number 4035 200 041 0 in their shop.

Later today I also used centronic-py, the python module this HA component is based upon on a different PC with the USB stick attached and tried to train it without Home Assistant, VMs and whatever in the way, following the instructions on the github. But after executing ./centronic-stick.py --send TRAIN --channel 1 nothing ever happens, like there’s no communication at all between the stick and the remote / motor.

So, if I get you right, my USB stick with the 000 instead of 200 in the order number is simply incompatible?

Hi what was not clear for me, thats was the following:
I have 4 remotes each for one of my 4 skylights.
So my configuration lookes like this: 1:1 2:1 3:1 4:1
I pared the covers already with the original Becker Central Control CC41 Unit. So first I thought the config should already on the USB device and there is no need to pair it.

I had to pait it again in the developer mode → Service

service: becker.pair
data:
  channel: 1
  unit: 4

This is my configuration.yaml

[core-ssh config]$ cat configuration.yaml
# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

alexa:
  smart_home:

cover:
  - platform: becker
    device: "/dev/serial/by-id/usb-Becker-Antriebe_GmbH_CDC_RS232_v125_Centronic-if00"
    covers:
      dachgeschoss1:
        friendly_name: "cc-de-sl-1"
        channel: "1:1"
      dachgeschoss2:
        friendly_name: "cc-de-sl-2"
        channel: "2:1"
      dachgeschoss3:
        friendly_name: "cc-de-sl-3"
        channel: "3:1"
      dachgeschoss4:
        friendly_name: "cc-de-sl-4"
        channel: "4:1"

logger:
  default: info
  logs:
    # This must correspond to the folder name of your /config/custom_components/becker folder
    custom_components.becker: debug

My YAML Code:

cover:
  - platform: becker
    device: "/dev/ttyACM1"
    filename: "my-centronic-stick.db"
    covers:
      kitchen:
        friendly_name: "RollladenKĂźche"
        channel: "2:1"
        intermediate_position: off
        travelling_time_up: 22.75
        travelling_time_down: 19.45
        remote_id: "7A1A2:1"
      dining_room:
        friendly_name: "RollladenEZ1"
        channel: "2:2"
        intermediate_position: off
        travelling_time_up: 29.5
        travelling_time_down: 25.25
        remote_id: "7A1A2:2"
      dining_room2:
        friendly_name: "RolladenEZ2"
        channel: "2:3"
        intermediate_position: off
        travelling_time_up: 33.6
        travelling_time_down: 23.75
        remote_id: "7A1A2:3"
      living_room:
        friendly_name: "RollladenWZ"
        channel: "2:4"
        intermediate_position: off
        travelling_time_up: 30
        travelling_time_down: 26.5        
      bedroom:
        friendly_name: "RollladenSZ"
        channel: "1:3"
        intermediate_position: off
        travelling_time_up: 18.65
        travelling_time_down: 18
        remote_id: "7A1A3:1"
      bathroom:
        friendly_name: "RollladenBad"
        channel: "1:4"
        intermediate_position: off
        travelling_time_up: 30
        travelling_time_down: 26.5
        remote_id: "7A1A3:2"
      storage_room:
        friendly_name: "RollladenHWR"
        channel: "1:5"
        intermediate_position: off
        travelling_time_up: 18.65
        travelling_time_down: 17.8  
        remote_id: "7A1A3:3"

I fixed an error with a duplicate ID.

In my log I do not get any errors after fixing the duplicate ID one.
The error in my-centronic.db still persists though:

‘utf-8’ codec can’t decode byte 0xea in position 99: invalid continuation byte

I have not deleted all other remotes except for my master remote. I will do that tomorrow and will report back if there are any differences.

I really appreciate you replying and helping out in here!

Good news: I got it working now!

First of all, my USB Stick is a 200 model. It’s only the sticker on the package that says 000 and I didn’t look if there is a number printed on the stick at that time.

Secondly, the issue I had with the centronic-py script was my own fault. I opened a listening session in one terminal while trying to train it in another one and didn’t consider that the first one would be blocking the other.

With that issue out of the way, I could train the USB stick with both motors using that python script. I could then insert the stick back into my server, reboot Home Assistant and there you go: the DB file has been created, I can read commands coming from my remotes and can control the skylights via Home Assistant.

Awesome!

I deleted all other remotes from the shutters according to the manual and was able to re-pair my stick. I got audible signals from the shutter.

Master Remote - programm button - becker.pair command - done.

I get no errors in my log file but I can see the stick sending out commands to the shutters:

(Thread-2) [custom_components.becker.pybecker.becker_helper] Sent packet: unit_id: 1737B, channel: 5, command: UP, argument: 0, packet: b'\x020000000002010B00610000001737B021010500204F\x03'

But, as last time, the shutter doesn’t move :frowning:

The my-centronic-stick.db still shows the same error:

‘utf-8’ codec can’t decode byte 0x82 in position 27: invalid start byte

edit: I just noticed it is not position 99 anymore as it was the last time. in the meantime I’ll see if I can find something there.

Do you have any other ideas? I have no clue where to look.

The stick has a 0,5m cord but I don’t think there can be problems there because as the pair command goes through immediately without a problem.

Could you please open an issue in my GitHub repository. Please add the entire log around the decode error.
The Becker Centronic protocol relies on increasing count in each packet (except for pairing). If this is not the case because of problems with database it will not work.

1 Like

I posed on your github but I am not sure the post can be seen. When I check the page from my phone, I do not see my post. Can you see it?

On my PC I have 4 issues, on my phone there are only 3 where mine doesn’t show up.

Hmm, l don’t see it as well.

Hi all,
writing this from Melbourne, Australia. I hope there are other local iusers here…

I just got 2 awnings with Becker motors and a remote.

I contacted the Australian importer/distributor about the USB stick; I asked for the one recommended by @RainerS in the GitHub page.

I was told that down here (in AU) Becker use a slightly different frequency and so instead of xxxx xxx 041 x we get xxxx xxx 051 x. That sounded ok to me - I understand that different regions have different frequency spectrums available.

Then I was told that the exact model/order number is 4034 000 051 0

Does anyone here know if that’s correct?

@RainerS - would you be OK if I go ahead and get this stick and, if not working as expected, would you be able to help get it going?

Really want need this integration…

Lots of coffees coming up :slight_smile:

The Australian stick should work as well. See this issue on GitHub. You just need to change the default device path in your configuration.

Thank you @RainerS for the very fast response. I am really looking forward to this integration.

What price were you quoted for the item ?? When I asked the mob in Canberra a couple of years ago they wanted nearly $300 so decided I didn’t really need it.

Hey @gaz99
It came to $180 with gst and postage. Got it in 3 days, great service from becker Australia.

The setup was a breeze. I added the device details to configuration.yaml and worked first time.

@RainerS - many may thanks for your great work. A great integration indeed!

Hi everyone,

I installed Home Assistant thought Virtual Machine Manager on my synology NAS.
Will the Becker Centronic USB Stick be recognized or do you suggest to migrate to a RPI4?

Hi Nico,
This should work. Others managed this as well. You need to pass the USB port used for your Becker stick into your VM. Maybe the device path is different and needs to be adjusted in your configuration.
Using a Rpi4 for Home Assistent is not the best way from my point of view.