Nuki 3.0 Pro via MQTT2 anbinden

Begonnen von Felix_86, 08 Dezember 2025, 13:46:55

Vorheriges Thema - Nächstes Thema

Felix_86

Hallo zusammen,

seit einigen Tagen habe ich ein Nuki 3.0 Pro mit integriertem WLAN in Betrieb (also ohne Nuki Bridge). Für die Anbindung des Nuki an FHEM mittels MQTT habe ich mich an folgenden Threads orientiert:
1. https://forum.fhem.de/index.php?topic=136429.0
2. https://forum.fhem.de/index.php?topic=138696.0

Der aktuelle Zustand (verschlossen / entriegelt) wird vom Nuki an FHEM übermittelt und hier dargestellt, den Zustand kann ich über FHEM auch ändern (also verschließen und entriegeln). Das ist schonmal gut.

Aufgefallen ist mir, dass das Batterie-Reading nicht übermittelt wird bzw. immer 0 ist. Das ist jetzt nicht hochkritisch, aber unschön.
Wegen dem fehlenden Batterie-Reading weiß ich nicht, ob es weitere Readings gibt / geben müssten, die mir ebenfalls fehlen.

Das MQTT2_Server Device sieht wie folgt aus:

Internals:
   CONNECTS   18
   Clients    :MQTT2_DEVICE:MQTT_GENERIC_BRIDGE:
   ClientsKeepOrder 1
   DEF        1883 192.168.94.11
   FD         9
   FUUID      66504ec7-f33f-a48e-0234-f7152448691547d4
   NAME       MQTT2_Server
   NR         360
   PORT       1883
   STATE      Initialized
   TYPE       MQTT2_SERVER
   eventCount 33
   MatchList:
     1:MQTT2_DEVICE ^.
     2:MQTT_GENERIC_BRIDGE ^.
   READINGS:
     2025-12-08 09:40:32   nrclients       3
     2025-12-07 21:30:41   state           Initialized
   clients:
     MQTT2_Server_192.168.94.17_64691 1
     MQTT2_Server_192.168.94.18_49960 1
     MQTT2_Server_192.168.94.19_50244 1
   retain:
Attributes:
   autocreate complex
   room       System->Dienste

Das MQTT2_Device (Nuki):

Internals:
   CFGFN     
   CID        SL3P_3007AEE4
   DEF        SL3P_3007AEE4
   FUUID      6935e9be-f33f-6002-131e-b2aaf602ed869d99
   IODev      MQTT2_Server
   LASTInputDev MQTT2_Server
   MQTT2_Server_CONN MQTT2_Server_192.168.94.19_50244
   MQTT2_Server_MSGCNT 115
   MQTT2_Server_TIME 2025-12-08 13:16:20
   MSGCNT     115
   NAME       MQTT2_Nuki
   NR         463
   STATE      1
   TYPE       MQTT2_DEVICE
   eventCount 136
   READINGS:
     2025-12-08 13:16:20   BatteryChargeState 0
     2025-12-08 08:33:08   IODev           MQTT2_Server
     2025-12-08 13:16:20   battery         low
     2025-12-08 13:16:20   batteryPercent  0
     2025-12-08 13:16:18   commandResponse 0
     2025-12-07 22:03:50   config          {"~":"nuki/3007AEE4","avty_t":"~/connected","pl_avail":"true", "pl_not_avail":"false","dev":{"ids":"[3007AEE4]"},"name":"Lock 'n' Go with unlatch","uniq_id":"3007AEE4_lock_n_go_unlatch_button","cmd_t":"~/lockAction","pl_prs":"5","qos":2}
     2025-12-08 09:40:32   connected       true
     2025-12-08 13:16:19   lockActionEvent 2,172,0,0,0
     2025-12-08 09:40:34   serverConnected false
     2025-12-08 13:16:19   state           1
     2025-12-08 13:16:20   timestamp       2025-12-08T12:16:09Z
Attributes:
   IODev      MQTT2_Server
   devStateIcon lock:nuki_lock@green 1:nuki_lock@green .*:nuki_lock@red
   genericDeviceType lock
   readingList SL3P_3007AEE4:homeassistant/lock/nuki_3007AEE4_lock/config:.* config
