Skip to content

Stock Firmware ESP-IDF Framework

Dies ist die bevorzugte Firmware, da sie direkt mit dem Doorman S3 funktioniert und Improv über Bluetooth LE unterstützt.

Firmware installieren oder aktualisieren

Es gibt verschiedene Möglichkeiten, die Firmware zu aktualisieren.

WARNUNG

Manche Updates können Breaking Changes mit sich bringen — lies dir die Changelogs immer genau durch, damit dein System auch in wichtigen Situationen zuverlässig funktioniert.

Web Serial Neueste Release-Version, keine Anpassungen

Verbinde deinen Doorman-S3 per USB-C und klicke auf den Button unten, um die neueste Firmware direkt über Web Serial zu installieren oder zu aktualisieren. So kannst du das Gerät nahtlos mit der Home Assistant API nutzen und zukünftig einfach Community-Updates einspielen.

HTTP OTA-Updates Neueste Release-Version, keine Anpassungen

Wenn du Doorman in Home Assistant hinzugefügt hast, kannst du von automatisierten Firmware-Builds und einfachen Updates profitieren. Das Update erscheint direkt in deiner Update-Liste – ein Klick auf den Update-Button genügt, und das OTA-Update startet sofort. Einfach, effizient und stressfrei.

ESPHome CLI / Dashboard Vollständige Anpassung

Für maximale Kontrolle und individuelle Anpassungen kannst du die Firmware in dein ESPHome Dashboard übernehmen oder das ESPHome CLI nutzen, indem du folgenden Befehl ausführst:
esphome run <yamlfile.yaml>

Falls du lieber die MQTT-Only-Firmware verwenden möchtest, nutze einfach das passende MQTT-Beispiel-YAML für dein Board unten.

Board Konfigurationsoptionen:
Doorman-S3 (1.5) / ESP32-S3 (Octal PSRAM)
yaml
# Doorman Stock Firmware (Home Assistant)
# Base Board ESP32-S3

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3.ha.stock.master.yaml@master

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
yaml
# Doorman Stock Firmware (MQTT)
# Base Board ESP32-S3

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3.mqtt.stock.master.yaml@master

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

mqtt:
  broker: "10.10.0.2"
  username: ""
  password: ""
Doorman-S3 (1.4) / ESP32-S3 (Quad PSRAM)
yaml
# Doorman Stock Firmware (Home Assistant)
# Base Board ESP32-S3-QUAD

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3-quad.ha.stock.master.yaml@master

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
yaml
# Doorman Stock Firmware (MQTT)
# Base Board ESP32-S3-QUAD

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32-s3-quad.mqtt.stock.master.yaml@master

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

mqtt:
  broker: "10.10.0.2"
  username: ""
  password: ""
Generic ESP32

GPIO Konfiguration

  • TC:BUS RX: GPIO 22
  • TC:BUS TX: GPIO 23
  • Status LED: GPIO 2
  • RGB Status LED: GPIO 4
  • Relay: GPIO 21
  • External button: GPIO 20
  • ADC Input: GPIO 36
yaml
# Doorman Stock Firmware (Home Assistant)
# Base Board ESP32

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32.ha.stock.master.yaml@master

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
yaml
# Doorman Stock Firmware (MQTT)
# Base Board ESP32

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp32.mqtt.stock.master.yaml@master

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

mqtt:
  broker: "10.10.0.2"
  username: ""
  password: ""
Generic ESP8266

GPIO Konfiguration

  • TC:BUS RX: GPIO 12
  • TC:BUS TX: GPIO 13
  • Status LED: GPIO 2
  • RGB Status LED: Dummy
  • Relay: GPIO 14
  • External button: GPIO 15
  • ADC Input: A0
yaml
# Doorman Stock Firmware (Home Assistant)
# Base Board ESP8266

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp8266.ha.stock.master.yaml@master

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
yaml
# Doorman Stock Firmware (MQTT)
# Base Board ESP8266

# You can change a few options here.
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"
  # log_level: "ERROR"
  # led_pin: "GPIO1"
  # rgb_led_pin: "GPIO2"
  # relay_pin: "GPIO42"
  # external_button_pin: "GPIO41"
  # adc_input_pin: "GPIO10"

# Import Doorman Firmware Config
packages:
  AzonInc.Doorman: github://azoninc/doorman/firmware/configurations/esp8266.mqtt.stock.master.yaml@master

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

mqtt:
  broker: "10.10.0.2"
  username: ""
  password: ""

Beispiele

Einfachen TC-Befehl-Binärsensor erstellen

