JSON Parser für Homematic script

diverse Zusatzsoftware

Moderator: Co-Administratoren

CruelNabla
Beiträge: 3
Registriert: 25.09.2019, 20:44

JSON Parser für Homematic script

Beitrag von CruelNabla » 25.09.2019, 21:00

Hallo zusammen,

ich bin noch recht neu beim Erstellen von Scripten für die Homematic Steuerung.

Derzeit habe ich das Problem, dass ich als Rückgabe auf eine Datenabfrage bei Openweathermap einen string im JSON Format bekomme. Aus diesem möchte ich jetzt natürlich die einzelnen Daten extrahieren. Hier ein Beispiel:

Code: Alles auswählen

{"coord":{"lon":13.41,"lat":52.52},"weather":[{"id":802,"main":"Clouds","description":"Überwiegend bewölkt","icon":"03n"}],"base":"stations","main":{"temp":14.55,"pressure":1006,"humidity":100,"temp_min":13.33,"temp_max":15.56},"visibility":10000,"wind":{"speed":3.1,"deg":260},"clouds":{"all":40},"dt":1569437651,"sys":{"type":1,"id":1275,"message":0.0148,"country":"DE","sunrise":1569387391,"sunset":1569430792},"timezone":7200,"id":2950159,"name":"Berlin","cod":200}
Auf der Suche nach einem JSON Parser habe ich hier im Forum häufiger den Verweis auf das jq Addon gefunden. Dabei handelt es sich ja um ein Command-Line Addon. Kann ich die jq Filter auch direkt aus Homematic scripten heraus anwenden?
Sowas in der Lesart wie:

Code: Alles auswählen

var Temperature = WetterString|jq '.main.temp'
Oder gibt es irgendwo ein Beispielscript in dem der jq parser genutzt wurde? Ich würde gerne händisch einen Parser schreiben, der dann anfällig für Änderungen in der Syntax des Strings ist.

Vielen Dank für eure Hilfe!

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: JSON Parser für Homematic script

Beitrag von hobbyquaker » 25.09.2019, 21:33

Wenn Du jq aus Regascripts heraus nutzen willst wirst Du mit der System.exec Methode oder alternativ mit dem CUxD Exec Device arbeiten müssen. Wie man die handhabt findest vielfach hier im Forum.

Fonzo
Beiträge: 6687
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 478 Mal

Re: JSON Parser für Homematic script

Beitrag von Fonzo » 25.09.2019, 21:47

CruelNabla hat geschrieben:
25.09.2019, 21:00
Derzeit habe ich das Problem, dass ich als Rückgabe auf eine Datenabfrage bei Openweathermap einen string im JSON Format bekomme. Aus diesem möchte ich jetzt natürlich die einzelnen Daten extrahieren.
Kommt drauf an mit was Du Homematic genau steuerst. Auf einer CCU3 ist z.B. der NEO Server vorinstalliert, da kannst Du ganz normal Javascript und JSON.parse() in einem Skript benutzten.

Benutzeravatar
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: JSON Parser für Homematic script

Beitrag von Black » 26.09.2019, 07:05

Ja, du kannst mit jq aus hm script heraus arbeiten. Ansatz ist wie von hobbyquaker beschrieben System.Exec oder Cuxd.exec. es braucht dafür keine speziellen Addons

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

CruelNabla
Beiträge: 3
Registriert: 25.09.2019, 20:44

Re: JSON Parser für Homematic script

Beitrag von CruelNabla » 26.09.2019, 07:13

