NEWS
Skript 2 x Nuki Synchronisieren über MQTT
-
Frohes neues Liebe Logiker !
Ich würde Hilfe bei folgender Automation benötigen:Ich habe 2 Nukkis,
eins an einem Panzerriegel, eins am Normalen Türschloss.
( Am nukki vom Riegel ist der Fingerprintsensor gekoppelt )Da die Datenpunkte vom Fingerprintsensor leider nicht Verfügbar sind sondern fest mit einem Nukki gekoppelt sein müssen,
und von Sensor ebenso kein Status abgefragt werden kann.Habe ich mir nun überlegt das nicht gekoppelte schloss über MQTT zu Synchronisieren.
Die Nukkis haben hierfür 2 relevante Datenpunkte :
1 x Status{ "_id": "mqtt.0.nuki.4121ADE4.state", "common": { "name": "nuki/4121ADE4/state", "write": true, "read": true, "role": "variable", "desc": "mqtt server variable", "type": "number" }, "native": { "topic": "nuki/4121ADE4/state" }, "type": "state", "from": "system.adapter.mqtt.0", "user": "system.user.admin", "ts": 1735826963369, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } ```1 x Look Aktion
"_id": "mqtt.0.nuki.4121A1FC.lockAction", "common": { "name": "nuki/4121A1FC/lockAction", "write": true, "read": true, "role": "variable", "desc": "mqtt server variable", "type": "string" }, "native": { "topic": "nuki/4121A1FC/lockAction" }, "type": "state", "from": "system.adapter.mqtt.0", "user": "system.user.admin", "ts": 1727557358865, "acl": { "object": 1636, "state": 1636, "file": 1632, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }
Der Riegel hat keinen Türschnapper und hat folgendes Regelwerk :
Look Aktion 1 = 3 Status Offen
Look Aktion 2 = 1 Status Geschlossen
Das Nukki am normalen Türschloss hast
Look Aktion 2 = 1 Status Geschlossen
Look Aktion 3 = 3 Status offen ( Mit Schnapper zusätzlich )
Das Skript müsste denke ich wie folgt aus sehen :
Geht der Status von Nukki ( Riegel ) auf "3 Status Offen"
Soll
Soll die Look Aktion bei Nukki ( Schloss ) auf " 3 "Weiter
Geht der Status von Nukki ( Riegel ) auf "1 Status geschlossen"
Soll
Soll die Look Aktion bei Nukki ( Schloss ) auf " 2 "Puh
Gerne auch bessere Lösungsansätze geht schließlich um die Wohnungstür.
Ich hoffe es hat jemand Lust mir das Skript zu basteln.Grüße
Balu -
@balu-0
Habe es mal geschaft einigermaßen zu laufen zu bringen.
Allerdings ist jetzt das Problem wenn der Riegel bereits offen ist sperrt der Schnapper bei Betätigung des Sensors nicht.Wenn ich das auf aktualisieren stelle geht die Tür von alleine wieder auf.
Hat wer ne Idee ?
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on" id="bY8|tROmpf^gtcR-U1ox" x="12" y="137"> <field name="OID">mqtt.0.nuki.4121ADE4.state</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="lZrqULlpB`kOtUN!NOOA"> <value name="IF0"> <block type="logic_compare" id="6:Dp]OVGv:-m6mr6P[om"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="y#.u,h;m8?+IwJADLQ,T"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="3jpJFwYgbk+k*dETycrk"> <field name="NUM">3</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="#+9m,$`QFZ)K;D3/A9e,"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">mqtt.0.nuki.4121A1FC.lockAction</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="STl1eT;ZQ9nKO-s5RZ`e"> <field name="NUM">3</field> </block> </value> </block> </statement> </block> </statement> </block> <block type="on" id="JGcN|nL4(YSgijF^0v7s" x="12" y="387"> <field name="OID">mqtt.0.nuki.4121ADE4.state</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="fye5!B3vF;NgXz!QS=??"> <value name="IF0"> <block type="logic_compare" id="h??L?t?B#!!9L*Y:)~:!"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="u]qx]-2($r_=VIS^3B~L"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="nR;/Kl-I6KdxlP#q{TPl"> <field name="NUM">1</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="_UnoPR`Cm?L+^petSr5_"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">mqtt.0.nuki.4121A1FC.lockAction</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="v{X}AqIJFr$JiK:+4Gre"> <field name="NUM">2</field> </block> </value> </block> </statement> </block> </statement> </block> </xml>
Edit :
@balu-0 said in Skript 2 x Nukki Synchronisieren über MQTT:Wenn ich das auf aktualisieren stelle geht die Tür von alleine wieder auf.
Die Aktualisierung scheint der Türsensor auszulösen.
-
@balu-0 sagte: Hat wer ne Idee ?
Zeige bitte die Objektdaten von "lockAction" in Codetags und teile mit, welche Werte der DP annehmen kann.
Es soll der "state" des einen Nuki den "lockAction" des anderen Nuki steuern?
-
"Es soll der "state" des einen Nuki den "lockAction" des anderen Nuki steuern?"
JaZeige bitte die Objektdaten von "lockAction" in Codetags und teile mit, welche Werte der DP annehmen kann.
die hier oder nicht ?
{ "_id": "mqtt.0.nuki.4121ADE4.state", "common": { "name": "nuki/4121ADE4/state", "write": true, "read": true, "role": "variable", "desc": "mqtt server variable", "type": "number" }, "native": { "topic": "nuki/4121ADE4/state" }, "type": "state", "from": "system.adapter.mqtt.0", "user": "system.user.admin", "ts": 1735826963369, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } ```1 x Look Aktion
{ "_id": "mqtt.0.nuki.4121ADE4.lock", "common": { "name": "nuki/4121ADE4/lock", "write": true, "read": true, "role": "variable", "desc": "mqtt server variable", "type": "string" }, "native": { "topic": "nuki/4121ADE4/lock" }, "type": "state", "from": "system.adapter.mqtt.0", "user": "system.user.admin", "ts": 1735826962646, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
-
@balu-0 sagte: die hier oder nicht ?
Nicht "lock", sondern "lockAction"!
-
Ah hatte den falschen punkt drin : tausch ich oben auch aus ...
"_id": "mqtt.0.nuki.4121A1FC.lockAction", "common": { "name": "nuki/4121A1FC/lockAction", "write": true, "read": true, "role": "variable", "desc": "mqtt server variable", "type": "string" }, "native": { "topic": "nuki/4121A1FC/lockAction" }, "type": "state", "from": "system.adapter.mqtt.0", "user": "system.user.admin", "ts": 1727557358865, "acl": { "object": 1636, "state": 1636, "file": 1632, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }
-
@balu-0
Der ist vom Typ "string". Dann versuche es mal so: -
@paul53
Jetzt funktioniert es ohne die Fehler mit der Aktualisierung jedoch wenn
der "Riegel" bereits auf offen steht wird die Öffnung vom normalen schloss nicht mehr ausgelöst.
löst evtl. der Finger Sensor nicht mehr aus wenn der riegel nukki bereits auf offen steht ? -
@balu-0 sagte: löst evtl. der Finger Sensor nicht mehr aus wenn der riegel nukki bereits auf offen steht ?
Ich habe von Nuki keine Ahnung.
-
@paul53 said in Skript 2 x Nukki Synchronisieren über MQTT:
@balu-0 sagte: löst evtl. der Finger Sensor nicht mehr aus wenn der Riegel nukki bereits auf offen steht ?
besser gefragt : wird der Datenpunkt nicht mehr aktualisiert wenn er bereits einmal aktualiesiert wurde und auf dem status steht ?
-
@paul53
Lieber Paul,
ich hoffe ich habe nochmal deine Aufmerksamkeit.Stelle ich dein Skript um auf "wurde Aktualisiert" statt auf " Wurde geändert",
so funktioniert das öffnen über alle Möglichkeiten ( app sensor ) wie gewünscht.
Allerdings wird hier bei jeder Aktualisierung abgeglichen und ausgelöst.
Also auch bei eben beispielsweise dem Sensor.Ich bin nun auf diesen Event log aufmerksam geworden.
"_id": "mqtt.0.nuki.4121ADE4.lockActionEvent", "common": { "name": "nuki/4121ADE4/lockActionEvent", "write": true, "read": true, "role": "variable", "desc": "mqtt server variable", "type": "string" }, "native": { "topic": "nuki/4121ADE4/lockActionEvent" }, "type": "state", "from": "system.adapter.mqtt.0", "user": "system.user.admin", "ts": 1735827094125, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator"
捾 wenn durch den Türsensor geöffnet
wenn durch die App geöffnet
捾 wiederum wenn durch den Fingerprint geöffnet wird.Nehmen wir mal an ich würde auf den Türsensor verzichten, bzw ihn an das Andere Nukki koppeln.
Könnten wir dann die syncroniesierung bei status offen, an diesen : 捾 Eventlock binden ?Also so das die Tür im offenen zustand durch keine andere Aktualisierung ausgelöst werden kann.?
-
@balu-0 sagte: Event log aufmerksam geworden.
Ich habe keine Ahnung, wie man chinesischen Text auswertet.
Helfen kann dir sicherlich jemand, der das Verhalten der Nuki-Datenpunkte kennt. -
@balu-0 sagte in Skript 2 x Nukki Synchronisieren über MQTT:
Ich bin nun auf diesen Event log aufmerksam geworden.
捾 wenn durch den Türsensor geöffnet
wenn durch die App geöffnet
捾 wiederum wenn durch den Fingerprint geöffnet wird.Du musst den Datenpunkt von Text nach HEX umwandeln und dann einen Teil davon in eine Zahl, dann kannst du damit arbeiten. Ich mache das um ein Protokoll zu führen und das Blockly sieht so aus:
In der Funktion muss folgendes stehen:
-
@dr-bakterius
Super Danke !
weißt du zufällig was alles eine Aktualisierung am Lock State auslöst ?Nachdem ich den Tür Sensor jetzt auf das andere nukki gelegt habe, habe ich keine ungewollte Aktualisierung mehr.
Ich probiere mal ob ich so weitekomme,
is schon sau dumm wenn die tür aufgeht@paul53
Danke dir !! -
@dr-bakterius
sorry,
wie funktionierte dieses wandeln ? -
@balu-0 sagte in Skript 2 x Nukki Synchronisieren über MQTT:
weißt du zufällig was alles eine Aktualisierung am Lock State auslöst ?
Nein, einfach probieren.
wie funktionierte dieses wandeln ?
Ist doch alles oben zu sehen. Musst du nur nachbauen. Ist da etwas unklar?
-
@dr-bakterius said in Skript 2 x Nukki Synchronisieren über MQTT:
weißt du zufällig was alles eine Aktualisierung am Lock State auslöst ?
Nein, einfach probieren.
Ja hab ich, es gibt aber immer Sachen die Mann nicht auf dem schirm hat.
Getestet habe ich mit positiver Rückmeldung:
Nukki Türsensor, nukki fingerprint, Nukki Taste am Nukki selber, Nukki App.
Ohne Rückmeldung:
Pi unerwartet vom Strom, io Skript neu gestartet.Ist doch alles oben zu sehen. Musst du nur nachbauen. Ist da etwas unklar?
Nachgebaut habe ich ich denke da unten sollte dann der Log kommen oder ?
Womit ich nichts anfangen kann ist dieser teil :
Dieser Schritt fehlt mir noch denke ich.
Ich weiß bei mir braucht Mann manchmal nerven aus stahl,
Ich tue mir mit programmieren wirklich unglaublich schwer -
-
falls jemand die Konstruktion interessiert:
1 : Opener
2 : Nukki am schloss
3 : Nukki am Panzerriegel.
4. Nukki Fingerprint aussen an der Tür -
@balu-0 sagte in Skript 2 x Nukki Synchronisieren über MQTT:
Log kommt aber noch keiner...
Kann auch nicht funktionieren. In deiner 'Falls'-Routine prüfst du auf die Variable 'Text'. Die beinhaltet aber den ursprünglichen Inhalt des Datenpunktes. Du musst die Variable 'Zahl' prüfen. So wie in meinem Beispiel oben.
BTW: Nuki schreibt sich mit nur einem 'k' und korrekte Groß- und Kleinschreibung vereinfacht das Lesen. Die meisten Browser haben ohnehin schon eine Rechtschreibprüfung eingebaut, die vermeintliche Fehler kennzeichnet und eine Korrektur anbietet. Nur so als Tipp.