Seite 1 von 1

Switchbot MQTT Thing/Channel Fehlermeldung

Verfasst: 4. Dez 2023 22:27
von zinnik
Hallo

ich habe nach dieser Anleitung
https://github.com/devWaves/SwitchBot-MQTT-BLE-ESP32

Meine Switchbot Meter hinzugefügt und habe im Item Profil Jsonpath $.batt eigetragen für die Zuordnung.
Zusätzlich noch unter State Descripton: Pattern %.1f °C

Um den Wert der Batterieladung in % anzuzeigen.

Code: Alles auswählen

2023-12-04 22:20:53.500 [WARN ] [ofiles.JSonPathTransformationProfile] - Could not transform state '{"scale":"c","C":-6.0,"F":21.2,"hum":91,"rssi":-95}' with function '$.batt' and format '%s'
kann mir jemand sagen was ich da falsch mache

hier der Code vom Thing

Code: Alles auswählen

UID: mqtt:topic:MQTTBroker:SwitchbotMeter1
label: Switchbot Meter 1
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:MQTTBroker
channels:
  - id: SwitchbotMeter1Temp
    channelTypeUID: mqtt:string
    label: SwitchbotMeter1 Temp
    description: ""
    configuration:
      stateTopic: switchbot/esp32/meter/Meter85/attributes
  - id: SwitchbotMeter1Hum
    channelTypeUID: mqtt:string
    label: SwitchbotMeter1 Hum
    description: ""
    configuration:
      stateTopic: switchbot/esp32/meter/Meter85/attributes
  - id: SwitchbotMeter1Batt
    channelTypeUID: mqtt:string
    label: SwitchbotMeter1 Batt
    description: ""
    configuration:
      stateTopic: switchbot/esp32/meter/Meter85/attributes
Screenshot (383).png

Lg zinnik

Re: Switchbot MQTT Thing/Channel Fehlermeldung

Verfasst: 5. Dez 2023 07:08
von udo1toni
Das Problem wird vermutlich sein, dass auf dem Topic unterschiedliche JSON Objekte ankommen, in denen nur teilweise der Batteriestand mitgeliefert wird.

Die Fehlermeldung kannst Du unterdrücken, indem Du einen REGEX Filter vor das JSONPATH einfügst.
Außerdem böte es sich an, dies direkt im Channel zu implementieren, statt dies im Profile zu erledigen. Das hat auch den Vorteil, dass Du UoM verwenden kannst:

Code: Alles auswählen

UID: mqtt:topic:MQTTBroker:SwitchbotMeter1
label: Switchbot Meter 1
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:MQTTBroker
channels:
  - id: SwitchbotMeter1Temp
    channelTypeUID: mqtt:number
    label: SwitchbotMeter1 Temp
    description: ""
    configuration:
      stateTopic: switchbot/esp32/meter/Meter85/attributes
      transformationPattern: REGEX:(.*temp.*)∩JSONPATH:$.temp
      unit: °C
  - id: SwitchbotMeter1Hum
    channelTypeUID: mqtt:number
    label: SwitchbotMeter1 Hum
    description: ""
    configuration:
      stateTopic: switchbot/esp32/meter/Meter85/attributes
      transformationPattern: REGEX:(.*hum.*)∩JSONPATH:$.hum
      unit: %
  - id: SwitchbotMeter1Batt
    channelTypeUID: mqtt:number
    label: SwitchbotMeter1 Batt
    description: ""
    configuration:
      stateTopic: switchbot/esp32/meter/Meter85/attributes
      transformationPattern: REGEX:(.*batt.*)∩JSONPATH:$.batt
      unit: %
In der Folge musst Du natürlich Number:Temperatur bzw. Number:Dimensionless als Itemtypen verwenden, in den Item Links jegliche Profiles entfernen sowie in den Items zum Einen die Unit in den Metadaten korrekt setzen und zum Anderen auch die stateDescription (und hier das Pattern) setzen.

Es versteht sich von selbst, dass zusätzlich zu JSONPATH auch REGEX installiert sein muss.

Re: Switchbot MQTT Thing/Channel Fehlermeldung

Verfasst: 5. Dez 2023 19:08
von zinnik
Hallo Udo

ich hab es jetzt mal so konfiguriert wie vorgeschlagen. Test am <Beispiel "SwitchbotMeter1Batt"

Ich musste den vorhanden Channel löschen damit ich aus dem Typ String ein Number machen konnte
Screenshot (384).png
Screenshot (385).png
in dem Item habe ich das "Standard" Profil gewählt aber bekomme jetzt den wert 10000% anstatt 100% angezeigt.
Habe ich was falsch verstanden?
Screenshot (386).png

Code: Alles auswählen

UID: mqtt:topic:MQTTBroker:SwitchbotMeter1
label: Switchbot Meter 1
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:MQTTBroker
channels:
  - id: SwitchbotMeter1Temp
    channelTypeUID: mqtt:string
    label: SwitchbotMeter1 Temp
    description: ""
    configuration:
      stateTopic: switchbot/esp32/meter/Meter85/attributes
  - id: SwitchbotMeter1Hum
    channelTypeUID: mqtt:string
    label: SwitchbotMeter1 Hum
    description: ""
    configuration:
      stateTopic: switchbot/esp32/meter/Meter85/attributes
  - id: SwitchbotMeter1Batt
    channelTypeUID: mqtt:number
    label: SwitchbotMeter1 Batt
    description: ""
    configuration:
      stateTopic: switchbot/esp32/meter/Meter85/attributes
      transformationPattern: REGEX:(.*batt.*)∩JSONPATH:$.batt
      unit: "%"
Lg zinnik

Re: Switchbot MQTT Thing/Channel Fehlermeldung

Verfasst: 5. Dez 2023 23:19
von udo1toni
Was kommt denn für ein JSON rein?

Re: Switchbot MQTT Thing/Channel Fehlermeldung

Verfasst: 5. Dez 2023 23:44
von zinnik
Was meinst du damit?
Wie es im Mqqt broker aussieht?

Code: Alles auswählen

switchbot/esp32/meter/Meter85/attributes
{"scale":"c","C":-6.3,"F":20.7,"hum":93,"rssi":-95}

Oder ist es besser wenn ich das hier nehme

Code: Alles auswählen

switchbot/esp32/meter/Meter85/battery
100

Re: Switchbot MQTT Thing/Channel Fehlermeldung

Verfasst: 9. Dez 2023 12:11
von zinnik
Hi Udo welches sollte ich nehmen bei dem ersten habe ich kommischer Weise auch den batteriestatu erhalten?

Code: Alles auswählen

switchbot/esp32/meter/Meter85/attributes
{"scale":"c","C":-6.3,"F":20.7,"hum":93,"rssi":-95}

Re: Switchbot MQTT Thing/Channel Fehlermeldung

Verfasst: 9. Dez 2023 14:42
von udo1toni
Wenn der Batteriestatus in einem separaten Topic bereitsteht, würde ich dieses immer vorziehen, Du sparst Dir potenziellen Ärger mit dem JSONPath.