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

Hi Uli,
kam erst heute dazu das auszuprobieren. Das ist echt ein super Workaround. Dankesehr.
Eventuell kann man das ja noch fix ins Modul einbauen. Ich möchte Dir nochmal den Benefit, bzw den Nutzen erklären: Ich möchte, dass wenn das Keypad einen Fingerabdruck erkennt, dass dann ein Relais, also allgemeiner gesagt eine weitere Aktion gestartet wird.

Um Deine oberen Fragen zu beantworten:

Bei einem Doorbird soll ein Relais geschaltet werden, sodass die Haustüre öffnet (Türsummer)

Für den Fingerprint nutze ich das Nuki Keypad 2.0 mit Fingerprint.

Ich hoffe ich konnte Dir die Antworten liefern. Ich versuch mal ob ich hin bekomme was ich will, ansonsten melde ich mich wieder. Aber bisher sieht es klasse aus.

LG Dennis.

Hallo Uli,

ich habe gerade ein Nuki Pro Version 4 eingerichtet und wollte natürlich auch dein schönes Modul in dem Zusammenhang nutzen. Es funktioniert auch insofern, dass ich die Geräte im Splitter im Entwicklerbereich anzeigen lassen kann. Also WLAN und Nuki Web API Aktivierung alles wie von dir beschrieben!

Nur es wird kein Gerät im Konfigurator nach dem Betätigen von ‚Aktualisieren‘ angezeigt.
Kann das evtl. daran liegen, dass als „type“ im Array „4“ zurückgegeben wird?
Und wenn ja, könntest du das evtl. im Modul fixen?

Beste Grüße
Ralf

Guten Morgen Ralf,

du kannst natürlich das Start Lock auf manuell anlegen und die Werte in die Konfiguration eintragen.

Laut NUKI Web-API gibt es folgende Werte:
The type: 0 … keyturner, 1 … box, 2 … opener, 3 … smartdoor, 4 … smartlock3

Da steht jetzt nichts von SmartLock 4.

Welcher „type“ steht denn für dein SmartLock in der Ausgabe von Entwicklerbereich->Geräte anzeigen?

Ansonsten welches System:
Windows, SymBox, Linux, Docker?

Welche Modul-Version? Mal die letzte Beta ausprobiert?

Uli

Hallo Uli,

sorry, ja es kann so einfach sein. Bin jetzt einfach mal auf die Beta:

grafik

gewechselt und der Geräteeintrag ist sofort und automatisch im Konfigurator erschienen.

Auch das Anlegen der Instanz hat dann auf Anhieb geklappt und die Funktionen aus dem Webfront heraus funktionieren auch einwandfrei!

Ich danke dir!

Ein schönes Wochenende noch…

Beste Grüße
Ralf

Hallo Uli,
da man die „Auslöser“ der Nuki-Aktionen nur über das Protokoll nachvollziehen kann, habe ich mal dein Skript ausprobiert. Das hat schon mal etwas geholfen. Danke.

Da ich aber gern die Daten der kompletten Aktion auswerten möchte, habe ich im Internet mal ein bischen gesucht, wie man eine HTML Tabelle zeilenweise zerlegt bekommt:
Ergebnis ist folgendes Skript, das die Tabelle in die einzelnen Aktionen aufteilt.

<?php

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

// String in array umwandeln
$protocol = GetValueString($id);

$DOM = new DOMDocument;
$DOM->loadHTML('<?xml encoding="UTF-8">'.$protocol);
$items = $DOM->getElementsByTagName('tr');
$data = array();
foreach ($items as $node) {
    $elements = $node->childNodes;
    $str = array();
    foreach ($elements as $element) {
        $str[] = $element->nodeValue;
    }
    $data[] = $str;
}
print_r($data);

Damit bekomme ich pro Aktion einen „Datensatz“ entsprechend der Zeile in der Tabelle.
Auffällig ist dabei deine Kopfzeile, die dann 8 Elemente enthält - warscheinlich wegen der vorhandenen Leerzeichen:

<tr> <td><b> Datum</b></td> <td><b>Aktion</b></td> <td><b>Name</b></td> <td><b> Auslöser</b></td> </tr>

    [0] => Array
        (
            [0] =>  
            [1] =>  Datum
            [2] =>  
            [3] => Aktion
            [4] =>  
            [5] => Name
            [6] =>  
            [7] =>  Auslöser
            [8] =>  
        )

    [1] => Array
        (
            [0] => 28.09.2024 16:58:10
            [1] => Entriegeln
            [2] => Rainer
            [3] => Keypad
        )

