Seite 1 von 1

Doppelpunkt in URL

Verfasst: 12. Okt 2020 11:54
von chrishab
Hallo zusammen,

ich versuche über das HTML Binding Daten auszulesen. Allerdings bekomme ich die Fehlermelung, dass das Pattern nicht passt. Meine Vermutung liegt darin, dass meine URL Doppelpunkte enthält und daher das Pattern nicht mehr passt. Ich habe in der HTML cfg Datei folgendes stehen:

heizung_buero_soll.url=http://xxx.xxx.xxx.xx/eQ-3-radiator-the ... x:xx:xx:xx
heizung_buero_soll.updateInterval=10000

Das Item habe ich folgendermaßen definiert:
String buero_test {http="<[heizung_buero_soll:1000]"}

Im Log steht folgendes:

Caused by: org.openhab.model.item.binding.BindingConfigParseException: bindingConfig 'heizung_buero_soll:1000' doesn't represent a valid in-binding-configuration. A valid configuration is matched by the RegExp '(.*?)(\{.*\})?:(?!//)(\d*):(.*)'
at org.openhab.binding.http.internal.HttpGenericBindingProvider.parseInBindingConfig(HttpGenericBindingProvider.java:193) ~[?:?]
at org.openhab.binding.http.internal.HttpGenericBindingProvider.parseBindingConfig(HttpGenericBindingProvider.java:157) ~[?:?]
at org.openhab.binding.http.internal.HttpGenericBindingProvider.processBindingConfiguration(HttpGenericBindingProvider.java:123) ~[?:?]
at org.openhab.core.binding.internal.BindingConfigReaderDelegate.processBindingConfiguration(BindingConfigReaderDelegate.java:53) ~[?:?]
... 15 more
Hat jemand eine Idee wie ich das in den Griff bekommen kann?

Gruß
Christian

Re: Doppelpunkt in URL

Verfasst: 12. Okt 2020 13:14
von peter-pan
Ich nehme mal an du willst aus einem Thermostat (per REST) einen Wert auslesen.
Das dürfte aber ein JSON-String sein. Dann müsste dein Item ungefähr so eine Syntax haben:

Code: Alles auswählen

String    Sonoff_Current_FW_Available   "Current Release available from Theo[%s]"         <arendst>               (gSonoffs)                 { http="<[tasmotaRelease:10000:JSONPATH($[0].name)]"}
vorausgesetzt dein HTTP-String hat einen Wert. Die Konfigurationsdatei heisst übrigens "http.cfg" im Ordner "services".

Re: Doppelpunkt in URL

Verfasst: 12. Okt 2020 15:00
von chrishab
Danke für deine Antwort. Ja, ich meite die http cfg, sorry. Ja, es ist eine JSON. Aber auch wenn ich das anpasse bekomme ich den gleichen Fehler.

Die JSON sieht bei mir so aus:

{
"mac" : "xx:xx:xx",
"temperature" : 20.0,
"valve" : 85,
"mode" : {
"auto" : "ON",
"manual" : "OFF",
"low battery" : "OFF",
"open window" : "OFF",
"vacation" : "OFF",
"locked" : "OFF",
"boost" : "OFF",
"unknown" : "OFF",
"dst" : "ON",
"on" : "OFF",
"off" : "OFF"
},
"vacation" : null
}

Wenn ich das ITEM jetzt so definiere:
String buero_test {http="<[heizung_buero_soll:1000:JSONPATH($[0].mac"}

bekomme ich noch immer folgenden Fehler:
[ERROR] [el.item.internal.GenericItemProvider] - Binding configuration of type 'http' of item 'buero_test' could not be parsed correctly.
org.eclipse.smarthome.model.item.BindingConfigParseException: bindingConfig '<[heizung_buero_soll:1000:JSONPATH($[0].mac' doesn't contain a valid binding configuration

Wahrscheinlich ist es etwas komplett banales. Ich finde aber partout den Fehler nicht.

Re: Doppelpunkt in URL

Verfasst: 12. Okt 2020 17:18
von chrishab
Wie vermutet hatte ich noch einen banalen Fehler drin. Die Antwort von peter-pan hat geholfen. Danke dafür!

Re: Doppelpunkt in URL

Verfasst: 12. Okt 2020 18:02
von peter-pan
..was war's ? Hab grad nochmal den JSON angeschaut.
Das sollte evtl.(ungetestet) gehen:

Code: Alles auswählen

String buero_test  {http="<[heizung_buero_soll:1000:JSONPATH($.mac)]"}

Re: Doppelpunkt in URL

Verfasst: 13. Okt 2020 18:00
von chrishab
Man muss noch zusätzlich sagen wo dann die ausgelesene Variable angezeitgt werden soll. Sprich:

Number heizung_buero_ist "Büro Ist-Temperatur [%.1f]" (g_heizung_buero) {http="<[heizung_buero:60000:JSONPATH($.temperature)]"}

Re: Doppelpunkt in URL

Verfasst: 13. Okt 2020 18:53
von peter-pan
...ok, der Suffix/Formatter. Das passiert mir manchmal auch.
In manchen Bindings gibt es dafür einen Default-Wert, bei manchen eben nicht, deshalb hab ich mir angewöhnt, immer einen bei der Item-Definition im Label zu setzen. ;) ;)