Customization
Explore various examples to customize and extend the Doorman firmware. From adding custom sensors to tweaking automation settings, these examples help you tailor the device to your specific needs. Follow the guides to unlock full flexibility and make the most of your setup.
Create a simple TC Telegram Binary Sensor
You can easily add custom binary sensors for any TC Telegram, in addition to the preconfigured ones. This allows you to listen for and respond to any other bus telegram, expanding the functionality of your system.
# Doorman S3 Firmware
substitutions:
name: "doorman-s3"
friendly_name: "Doorman S3"
# Import Doorman Stock Firmware Config
packages:
AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3.ha.stock.dev.yaml@dev
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
binary_sensor:
- platform: tc_bus
name: "Custom Telegram"
type: open_door
address: 0
web_server:
sorting_group_id: sorting_group_listeners# Doorman S3 Firmware
substitutions:
name: "doorman-s3"
friendly_name: "Doorman S3"
# Import Doorman Stock Firmware Config
packages:
AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3.ha.stock.dev.yaml@dev
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
binary_sensor:
- platform: tc_bus
name: "Custom Telegram"
telegram: 0x00001100
web_server:
sorting_group_id: sorting_group_listenersControl the internal RGB Status LED
To control the onboard RGB LED with a button (for example), just reference the light entity with the internal id: doorman_rgb_status_led.
# Doorman S3 Firmware
substitutions:
name: "doorman-s3"
friendly_name: "Doorman S3"
# Import Doorman Stock Firmware Config
packages:
AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3.ha.stock.dev.yaml@dev
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
button:
- platform: template
name: "Turn on Status RGB LED to red"
on_press:
- light.turn_on:
id: doorman_rgb_status_led
red: 100%
green: 0%
blue: 0%Use the External Hardware Button
If you want to use the external button to trigger automations, extend the on_press block and add your own actions.
# Doorman S3 Firmware
substitutions:
name: "doorman-s3"
friendly_name: "Doorman S3"
# Import Doorman Stock Firmware Config
packages:
AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3.ha.stock.dev.yaml@dev
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
binary_sensor:
- id: !extend doorman_external_button
on_press:
- logger.log: "External button pressed!"Use I²C Sensors
If you want to add sensors via the I²C bus, you can use the two available GPIO pins and add the I²C component to your configuration. You can then attach your sensors to these two I²C GPIO pins.
# Doorman S3 Firmware
substitutions:
name: "doorman-s3"
friendly_name: "Doorman S3"
# Import Doorman Stock Firmware Config
packages:
AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3.ha.stock.dev.yaml@dev
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
i2c:
sda: GPIO40
scl: GPIO48
scan: true
id: i2c_busCreate Your Own Doorbell Pattern
If you want to create a custom doorbell pattern, you can easily extend the existing doorbell entities. For more information about patterns, refer to the ESPHome Docs.
# Doorman S3 Firmware
substitutions:
name: "doorman-s3"
friendly_name: "Doorman S3"
# Import Doorman Stock Firmware Config
packages:
AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3.ha.stock.dev.yaml@dev
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Extend the doorbell_pattern event entity
# Add a new special event type
event:
- id: !extend apartment_doorbell_pattern
event_types:
- "special"
# Extend the Ring-To-Open Pattern Conditions
# You need to extend each Door Pattern Condition where you want to use the pattern
select:
- id: !extend rto_apartment_door_pattern_condition
options:
- "special"
# Extend the apartment_doorbell / entrance_doorbell entity
# and add your new special pattern
binary_sensor:
- id: !extend apartment_doorbell
on_multi_click:
# Special Pattern
- timing:
# Press twice quickly with at most half a second in between.
- ON for at most 0.3s
- OFF for at most 0.5s
- ON for at most 0.3s
- OFF for 1s to 1.5s
# Press once slowly with at most 1.5 seconds in between.
- ON for at most 0.3s
- OFF for 1s to 1.5s
# Press once
- ON for at most 0.3s
- OFF for at least 2s
then:
- logger.log: "Special pattern detected!"
- event.trigger:
id: apartment_doorbell_pattern
# Use the previously defined new event type here
event_type: specialLight On When Entrance Doorbell Rings
You can easily set up an automation to turn on the light whenever someone rings the entrance doorbell. This can be useful for enhancing visibility or simply making it easier to see who is at the door. Simply configure the automation to trigger the light based on the doorbell event.
# Doorman S3 Firmware
substitutions:
name: "doorman-s3"
friendly_name: "Doorman S3"
# Import Doorman Stock Firmware Config
packages:
AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3.ha.stock.dev.yaml@dev
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
binary_sensor:
- id: !extend entrance_doorbell
on_press:
- tc_bus.send:
type: "light"# Doorman S3 Firmware
substitutions:
name: "doorman-s3"
friendly_name: "Doorman S3"
# Import Doorman Stock Firmware Config
packages:
AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3.ha.stock.dev.yaml@dev
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Import the Home Assistant sun elevation sensor
sensor:
- platform: homeassistant
id: sun_elevation
entity_id: sun.sun
attribute: elevation
# Extend the entrance doorbell sensor
binary_sensor:
- id: !extend entrance_doorbell
on_press:
# Sun elevation is <= 0 (dark)
- if:
condition:
sensor.in_range:
id: sun_elevation
below: 1
then:
# Turn on the light
- tc_bus.send:
type: "light"Mix and Match
Want to customize the firmware and use only the features you need? Good news!
The Doorman firmware is modular, organized into packages that you can easily mix and match.
Don't need a feature, like the indoor station settings? Simply comment it out in your configuration. The order of the packages is important because some depend on others.
Check out the example YAML configuration below for guidance:
Example configuration
# Doorman S3 DIY Firmware
# You can change a few options here.
substitutions:
name: "doorman-s3"
friendly_name: "Doorman S3"
log_level: "INFO"
# Required for "External Components"
branch: "dev"
packages:
# Device type
# Either esp32, esp32-s3 or esp32-s3-quad
host: github://azoninc/doorman/firmware/hosts/esp32-s3.yaml@dev
# host: github://azoninc/doorman/firmware/hosts/esp32-s3-quad.yaml@dev
# host: github://azoninc/doorman/firmware/hosts/esp32.yaml@dev
# External Components (REQUIRED)
external_components: github://azoninc/doorman/firmware/components/external-components.yaml@dev
# RGB Status LED (REQUIRED)
rgb_status_led: github://azoninc/doorman/firmware/components/rgb-status-led.yaml@dev
rgb_status_led_effects: github://azoninc/doorman/firmware/components/rgb-status-led.effects.yaml@dev
# Base Doorman Firmware (REQUIRED)
base: github://azoninc/doorman/firmware/base.yaml@dev
# Improv BLE
# Incompatible with Nuki Bridge
bluedroid_ble: github://azoninc/doorman/firmware/components/bluedroid-ble.yaml@dev
# OTA via Webserver & Device Builder
ota_update: github://azoninc/doorman/firmware/components/ota-update.esphome.yaml@dev
# Smart Home Integration
# Either homeassistant, mqtt, homekit or custom
# Use custom, if you just want to use it via wifi (http requests)
api: github://azoninc/doorman/firmware/components/api.homeassistant.yaml@dev
# api: github://azoninc/doorman/firmware/components/api.mqtt.yaml@dev
# api: github://azoninc/doorman/firmware/components/api.homekit.yaml@dev
# api: github://azoninc/doorman/firmware/components/api.custom.yaml@dev
# TC:BUS debug tools
debug_utilities: github://azoninc/doorman/firmware/components/debug-utilities.yaml@dev
# ESPHome debug sensors
debug_component: github://azoninc/doorman/firmware/components/debug-component.yaml@dev
debug_component_psram: github://azoninc/doorman/firmware/components/debug-component.psram.yaml@dev
# Pattern events
pattern_events: github://azoninc/doorman/firmware/components/pattern-events.yaml@dev
# Ring To Open automation
ring_to_open: github://azoninc/doorman/firmware/components/ring-to-open.yaml@dev
# TC:BUS Device Settings (Indoor Station)
# Ringtones, Volume
indoor_station_settings: github://azoninc/doorman/firmware/components/indoor-station-settings.yaml@dev
# Nuki Bridge
# Incompatible with Improv BLE (bluedroid-ble)
# addon_nuki_bridge: !include github://azoninc/doorman/firmware/components/nuki-bridge.yaml@dev
# Interactive Setup Mode
interactive_setup: github://azoninc/doorman/firmware/components/interactive-setup.yaml@dev
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password