Nuki Smart Lock: Motorblockade erkennen in Home Assistant

Ausgangslage

Ich nutze ein Nuki Smart Lock Gen5, das über die offizielle MQTT-Integration mit Home Assistant verbunden ist.

Meine <ENTITY_ID>türe besitzt eine Mehrfachverriegelung. Damit sie abgeschlossen werden kann, muss zuerst der Türgriff nach oben gedrückt werden. Geschieht das nicht, kann der Schlüssel im Schloss nicht gedreht werden.

Wird trotzdem versucht abzuschliessen, erscheint in der Nuki-App die Meldung:

Motor blockiert

Das Problem

Über MQTT bzw. in Home Assistant wird das Schloss nach einem fehlgeschlagenen Schliessversuch trotzdem kurze Zeit später als

1
locked

angezeigt.

Dadurch gehen Automationen davon aus, dass die Türe erfolgreich abgeschlossen wurde – obwohl der Motor blockiert war und der Riegel nie ausgefahren werden konnte.

MQTT genauer untersucht

Mit MQTT Explorer habe ich die vom Smart Lock veröffentlichten MQTT-Nachrichten beobachtet:

MQTT Explorer

Dabei fiel auf, dass der Topic

1
nuki/<DEVICE_ID>/state

folgende Statuswerte liefert:

Status Bedeutung
1 Locked
2 Unlocked
3 Unlatched
4 Locking (Übergang)
254 Motor blockiert

Interessant dabei:

Während eines fehlgeschlagenen Schliessvorgangs wird kurzzeitig der Status 254 veröffentlicht, bevor das Schloss trotzdem wieder auf locked wechselt.

Dadurch erkennt die normale Home-Assistant-Lock-Entity den Fehler nicht mehr.

Lösung

Anstatt den Zustand der Lock-Entity auszuwerten, lauscht meine Automation nach dem Schliessbefehl für einige Sekunden direkt auf das MQTT-Topic.

Wird innerhalb dieser Zeit der Status 254 empfangen, wird eine Warnung verschickt.

Andernfalls gilt der Schliessvorgang als erfolgreich.

Home Assistant Automation

Die folgende Automation zeigt, wie sich diese Erkenntnisse in Home Assistant umsetzen lassen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
alias: Logik - Türe nach 22:00 automatisch schliessen
description: Schliesst die Türe nach 22:00 wenn offen und benachrichtigt via NTFY

triggers:
  - trigger: time
    at: "22:00:00"

conditions:
  - condition: state
    entity_id: lock.<DEVICE_ID>
    state:
      - unlocked
      - open

actions:
  - action: lock.lock
    target:
      entity_id: lock.<DEVICE_ID>

  - wait_for_trigger:
      - trigger: mqtt
        topic: "nuki/<DEVICE_ID>/state"
        payload: "254"
    timeout: "00:00:15"
    continue_on_timeout: true

  - choose:
      - conditions:
          - condition: template
            value_template: "{{ wait.trigger is not none }}"
        sequence:
          - action: ntfy.publish
            target:
              entity_id: notify.<ENTITY_ID>
            data:
              title: "⚠️ Nuki Smartlock"
              message: "🚪⚠️ Die Türe konnte nicht abgeschlossen werden - Motor blockiert!"
              priority: 5

    default:
      - action: ntfy.publish
        target:
          entity_id: notify.<ENTITY_ID>
        data:
          title: "🔐 Nuki Smartlock"
          message: "🚪🔑 Die Türe wurde automatisch abgeschlossen." 

mode: single

Fazit

Obwohl die Home-Assistant-Lock-Entity nach einem Motorfehler wieder den Zustand locked anzeigt, liefert die offizielle MQTT-Schnittstelle den Fehler zuverlässig als Status 254.

Durch das direkte Lauschen auf MQTT kann der Fehler zuverlässig erkannt werden und Fehlbenachrichtigungen werden vermieden.

Gerade bei Türen mit Mehrfachverriegelung oder hochzudrückendem Türgriff ist diese Lösung deutlich zuverlässiger als die Auswertung der normalen Lock-Entity.

Formerly known as struband.net
Build 27.06.2026