hobbyquaker hat geschrieben:
25.09.2019, 21:33
Wenn Du jq aus Regascripts heraus nutzen willst wirst Du mit der System.exec Methode oder alternativ mit dem CUxD Exec Device arbeiten müssen. Wie man die handhabt findest vielfach hier im Forum.
Ich steuere meine Geräte über WebUI Programme in denen ich Homematic Scripte einbinde (https://www.eq-3.com/Downloads/eq3/down ... g_V2.2.pdf)

Die OpenweatherMap Abfrage führe ich dabei ebenfalls bereits mit dem CUxD Exec Device durch. Da ich lediglich 2 Daten aus dem JSON extrahieren möchte, schätze ich ist es am einfachsten auch in dieser Umgebung zu bleiben, statt weitere Umwege zu gehen.

Habe ich das richtig verstanden, dass ich über die CUxD Exec im wesentlichen die standard Command-Line Befehle mit jq Filtern ausführen soll und die Rückgabe dann über CMD_RETS wieder abfange?

Vielen Dank für eure Hilfe soweit!

Benutzeravatar
jmaus
Beiträge: 9819
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 459 Mal
Danksagung erhalten: 1856 Mal
Kontaktdaten:

Re: JSON Parser für Homematic script

Beitrag von jmaus » 26.09.2019, 08:28

CruelNabla hat geschrieben:
26.09.2019, 07:13
Habe ich das richtig verstanden, dass ich über die CUxD Exec im wesentlichen die standard Command-Line Befehle mit jq Filtern ausführen soll und die Rückgabe dann über CMD_RETS wieder abfange?
Ja, das hast du richtig verstanden. Allerdings gibt es den "jq" Kommandozeilen JSON parser lediglich standardmäßig in RaspberryMatic. Dieser ist nicht teil einer Standard CCU3 Firmware.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

Re: JSON Parser für Homematic script

Beitrag von hobbyquaker » 26.09.2019, 17:19

Falls Du kein RaspberryMatic einsetzt gibt es hier auch jq als Addon für die CCU3: https://github.com/hobbyquaker/ccu-addon-jq

CruelNabla
Beiträge: 3
Registriert: 25.09.2019, 20:44

Re: JSON Parser für Homematic script

Beitrag von CruelNabla » 26.09.2019, 19:13

jmaus hat geschrieben:
26.09.2019, 08:28
CruelNabla hat geschrieben:
26.09.2019, 07:13
Habe ich das richtig verstanden, dass ich über die CUxD Exec im wesentlichen die standard Command-Line Befehle mit jq Filtern ausführen soll und die Rückgabe dann über CMD_RETS wieder abfange?
Ja, das hast du richtig verstanden. Allerdings gibt es den "jq" Kommandozeilen JSON parser lediglich standardmäßig in RaspberryMatic. Dieser ist nicht teil einer Standard CCU3 Firmware.
Es läuft bereits Raspberrymatic :) Aber gut zu wissen, dass ich jq umsonst als Zusatzsoftware oben drauf installiert habe :)

PaulM
Beiträge: 315
Registriert: 16.02.2015, 17:05
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 126 Mal
Danksagung erhalten: 35 Mal

Re: JSON Parser für Homematic script

Beitrag von PaulM » 22.10.2019, 23:15

Ja, du kannst mit jq aus hm script heraus arbeiten. Ansatz ist wie von hobbyquaker beschrieben System.Exec oder Cuxd.exec. es braucht dafür keine speziellen Addons
ich tue mich schwer mit der jq Syntax als Ergänzung zu einer Abfrage mit curl auf Raspberrymatic

meine Abfrage ist bezieht sich auf Open Weather Map und Wiederholungen von Schlüsselbegriffen
eine Abfrage mit

Code: Alles auswählen

 curl ... | jq '.' 
ergibt:

Code: Alles auswählen

{
  "cod": "200",
  "message": 0,
  "cnt": 40,
  "list": [
    {
      "dt": 1571788800,
      "main": {
        "temp": 10.17,
        "temp_min": 10.17,
        "temp_max": 10.92,
        "pressure": 1023,
        "sea_level": 1023,
        "grnd_level": 1013,
        "humidity": 80,
        "temp_kf": -0.76
      },
      "weather": [
        {
          "id": 804,
          "main": "Clouds",
          "description": "overcast clouds",
          "icon": "04n"
        }
      ],
      "clouds": {
        "all": 87
      },
      "wind": {
        "speed": 1.29,
        "deg": 79
      },
      "sys": {
        "pod": "n"
      },
      "dt_txt": "2019-10-23 00:00:00"
    },
    {
      "dt": 1571799600,
      "main": {
        "temp": 10.42,
        "temp_min": 10.42,
        "temp_max": 10.98,
        "pressure": 1021,
        "sea_level": 1021,
        "grnd_level": 1011,
        "humidity": 76,
        "temp_kf": -0.57
      },
      
... weitere Daten
...
      
wenn ich die Abfrage ändere in

Code: Alles auswählen

curl ... | jq '. | .list' 
werden die Zeilen bis "list" weggelassen

auch nach der Lektüre des jq-Manuals waren meine Versuche "temp" abfragen alle erfolglos
z.B.
| jq '. | .temp' oder
| jq '. | .list .temp'

Hast du ein einfaches Beispiel ?

Danke
Paul
Mit Mut und Entschlossenheit gegen Intoleranz

Germa
Beiträge: 169
Registriert: 15.12.2019, 12:26
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 19 Mal

Re: JSON Parser für Homematic script

Beitrag von Germa » 10.02.2022, 09:35

hobbyquaker hat geschrieben:
26.09.2019, 17:19
Falls Du kein RaspberryMatic einsetzt gibt es hier auch jq als Addon für die CCU3: https://github.com/hobbyquaker/ccu-addon-jq
hi, kann man das noch benutzen, oder ist das inzwischen zu alt?
wenn wir uns alle gegenseitig helfen, ist allen geholfen :wink:
_______________________________________________
CCU3 seit 2018, 103 Geräte, 202 Programme, 222 sysvar
Projekte: Wettersensor viewtopic.php?t=65631

Antworten

Zurück zu „Sonstige Addons“