Habe das selbe Problem - Der Token bezieht sich ja auf die Bridge, die Schlösser werden durch die Geräte ID unterschieden. Wäre dankbar für `ne Lösung
Nuki Callback nutzen
Moderator: Co-Administratoren
-
- Beiträge: 11
- Registriert: 06.08.2017, 15:17
- Hat sich bedankt: 7 Mal
Re: Nuki Callback nutzen
-
- Beiträge: 176
- Registriert: 29.03.2011, 10:35
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 13 Mal
Re: Nuki Callback nutzen
Man könnte das gewünschte Nuki direkt abfragen, würde ich aber nicht machen, da dann die Batterie mehr belastet wird.Dazu müsste man /lockState abfragen. Welches Nuki man abfragt muss man dann über Callback Antwort abfragen, zB in einem N1 (statt "tttop" ) eintragen, im anderen N2. Basierend darauf wie zuerst geschrieben halt das richtige Nuki abfragen
Wenn man bei der jetztigen Methode bleibt:
In der letzten API Doc https://developer.nuki.io/uploads/short ... bRG9Fm.pdf steht unter LIST, dass eine Antwort mit NukiID gegeben wird.
Dann macht das Ganze etwas komplizierter, weil man das Script zum Auslesen der States ändern muss, sonst wird halt immer nur der erste State ausgelesen.
Wenn man bei der jetztigen Methode bleibt:
In der letzten API Doc https://developer.nuki.io/uploads/short ... bRG9Fm.pdf steht unter LIST, dass eine Antwort mit NukiID gegeben wird.
Dann macht das Ganze etwas komplizierter, weil man das Script zum Auslesen der States ändern muss, sonst wird halt immer nur der erste State ausgelesen.
-
- Beiträge: 11
- Registriert: 06.08.2017, 15:17
- Hat sich bedankt: 7 Mal
-
- Beiträge: 176
- Registriert: 29.03.2011, 10:35
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 13 Mal
Re: Nuki Callback nutzen
Mit der unten leicht geänderten Find Funktion wird explizit nach dem Lockstate, z.B. "state": 1, gesucht. Einzelne "state" werden nicht erfasst. Der Ausdruck \" sucht nach " in der /List Antwort vom Nuki, damit sucht das Find nach "state":
anfang muss auf 9 inkrementiert werden
Man muss mal probieren, wie man ab einem ersten gefundenen "state: " weitersuchen kann, bis man das nächste findet. Das wäre dann das zweite Nuki. Vielleicht hat ja einer ne Idee, ich habe heute keine Zeit mehr, Tatort fängt an
anfang muss auf 9 inkrementiert werden
Code: Alles auswählen
string stdout;
string stderr;
integer anfang;
integer ende;
integer i;
string url="http://192.168.178.44:8080/list?token=uhpUKs";
system.Exec("wget -q -O - " # url, &stdout, &stderr);
WriteLine(stdout);
anfang=stdout.Find("\"state\":");
anfang=anfang+9;
i=stdout.Substr(anfang,1);
WriteLine(i);
dom.GetObject("NukiLockstate").State(i);
-
- Beiträge: 46
- Registriert: 17.01.2020, 09:04
- System: CCU
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 3 Mal
Re: Nuki Callback nutzen
Hallo zusammen,
ich habe die Idee von @Kalanthes mal aufgegriffen und mit den Grundsätzen von @ueffchen umgesetzt.
Leider war der Code an mancher Stelle nicht richtig was zur Fehlfunktion führte. Außerdem waren die Namen nicht in deutsch.
Hab's für meine Bedürfnisse angepasst und teile ihn hier gerne mit euch:
Viel Spaß - bei mir funktionierts nun ... Danke an alle aktiv teilnehmenden!
Das einzige was mich nun etwas nervt sind die 10 Sekunden delay .... ich finde die Redmatic Lösung ja ganz charmant, allerdings hab ich das bislang nicht im Einsatz.
Hintergrund ist: Ich würde gerne ein Licht anschalten, wenn die Haustür geöffnet wird.
ich habe die Idee von @Kalanthes mal aufgegriffen und mit den Grundsätzen von @ueffchen umgesetzt.
Leider war der Code an mancher Stelle nicht richtig was zur Fehlfunktion führte. Außerdem waren die Namen nicht in deutsch.
Hab's für meine Bedürfnisse angepasst und teile ihn hier gerne mit euch:
Code: Alles auswählen
string stdout;
string stderr;
integer anfang_state;
integer ende_state;
integer state;
integer anfang_battery_crit;
integer ende_battery_crit;
integer battery_crit;
integer anfang_battery;
integer ende_battery;
integer battery;
integer anfang_doorsensor;
integer ende_doorsensor;
integer doorsensor;
string url="http://BRIDGE_IP:8080/list?token=TOKEN";
system.Exec("wget -q -O - " # url, &stdout, &stderr);
WriteLine(stdout);
! Türstatus abrufen
anfang_state=stdout.Find("state");
anfang_state=anfang_state+8;
ende_state=anfang_state+1;
state=stdout.Substr(anfang_state,1);
WriteLine(state);
dom.GetObject("Nuki_State").State(state);
! BatterieKritisch abrufen
anfang_battery_crit=stdout.Find("batteryCritical");
anfang_battery_crit=anfang_battery_crit+18;
ende_battery_crit=anfang_battery_crit+1;
battery_crit=stdout.Substr(anfang_battery_crit,5);
WriteLine(battery_crit);
dom.GetObject("Nuki_Batterie_Kritisch").State(battery_crit);
! Batteriestatus abrufen
anfang_battery=stdout.Find("batteryChargeState");
anfang_battery=anfang_battery+21;
ende_battery=anfang_battery+1;
battery=stdout.Substr(anfang_battery,2);
WriteLine(battery);
dom.GetObject("Nuki_Batterie").State(battery);
! Doorsensor abrufen
anfang_doorsensor=stdout.Find("doorsensorState");
anfang_doorsensor=anfang_doorsensor+18;
ende_doorsensor=anfang_doorsensor+1;
doorsensor=stdout.Substr(anfang_doorsensor,1);
WriteLine(doorsensor);
dom.GetObject("Nuki_Doorsensor").State(doorsensor);
! dekodieren der Lock States
if ( state== 0 ) {dom.GetObject("Nuki_StateName").State("Nicht kalibriert") }
if ( state== 1 ) {dom.GetObject("Nuki_StateName").State("zugesperrt") }
if ( state== 2 ) {dom.GetObject("Nuki_StateName").State("aufsperren") }
if ( state== 3 ) {dom.GetObject("Nuki_StateName").State("aufgesperrt") }
if ( state== 4 ) {dom.GetObject("Nuki_StateName").State("zusperren") }
if ( state== 5 ) {dom.GetObject("Nuki_StateName").State("entriegelt") }
if ( state== 6 ) {dom.GetObject("Nuki_StateName").State("aufgesperrt (lock n go)") }
if ( state== 7 ) {dom.GetObject("Nuki_StateName").State("Entriegelung") }
if ( state== 254 ) {dom.GetObject("Nuki_StateName").State("Motor blockiert") }
if ( state== 255 ) {dom.GetObject("Nuki_StateName").State("undefiniert") }
! dekodieren der Doorsensor States
if ( doorsensor== 1 ) {dom.GetObject("Nuki_DoorsensorName").State("Deaktiviert") }
if ( doorsensor== 2 ) {dom.GetObject("Nuki_DoorsensorName").State("Haustuer geschlossen") }
if ( doorsensor== 3 ) {dom.GetObject("Nuki_DoorsensorName").State("Haustuer offen") }
if ( doorsensor== 4 ) {dom.GetObject("Nuki_DoorsensorName").State("unbekannter Status") }
if ( doorsensor== 5 ) {dom.GetObject("Nuki_DoorsensorName").State("Kalibrierung") }
Das einzige was mich nun etwas nervt sind die 10 Sekunden delay .... ich finde die Redmatic Lösung ja ganz charmant, allerdings hab ich das bislang nicht im Einsatz.
Hintergrund ist: Ich würde gerne ein Licht anschalten, wenn die Haustür geöffnet wird.
-
- Beiträge: 176
- Registriert: 29.03.2011, 10:35
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 13 Mal
Re: Nuki Callback nutzen
Die Latenz ist bei Redmatic definitiv nicht niedriger.
Ich habe eben mal handgestoppt, sind ungefähr 14 Sekunden.
Die redmatic URL liegt allerdings an zweiter Stelle im Nuki, vielleicht fängt man sich darüber Verzögerung ein.
Beim Nuki denke ich kommt der Hauptteil der Verzögerung vom Nuki selber.
Generell ist Redmatic aber nicht echtzeitfähig. Das sehe ich auch bei Licht: wenn ich zB ein Licht einschalte, weil ein anderes angegangen ist, dann sin das 3-4 Sekunden Verzögerung.
Dafür ist Redmatic sehr einfach zu "programmieren".
Zu deinem Fall: Licht an bei Tür auf: da wir Auto-Unlock benutzen, würde die Verzögerung gar nicht so sehr stören, da das Nuki i.d.R öffnet bevor man an der Tür ist.
Ich habe eben mal handgestoppt, sind ungefähr 14 Sekunden.
Die redmatic URL liegt allerdings an zweiter Stelle im Nuki, vielleicht fängt man sich darüber Verzögerung ein.
Beim Nuki denke ich kommt der Hauptteil der Verzögerung vom Nuki selber.
Generell ist Redmatic aber nicht echtzeitfähig. Das sehe ich auch bei Licht: wenn ich zB ein Licht einschalte, weil ein anderes angegangen ist, dann sin das 3-4 Sekunden Verzögerung.
Dafür ist Redmatic sehr einfach zu "programmieren".
Zu deinem Fall: Licht an bei Tür auf: da wir Auto-Unlock benutzen, würde die Verzögerung gar nicht so sehr stören, da das Nuki i.d.R öffnet bevor man an der Tür ist.
-
- Beiträge: 46
- Registriert: 17.01.2020, 09:04
- System: CCU
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 3 Mal
Re: Nuki Callback nutzen
ok, dann belass ich das so über die Homematic.
Ich hab eher den anderen Fall, dass ich das Außenlicht (nachts) anmachen möchte, wenn die Tür aufgeht und man rausgeht.
in der Diele ist ein Präsenzmelder
Ich hab eher den anderen Fall, dass ich das Außenlicht (nachts) anmachen möchte, wenn die Tür aufgeht und man rausgeht.
in der Diele ist ein Präsenzmelder
-
- Beiträge: 176
- Registriert: 29.03.2011, 10:35
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 13 Mal
Re: Nuki Callback nutzen
Hi
da wirst Du nicht umhin kommen einen Bewegungsmelder für aussen zu installieren, alles andere geht nicht in Echtzeit. Entweder integriert in die Lampe oder die batteriebetriebenen Melder von HM, da find ich den Vorteil dass sie programmierbar sind und sich beliebig platzieren lassen
VG
da wirst Du nicht umhin kommen einen Bewegungsmelder für aussen zu installieren, alles andere geht nicht in Echtzeit. Entweder integriert in die Lampe oder die batteriebetriebenen Melder von HM, da find ich den Vorteil dass sie programmierbar sind und sich beliebig platzieren lassen
VG