TomW80 hat geschrieben: ↑8. Feb 2024 19:41
Aktuell hab ich keine Probleme mehr.
... eigentlich klappt das Ganze ja, aber ich "bastle" immer noch etwas an den "things".
Grund: Das Abfangen einer Fehlermeldung, wenn das JSON-Objekt ($.executions) nicht im JSON-String vorhanden ist.
Code: Alles auswählen
{
"bid": 3.225,
"ask": 3.275,
"bidsize": 1000,
"asksize": 1000,
"delta": 0.0,
"stueck": 0,
"umsatz": 0,
"avg": "./.",
"last": "./.",
"high": "./.",
"low": "./.",
"close": 3.245
}
Ich habe zwar das Modell von @Harka im Einsatz, aber ich bin immer noch am Testen, ob das evtl. auch noch anders geht.
Code: Alles auswählen
Type number : execution "Executions" [ stateTransformation="DSL:|Integer.parseInt(transform('JSONPATH','$.executions',input).replace(',','.').replace('./.','0').replace('+',''))" ] // Test
// https://community.openhab.org/t/is-it-possible-to-combine-two-transformations/152550/6
Type number : executions "Executions" [ stateTransformation="JS:|var kurs =JSON.parse(input).executions;if(typeof kurs !== 'undefined'){parseInt(kurs.toString().replace(',','.').replace('./.','0'))};" ]
Das erste Thing (DSL) ist an einen Thread aus dem Internationalen Forum (von Udo) angelehnt, das ich heute gefunden habe. Das zweite Thing (JS) ist von Harka.
Ich verstehe aber in beiden Beispielen, den Code noch nicht so ganz.
Da die Fehlermeldungen nur sehr selten auftreten, dauert das natürlich (bei mir) bis ich mir wieder ein entsprechendes Testszenario "ausgedacht" habe (Halbwissen

).
Eigentlich mach ich ja gar nichts in dieser Richtung, aber irgendwie hat es mich gepackt, das "Problemchen" mittels einer DSL-Inline-Rule zu lösen.
Vielleicht bin aber auch auf dem Holzweg.
Bei der Version mit den "verketteten" Funktionen scheint es zu klappen.
Code: Alles auswählen
Type number : executions2 "Executions" [ stateTransformation="JSONPATH:$.executions∩JS:comma2dot.js"]
Sollte ich (oder wer anders) etwas herausfinden, werde ich mich wieder melden.