Nuki Callback nutzen

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Benutzeravatar
Henke
Beiträge: 1498
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 133 Mal
Danksagung erhalten: 302 Mal

Re: Nuki Callback nutzen

Beitrag von Henke » 27.03.2023, 20:15

Hat ja funktioniert...
Tja, jetzt wohl nicht mehr, daher die Fehlersuche. Das hat mal kannst du vergessen. Die ID hat sich geändert, also wurde die Variable neu angelegt.

Wenn ich im Browser die Zeile eingebe, kommt bei einer gültigen Variablen und geändertem Zeitstempel:

Code: Alles auswählen

<xml>
<exec>/nuki.exe</exec>
<sessionId/>
<httpUserAgent>
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0
</httpUserAgent>
<sagt>true</sagt>
</xml>

WAdler 68
Beiträge: 1424
Registriert: 09.11.2008, 16:29
Hat sich bedankt: 2 Mal

Re: Nuki Callback nutzen

Beitrag von WAdler 68 » 28.03.2023, 16:08

<xml>
<exec>/nuki.exe</exec>
<sessionId/>
<httpUserAgent>
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0
</httpUserAgent>
<sagt>true</sagt>
</xml>
Gefunden. Sieht aus wie bei dir. Ich muss mich aber beim Aufruf immer erst noch anmelden.

WAdler 68
Beiträge: 1424
Registriert: 09.11.2008, 16:29
Hat sich bedankt: 2 Mal

Re: Nuki Callback nutzen

Beitrag von WAdler 68 » 28.03.2023, 16:58

mein Fehler.JPG
Ich habe den Übeltäter gefunden. Doch ich möchte ihn nicht entfernen. Kann ich den Callback so anpassen, das ich mich Autorisiere? Wie geht das?

Benutzeravatar
Henke
Beiträge: 1498
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 133 Mal
Danksagung erhalten: 302 Mal

Re: Nuki Callback nutzen

Beitrag von Henke » 28.03.2023, 18:45

http://username:password@xxx.xxx.xxx.xx ... .exe?sagt=(dom.GetObject('NukiCallback').State('tttop'))

testen.

Edit: Doppeltes http:// entfernt
Zuletzt geändert von Henke am 28.03.2023, 20:24, insgesamt 2-mal geändert.

mademyday
Beiträge: 268
Registriert: 03.10.2014, 12:46
System: CCU
Wohnort: Enzkreis
Hat sich bedankt: 3 Mal
Danksagung erhalten: 43 Mal

Re: Nuki Callback nutzen

Beitrag von mademyday » 28.03.2023, 19:00

Henke hat geschrieben:
28.03.2023, 18:45
http://username:password@http://xxx.xxx.xxx.xxx:8181/nuki.exe?sagt=(dom.GetObject('NukiCallback').State('tttop'))
das http:// ist hier doppelt, das ist wohl zu gut gemeint :)

WAdler 68
Beiträge: 1424
Registriert: 09.11.2008, 16:29
Hat sich bedankt: 2 Mal

Re: Nuki Callback nutzen

Beitrag von WAdler 68 » 29.03.2023, 15:06

Das Anmelden schein nun zu funktionieren. Danke! nur löst das Callback nicht mehr aus.
<xml>
<exec>/nuki.exe</exec>
<sessionId/>
<httpUserAgent>
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0
</httpUserAgent>
<sagt>true</sagt>
</xml>
das geht und da kommt auch eine Meldung um Protokoll. Nur von meiner Tür direckt kommt kein Spruch.

Chemieka
Beiträge: 649
Registriert: 03.01.2017, 17:39
Hat sich bedankt: 4 Mal
Danksagung erhalten: 9 Mal

Re: Nuki Callback nutzen

Beitrag von Chemieka » 13.07.2023, 18:18

Hallo, hatte auch die Anleitung umgesetzt und läuft gut. Jetzt fällt mir auf, dass der Batterie Status nicht mehr in die Variable geschrieben wird. Ging aber definitiv mal. Das Skript spuckt auch den Batteriewert aus. Wird nur nicht mehr in die Variable geschrieben. Erkenne den Fehler leider nicht?

