Seite 1 von 2
Der neue mit ner Frage zu String selektieren und umwandeln
Verfasst: 15. Jul 2025 12:10
von BrightLight
Hallo,
da ich neu im Forum bin, möchte ich mich mal kurz vorstellen. Mein Name ist Andi, bin Mitte 50 und komme aus der Gegend von Stuttgart.
Ich komme aus dem Maschinenbau, bin aber in allen möglichen Technischen Bereichen aktiv.
Openhab betreibe ich jetzt schon seit einer Weile. Allerdings bisher nur recht oberflächlich nur als Vermittler für unterschiedliche Hersteller. Bei mir läuft OH 4.2 in einem Container auf meinem NAS.
Da ich mir jetzt ne Solaranlage aufs Dach gesetzt habe, will ich hier ein paar dinge im Haus optimieren und muss mich jetzt mal ein wenig tiefer in die Materie einarbeiten.
Das bringt mich dann auch zu meiner ersten Frage:
Um hier ein paar werte zu bekommen greife ich mit dem HTTP-Binding auf die REST-Api des Kiwigrid Energiemanagers zu. die Daten bekomme ich auch raus. Allerdings u.a. Werte wie "1752651935000|2415.3333333333335 W", die dann natürlich ein String sind. Wie kann ich hieraus die "2415.3333333333335" extrahieren und in Number umwandeln um damit auch Steuerungsaufgaben realisieren zu können?
Gruß Andi
Re: Der neue mit ner Frage zu String selektieren und umwandeln
Verfasst: 15. Jul 2025 12:53
von Harka
Moin,
wenn Du JavaScript_Sripting installiert hast versuch mal
Code: Alles auswählen
JS:|parseFloat(input.split('|')[1])
oder
JS:|input.split('|')[1]
im Feld "Status-Transformation" des Channels aus. Beim der 2. Lösungsvorschlag das Welt für die Einheit frei lassen. Sollte auch in ähnlicher Weise mit anderen Sprachen wie Rule-DSL gehen.
Re: Der neue mit ner Frage zu String selektieren und umwandeln
Verfasst: 15. Jul 2025 14:31
von BrightLight
Hallo Harka,
Danke für die rasche Antwort.
Ich hab beides ausprobiert und es hat leider nicht funktioniert (kommt dann NULL).
Re: Der neue mit ner Frage zu String selektieren und umwandeln
Verfasst: 15. Jul 2025 14:46
von Harka
wenn Du schreibst "u.a. Werte wie ..." heißt das, dass da im gleichem String noch mehr steht? Dann kann es auch nicht funktionieren.
Re: Der neue mit ner Frage zu String selektieren und umwandeln
Verfasst: 15. Jul 2025 14:49
von BrightLight
Nein, der String ist aus dem JSON so vollständig extrahiert. Mit "u.a. Werte wie ..." meinte ich, dass ich aus der REST-API auch noch andere Werte bekomme.
Kann Aber auch an meiner Unwissenheit liegen. Bisher habe ich mich recht wenig mit den Möglichkeiten bei OH beschäftigt.
Re: Der neue mit ner Frage zu String selektieren und umwandeln
Verfasst: 15. Jul 2025 15:20
von Harka
wenn da JSON schon im Spiel ist müssen wir das berücksichtigen. Da gibt es verschiedene Lösungsansätze auch abhängig von deiner bisherigen Lösung. Was steht denn in der Codeansicht des Things?
Re: Der neue mit ner Frage zu String selektieren und umwandeln
Verfasst: 15. Jul 2025 15:57
von BrightLight
OK,
Code: Alles auswählen
UID: http:url:50e45c7a96
label: Energiemanagment
thingTypeUID: http:url
configuration:
authMode: BASIC
ignoreSSLErrors: false
baseURL: http://192.168.175.123/rest/items
delay: 0
stateMethod: GET
refresh: 60
commandMethod: GET
contentType: application/json
timeout: 3000
bufferSize: 2048
channels:
- id: IstLeistung
channelTypeUID: http:string
label: Istleistung Solar
description: ""
configuration:
mode: READONLY
stateExtension: /kiwigrid_location_standard_4357e0d53246_harmonized_power_produced
- id: LadeBatterie
channelTypeUID: http:number
label: Ladeleistung Batterie
description: ""
configuration:
mode: READONLY
stateExtension: /foxesshybrid_battery_AS12AE102ABH075_battery_bms_1_soc
Re: Der neue mit ner Frage zu String selektieren und umwandeln
Verfasst: 15. Jul 2025 16:28
von Harka
was kommt den bei
http://192.168.175.123/rest/items/kiwig ... r_produced zurück? Bitte alles - auch Klammern
Lt.
Simon42 sollte da mindestens noch ein state: bei stehen.
Re: Der neue mit ner Frage zu String selektieren und umwandeln
Verfasst: 15. Jul 2025 16:36
von BrightLight
Code: Alles auswählen
{"link":"http://192.168.175.123/rest/items/kiwigrid_location_standard_4357e0d53246_harmonized_power_produced" ,"state":"1752590085000|2136.0 W","stateDescription":{"pattern":"%s","readOnly":true,"options":[]},"editable":false,"type":"String","name":"kiwigrid_location_standard_4357e0d53246_harmonized_power_produced","label":"PowerProduced","tags":[],"groupNames":[]}
Ist ja eigentlich das state, das ich dann im Item abgreifen möchte. Hier liegt vielleicht (mein) Gedankenfehler. Dann wird das Java wohl auch nicht im Channel funktionieren?
Re: Der neue mit ner Frage zu String selektieren und umwandeln
Verfasst: 15. Jul 2025 17:50
von Harka
doch, sollte gehen. Weils "schöner" aussieht:
Code: Alles auswählen
{
"link": "http://192.168.175.123/rest/items/kiwig ... r_produced",
"state": "1752590085000|2136.0 W",
"stateDescription": {
"pattern": "%s",
"readOnly": true,
"options": []
},
"editable": false,
"type": "String",
"name": "kiwigrid_location_standard_4357e0d53246_harmonized_power_produced",
"label": "PowerProduced",
"tags": [],
"groupNames": []
}
Erster Ansatz benötigt zusätzlich die JsonPath-Transformation und das umgedrehte U nicht unterschlagen!
Code: Alles auswählen
JSONPATH:$.state∩JS:|input.split('|')[1]
oder
JS:|var txt = JSON.parse(input).state; txt.split('|')[1];
E: gerade noch '-' durch '|' ersetzt