[Modul] Nuki Web - Elektronisches Türschloss und Opener mittels Web API

Hallo Uli,

Danke Dir.
War sofort da und funzt auch tadellos.

Gruß
Stephen

1 „Gefällt mir“

Prima!

Viel Spaß mit dem Modul.

Uli

Ich weiß zwar noch nicht genau was ich so damit anstelle aber irgend ein blödsinn wird mir schon einfallen😂

Aber zumindest hab ich schonmal wieder was von zwei in eine App verfrachtet.

Sprechanlage würde noch fehlen,…

Gruß
Stephen

Hallo Ulli,

Sollte hirer nicht zugesperrt stehen?

Gruß
Stephen

Was steht denn auf der Web-Seite bei NUKI für ein Status?

Uli

Bildschirmfoto 2022-09-23 um 22.44.29

Stimmt, da steht zugesperrt. Schaue ich mir nochmal an. Danke für die Info.

Uli

Er hatte den Status das letzte mal um 22:00 Uhr aktualisiert.
Letzte vollständige Aktualisierung 22:00
Nachdem ich auf jetzt aktualisieren geklickt hatte kam auch zugesperrt,…
Hat das evtl was mit dem „Nachtmodus“ zu tun?

Gruß
Stephen

Hey Ulli,

Ich nochmal,…

Es liegt am Nachtmodus.

Energiesparmodus aktiv

Innerhalb des Nachtmodus wird der Energiesparmodus am Smart Lock automatisch aktiviert. Dadurch wird das Intervall, in welchem dein Smart Lock mit der Nuki App kommuniziert, reduziert. Gleichzeitig sparst du somit Energie. Dies kann jedoch zur Folge haben, dass die Statusabfrage über die App in diesem Zeitraum etwas länger dauert.

Du könntest dann noch alternativ den „Alternativen Aktualisierungsintverall“ in der Instanz Konfiguration verwenden.

Uli

Oder das ganze nachts absperren und früh wieder aufsperren über symcon erledigen.

Vielen Dank für dieses Modul.
Ich konnte das 3.0 Pro erfolgreich einbinden.
Ist es irgendwie möglich auch den neuen Door Sensor über die Web API einzubinden bzw. des Status abzufragen?

Viele Grüße
marvus

Hi marvus,

magst du in der Instanzkonfiguration vom SmartLock mal den Türsensor aktivieren?

Uli

1 „Gefällt mir“

Hallo ubittner,
danke das war es. Ich dachte, dass es als eigenständiges Gerät in der Konfig auftaucht. Manchmal kann es so einfach sein :wink:

Hi @ubittner ,
wir bekommen seit einer Woche folgende Fehlermeldung:

atal error: Uncaught TypeError: json_decode() expects parameter 1 to be string, bool given in /mnt/data/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php:112
Stack trace:
#0 /mnt/data/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php(112): json_decode(false)
#1 /mnt/data/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/NukiWebAPI.php(159): NukiSplitterWebAPI->FetchAccessToken()
#2 /mnt/data/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/NukiWebAPI.php(27): NukiSplitterWebAPI->SendDataToNukiWeb('https://api.nuk...', 'GET', '')
#3 /mnt/data/symcon/modules/.store/de.ubittner.nuki.web/Splitter/module.php(124): NukiSplitterWebAPI->GetSmartLock('XXXXXXXXXXX')
#4 /-(3): NukiSplitterWebAPI->ForwardData('{"Data in /mnt/data/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php on line 349

Fatal error: Uncaught TypeError: json_decode() expects parameter 1 to be string, bool given in /mnt/data/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php:349
Stack trace:
#0 /mnt/data/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php(349): json_decode(false, true)
#1 /mnt/data/symcon/scripts/__generated.inc.php(2931): NukiSmartLockWebAPI->GetSmartLockData(true)
#2 /-(3): NUKISLW_GetSmartLockData(39888, true)
#3 {main}
  thrown in /mnt/data/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php on line 349

