Nuki Bridge Firmware Arduino Framework
Diese Konfiguration übernimmt alle Funktionen der Stock Firmware und fügt eine Nuki Bridge-Komponente über BLE hinzu. Beachte, dass Improv über Bluetooth LE nicht unterstützt wird, da der BLE-Stack von der Nuki Bridge-Komponente verwendet wird.
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 Nuki-Bridge Firmware (Home Assistant) direkt über Web Serial zu installieren. Wenn du MQTT ohne Home Assistant nutzen möchtest, kannst du Doorman in dein ESPHome Dashboard aufnehmen und das untenstehende Beispiel Minimale Nuki-Bridge Firmware (MQTT)
verwenden.
Firmware YAML
Dies ist die minimale ESPHome-Konfigurations-YAML-Datei für die Verwendung mit Home Assistant. Vergiss nicht, den API-Schlüssel zu aktualisieren.
Minimale Nuki-Bridge Firmware (Home Assistant)
# Doorman S3 Nuki Bridge 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 Nuki Bridge Firmware Config
packages:
AzonInc.Doorman-Nuki-Bridge: github://AzonInc/doorman/firmware/ha-doorman-nuki-bridge.yaml@master
esphome:
name: ${name}
name_add_mac_suffix: false
friendly_name: ${friendly_name}
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
Dies ist die minimale ESPHome-Konfigurations-YAML-Datei für die Verwendung mit MQTT. Vergiss nicht, die MQTT Broker Daten zu aktualisieren.
Minimale Nuki-Bridge Firmware (MQTT)
# Doorman S3 Nuki Bridge Firmware (MQTT)
# 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 Nuki Bridge Firmware Config
packages:
AzonInc.Doorman-Nuki-Bridge: github://AzonInc/doorman/firmware/mqtt-doorman-nuki-bridge.yaml@master
esphome:
name: ${name}
name_add_mac_suffix: false
friendly_name: ${friendly_name}
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
mqtt:
broker: 10.0.0.2
username: "mqtt"
password: "password"
Nuki Lock koppeln
Je nach PCB-Revision drücke entweder die FLASH- oder PRG-Taste auf der Doorman-Platine für 5 Sekunden, bis die Status-LED lila zu blinken beginnt, oder aktiviere den Nuki Pairing Mode-Schalter in Home Assistant. Drücke dann die Taste an deinem Nuki Lock für 5 Sekunden, bis der Leuchtring aufleuchtet.
Nach erfolgreicher Kopplung bleibt die Status-LED für 3 Sekunden konstant an und schaltet sich dann aus.
WARNING
Wenn dein Nuki Lock bereits gekoppelt ist, wird es durch diesen Vorgang entkoppelt!
Nuki Lock entkoppeln
Du kannst dein Gerät entweder über den Nuki Unpair Device
-Button in Home Assistant oder die physische FLASH
- oder PRG
-Taste auf der Doorman-Platine entkoppeln.
Physische Taste
Falls dein Schloss bereits mit Doorman gekoppelt ist, drücke die FLASH
- oder PRG
-Taste auf der Doorman-Platine für 5 Sekunden, bis die RGB-Status-LED lila zu blinken beginnt. Dein Nuki Lock wird dann entkoppelt. Beachte, dass der Pairing-Modus nach 30 Sekunden abläuft.
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:
# 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: 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:
# 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: 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
.
# 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 // [!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.
# 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 // [!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.
# 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 // [!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:
service: esphome.doorman_s3_send_tc_command
data:
type: open_door
address: 0
payload: 0
serial_number: 0
Hexadezimale Befehle via command
:
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:
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):
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):
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.
# 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 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.
# 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 // [!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.
# 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 // [!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
{
"command": 0x1C30BA80
}
{
"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
{
"type": "open_door",
"address": 0,
"payload": 0,
"serial_number": 123456
}