🔐 Shelly BLU Codeschloss mit Home Assistant Automatisierung (Press & Long Press)

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.


:brain: Idee dahinter

Der verwendete Button liefert zwei unterschiedliche Events:

  • Kurzer Tastendruck → wird als K gespeichert
  • Langer Tastendruck → wird als L gespeichert

Aus diesen Eingaben entsteht Schritt fĂŒr Schritt ein Code – Ă€hnlich wie bei einem Zahlenschloss, nur eben mit K und L.

Beispiel-Code:

LKKK

:gear: Funktionsweise des Skripts

:one: Trigger: Button drĂŒcken

Das Skript reagiert auf:

  • kurzen Druck
  • langen Druck

des Buttons (im Beispiel ein Shelly BLU ĂŒber bthome).

:right_arrow: 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).


:two: Eingabe wird gespeichert

Je nach Tastentyp wird automatisch:

  • K bei kurzem Druck
  • L bei langem Druck

an einen input_text (hier: input_text.codeschloss) angehÀngt.
So entsteht nach mehreren TastendrĂŒcken der komplette Code.


:three: Code-PrĂŒfung

Nach jeder Eingabe prĂŒft das Skript:

Entspricht der eingegebene Code dem hinterlegten correct_code?

Wenn ja:

  • :loudspeaker: Es erscheint eine Benachrichtigung
  • :stopwatch: Nach 2 Sekunden
  • :unlocked: wird z. B. ein TĂŒröffner (button.home_unlatch) ausgelöst
  • :counterclockwise_arrows_button: Der Code wird zurĂŒckgesetzt

:four: 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.


:puzzle_piece: Wichtige Variablen

variables:
  correct_code: LKKK
  timeout: 8
  • correct_code → hier euren gewĂŒnschten Code eintragen
  • timeout → Zeit (in Sekunden), nach der der Code zurĂŒckgesetzt wird

:white_check_mark: Vorteile der Lösung

  • :check_mark: Kein Display nötig
  • :check_mark: Sehr diskret
  • :check_mark: Hardware-unabhĂ€ngig
  • :check_mark: Funktioniert mit vielen Button-Typen
  • :check_mark: Ideal fĂŒr TĂŒröffner, Garagentore oder Alarmanlagen
  • :check_mark: 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

:light_bulb: 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
2 „GefĂ€llt mir“

Hi, schöne Anleitung, könnte man glatt ein wiki daraus machen. :slightly_smiling_face:

1 „GefĂ€llt mir“

Bitte, gerne doch! :+1:

1 „GefĂ€llt mir“

Habe es entsprechend verschoben und keywords hinzugefĂŒgt.

2 „GefĂ€llt mir“

Sehr schöne Anleitung und durch die klassische HA-Programmierung absolut Wiki-tauglich. :muscle:

In mein >> Node-RED Morse-Codeschloss << habe ich noch ein Sicherheits-Feature eingebaut.

  • Nach 5 Fehlversuchen in Folge werden Eingaben fĂŒr 60 s ignoriert.
  • Nach weiteren 5 vergeblichen Versuchen erfolgt ein Penalty von 30 Minuten.

:locked_with_key: ZusĂ€tzliche Sicherheit durch „sinnige Bedingungen“

Zur weiteren Erhöhung der Sicherheit lassen sich in ja in Home Assistant problemlos beliebige zusĂ€tzliche Bedingungen einbauen – abhĂ€ngig von den vorhandenen Sensoren und der eigenen KreativitĂ€t.

Beispiele:

  • :door: Garagentor muss offen sein
  • :open_mailbox_with_raised_flag: Im Briefkasten muss Post liegen
  • :mobile_phone: Smartphone muss im lokalen WLAN eingebucht sein
  • :three_o_clock: Nur zu bestimmten Uhrzeiten
  • :round_pushpin: Nur wenn jemand/niemand zu Hause ist

Je unsinniger oder unauffĂ€lliger diese Bedingungen fĂŒr Außenstehende erscheinen, desto sicherer wird das Gesamtsystem, da der eigentliche „SchlĂŒssel“ nicht nur aus dem Code besteht.


Wie immer gilt:
Sky is the limit – und nur deine Phantasie setzt die Grenzen! :grinning_face_with_smiling_eyes:

1 „GefĂ€llt mir“