Neben den bereits vordefinierten kannst du ganz leicht zusätzliche Binärsensoren für jeden TC-Befehl hinzufügen.

Command Builder:

yaml
# 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.master.yaml@master

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

binary_sensor: // //
  - platform: tc_bus // [!code ++] // [!code focus]
    name: "Benutzerdefinierter Befehl" // //
    type: open_door // [!code ++] // [!code focus]
    address: 0 // [!code ++] // [!code focus]
    web_server: // //
      sorting_group_id: sorting_group_listeners // [!code ++] // [!code focus]

32-Bit Command:

yaml
# 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.master.yaml@master

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

binary_sensor: // //
  - platform: tc_bus // [!code ++] // [!code focus]
    name: "Benutzerdefinierter Befehl" // //
    command: 0x00001100 // [!code ++] // [!code focus]
    web_server: // //
      sorting_group_id: sorting_group_listeners // [!code ++] // [!code focus]
Internes RGB-Status-LED steuern

Wenn du die RGB-LED am Doorman beispielsweise mit einem Button steuern möchtest, verwende einfach die Light ID: doorman_rgb_status_led.

yaml
# 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.master.yaml@master

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

button: // //
  - platform: template // [!code ++] // [!code focus]
    name: "Status RGB-LED auf Rot setzen" // //
    on_press: // //
      - light.turn_on: // //
          id: doorman_rgb_status_led // [!code ++] // [!code focus]
          red: 100% // [!code ++] // [!code focus]
          green: 0% // [!code ++] // [!code focus]
          blue: 0% // [!code ++] // [!code focus]
Externen Hardware-Button verwenden

Wenn du den externen Button nutzen möchtest, um Automationen auszulösen, kannst du deine YAML-Konfiguration einfach erweitern.

yaml
# 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.master.yaml@master

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

binary_sensor: // //
  - id: !extend doorman_external_button // [!code ++] // [!code focus]
    on_press: // //
      - logger.log: "Externer Button gedrückt!" // //
I²C-Sensoren nutzen

Falls du Sensoren über den I²C-Bus hinzufügen möchtest, kannst du die beiden verfügbaren GPIO-Pins nutzen und die I²C-Komponente in deine Konfiguration einbinden. Dann kannst du deine Sensoren an diese beiden I²C-GPIO-Pins anschließen.

yaml
# 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.master.yaml@master

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

i2c: // //
  sda: GPIO40 // [!code ++] // [!code focus]
  scl: GPIO48 // [!code ++] // [!code focus]
  scan: true // [!code ++] // [!code focus]
  id: i2c_bus // [!code ++] // [!code focus]

Fortgeschrittene Beispiele

Home Assistant

Bus Commands senden

Mit Home Assistant kannst du Aktionen nutzen, um Commands über den Bus zu senden. Benutze entweder command für hexadezimale Befehle oder type, address, payload und serial_number um Befehle über den Command Builder zu senden.

INFO

Denk an das führende 0x beim Senden eines Befehls mit der command Eigenschaft. Wenn du es weglässt, musst du den HEX-Befehl zuerst in eine Dezimalzahl umwandeln.

Command Builder:

yaml
service: esphome.doorman_s3_send_tc_command
data:
  type: open_door
  address: 0
  payload: 0
  serial_number: 0

Hexadezimale Befehle via command:

yaml
service: esphome.doorman_s3_send_tc_command_raw
data:
  command: 0x3a001100
Auf ESPHome-Ereignisse hören

Der Doorman sendet esphome.doorman-Ereignisse an Home Assistant, jedes Mal wenn ein Befehl empfangen wird.

Jedes Ereignis sieht so aus:

yaml
event_type: esphome.doorman
data:
  device_id: 373c62d6788cf81d322763235513310e
  command: "00001100"
  type: "open_door"
  address: "0"
  payload: "0"
  serial_number: "0"
origin: LOCAL
time_fired: "2024-08-12T12:34:13.718317+00:00"
context:
  id: 01J5399Y2PP2XS2VRYKBT3H3AV
  parent_id: null
  user_id: null

Beispiel für eine Home Assistant-Automation (HEX Command):

yaml
alias: Bei Doorman TC Türöffnungsbefehl auslösen
description: ""
trigger:
  - platform: event
    event_type: esphome.doorman
    event_data:
      command: "00001100"
condition: []
action: []
mode: single

Beispiel für eine Home Assistant-Automation (Command Builder):

yaml
alias: Bei Doorman TC Türöffnungsbefehl auslösen
description: ""
trigger:
  - platform: event
    event_type: esphome.doorman
    event_data:
      type: "open_door"
condition: []
action: []
mode: single