Hast Du eine Idee?

LG Marcus.

Guten Morgen,

ich habe keine Fehler :smiley:

Gültige Symcon Subskription oder ist die vielleicht abgelaufen?

Es schein so, dass das Ergebnis der Anfrage beim Symcon Server fehlschlägt, bzw. false zurück meldet, damit kann ich dann nichts anfangen.

Kannst du zusätzlich noch einmal den Debug von der Splitter Instanz mitschneiden und mir zusenden.

Ansonsten schlage ich vor Splitter zu löschen, neu anzulegen und erneut zu registrieren.

Uli

Hi Uli,
hoffe Dir gehts gut.

Denkst Du es gibt eine Möglichkeit, die Werte aus dem Protokoll auszuwerten, bzw zu verwenden:

LG Dennis

Hi Dennis,

dann nenne mir doch mal deinen Anwendungsfall, was hast du vor?

Es ist ein Protocol welches in einer String Variable als HTML gespeichert wird.
Dann musst du dir mittels Skript diesen String „zerlegen“ und nachdem suchen, was du benötigst.

Uli

Hi Uli,
ich fang mal anders herum an: Ich wollte gern, immer wenn der Fingerprint verwendet wird, den Doorbird die Klappe an der Haustüre (das gerät das rrrrrr macht) öffnen lassen (sprich Fingerprint ist außen am Gebäude). Leider habe ich noch keine Idee, wie das mit vorhandenen mitteln geht, da ich aktuell keinen Trigger gefunden habe um den Doorbird entsprechend anzusteuern.
Jetzt hab ich gesehen, dass in dem Web-Modul von Dir die Daten der schließung mitkommen, so dachte ich, dass ich aus dem Protokoll heraus den Doorbird ansteuern kann.

Hoffe ich hab mich net zu kompliziert ausgedrückt.

Liebe Grüße
Dennis.

Hi Dennis,

blicke ich noch nicht durch.

  • Welches Gerät nutzt du für den Fingerprint (Hersteller, Bezeichnung)? Ergo, was ist der Trigger?

  • Was soll geschaltet werden? (Hersteller, Bezeichnung)

den Doorbird die Klappe an der Haustüre (das gerät das rrrrrr macht)

Was soll das sein. Oder meinst du NUKI zieht die Falle, bzw. öffnet die Tür?

Uli

Hi Dennis,

ich würde folgendes machen.

Du legst ein Ereignis auf die Protokoll Variable an, welches ein Skript bei Aktualisierung ausführt.

Hier ist das Skript, welches das Protokoll in ein Array umwandelt:

<?php

// Objekt ID von der (string) Variable "Protokoll"
$id = 12345;

// String in array umwandeln
$protocol = GetValueString($id);
$flags = PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY;
$regex = '/(<[a-z0-9=\-:." ^\/]+\/>)|(<[^\/]+>[^<\/]+<\/[a-z0-9]+>)|(<[a-z0-9=\-:." ^\/]+>)/';
$data = preg_split($regex, $protocol, -1, $flags);

// Alle Werte zunächst ausgeben, kann später auskommentiert werden
print_r($data); 

// z.B. steht in $data[16] unser Wert, der geprüft werden soll. 
if (strpos($data[16], 'System') !== false) {
    echo "trifft zu";
    // Code der ausgeführt werden soll hinzufügen
} else {
    echo "trifft nicht zu";
    // Code der ausgeführt werden soll hinzufügen
}

print_r($data); gibt dir erstmal die Werte aus, welche vorhanden sind.

Du musst jetzt den Key identifizieren, den du überprüfen willst. In meinem Fall ist es der Key 16, also $data[16].

Dann musst du noch den Code hinzufügen, der ausgeführt werden soll.

Ist zwar nicht hübsch, war aber schnell und einfach und sollte deine Umsetzung ermöglichen.

Uli

1 „Gefällt mir“