Seite 2 von 2

Re: Shelly und MQTT: Firmware Update anzeigen

Verfasst: 15. Sep 2024 16:18
von udo1toni
Die eckigen Klammern um das transformationPattern sind falsch. Korrekt:

Code: Alles auswählen

  - id: fw_update
    channelTypeUID: mqtt:string
    label: Firmware Update
    configuration:
      stateTopic: shellyplusht_wohnzimmer/status/sys
      transformationPattern: "REGEX:(.*stable.*)∩JSONPATH:$.available_updates.stable.version"
Mit dem gezeigten JSON sollte dann allerdings ein leerer String zurück kommen, da dort das Wort stable gar nicht vorhanden ist.

Re: Shelly und MQTT: Firmware Update anzeigen

Verfasst: 16. Sep 2024 13:24
von EmptySoft
Moadin hat geschrieben: 15. Sep 2024 14:30
In Openhab habe ich folgendes eingetragen als channel:

Code: Alles auswählen

  - id: fw_update
    channelTypeUID: mqtt:string
    label: Firmware Update
    configuration:
      stateTopic: shellyplusht_wohnzimmer/status/sys
      transformationPattern: "[REGEX:(.*stable.*)∩JSONPATH:$.available_updates.stable.version]"
Benötigt man das REGEX wirklich? sollte nicht

Code: Alles auswählen

transformationPattern="JSONPATH:$.available_updates.stable.version"
reichen?

Re: Shelly und MQTT: Firmware Update anzeigen

Verfasst: 16. Sep 2024 16:37
von udo1toni
Nein, in diesem Fall nicht. Das Problem ist hier, dass der Zweig nicht unbedingt im JSON vorhanden ist. Ohne REGEX kommt dann eine nullPointerException. Mit REGEX bekommt JSONPATH als Éingangswert aber einen leeren String (weil das Wort stable nicht vorhanden ist und damit REGEX nicht matcht). JSONPATH liefert dann ebenfalls einen leeren String zurück und es gibt keine Exception.