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
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