devices.esphome.io
Doorbell Interface for ABB-Welcome
Doorbell Interface for ABB-Welcome
Device Type: miscElectrical Standard: globalBoard: esp32Difficulty: Plug-n-flash, 2/5
      
  
        
Description
This device allows you to integrate your ABB-Welcome or Busch-Welcome 2-wire doorbell intercom system into Home Assistant. Features include doorbell notifications and remotely opening your door. You can find more info about how to order, flash and customize the device on the project page.
GPIO Pinout
| Pin | Function | 
|---|---|
| GPIO2 | Wifi LED | 
| GPIO25 | Bus RX | 
| GPIO26 | Bus TX | 
Basic Configuration
esp32:  board: esp32dev  framework:    type: esp-idf    sdkconfig_options:      CONFIG_FREERTOS_UNICORE: y # Only required if you have a single core ESP32
esphome:  name: abb-welcome-demo  friendly_name: "ABB Welcome Demo"  on_boot:    - lock.template.publish:        id: front_door        state: LOCKED    - binary_sensor.template.publish:        id: doorbell_indoor        state: OFF    - binary_sensor.template.publish:        id: doorbell_outdoor        state: OFF
wifi:  networks:  - ssid: !secret wifi_ssid    password: !secret wifi_password
logger:
api:  encryption:    key: !secret api_encryption_key
ota:  password: !secret ota_password
remote_transmitter:  pin: GPIO26  carrier_duty_percent: 100%
remote_receiver:  pin:    number: GPIO25    mode:      input: True  dump: [abbwelcome]  filter: 8us  tolerance:    type: time    value: 26us  idle: 1500us  buffer_size: 15kB  memory_blocks: 5  clock_divider: 160  on_abbwelcome:    then:      - lambda: 'id(doorbell_intercom).publish_state(x.to_string().c_str());'      - if:          condition:            and:              - lambda: 'return (x.get_message_type() == 0x8d);' # unlock door response              - lambda: 'return (x.get_source_address() == 0x4001);' # door address          then:            - lock.template.publish:                id: front_door                state: UNLOCKING            - delay: 3s # time how long the door usually stays unlocked            - lock.template.publish:                id: front_door                state: LOCKED      - if:          condition:            and:              - lambda: 'return (x.get_message_type() == 0x11);' # doorbell indoor              - lambda: 'return (x.get_source_address() == 0x1001);' # your indoor station address          then:            - binary_sensor.template.publish:                id: doorbell_indoor                state: ON            - binary_sensor.template.publish:                id: doorbell_indoor                state: OFF      - if:          condition:            and:              - lambda: 'return (x.get_message_type() == 0x01);' # doorbell outdoor              - lambda: 'return (x.get_source_address() == 0x2001);' # outdoor station address              - lambda: 'return (x.get_destination_address() == 0x1001);' # your indoor station address          then:            - binary_sensor.template.publish:                id: doorbell_outdoor                state: ON            - binary_sensor.template.publish:                id: doorbell_outdoor                state: OFF
binary_sensor:  - platform: template    name: Doorbell indoor    id: doorbell_indoor    icon: mdi:bell    filters:      - delayed_off: 1s  - platform: template    name: Doorbell outdoor    id: doorbell_outdoor    icon: mdi:bell    filters:      - delayed_off: 1s
sensor:  - platform: internal_temperature    name: "Internal Temperature"
text_sensor:  - platform: template    name: "Doorbell Intercom" # Receive debug messages    id: doorbell_intercom    icon: mdi:bell-circle    update_interval: never
lock:  - platform: template    name: "Front Door"    id: front_door    on_unlock:      - then:          - lock.template.publish:              id: front_door              state: LOCKED    lock_action:      - then:          - lock.template.publish:              id: front_door              state: LOCKED    unlock_action:      - then:          - 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              data: [0xab, 0xcd, 0xef]  # door opener secret code, see receiver dump
button:  - platform: restart    name: "Reboot"  - platform: safe_mode    name: "Reboot (Safe Mode)"  - platform: template    name: "Stop Doorbell"    on_press:      - remote_transmitter.transmit_abbwelcome:          source_address: 0x1001 # your indoor station address          destination_address: 0x2001 # outdoor station address          three_byte_address: false # address length of your system          message_type: 0x02 # end call (stops your doorbell ringtone)          data: [0x00]
status_led:  pin: GPIO2