ESPHome

Eigene Klingel-Muster erstellen

Wenn du ein benutzerdefiniertes Klingelmuster erstellen möchtest, kannst du die bestehenden Klingel-Entities einfach erweitern. Weitere Informationen zu Mustern findest du in der ESPHome Dokumentation.

yaml
# 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.master.yaml@master

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

# Türglocken-Muster-Event-Entity erweitern // //
# Neues apartment_special-Eventtyp hinzufügen // //
event: // //
  - id: !extend apartment_doorbell_pattern // [!code ++] // [!code focus]
    event_types: // //
      - "apartment_special" // //

# Die apartment_doorbell / entrance_doorbell-Entity erweitern // //
# und das neue spezielle Muster hinzufügen // //
binary_sensor: // //
  - id: !extend apartment_doorbell // [!code ++] // [!code focus]
    on_multi_click: // //
      # Besonderes Muster // //
      - timing: // //
          # Zwei Mal drücken, mit maximal einer Sekunde zwischen den Drücken. // //
          - ON für maximal 0.5s // [!code ++] // [!code focus]
          - OFF für maximal 1s // [!code ++] // [!code focus]
          - ON für maximal 0.5s // [!code ++] // [!code focus]
          - OFF für mindestens 2s // [!code ++] // [!code focus]
        then: // //
          - logger.log: "Besonderes Muster erkannt!" // //
          - event.trigger: // //
              id: apartment_doorbell_pattern // [!code ++] // [!code focus]
              # Den vorher definierten neuen Eventtyp hier verwenden // //
              event_type: apartment_special // [!code ++] // [!code focus]
Licht einschalten, wenn jemand an der Eingangstür klingelt

Du kannst das Licht einschalten lassen, wenn jemand an der Eingangstür klingelt.

yaml
# 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.master.yaml@master

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

binary_sensor: // //
  - id: !extend entrance_doorbell // [!code ++] // [!code focus]
    on_press: // //
      - tc_bus.send: // //
          type: "light" // //

Wenn du auch die Sonnenhöhe berücksichtigen möchtest, kannst du das entsprechend anpassen.

yaml
# 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.master.yaml@master

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

# Home Assistant Sonnenhöhe-Sensor importieren // //
sensor: // //
  - platform: homeassistant // [!code ++] // [!code focus]
    id: sun_elevation // [!code ++] // [!code focus]
    entity_id: sun.sun // [!code ++] // [!code focus]
    attribute: elevation // [!code ++] // [!code focus]

# Eingangstür-Sensor erweitern // //
binary_sensor: // //
  - id: !extend entrance_doorbell // [!code ++] // [!code focus]
    on_press: // //
      # Sonnenhöhe <= 0 (dunkel) // //
      - if: // //
          condition: // //
            sensor.in_range: // //
              id: sun_elevation // [!code ++] // [!code focus]
              below: 1 // [!code ++] // [!code focus]
          then: // //
            # Licht einschalten // //
            - tc_bus.send: // //
                type: "light" // //

MQTT

Bei Verwendung der MQTT-Firmware werden verschiedene Topics an deinen Broker gesendet. So funktioniert die Struktur der Topics und Steuerung.

Topic Struktur

Jede Entität veröffentlicht ihren Status auf einem Topic im folgenden Format:

<TOPIC_PREFIX>/<COMPONENT_TYPE>/<COMPONENT_NAME>/state

Du kannst bestimmte Entitäten steuern, indem du einen Befehl an ein Topic mit folgendem Format sendest:

<TOPIC_PREFIX>/<COMPONENT_TYPE>/<COMPONENT_NAME>/command
ON oder OFF oder was sonst unterstützt wird

Beispiel

Um die Ring-To-Open Automatisierung zu aktivieren oder zu deaktivieren, sende ON oder OFF als Payload an dieses Topic:

doorman-s3/switch/ring_to_open/command
ON

Spezielle Topics

Es gibt spezielle Topics, die erweiterte Befehle ermöglichen.

Senden eines Commands (Hexadezimal)

Hier ist ein Beispiel um hexadezimale Commands (uint32) an den Bus zu senden:

doorman-s3/send_raw_command
json
{
    "command": 0x1C30BA80
}
json
{
    "command": 0x1C30BA80,
    "is_long": false
}

Senden eines Commands (Command Builder)

Hier ist ein Beispiel um Commands via Command Builder an den Bus zu senden:

doorman-s3/send_command
json
{
    "type": "open_door",
    "address": 0,
    "payload": 0,
    "serial_number": 123456
}

Veröffentlicht unter der GPL 3.0 Lizenz.