Sonoff Zigbee Brigde/Tasmota - > Bewegungsmelder OH4.3 MQTT

Geflasht oder ungeflasht ...

Moderatoren: Cyrelian, udo1toni

Antworten
Comprex
Beiträge: 7
Registriert: 25. Dez 2024 16:15
Answers: 0

Sonoff Zigbee Brigde/Tasmota - > Bewegungsmelder OH4.3 MQTT

Beitrag von Comprex »

Hallo zusammen,

ich brauche mal Eure fachmännische Hilfe, da ich den Wald nicht mehr vor Bäumen sehe und meine Bewegungsmelder über MQTT mir einfach keine Daten in OH liefern wollen:

Bridge:

Code: Alles auswählen

UID: mqtt:broker:Mosquitto_local
label: Mosquitto_local
thingTypeUID: mqtt:broker
configuration:
  lwtQos: 0
  publickeypin: true
  keepAlive: 60
  clientid: 98f11c4f-42f5-4b8d-9769-857c3c1660b4
  hostnameValidated: true
  secure: false
  birthRetain: true
  shutdownRetain: true
  certificatepin: true
  password: XYZ
  protocol: TCP
  qos: 0
  reconnectTime: 60000
  mqttVersion: V5
  host: 127.0.0.1
  lwtRetain: true
  username: mqttuser
  enableDiscovery: true
  
Thing:

Code: Alles auswählen

UID: mqtt:topic:Mosquitto_local:MotionSensorEingang
label: MotionSensorEingang
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:Mosquitto_local
channels:
  - id: StatusMotionEingang
    channelTypeUID: mqtt:number
    label: StatusMotionEingang
    description: ""
    configuration:
      stateTopic: tele/tasmota_F0E878/2F13/SENSOR
      transformationPattern:
        - JSONPATH:$.MotionSensorEingang.ZoneStatus
ITEM:

Code: Alles auswählen

label: StatusMotionEingang
type: Number
category: ""
groupNames: []
tags:
  - Point
AUSGABE MQTT EXPLORER:

TOPIC:
tele/tasmota_F0E878/2F13/SENSOR

Code: Alles auswählen

{
  "<MotionSensorEingang>": {
    "Device": "0x2F13",
    "Name": "<MotionSensorEingang>",
    "ZoneStatus": 0,
    "Occupancy": 0,
    "Endpoint": 1,
    "LinkQuality": 174
  }
}
Bin für jede Idee dankbar und wünsche allen noch schönes Festtage.

Benutzeravatar
udo1toni
Beiträge: 14950
Registriert: 11. Apr 2018 18:05
Answers: 235
Wohnort: Darmstadt

Re: Sonoff Zigbee Brigde/Tasmota - > Bewegungsmelder OH4.3 MQTT

Beitrag von udo1toni »

Auf den ersten Blick müsstest Du < und > mit angeben:

Code: Alles auswählen

        - JSONPATH:$.<MotionSensorEingang>.ZoneStatus
und weil das evtl. nicht funktioniert, könnte es sein, dass Du die Schreibweise anpassen musst:

Code: Alles auswählen

        - JSONPATH:$["<MotionSensorEingang>"].ZoneStatus
Die Frage ist aber auch, woher die spitzen Klammern überhaupt kommen (wohlgemerkt... im JSON)

Ansonsten wäre mein Ratschlag, den Channel eher als Switch Channel anzulegen:

Code: Alles auswählen

UID: mqtt:topic:Mosquitto_local:MotionSensorEingang
label: MotionSensorEingang
thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:Mosquitto_local
channels:
  - id: StatusMotionEingang
    channelTypeUID: mqtt:switch
    label: StatusMotionEingang
    description: ""
    configuration:
      stateTopic: tele/tasmota_F0E878/2F13/SENSOR
      transformationPattern:
        - JSONPATH:$["<MotionSensorEingang>"].ZoneStatus
      on: "1"
      off: "0"
und dann ein Switch Item zu verwenden.
Es könnte auch sein, dass das Topic zwischendurch JSON liefert, welches ZoneStatus überhaupt nicht enthält, dann müsstest Du noch eine Verkettung mit REGEX vornehmen:

Code: Alles auswählen

        - REGEX:(.*ZoneStatus.*)∩JSONPATH:$["<MotionSensorEingang>"].ZoneStatus
Das Symbol ∩ heißt Intersection (in der Windows Zeichentabelle auf deutsch falsch übersetzt mit Durchschnitt) am einfachsten kopierst Du das Zeichen aus dem Hilfetext zum transformationPattern :)
Selbstverständlich muss dafür zusätzlich zum ohnehin nötigen JSONPath Addon auch REGEX installiert sein.
openHAB4.3.0 stable in einem Debian-Container (bookworm) (Proxmox 8.3.2, LXC), mit openHABian eingerichtet

Comprex
Beiträge: 7
Registriert: 25. Dez 2024 16:15
Answers: 0

Re: Sonoff Zigbee Brigde/Tasmota - > Bewegungsmelder OH4.3 MQTT

Beitrag von Comprex »

Hallo Udo,

vielen Dank. Die Klammern waren es und dein Code hat sofort funktioniert. :D
Regex war nicht benötigt.

Für alle anderen hier noch die funktionierende Rule zu den Bewegungsmeldern.

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: MotionSensorEingang_StatusMotionEingang
      state: ON
      previousState: OFF
    type: core.ItemStateChangeTrigger
conditions:
  - inputs: {}
    id: "4"
    configuration:
      itemName: Licht_Hauseingang_Hauseingang
      state: OFF
      operator: =
    type: core.ItemStateCondition
actions:
  - inputs: {}
    id: "2"
    configuration:
      itemName: Licht_Hauseingang_Hauseingang
      command: ON
    type: core.ItemCommandAction
  - inputs: {}
    id: "3"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: |-
        createTimer(now.plusMinutes(5), [ | 
                Licht_Hauseingang_Hauseingang.sendCommand(OFF)])
    type: script.ScriptAction
    
Thema damit erledigt und das Licht geht an :lol:

Antworten