In der Tabelle selbst fällt das nicht auf (HTML kommt damit wohl zurecht). Ist jetzt nicht weiter dramatisch, da die Elemente im Array ja eine feste Zuordnung haben.

In Datensatz [1] steht dann immer die letzte Aktion als Array zur weiteren Verarbeitung.

Gruß
Rainer

Hallo zusammen
Ich versuche gerade ein Nuki Ultra einzubinden.
Das Schloss ist inzwischen in IP-Symcon es aktualisiert aber nicht … bzw. nur wenn ich ein „Alternatives Aktualisierungsintervall“ interlege … der Webhook ist leer und sieht so aus:
Array
(
[httpCode] => 200
[body] =>
)
LIegt das am Ultra oder ist da etwas schief gelaufen ?
lg Richard

erledigt: Alles nochmal neu gemacht mit der beta (2.04) und schon geht alles :wink:
DANKE !

Ich hätte gedacht das dass Ultra MQTT kann und nicht über die API läuft!

Gerade gesehen es gibt ein Nuki MQTT Modul … damit würde ich im LAN bleiben und könnte den externen Zugriff auf IPS (Passwort entfernen in der .symcon Datei) wieder dektivieren können … richtig ? Sorry … ich bin ganz neu bei IPS :wink:
lg Richard
PS: Oder ist Connect auch für das Nuki Web Modul gar nicht notwendig ?

Voraussetzungen Nuki Web Modul:
Gültige Subskription für den Module Store und Connect Control (ipmagic.de )

Voraussetzungen für das NUKI MQTT Modul:

Uli

Hey Uli

Habe heute mal backup/restore (Syn, Container) getestet… jetzt geht nuki nicht mehr:

Fehler (Siehe unten) … was kann ich tun ?

lg Richard

