Bekomme JSON String nicht eingelesen - Reolink Kamera

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
mr.b4
Beiträge: 67
Registriert: 11. Sep 2019 16:57
Answers: 0

Bekomme JSON String nicht eingelesen - Reolink Kamera

Beitrag von mr.b4 »

Hallo zusammen,

leider bekomme ich folgenden JSON String nicht eingelesen.

Code: Alles auswählen

[ { "cmd" : "GetAiState", "code" : 0, "value" : { "channel" : 0, "dog_cat" : { "alarm_state" : 0, "support" : 0 }, "face" : { "alarm_state" : 0, "support" : 0 }, "people" : { "alarm_state" : 0, "support" : 1 }, "vehicle" : { "alarm_state" : 0, "support" : 1 } } } ]
Ich vermute es liegt an den eckigen Klammern...

Ich habe einen String Channel erstellt, und würde einzelne Items als JSON definieren:
Zum Beispiel ein Switch Item mit folgenden JSONPath Ausdruck: value.people.alarm_state

Alle meine Versuche sind gescheitert.

Lustigerweise besteht die Notwenigkeit nur weil die eine Reolink Kamera 510A im IP-CAM-Binding nicht vernünftig will, die andere 520A funktioniert...

Harka
Beiträge: 489
Registriert: 30. Apr 2021 13:13
Answers: 19

Re: Bekomme JSON String nicht eingelesen - Reolink Kamera

Beitrag von Harka »

Moin,
sollte mit
JSONPATH:$.[0].value.people.alarm_state
bzw.
JS: | JSON.parse(input).[0].value.people.alarm_state
funktionieren.

e: habe es gerade getestet -> mit JSONPATH funktioniert es hier sofort, auch mit den von Udos folgenden Tipps mit den Punkten. Bei Javascript läuft es mit JS:|JSON.parse(input)[0].value.people.alarm_state
Zuletzt geändert von Harka am 2. Jun 2024 06:49, insgesamt 1-mal geändert.

mr.b4
Beiträge: 67
Registriert: 11. Sep 2019 16:57
Answers: 0

Re: Bekomme JSON String nicht eingelesen - Reolink Kamera

Beitrag von mr.b4 »

Danke für den Tipp.
Scheint mir auch plausibel das Array [] zu Anfang zu definieren...
Leider wird der Wert immer noch als "Null" angezeigt.

Benutzeravatar
udo1toni
Beiträge: 15243
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Bekomme JSON String nicht eingelesen - Reolink Kamera

Beitrag von udo1toni »

Das JSON sieht, lesefreundlich formatiert, so aus:

Code: Alles auswählen

[
    {
        "cmd": "GetAiState",
        "code": 0,
        "value": {
            "channel": 0,
            "dog_cat": {
                "alarm_state": 0,
                "support": 0
            },
            "face": {
                "alarm_state": 0,
                "support": 0
            },
            "people": {
                "alarm_state": 0,
                "support": 1
            },
            "vehicle": {
                "alarm_state": 0,
                "support": 1
            }
        }
    }
]
Du hast also ein JSON, welches auf oberster Ebene ein Array aus (potenziell) mehreren Objekten nutzt. Mein Tipp (ich hab's nicht ausprobiert) wäre

Code: Alles auswählen

$[0].value.people.alarm_state
(also ohne Punkt zwischen $ und [)
Alternativ könntest Du auch

Code: Alles auswählen

$..value.people.alarm_state
versuchen, solche "Sonderformen" von JSON sind immer etwas tricky.

Eine andere Frage: Wie kommst Du zu dem JSON? Eventuell ist ja auch in der Abfrage etwas schief, und Du könntest das JSON ohne das Array ausgeliefert bekommen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mr.b4
Beiträge: 67
Registriert: 11. Sep 2019 16:57
Answers: 0

Re: Bekomme JSON String nicht eingelesen - Reolink Kamera

Beitrag von mr.b4 »

Vielen Dank!

Code: Alles auswählen

$[0].value.people.alarm_state
jetzt läufts. Musste aber das ganze Item nochmal neu anlegen.

Antworten