HomeWizard per JSON auslesen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

loewes
Beiträge: 31
Registriert: 10. Jan 2023 09:52
Answers: 2

HomeWizard per JSON auslesen

Beitrag von loewes »

Hallo zusammen,

ich bin noch neu bei openHAB, aber ein paar Sachen funktionieren inzwischen ganz gut, auch den PV-Speicher konnte ich bereits per HTTP und JSON abfragen (Vielen Dank für dieses super Forum!).
Aber jetzt versuche ich, die Infos aus einer HomeWizard Basisstation auszulesen und da bräuchte ich Hilfe.
Erstmal zu der Ausgabe von dem Gerät, das ich über den Webbrowser erhalte:

Code: Alles auswählen

{"status": "ok", "version": "3.403", "request": {"route": "/get-sensors" }, "response": {"preset":0,"time":"2023-01-10 10:23","switches":[{"id":0,"name":"Ein","type":"switch","status":"off","favorite":"no"},{"id":1,"name":"Arbeitszimmer","type":"radiator","tte":20.0,"favorite":"no"}],"uvmeters":[],"windmeters":[],"rainmeters":[],"thermometers":[],"weatherdisplays":[], "energymeters": [], "energylinks": [], "heatlinks": [], "hues": [], "scenes": [], "kakusensors": [{"id":0,"name":"Tor rechts","status":null,"type":"contact","favorite":"no","timestamp":"00:00","cameraid":null},{"id":1,"name":"Tor links","status":null,"type":"contact","favorite":"no","timestamp":"00:00","cameraid":null}], "cameras": []}}
Firefox zeigt mir das gleich struktuiert an:
Screenshot.jpg
Für die Versionsnummer komme ich noch zurecht, da trage ich bei Item in dem JSONPath Ausdruck einfach nur "version" ein, aber wie muss ich das für andere Werte formulieren, die ja ggf. mehrfach mit verschiedenen IDs auftreten?

Vielen Dank schon mal!
von loewes » 11. Jan 2023 20:26
Hallo, jetzt hab ich mehrere vergebliche Versuche mit dem Typ switch unternommen, da konnte ich aber nicht den on/off State definieren... Danach hab ich das Ganze wieder auf den Typ string zurückgeändert.... und jetzt liest er on und off aus. Was jetzt anders war weiß ich nicht. Vielen Dank nochmal für Eure Hilfen, ich habe sicher noch mehr Fragen zu anderen Punkten... :)

P.S.: ich würde das Thema gern als gelöst markieren, aber ich finde die Option nicht...
Gehe zur vollständigen Antwort
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Mclupo
Beiträge: 178
Registriert: 6. Jun 2020 20:55
Answers: 2
Wohnort: Kirchheim Teck

Re: HomeWizard per JSON auslesen

Beitrag von Mclupo »

Die Abfrage geht entlang des Datenaufbaus, getrennt mit einem „.“, also

$.response.switches.0.name
OH 3.4.2 auf Raspi 4 mit Aeotec z-wave Stick gen 5+ und zigbee conbee II

loewes
Beiträge: 31
Registriert: 10. Jan 2023 09:52
Answers: 2

Re: HomeWizard per JSON auslesen

Beitrag von loewes »

Vielen Dank für die schnelle Antwort!
Ich habe die Abfrage getestet: "$.response.switches.1.tte" -> das sollte mir im Beispiel oben 20.0 liefern.
Aber leider sehe ich im Ergebnis: {"status": "failed", "error": 1, "version": "3.403", "request": {"route": "/get-sensors" }}
Woher die Einträge Status:failed und der Error 1 kommen weiß ich nicht, wenn ich die Abfrage im Browser aufrufe, kommt immer Status:OK (wie im Beispiel oben).
Noch eine Idee, was ich da falsch mache? Vielen Dank!

oh73
Beiträge: 302
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: HomeWizard per JSON auslesen

Beitrag von oh73 »

versuch es mal mit

"$.response.switches.tte"

die 1 weg lassen, kommt nur von der Anzeige im Browser, ist nicht im Json String!
OH 4.3.0 auf HP 26o G1 Dm Mini Pc mit MX_Linux

loewes
Beiträge: 31
Registriert: 10. Jan 2023 09:52
Answers: 2

Re: HomeWizard per JSON auslesen

Beitrag von loewes »

Danke!
Hm... ich hab jetzt nochmal mehrere Varianten ausprobiert, aber immer die gleichen Daten im Ergebnis. Um z.B. die Version auszulesen hat es nur mit der Angabe "version" funktioniert, also ich meine ohne "$." davor. Vielleicht hat noch jemand eine Idee?

oh73
Beiträge: 302
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: HomeWizard per JSON auslesen

Beitrag von oh73 »

das scheint kein richtiger JSON String zu sein!

hätte da noch eine andere Möglichkeit,
var request = sendHttpGetRequest("http://deine_IP",1000)

var split_1 = request.split('"tte":').get(1)
var split_2 = split_1.split(',').get(0)
so komme ich an die "20.0"
gibt sicher noch bessere Möglichkeiten, aber viele Wege führen nach Rom!

Edit:
das in einer Rule eingebaut!
OH 4.3.0 auf HP 26o G1 Dm Mini Pc mit MX_Linux

loewes
Beiträge: 31
Registriert: 10. Jan 2023 09:52
Answers: 2

Re: HomeWizard per JSON auslesen

Beitrag von loewes »

Das klingt gut, mir wäre das eigentlich lieber so. Als Neuling hier bei dem Thema muss ich aber zugeben, dass ich nicht weiß, wie ich diese Rule anlege... Also ich lege eine neue Rule an und trage das unter "Then/Add Action" ein? Ist das dann ein ECMAScript? Muss ich einen Trigger anlegen, wenn das permanent laufen soll? Danke Euch!

oh73
Beiträge: 302
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: HomeWizard per JSON auslesen

Beitrag von oh73 »

oh, so gut bin ich auch wieder nicht!

ich schreibe meine Rules alle in Text Dateien

hier ein Beispiel für deine Seite jede Minute ab zu rufen.

Code: Alles auswählen

rule "json_test"
	when Time cron "0 0/1 * * * ?"
then

	var request = sendHttpGetRequest("http://deine_IP",1000)
	
	var split_1 = request.split('"tte":').get(1)
	var split_2 = split_1.split(',').get(0)
	
	
	logInfo("json Test  = ","tte : "+split_2)

end
sollte aber auch in der Gui funktionieren wenn du das bei Scripts, Rule DSL erstellen, einfügst.
OH 4.3.0 auf HP 26o G1 Dm Mini Pc mit MX_Linux

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

Re: HomeWizard per JSON auslesen

Beitrag von Harka »

ich werfe mal ein $.response.switches[1].tte in den Raum.

loewes
Beiträge: 31
Registriert: 10. Jan 2023 09:52
Answers: 2

Re: HomeWizard per JSON auslesen

Beitrag von loewes »

@Harka: damit erhalte ich exakt die gleiche Ausgabe wie mit ".1."... leider...
@oh73: das werde ich testen, auf den ersten Versuch bekomme ich das nicht wirklich zum laufen, ich bekomme die Meldung, dass es ausgeführt wird und dann wieder im "idle" ist. Da muss ich mich wohl erstmal noch damit beschäftigen, wie ich in openHAB 3.4.1 Skripten und Rules richtig anlege... Wenn Du schreibst, dass Du das in Textdateien schreibst, wo muss ich die ablegen und wie greife ich dann auf die Ausgabevariable zu? Danke!

Antworten