09.03.2025, 08:47:26 | FlowHandler | Kann Daten nicht zur Instanz #31637 weiterleiten:
Warning:
Warning: file_get_contents(https://oauth.ipmagic.de/access_token/nuki_web): Failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php on line 120

Fatal error: Uncaught TypeError: json_decode(): Argument #1 ($json) must be of type string, false given in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php:122
Stack trace:
#0 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php(122): json_decode(false) …

Läuft der Connect Dienst?

Connect Server reaktiviert?

Ansonsten im Splitter neu registrieren und im Entwicklerbereich die Webhooks anzeigen lassen.

Uli

Alles probiert … auch neu installieren.
es hilft nur entfernen modul /und neu installieren modul ?!?!?
Kann das sein ?
Der Konfigurator zB startet mit folgendem Fehler:

Neuinstallation ist eine Option!

Uli

OK, dann bekommt das Schloss eine neu ID und ich muss die VISU ändern … aber OK :-/

Hey Uli
Heute plötzlich im Log… Werte werden nicht mehr aktualisiert ?!
In der Früh hat es noch funktioniert …
Was kann das sein ??
lg Richard

21.03.2025, 18:31:19 | FlowHandler          | Kann Daten nicht zur Instanz #25978 weiterleiten: 
Warning: 
Warning: file_get_contents(https://oauth.ipmagic.de/access_token/nuki_web): Failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error
 in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php on line 120

Fatal error: Uncaught TypeError: json_decode(): Argument #1 ($json) must be of type string, false given in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php:122
Stack trace:
#0 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php(122): json_decode(false)
#1 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/NukiWebAPI.php(171): NukiSplitterWebAPI->FetchAccessToken()
#2 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/NukiWebAPI.php(29): NukiSplitterWebAPI->SendDataToNukiWeb('https://api.nuk...', 'GET', '')
#3 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/module.php(133): NukiSplitterWebAPI->GetSmartLock('xxxxxxxx')
#4 /-(3): NukiSplitterWebAPI->ForwardData('{"DataID":"{7F9...')
#5 {main}
  thrown in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php on line 122
 in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php on line 367

Fatal error: Uncaught TypeError: json_decode(): Argument #1 ($json) must be of type string, false given in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php:367
Stack trace:
#0 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php(367): json_decode(false, true)
#1 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php(341): NukiSmartLockWebAPI->GetSmartLockData(true)
#2 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php(290): NukiSmartLockWebAPI->UpdateData()
#3 /-(3): NukiSmartLockWebAPI->ReceiveData('{"DataID":"{6BD...')
#4 {main}
  thrown in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php on line 367

Im Konfigurator wieder der gleiche Fehler:

Konnte Konfigurationsform nicht laden
Warning: 
Warning: file_get_contents(https://oauth.ipmagic.de/access_token/nuki_web): Failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error
 in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php on line 120

Fatal error: Uncaught TypeError: json_decode(): Argument #1 ($json) must be of type string, false given in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php:122
Stack trace:
#0 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php(122): json_decode(false)
#1 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/NukiWebAPI.php(171): NukiSplitterWebAPI->FetchAccessToken()
#2 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/NukiWebAPI.php(15): NukiSplitterWebAPI->SendDataToNukiWeb('https://api.nuk...', 'GET', '')
#3 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/module.php(128): NukiSplitterWebAPI->GetSmartLocks()
#4 /-(3): NukiSplitterWebAPI->ForwardData('{"DataID":"

Beim neuerlichen Registrierversuch kommt:

Warning: file_get_contents(https://oauth.ipmagic.de/access_token/nuki_web): Failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php on line 78 Fatal error: Uncaught TypeError: json_decode(): Argument #1 ($json) must be of type string, false given in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php:80 Stack trace: #0 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php(80): json_decode(false) #1 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php(49): NukiSplitterWebAPI->FetchRefreshToken('ory_ac_muTXKGIS...') #2 /-(3): NukiSplitterWebAPI->ProcessOAuthData() #3 /-(4): OAuthInstance->ProcessOAuthData() #4 {main} thrown in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php on line 80

Testing oder Beta?

Bei Testing gehe bitte zurück auf Beta

Bin auf Beta … bei Nuki habe ich gar keinen Zugriff auf einen Testkanal :wink:
Das war schon einmal, vor 12 Tagen, jetzt wieder … habe diesmal nichts gemacht, in der Früh um 10h02 letztes Update … dann Heim gekommen, jetzt der Fehler.

KernelMT meldet auch:

21.03.2025, 18:43:04 | KernelMT             | InstanzManager: Fehler bei Instanz #25978, Meldung IPS_KERNELSTARTED: 
Warning: 
Warning: file_get_contents(https://oauth.ipmagic.de/access_token/nuki_web): Failed to open stream: HTTP request failed! HTTP/1.1 429 Too Many Requests
 in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php on line 120

Fatal error: Uncaught TypeError: json_decode(): Argument #1 ($json) must be of type string, false given in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php:122
Stack trace:
#0 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php(122): json_decode(false)
#1 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/NukiWebAPI.php(171): NukiSplitterWebAPI->FetchAccessToken()
#2 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/NukiWebAPI.php(29): NukiSplitterWebAPI->SendDataToNukiWeb('https://api.nuk...', 'GET', '')
#3 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/module.php(133): NukiSplitterWebAPI->GetSmartLock('xxxxxxx')
#4 /-(3): NukiSplitterWebAPI->ForwardData('{"DataID":"{7F9...')
#5 {main}
  thrown in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/Splitter/helper/webOAuth.php on line 122
 in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php on line 367

Fatal error: Uncaught TypeError: json_decode(): Argument #1 ($json) must be of type string, false given in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php:367
Stack trace:
#0 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php(367): json_decode(false, true)
#1 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php(341): NukiSmartLockWebAPI->GetSmartLockData(true)
#2 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php(228): NukiSmartLockWebAPI->UpdateData()
#3 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php(683): NukiSmartLockWebAPI->ApplyChanges()
#4 /var/lib/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php(243): NukiSmartLockWebAPI->KernelReady()
#5 /-(3): NukiSmartLockWebAPI->MessageSink(0, 0, 10001, Array)
#6 {main}
  thrown in /var/lib/symcon/modules/.store/de.ubittner.nuki.web/SmartLock/module.php on line 367

Guten Morgen,

erstmal Danke für‘s melden.

Beim NUKI Web Modul wird die Kommunikation über einen Server der Symcon GmbH mit den Nuki Servern genutzt.

Du hast eine Anfrage gestellt, aber keine Antwort bekommen.

Dies muss ich bei Gelegenheit noch einmal untersuchen und ändern, dass kein Fehler geworfen wird.

Ich vermute, dass einer der Server nicht erreichbar war…. Wartungsarbeiten, DNS Problem oder dein Internet war kurz weg….

Wie ist die aktuelle Situation? Geht es wieder?

Uli