Der neue mit ner Frage zu String selektieren und umwandeln
-
- Beiträge: 6
- Registriert: Gestern 11:36
Der neue mit ner Frage zu String selektieren und umwandeln
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
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
Gruß Andi
-
- Beiträge: 502
- Registriert: 30. Apr 2021 13:13
Re: Der neue mit ner Frage zu String selektieren und umwandeln
Moin,
wenn Du JavaScript_Sripting installiert hast versuch mal
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.
wenn Du JavaScript_Sripting installiert hast versuch mal
Code: Alles auswählen
JS:|parseFloat(input.split('|')[1])
oder
JS:|input.split('|')[1]
-
- Beiträge: 6
- Registriert: Gestern 11:36
Re: Der neue mit ner Frage zu String selektieren und umwandeln
Hallo Harka,
Danke für die rasche Antwort.
Ich hab beides ausprobiert und es hat leider nicht funktioniert (kommt dann NULL).
Danke für die rasche Antwort.
Ich hab beides ausprobiert und es hat leider nicht funktioniert (kommt dann NULL).
Gruß Andi
-
- Beiträge: 502
- Registriert: 30. Apr 2021 13:13
Re: Der neue mit ner Frage zu String selektieren und umwandeln
wenn Du schreibst "u.a. Werte wie ..." heißt das, dass da im gleichem String noch mehr steht? Dann kann es auch nicht funktionieren.
-
- Beiträge: 6
- Registriert: Gestern 11:36
Re: Der neue mit ner Frage zu String selektieren und umwandeln
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.
Kann Aber auch an meiner Unwissenheit liegen. Bisher habe ich mich recht wenig mit den Möglichkeiten bei OH beschäftigt.
Gruß Andi
-
- Beiträge: 502
- Registriert: 30. Apr 2021 13:13
Re: Der neue mit ner Frage zu String selektieren und umwandeln
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?
-
- Beiträge: 6
- Registriert: Gestern 11:36
Re: Der neue mit ner Frage zu String selektieren und umwandeln
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
Gruß Andi
-
- Beiträge: 502
- Registriert: 30. Apr 2021 13:13
Re: Der neue mit ner Frage zu String selektieren und umwandeln
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.
Lt. Simon42 sollte da mindestens noch ein state: bei stehen.
-
- Beiträge: 6
- Registriert: Gestern 11:36
Re: Der neue mit ner Frage zu String selektieren und umwandeln
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":[]}
Gruß Andi
-
- Beiträge: 502
- Registriert: 30. Apr 2021 13:13
Re: Der neue mit ner Frage zu String selektieren und umwandeln
doch, sollte gehen. Weils "schöner" aussieht:
Erster Ansatz benötigt zusätzlich die JsonPath-Transformation und das umgedrehte U nicht unterschlagen!
E: gerade noch '-' durch '|' ersetzt
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": []
}
Code: Alles auswählen
JSONPATH:$.state∩JS:|input.split('|')[1]
oder
JS:|var txt = JSON.parse(input).state; txt.split('|')[1];