SL3P_3007AEE4:homeassistant/binary_sensor/nuki_3007AEE4_lock/config:.* config
SL3P_3007AEE4:homeassistant/sensor/nuki_3007AEE4_battery_percent/config:.* config
SL3P_3007AEE4:homeassistant/binary_sensor/nuki_3007AEE4_lock_battery_critical/config:.* config
SL3P_3007AEE4:homeassistant/binary_sensor/nuki_3007AEE4_battery_charging/config:.* config
SL3P_3007AEE4:homeassistant/binary_sensor/nuki_3007AEE4_door_sensor/config:.* config
SL3P_3007AEE4:homeassistant/binary_sensor/nuki_3007AEE4_door_sensor_battery_critical/config:.* config
SL3P_3007AEE4:homeassistant/binary_sensor/nuki_3007AEE4_keypad_battery_critical/config:.* config
SL3P_3007AEE4:homeassistant/button/nuki_3007AEE4_unlatch_button/config:.* config
SL3P_3007AEE4:homeassistant/button/nuki_3007AEE4_lockngo_button/config:.* config
SL3P_3007AEE4:homeassistant/button/nuki_3007AEE4_lock_n_go_unlatch/config:.* config
SL3P_3007AEE4:nuki/3007AEE4/connected:.* connected
SL3P_3007AEE4:nuki/3007AEE4/serverConnected:.* serverConnected
SL3P_3007AEE4:nuki/3007AEE4/state:.* state
SL3P_3007AEE4:nuki/3007AEE4/lockActionEvent:.* lockActionEvent
SL3P_3007AEE4:nuki/3007AEE4/timestamp:.* timestamp
nuki/3007AEE4/state:.* state
nuki/3007AEE4/lockActionEvent:.* lockActionEvent
nuki/3007AEE4/timestamp:.* timestamp
nuki/3007AEE4/connected:.* connected
nuki/3007AEE4/deviceType:.* deviceType
nuki/3007AEE4/name:.* name
nuki/3007AEE4/firmware:.* firmware
nuki/3007AEE4/serverConnected:.* serverConnected
nuki/3007AEE4/mode:.* mode
nuki/3007AEE4/doorsensorState:.* doorsensorState
nuki/3007AEE4/batteryCritical:.* batteryCritical
nuki/3007AEE4/batteryChargeState:.* batteryChargeState
nuki/3007AEE4/batteryCharging:.* batteryCharging
nuki/3007AEE4/commandResponse:.* commandResponse
   room       Haushalt,System->Dienste
   setList    unlock:noArg nuki/3007AEE4/lockAction 1
lock:noArg nuki/3007AEE4/lock true
unlatch:noArg nuki/3007AEE4/lockAction 3
   userReadings battery {my $wert = ReadingsVal($name,"batteryCritical",0); ($wert eq "false" ) ? 'ok' : 'low'}, BatteryChargeState { ReadingsVal($name,"batteryChargeState",0) },
batteryPercent {ReadingsVal("Nuki_Haustuer","BatteryChargeState",0)}
   webCmd     lock:unlock

In der Nuki App ist für MQTT die IP-Adresse des MQTT2 Server hinterlegt und als Benutzername "nuki".

Hat jemand einen Hinweis für mich, was wo fehlt, damit das Batterie-Reading (und ggf. auch weiter) vom Nuki in FHEM landen?

Wie immer vielen Dank vorab.
Grüße von Felix

Pi3, Raspbian 13, FHEM 6.4, ca 330 Device
SIGNALduino (TCM, TX, IT, SD_GT), CUL (EM, FS20, HMS), JeeLink (PCA301), mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS, Nina, MQTT2

moskito

Hier mal mein Device welches wie gewünscht funktioniert:

