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 Update

Es gibt mehrere Möglichkeiten, die Firmware zu aktualisieren:

  • ESPHome OTA Erfordert ESPHome-Dashboard
  • HTTP OTA Neueste Release-Version, keine Anpassung
  • Web Serial Neueste Release-Version, keine Anpassung

Du kannst deinen Doorman über USB-C anschließen und auf den untenstehenden Button klicken, um die neueste Doorman Stock Firmware direkt über Web Serial zu installieren.

Firmware YAML

Dies ist die minimale ESPHome-Konfigurations-YAML-Datei. Vergiss nicht, den API-Schlüssel zu aktualisieren.

Minimale Stock Firmware
yaml
# Doorman S3 Stock Firmware

# 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"

# Import Doorman Stock Firmware Config
packages:
  AzonInc.Doorman: github://AzonInc/doorman/firmware/doorman-stock.yaml@master

esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}

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

Beispiele

Einfachen TCS-Befehl-Binärsensor erstellen

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

yaml
# Doorman S3 Firmware
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"

# Import Doorman Stock Firmware Config
packages:
  AzonInc.Doorman: github://AzonInc/doorman/firmware/doorman-stock.yaml@master

esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}

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

binary_sensor: 
  - platform: tcs_intercom
    name: "Benutzerdefinierter Befehl"
    command: 0x3b8f9a00
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/doorman-stock.yaml@master

esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}

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

button: 
  - platform: template
    name: "Status RGB-LED auf Rot setzen"
    on_press: 
      - light.turn_on: 
          id: doorman_rgb_status_led
          red: 100%
          green: 0%
          blue: 0%
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/doorman-stock.yaml@master

esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}

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

binary_sensor: 
  - id: !extend doorman_external_button
    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/doorman-stock.yaml@master

esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}

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

i2c: 
  sda: GPIO40
  scl: GPIO48
  scan: true
  id: i2c_bus

Fortgeschrittene Beispiele

Home Assistant

Bus-Commands senden

Mit Home Assistant kannst du Aktionen nutzen, um Commands über den Bus zu senden.

INFO

Denk daran, das führende 0x beim Senden eines HEX-Kommandos einzufügen. Wenn du es weglässt, musst du den HEX-Befehl in eine Dezimalzahl umwandeln.

yaml
service: esphome.doorman_s3_send_tcs_command
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"
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:

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

ESPHome

Einen zur Laufzeit konfigurierbaren TCS-Befehl-Binärsensor erstellen

Du kannst zusätzliche konfigurierbare Befehl-Binärsensoren hinzufügen, indem du Lambda, Globals und Texteingaben verwendest.

yaml
# Doorman S3 Firmware
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"

# Import Doorman Stock Firmware Config
packages:
  AzonInc.Doorman: github://AzonInc/doorman/firmware/doorman-stock.yaml@master

esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}

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

globals: 
  - id: custom_command
    type: int
    restore_value: true
    initial_value: '0x3b8f9a00'

text: 
  - platform: template
    id: custom_command_input
    name: Benutzerdefinierter Befehl
    entity_category: CONFIG
    icon: "mdi:console-network"
    mode: text
    lambda: |-
      unsigned long number = id(custom_command);
      return str_upper_case(format_hex(number));
    set_action: 
      then: 
        - lambda: |-
            x.erase(std::remove_if(x.begin(), x.end(), [](char c) { return !std::isxdigit(c); }), x.end());
            x.erase(0, x.find_first_not_of('0'));
            x.resize(8);
            unsigned long number = 0;
            if(std::string(x.c_str()) != "") {
              number = std::stoul(x.c_str(), nullptr, 16);
            }
            id(custom_command) = number;
            id(custom_command_input)->publish_state(str_upper_case(format_hex(number)));

binary_sensor: 
  - platform: tcs_intercom
    name: "Benutzerdefinierter Befehl"
    lambda: !lambda "return id(custom_command);"
Einen Bus-Spannungssensor erstellen

Du kannst einen Bus-Spannungssensor für ältere Gegensprechanlagen hinzufügen, die mit 14-24V DC arbeiten.
Es könnte in Zukunft auch möglich sein, andere Protokolle zu implementieren.

yaml
# Doorman S3 Firmware
substitutions:
  name: "doorman-s3"
  friendly_name: "Doorman S3"

# Import Doorman Stock Firmware Config
packages:
  AzonInc.Doorman: github://AzonInc/doorman/firmware/doorman-stock.yaml@master

esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}

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

# Neuer ADC-Spannungssensor
sensor: 
  - platform: adc
    id: bus_voltage
    name: Bus-Spannung
    pin: 
      number: GPIO9
      allow_other_uses: true
    update_interval: 500ms
    attenuation: 12dB

# TCS-Intercom-Komponente erweitern
# RX-Pin auch für andere Zwecke nutzen
tcs_intercom: 
  rx_pin: 
    number: GPIO9 // [!code

 ++]
    allow_other_uses: true
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/doorman-stock.yaml@master

esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}

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

# Türglocken-Muster-Event-Entity erweitern
# Neues apartment_special-Eventtyp hinzufügen
event: 
  - id: !extend doorbell_pattern
    event_types: 
      - "apartment_special"

# Die apartment_doorbell / entrance_doorbell-Entity erweitern
# und das neue spezielle Muster hinzufügen
binary_sensor: 
  - id: !extend apartment_doorbell
    on_multi_click: 
      # Besonderes Muster
      - timing: 
          # Zwei Mal drücken, mit maximal einer Sekunde zwischen den Drücken.
          - ON für maximal 0.5s
          - OFF für maximal 1s
          - ON für maximal 0.5s
          - OFF für mindestens 2s
        then: 
          - logger.log: "Besonderes Muster erkannt!"
          - event.trigger: 
              id: doorbell_pattern
              # Den vorher definierten neuen Eventtyp hier verwenden
              event_type: apartment_special
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/doorman-stock.yaml@master

esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}

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

binary_sensor: 
  - id: !extend entrance_doorbell
    on_press: 
      - tcs_intercom.send: 
          command: !lambda "return id(turn_on_light_command);"

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/doorman-stock.yaml@master

esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}

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

# Home Assistant Sonnenhöhe-Sensor importieren
sensor: 
  - platform: homeassistant
    id: sun_elevation
    entity_id: sun.sun
    attribute: elevation

# Eingangstür-Sensor erweitern
binary_sensor: 
  - id: !extend entrance_doorbell
    on_press: 
      # Sonnenhöhe <= 0 (dunkel)
      - if: 
          condition: 
            sensor.in_range: 
              id: sun_elevation
              below: 1
          then: 
            # Licht einschalten
            - tcs_intercom.send: 
                command: !lambda "return id(turn_on_light_command);"

Veröffentlicht unter der GPL 3.0 Lizenz.