From 8b13ddc3e748b2e54be66b10379eb2d69a4e37c3 Mon Sep 17 00:00:00 2001 From: Mat931 <49403702+Mat931@users.noreply.github.com> Date: Tue, 9 Apr 2024 01:43:56 +0000 Subject: [PATCH] Add ABB-Welcome / Busch-Welcome Door Intercom Protocol (#2844) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: H. Árkosi Róbert --- components/remote_receiver.rst | 19 ++++++++++++ components/remote_transmitter.rst | 50 +++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/components/remote_receiver.rst b/components/remote_receiver.rst index 35064c9e9..a105777eb 100644 --- a/components/remote_receiver.rst +++ b/components/remote_receiver.rst @@ -30,6 +30,7 @@ Configuration variables: - **dump** (*Optional*, list): Decode and dump these remote codes in the logs (at log.level=DEBUG). Set to ``all`` to dump all available codecs: + - **abbwelcome**: Decode and dump ABB-Welcome codes. Messages are sent via copper wires. See :ref:`remote_transmitter-transmit_abbwelcome` - **aeha**: Decode and dump AEHA infrared codes. - **byronsx**: Decode and dump Byron SX doorbell RF codes. - **canalsat**: Decode and dump CanalSat infrared codes. @@ -79,6 +80,9 @@ Configuration variables: Automations: ------------ +- **on_abbwelcome** (*Optional*, :ref:`Automation `): An automation to perform when a + ABB-Welcome code has been decoded. A variable ``x`` of type :apiclass:`remote_base::ABBWelcomeData` + is passed to the automation for use in lambdas. - **on_aeha** (*Optional*, :ref:`Automation `): An automation to perform when a AEHA remote code has been decoded. A variable ``x`` of type :apiclass:`remote_base::AEHAData` is passed to the automation for use in lambdas. @@ -207,6 +211,21 @@ Configuration variables: Remote code selection (exactly one of these has to be included): +- **abbwelcome**: Trigger on a decoded ABB-Welcome code with the given data. + + - **source_address** (**Required**, int): The source address to trigger on, see :ref:`remote_transmitter-transmit_abbwelcome` + for more info. + - **destination_address** (**Required**, int): The destination address to trigger on, see + :ref:`remote_transmitter-transmit_abbwelcome` for more info. + - **three_byte_address** (**Optional**, boolean): The length of the source and destination address. ``false`` means two bytes + and ``true`` means three bytes. Defaults to ``false``. + - **retransmission** (**Optional**, boolean): ``true`` if the message was re-transmitted. Defaults to ``false``. + - **message_type** (**Required**, int): The message type to trigger on, see :ref:`remote_transmitter-transmit_abbwelcome` + for more info. + - **message_id** (**Optional**, int): The random message ID to trigger on, see dumper output for more info. Defaults to any ID. + - **data** (**Optional**, 0-7 bytes list): The code to listen for. Usually you only need to copy this directly from the + dumper output. Defaults to ``[]`` + - **aeha**: Trigger on a decoded AEHA remote code with the given data. - **address** (**Required**, int): The address to trigger on, see dumper output for more info. diff --git a/components/remote_transmitter.rst b/components/remote_transmitter.rst index 53666ab9b..6293ac0cf 100644 --- a/components/remote_transmitter.rst +++ b/components/remote_transmitter.rst @@ -78,6 +78,56 @@ Configuration variables: If you're looking for the same functionality as is default in the ``rpi_rf`` integration in Home Assistant, you'll want to set the **times** to 10 and the **wait_time** to 0s. +.. _remote_transmitter-transmit_abbwelcome: + +``remote_transmitter.transmit_abbwelcome`` Action +************************************************* + +This :ref:`action ` sends a ABB-Welcome message to the intercom bus. The +message type, addresses, address length and data can vary a lot between ABB-Welcome +systems. Please refer to the received messages while performing actions like ringing a +doorbell or opening a door. + +.. code-block:: yaml + + on_...: + - remote_transmitter.transmit_abbwelcome: + source_address: 0x1001 # your indoor station address + destination_address: 0x4001 # door address + three_byte_address: false # address length of your system + message_type: 0x0d # unlock door, on some systems 0x0e is used instead + data: [0xab, 0xcd, 0xef] # message data, see receiver dump + +Configuration variables: + +- **source_address** (**Required**, int):The source address to send the command from, + see received messages for more info. For indoor stations the last byte of the address + represents the apartment number set by the dials on the back of the indoor station and is + transmitted in hexadecimal format. +- **destination_address** (**Required**, int): The destination address to send the command to, + see received messages for more info. +- **three_byte_address** (**Required**, int): The destination address to send the command to, + see received messages for more info. +- **three_byte_address** (**Optional**, boolean): The length of the source and destination address. ``false`` + means two bytes and ``true`` means three bytes. Please check the received messages to see which address length + is used by your system. For example, ``[XXXX > XXXX]`` appears in the receiver log for two byte addresses and + ``[XXXXXX > XXXXXX]`` for three byte addresses. Defaults to ``false``. +- **retransmission** (**Optional**, boolean): Should only be ``true`` if this message has been transmitted + before with the same ``message_id``. Typically, messages are transmitted up to three times with a 1 second + interval if no reply is received. Defaults to ``false``. +- **message_type** (**Required**, int): The message type, see dumper output for more info. + The highest bit indicates a reply. +- **message_id** (**Optional**, int): The message ID, see dumper output for more info. + Defaults to a randomly generated ID if this message is not a reply or retransmission. +- **data** (**Optional**, 0-7 bytes list): The code to send. + Usually you only need to copy this directly from the dumper output. Defaults to ``[]`` + +.. note:: + + ABB-Welcome messages are sent over the two-wire bus of your intercom system. + A custom receiver and transmitter circuit is required. + `More info `__ + .. _remote_transmitter-transmit_aeha: ``remote_transmitter.transmit_aeha`` Action