define Haustuer MQTT2_DEVICE Nuki_3F5xxxxx
attr Haustuer event-on-change-reading .*
attr Haustuer genericDeviceType lock
attr Haustuer readingList Nuki_3F5xxxxx:nuki/3F5xxxxx/connected:.* connected\
Nuki_3F5xxxxx:nuki/3F5xxxxx/timestamp:.* timestamp\
Nuki_3F5xxxxx:nuki/3F5xxxxx/deviceType:.* deviceType\
Nuki_3F5xxxxx:nuki/3F5xxxxx/name:.* name\
Nuki_3F5xxxxx:nuki/3F5xxxxx/firmware:.* firmware\
Nuki_3F5xxxxx:nuki/3F5xxxxx/batteryChargeState:.* batteryChargeState\
Nuki_3F5xxxxx:nuki/3F5xxxxx/batteryCritical:.* batteryCritical\
Nuki_3F5xxxxx:nuki/3F5xxxxx/batteryCharging:.* batteryCharging\
Nuki_3F5xxxxx:nuki/3F5xxxxx/keypadBatteryCritical:.* keypadBatteryCritical\
Nuki_3F5xxxxx:nuki/3F5xxxxx/doorsensorBatteryCritical:.* doorsensorBatteryCritical\
Nuki_3F5xxxxx:nuki/3F5xxxxx/state:.* state\
Nuki_3F5xxxxx:nuki/3F5xxxxx/mode:.* mode\
Nuki_3F5xxxxx:nuki/3F5xxxxx/serverConnected:.* serverConnected\
Nuki_3F5xxxxx:nuki/3F5xxxxx/lockActionEvent:.* lockActionEvent\
Nuki_3F5xxxxx:nuki/3F5xxxxx/doorsensorState:.* doorsensorState\
Nuki_3F5xxxxx:nuki/3F5xxxxx/commandResponse:.* commandResponse
attr Haustuer room 13_Flur,MQTT2_DEVICE,NUKI
attr Haustuer setList unlock:noArg nuki/3F5xxxxx/lockAction 1\
 lock:noArg nuki/3F5xxxxx/lock true\
 unlatch:noArg nuki/3F5xxxxx/lockAction 3
attr Haustuer stateFormat { sprintf("Schloss : %s Batterie : %s", getDoorState(ReadingsVal("Haustuer","state",0)), ReadingsVal("Haustuer","batteryChargeState",0)) }
attr Haustuer userReadings battery {my $wert = ReadingsVal($name,"batteryCritical",0);; ($wert eq "false" ) ? 'ok' : 'low'}, BatteryChargeState { ReadingsVal($name,"batteryChargeState",0) },\
batteryPercent {ReadingsVal($name,"BatteryChargeState",0)}
attr Haustuer webCmd lock:unlock
#   CID        Nuki_3F5xxxxx
#   DEF        Nuki_3F5xxxxx
#   FUUID      670a6df0-f33f-1505-5e0b-413b98a308b76d5c
#   IODev      mqtt2_server
#   LASTInputDev mqtt2_server
#   MSGCNT     118
#   NAME       Haustuer
#   NR         819
#   STATE      Schloss : Aufgeschlossen Batterie : 30
#   TYPE       MQTT2_DEVICE
#   eventCount 68
#   mqtt2_server_CONN mqtt2_server_10.10.0.122_63904
#   mqtt2_server_MSGCNT 118
#   mqtt2_server_TIME 2025-12-08 16:22:26
#   READINGS:
#     2025-12-08 16:22:26   BatteryChargeState 30
#     2025-12-07 15:32:08   IODev           mqtt2_server
#     2025-12-08 16:22:26   battery         ok
#     2025-12-08 16:22:26   batteryChargeState 30
#     2025-12-07 15:34:28   batteryCharging false
#     2025-12-07 15:34:28   batteryCritical false
#     2025-12-08 16:22:26   batteryPercent  30
#     2025-12-08 16:09:55   commandResponse 0
#     2025-12-07 15:34:27   connected       true
#     2025-12-07 15:34:27   deviceType      4
#     2025-12-07 15:34:28   doorsensorBatteryCritical false
#     2025-12-07 15:34:28   firmware        4.7.4
#     2025-12-07 15:34:28   keypadBatteryCritical false
#     2025-12-08 16:09:50   lockActionEvent 1,172,0,0,0
#     2025-12-07 15:34:28   mode            2
#     2025-12-07 15:34:28   name            Haustür
#     2025-12-08 07:13:02   serverConnected true
#     2025-12-08 16:09:55   state           3
#     2025-11-25 21:02:16   subscriptions   nuki/3F5xxxxx/lock nuki/3F5xxxxx/lockAction nuki/3F5xxxxx/unlock
#     2025-12-08 16:22:26   timestamp       2025-12-08T15:22:25Z
#

Habe mal ein Augenmerk auf das Attribut "readingList", damit werden die Readings erzeugt.

Gruß
Danny
FHEM auf Intel NUC/Proxmox & Debian 12 + HM-CFG-USB + zigbee2mqtt + Zwave + Enocean