Ich möchte euch ein kleines, aber sehr praktisches Home-Assistant-Skript vorstellen:
Ein einfaches Codeschloss mit einem Button, das ĂŒber kurzen und langen Tastendruck einen Code eingibt und bei korrekter Eingabe z. B. eine TĂŒr öffnet.
Idee dahinter
Der verwendete Button liefert zwei unterschiedliche Events:
- Kurzer Tastendruck â wird als
Kgespeichert - Langer Tastendruck â wird als
Lgespeichert
Aus diesen Eingaben entsteht Schritt fĂŒr Schritt ein Code â Ă€hnlich wie bei einem Zahlenschloss, nur eben mit K und L.
Beispiel-Code:
LKKK
Funktionsweise des Skripts
Trigger: Button drĂŒcken
Das Skript reagiert auf:
- kurzen Druck
- langen Druck
des Buttons (im Beispiel ein Shelly BLU ĂŒber bthome).
Wichtig:
Das Prinzip funktioniert nicht nur mit dem Shelly BLU, sondern mit allen Buttons, die in Home Assistant unterschiedliche Events fĂŒr kurzen und langen Tastendruck liefern (z. B. Zigbee-, Z-Wave- oder andere Bluetooth-Buttons).
Eingabe wird gespeichert
Je nach Tastentyp wird automatisch:
Kbei kurzem DruckLbei langem Druck
an einen input_text (hier: input_text.codeschloss) angehÀngt.
So entsteht nach mehreren TastendrĂŒcken der komplette Code.
Code-PrĂŒfung
Nach jeder Eingabe prĂŒft das Skript:
Entspricht der eingegebene Code dem hinterlegten
correct_code?
Wenn ja:
Es erscheint eine Benachrichtigung
Nach 2 Sekunden
wird z. B. ein TĂŒröffner (button.home_unlatch) ausgelöst
Der Code wird zurĂŒckgesetzt
Automatisches ZurĂŒcksetzen (Timeout)
Falls der Code nicht vollstÀndig oder falsch eingegeben wird:
- Nach 8 Sekunden InaktivitÀt
- wird der eingegebene Code automatisch gelöscht
So bleibt das System sauber und sicher.
Wichtige Variablen
variables:
correct_code: LKKK
timeout: 8
correct_codeâ hier euren gewĂŒnschten Code eintragentimeoutâ Zeit (in Sekunden), nach der der Code zurĂŒckgesetzt wird
Vorteile der Lösung
Kein Display nötig
Sehr diskret
Hardware-unabhÀngig
Funktioniert mit vielen Button-Typen
Ideal fĂŒr TĂŒröffner, Garagentore oder Alarmanlagen
Funktioniert komplett lokal
Hier nun der komplette Code:
alias: Shelly BLU Codeschloss
triggers:
- device_id: "Hier Device ID des Buttons eingeben!"
domain: bthome
type: button
subtype: press
trigger: device
- device_id: "Hier Device ID des Buttons eingeben!"
domain: bthome
type: button
subtype: long_press
trigger: device
actions:
- variables:
key: |
{% if trigger.event.data.event_type == 'press' %}
K
{% elif trigger.event.data.event_type == 'long_press' %}
L
{% else %}
""
{% endif %}
- condition: template
value_template: "{{ key != '' }}"
- target:
entity_id: input_text.codeschloss
data:
value: "{{ states('input_text.codeschloss') ~ key }}"
action: input_text.set_value
- choose:
- conditions:
- condition: template
value_template: "{{ states('input_text.codeschloss') == correct_code }}"
sequence:
- data:
title: Codeschloss
message: â
Code korrekt â TĂŒr wird geöffnet!
action: persistent_notification.create
- delay: "00:00:02"
- target:
entity_id: button.home_unlatch
action: button.press
- target:
entity_id: input_text.codeschloss
data:
value: ""
action: input_text.set_value
- delay:
seconds: "{{ timeout }}"
- target:
entity_id: input_text.codeschloss
data:
value: ""
action: input_text.set_value
mode: restart
variables:
correct_code: LKKK
timeout: 8
Erweiterungsideen
- Falsche Code-Eingaben zÀhlen und Alarm auslösen
- Unterschiedliche Codes fĂŒr verschiedene Aktionen
- Codeschloss nur zu bestimmten Zeiten aktiv
- Visuelles Feedback ĂŒber LEDs oder Benachrichtigungen