Code: Alles auswählen

string stdout;
string stderr;

integer anfang_state;
integer ende_state;
integer state;

integer anfang_battery;
integer ende_battery;
integer battery;

integer anfang_battery_crit;
integer ende_battery_crit;
integer battery_crit;


string url="http://192.168.1.94:8080/list?token=xxxxx";

system.Exec("wget -q -O - " # url, &stdout, &stderr);
WriteLine(stdout);


state=stdout.Substr(anfang_state,1);
WriteLine(state);
dom.GetObject("Nuki_State").State(state);

! 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);

! Batteriestatus abrufen
anfang_battery=stdout.Find("batteryChargeState");
anfang_battery=anfang_battery+21;
ende_battery=anfang_battery+1;
battery=stdout.Substr(anfang_battery,3);
WriteLine(battery);
dom.GetObject("Nuki_Batterie").State(battery);


! 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);


! dekodieren der Lock States
if ( state == 0 ) {dom.GetObject("Nuki_StateName").State("uncalibrated") }
if ( state == 1 ) {dom.GetObject("Nuki_StateName").State("locked") }
if ( state == 2 ) {dom.GetObject("Nuki_StateName").State("unlocking") }
if ( state == 3 ) {dom.GetObject("Nuki_StateName").State("unlocked") }
if ( state == 4 ) {dom.GetObject("Nuki_StateName").State("locking") }
if ( state == 5 ) {dom.GetObject("Nuki_StateName").State("unlatched") }
if ( state == 6 ) {dom.GetObject("Nuki_StateName").State("unlocked (lock n go)") }
if ( state == 7 ) {dom.GetObject("Nuki_StateName").State("unlatching") }
if ( state == 254 ) {dom.GetObject("Nuki_StateName").State("motor blocked") } 
if ( state == 255 ) {dom.GetObject("Nuki_StateName").State("undefined") } 

Code: Alles auswählen

[{"deviceType": 4, "nukiId": xxxxx, "name": "Nuki", "firmwareVersion": "3.6.9", "lastKnownState": {"mode": 2, "state": 3, "stateName": "unlocked", "batteryCritical": false, "batteryCharging": false, "batteryChargeState": 58, "keypadBatteryCritical": false, "timestamp": "2023-07-13T14:13:13+00:00"}}]
[
3
58,
false
Screenshot 2023-07-13 181801.jpg
Soeben auch die Variable nochmal neu angelegt. Sie wird dennoch nicht beschrieben.
PI3+ mit RaspberryMatic; PI4 mit IOBroker; Samsung Tab A mit Mediola Visualisierung; Harmony Hub; Philips Hue; Drei IP Cams; Zwei Leseköpfe an den Stromzählern; Reedkontakt (Arduino) am Wasserzähler; Drucksensor (Arduino); CUL433 für Intertechno und Somfy RTS; Nuki Bridge

Benutzeravatar
Henke
Beiträge: 1498
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 133 Mal
Danksagung erhalten: 302 Mal

Re: Nuki Callback nutzen

Beitrag von Henke » 13.07.2023, 19:13

"58," ist keine Zahl

dom.GetObject("Nuki_Batterie").State(battery.ToInteger());
Sollte das Problem lösen.

Chemieka
Beiträge: 649
Registriert: 03.01.2017, 17:39
Hat sich bedankt: 4 Mal
Danksagung erhalten: 9 Mal

Re: Nuki Callback nutzen

Beitrag von Chemieka » 13.07.2023, 21:25

Hatte ich hier irgendwo übernommen. Aber Ja der Fehler ist behoben. Danke.
PI3+ mit RaspberryMatic; PI4 mit IOBroker; Samsung Tab A mit Mediola Visualisierung; Harmony Hub; Philips Hue; Drei IP Cams; Zwei Leseköpfe an den Stromzählern; Reedkontakt (Arduino) am Wasserzähler; Drucksensor (Arduino); CUL433 für Intertechno und Somfy RTS; Nuki Bridge

Antworten

Zurück zu „HomeMatic allgemein“