Hallo Zusammen,
seit kurzem habe ich ein Nuki 4.0 Pro in Betrieb und will diese gerne in FHEM einbinden.
An meinen MQTT Server (externe Server, läuft auf zweiter Fhem Installation) habe ich es schon eingebunden.
Alle Beispiele hierfür finde ich nur mit "MQTT2_DEVICE". Ich denke aber, das ich das ganze als "MQTT2_CLIENT"
benötige.
Hat jemand ein Beispiel dafür, da ich mit MQTT2 nicht ganz so bewandert bin.
Viele Grüße
R.
Hallo Zusammen,
erste Version läuft schon. Nur die Batterieanzeige arbeitet noch nicht richtig. Ich hatte ein Beispiel hier
im Forum für eine ältere Nuki Version gefunden. Diese habe ich auf "MQTT2_Client" umgeschrieben.
Wenn das ganze richtig läuft, poste ich natürlich den Code.
Viele Grüße
R.
Hallo Zusammen,
hier die erste Version:
Allgemeine Definition zu dem MQTT2 Server (wenn nicht schon vorhanden)
#
# MQTT2 Client
#
define MQTT2_FHEM_Client MQTT2_CLIENT <IP Adresse des MQTT2 Server>:1883
attr MQTT2_FHEM_Client username <Benutzername>
Türschloss Definition
#
# MTQtt2 Device Nuki Türschloss
#
define Flur_Wohnungstuerschloss MQTT2_DEVICE <DEVICEID im MQTT2>
attr Flur_Wohnungstuerschloss IODev MQTT2_FHEM_Client
attr Flur_Wohnungstuerschloss alias Türschloss:
attr Flur_Wohnungstuerschloss event-min-interval battery:3600
attr Flur_Wohnungstuerschloss event-on-change-reading .*
attr Flur_Wohnungstuerschloss group Wohnungstür
attr Flur_Wohnungstuerschloss icon nuki_lock
attr Flur_Wohnungstuerschloss readingList nuki/<DEVICEID im MQTT2>/state:.* state\
nuki/<DEVICEID im MQTT2>/lockActionEvent:.* lockActionEvent\
nuki/<DEVICEID im MQTT2>/timestamp:.* timestamp\
nuki/<DEVICEID im MQTT2>/connected:.* connected\
nuki/<DEVICEID im MQTT2>/deviceType:.* deviceType\
nuki/<DEVICEID im MQTT2>/name:.* name\
nuki/<DEVICEID im MQTT2>/firmware:.* firmware\
nuki/<DEVICEID im MQTT2>/serverConnected:.* serverConnected\
nuki/<DEVICEID im MQTT2>/mode:.* mode\
nuki/<DEVICEID im MQTT2>/doorsensorState:.* doorsensorState\
nuki/<DEVICEID im MQTT2>/batteryCritical:.* batteryCritical\
nuki/<DEVICEID im MQTT2>/batteryChargeState:.* batteryChargeState\
nuki/<DEVICEID im MQTT2>/batteryCharging:.* batteryCharging\
nuki/<DEVICEID im MQTT2>/keypadBatteryCritical:.* keypadBatteryCritical\
nuki/<DEVICEID im MQTT2>/doorsensorBatteryCritical:.* doorsensorBatteryCritical\
nuki/<DEVICEID im MQTT2>/commandResponse:.* commandResponse
attr Flur_Wohnungstuerschloss room Aussen-Flur
attr Flur_Wohnungstuerschloss setList unlock:noArg nuki/<DEVICEID im MQTT2>/lockAction 1\
lock:noArg nuki/<DEVICEID im MQTT2>/lock true\
unlatch:noArg nuki/<DEVICEID im MQTT2>/lockAction 3
attr Flur_Wohnungstuerschloss stateFormat { sprintf("Schloss : %s Batterie : %s", getDoorState(ReadingsVal("Flur_Wohnungstuerschloss","state",0)), ReadingsVal("Flur_Wohnungstuerschloss","batteryChargeState",0)) }
attr Flur_Wohnungstuerschloss userReadings battery {my $wert = ReadingsVal($name,"batteryCritical",0);; ($wert eq "false" ) ? 'ok' : 'low'}, BatteryChargeState { ReadingsVal($name,"batteryChargeState",0) }
#attr Flur_Wohnungstuerschloss webCmd lock:unlock
Wer die Tür über die Weboberfläche öffnen will, muss diese Zeile aktiviert
attr Flur_Wohnungstuerschloss webCmd lock:unlock
My Utilitiy Routine für den Status-Text (teilweise aus Nuki Modul entnommen)
#
# get back the given text for a boolean bit, like On/Off
#
sub getDoorState($)
{
my $stateVar = shift;
my $ret = "unbekannt";
$stateVar=trim($stateVar);
if( $stateVar eq '0')
{
$ret = "Unkalibiert";
}
if( $stateVar eq '1')
{
$ret = "Abgeschlossen";
}
if( $stateVar eq '2')
{
$ret = "am Aufschliessen";
}
if( $stateVar eq '3')
{
$ret = "Aufgeschlossen";
}
if( $stateVar eq '4')
{
$ret = "Am Abschliessen";
}
if( $stateVar eq '5')
{
$ret = "Entriegelt";
}
if( $stateVar eq '6')
{
$ret = "Entriegelt (lock an go)";
}
if( $stateVar eq '7')
{
$ret = "am Aufschliessen";
}
if( $stateVar eq '253')
{
$ret = "Nuki bootet !";
}
if( $stateVar eq '254')
{
$ret = "Motor blockiert !";
}
return $ret;
}
Das ist super. Kann jemand daraus ein MQTT2 Template basteln?
Funktioniert super.
Hat jemand zufällig das homebridgeMapping dafür, damit man das auch über Alexa steuern kann.
Das bekommen ich irgendwie noch nicht hin.
Hier mal mein list:
Internals:
CFGFN
FUUID 6635056a-f33f-db0c-71ca-b59565300d1b5911
IODev myBroker
LASTInputDev myBroker
MSGCNT 758
NAME Nuki_Haustuer_Rene
NR 403
STATE Schloss : Abgeschlossen Batterie : 85
TYPE MQTT2_DEVICE
eventCount 406
myBroker_CONN myBroker_192.168.1.173_61189
myBroker_MSGCNT 758
myBroker_TIME 2024-05-04 11:49:36
READINGS:
2024-05-04 11:49:36 BatteryChargeState 85
2024-05-03 17:40:26 IODev myBroker
2024-05-04 11:49:36 battery ok
2024-05-04 09:41:53 batteryChargeState 85
2024-05-04 09:41:53 batteryCharging false
2024-05-04 09:41:53 batteryCritical false
2024-05-04 11:49:36 batteryPercent 85
2024-05-04 11:42:22 commandResponse 0
2024-05-04 09:41:52 connected true
2024-05-04 09:41:52 deviceType 4
2024-05-04 09:41:53 doorsensorBatteryCritical false
2024-05-04 09:41:53 firmware 4.2.8
2024-05-04 09:41:53 keypadBatteryCritical false
2024-05-04 11:42:16 lockActionEvent 2,172,0,0,0
2024-05-04 09:41:53 mode 2
2024-05-04 09:41:53 name René Haustür
2024-05-04 11:49:36 serverConnected true
2024-05-04 11:42:22 state 1
2024-05-04 11:49:36 timestamp 2024-05-04T09:49:35Z
Attributes:
IODev myBroker
alexaName Türschloss Haustür
alias Türschloss:
event-min-interval battery:3600
event-on-change-reading .*
genericDeviceType lock
group René Haustür
homebridgeMapping homebridgeMapping LockCurrentState=state,values=locked:1;unlocked:3;lock:1;unlock:3
LockTargetState=state,values=locked:1;unlocked:3,cmds=4:lock;2:unlock,cmd=
icon nuki_lock
readingList nuki/placeholder/state:.* state
nuki/placeholder/lockActionEvent:.* lockActionEvent
nuki/placeholder/timestamp:.* timestamp
nuki/placeholder/connected:.* connected
nuki/placeholder/deviceType:.* deviceType
nuki/placeholder/name:.* name
nuki/placeholder/firmware:.* firmware
nuki/placeholder/serverConnected:.* serverConnected
nuki/placeholder/mode:.* mode
nuki/placeholder/doorsensorState:.* doorsensorState
nuki/placeholder/batteryCritical:.* batteryCritical
nuki/placeholder/batteryChargeState:.* batteryChargeState
nuki/placeholder/batteryCharging:.* batteryCharging
nuki/placeholder/keypadBatteryCritical:.* keypadBatteryCritical
nuki/placeholder/doorsensorBatteryCritical:.* doorsensorBatteryCritical
nuki/placeholder/commandResponse:.* commandResponse
room Überwachung und Temp
setList unlock:noArg nuki/placeholder/lockAction 1
lock:noArg nuki/placeholder/lock true
unlatch:noArg nuki/placeholder/lockAction 3
stateFormat { sprintf("Schloss : %s Batterie : %s", getDoorState(ReadingsVal("Nuki_Haustuer_Rene","state",0)), ReadingsVal("Nuki_Haustuer_Rene","batteryChargeState",0)) }
userReadings battery {my $wert = ReadingsVal($name,"batteryCritical",0); ($wert eq "false" ) ? 'ok' : 'low'}, BatteryChargeState { ReadingsVal($name,"batteryChargeState",0) },
batteryPercent {ReadingsVal("Nuki_Haustuer_Rene","BatteryChargeState",0)}
webCmd lock:unlock
Ich habe es in diesem Beitrag gefunden
https://forum.fhem.de/index.php?topic=48558.2025 (https://forum.fhem.de/index.php?topic=48558.2025)
Zitat von: DeeSPe am 08 Februar 2017, 17:56:42Zitat von: Morpheus_1977 am 08 Februar 2017, 17:48:54Hier die list der Nuki-Bridge und des Nuki-Devices
LockCurrentState=lockState,values=/^lock/:SECURED;/^unlock:UNSECUREDLockTargetState=state,values=/^lock/:SECURED;/^unlock:UNSECURED,cmds=SECURED:lock;UNSECURED:unlock
Da fehlt auf alle Fälle schon mal ein Leerzeichen vor TargetState.
Die /^ sind auch unnötig!
LockCurrentState=lockState,values=lock:SECURED;unlock:UNSECURED LockTargetState=LockCurrentState,cmds=SECURED:lock;UNSECURED:unlock
Gruß
Dan
Das funktioniert.
Wäre nur noch einmal interessant wie man unlatch umsetzen könnte.
Ich bin hier -> Forum Link (https://forum.fhem.de/index.php?topic=94494.msg1307358#msg1307358) mal aktiv geworden.
Vielleicht hilft es euch. Bin allerdings mit MQTT2 auch nicht weitergekommen.
Ich kann das Lock so zwar betreiben und es funktioniert auch gut, aber es wäre noch viel mehr möglich.
Leider kann ich kein Template erstellen #notenoughskill
Grüße