Ah. Da kommt gar kein json...
Stattdessen kommt ein Tupel aus zwei Werten.
Nun wäre zunächst die Frage, welcher der beiden Werte interessant ist. Ich nehme an, der erste Wert ist der Zählerstand. Den könntest Du mit REGEX herausfischen:
Ich habe den Term mit Regexr.com getestet, allerdings tickt openHAB REGEX teilweise etwas anders als das "normale" Regex, heißt, eventuell. muss der Term nochmal angepasst werden.
Die Bedeutung im Einzelnen:
. ist ein beliebiges Zeichen (ein Joker).
* bedeutet: das vorherige Zeichen, beliebig oft wiederholt. Hier also: eine beliebig lange Zeichenkette beliebiger Zeichen.
\ ist das Escape-Zeichen, um innerhalb eines Regex Patterns auch Spezielle Zeichen verwenden zu können (z.B. den Punkt als Punkt)
[] ist gewöhnlich eine Gruppe von Zeichen, aus der ein einzelnes Zeichen auftaucht. Z.B. S[io]nne würde sowohl auf "Sinne" als auch auf "Sonne" matchen. Hier ist das Zeichen aber Teil des Patterns, entsprechend muss es escaped werden.
" ist ebenfalls Teil des Patterns. Regex verlangt nicht, dass dieses Zeichen escaped wird, allerdings könnte openHAB hier falsch reagieren
Eventuell kann der Backslash vor den Anführungszeichen aber auch entfallen.
() kennzeichnet eine Gruppe. in openHAB REGEX muss immer das gesamte Pattern matchen. Ergebnis der Transformation ist dann die erste Gruppe, also alles zwischen der ersten ( und der ersten )
\d bedeutet Ziffer. Man könnte auch [0-9] schreiben.
\d* bedeutet also: beliebig viele aufeinander folgende Ziffern.
\. der Punkt als Punkt, nicht als Joker...
Es wird jeweils der erste Match verwendet, und es wird der kürzeste Match verwendet. Das heißt: das Pattern wird immer die Zahl zwischen dem ersten und dem zweiten Anführungszeichen ausspucken. Da das Pattern außerdem noch das Komma abfragt, ist es aber ohnehin nicht möglich, anders zu matchen.
Genau wie JSONPATH muss auch der REGEX Transformation Service aus dem Store installiert werden. Ob ein Addon installiert ist, kann man im Store sehen (dann steht nicht install, sondern remove neben dem Addon).
Es bietet sich an, bei Problemen zunächst den Channel als String Channel anzulegen, um ganz sicher eine Ausgabe zu erhalten
Weiterhin gibt es einen Unterschied zwischen
Status und
status. Man sollte immer die exakte Schreibweise verwenden, auch bei URLs, es gibt Webserver, die da empfindlich sind.
Code: Alles auswählen
UID: http:url:Gaszaehler
label: HTTP URL Thing
thingTypeUID: http:url
configuration:
authMode: BASIC
ignoreSSLErrors: false
baseURL: http://192.168.2.128/
delay: 0
stateMethod: GET
refresh: 30
commandMethod: GET
timeout: 3000
bufferSize: 2048
channels:
- id: last-failure
channelTypeUID: http:request-date-time
label: Last Failure
configuration: {}
- id: last-success
channelTypeUID: http:request-date-time
label: Last Success
configuration: {}
- id: Wert
channelTypeUID: http:number
label: Zählerstand
configuration:
mode: READONLY
unit: m³
stateExtension: status
stateTransformation: REGEX:.*\[\"(\d*\.\d*)\",.*
Wäre dann die aktuelle Version mit number Channel...
openHAB4.3.0 stable in einem Debian-Container (bookworm) (Proxmox 8.3.2, LXC), mit openHABian eingerichtet