OH kann scheinbar nicht an MQTT Broker senden

Hier bitte alles rein was Off-topic ist.

Moderatoren: Cyrelian, seppy

Antworten
kdb
Beiträge: 28
Registriert: 9. Jan 2024 18:00
Answers: 0

OH kann scheinbar nicht an MQTT Broker senden

Beitrag von kdb »

OH und MQTT
Mit OH soll eine durch TASMOTA gesteuerte Steckdose über MQTT geschaltet werden.
OH kann über MQTT den Status sowie andere Werte der Steckdose wie Verbrauch, Spannung etc. lesen. Wird die Steckdose über den Browser( Windows, Android oder iOS ) geschaltet, wird der Status in OH entsprechend geändert.
Mit MQTT Clients auf Windows oder IOS kann die Steckdose mit publish cmnd/tasmota_steckdose1/STATE/POWER on/off geschaltet werden und der Status in OH wird entsprechend aktualisiert.
Wird in OH versucht zu schalten wird scheinbar nichts an den MQTT Broker gesendet. Zumindest erkennen MQTT Explorer unter Windows und ähnliche Programme unter IOS keinen Datentransfer.
D.h. vereinfacht gesprochen kann OH den Status lesen aber nicht schreiben.
Folgende Konfiguration ist vorhanden :
OH und MQTT Broker laufen auf einem RASPBERRY PI
Version von OH und Mosquitto
openHAB 4.1.
mosquitto version 2.0.11

Das Thing ist wie folgt definiert

Code: Alles auswählen

thingTypeUID: mqtt:topic
configuration: {}
bridgeUID: mqtt:broker:MQTTBrokerKDB
location: Keller
channels:
  - id: POWER
    channelTypeUID: mqtt:number
    label: POWER
    description: Leistungsaufnahme
    configuration:
      stateTopic: tele/tasmota_steckdose1/SENSOR
      transformationPattern: JSONPATH:$.ENERGY.Total
  - id: Yesterday
    channelTypeUID: mqtt:number
    label: Yesterday
    description: Leistungsaufnahme gestern
    configuration:
      stateTopic: tele/tasmota_steckdose1/SENSOR
      transformationPattern: JSONPATH:$.ENERGY.Yesterday
  - id: Status
    channelTypeUID: mqtt:switch
    label: Switch
    description: Status de Schalters
    configuration:
      commandTopic: cmnd/tasmota_steckdose1/STATE/POWER
      qos: 2
      stateTopic: stat/tasmota_steckdose1/POWER
      off: OFF
      on: ON
Wie kann festgestellt werden, welche Daten OH an den MQTT Broker sendet ?
( nicht den Broker abfragen, da wird nichts angezeigt )
Im logfile ist nichts zu erkennen.

Vielen Dank im Voraus. Mit freundlichen Grüssen Klaus-Dieter Brinkmann

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

Re: OH kann scheinbar nicht an MQTT Broker senden

Beitrag von udo1toni »

Wenn Du nicht grundlegend Tasmota manipuliert hast (selbst den Code geändert), so ist Dein commandTopic falsch.

Gewöhnlich ist in Tasmota als fullTopic %prefix%/%topic%/ eingestellt. %prefix% nimmt dabei einen der drei Werte stat, cmnd oder tele an.
Das sieht bei Deinen Topics auch entsprechend aus.
Das %topic% Feld ist ein pro Gerät individueller Wert, mit dem die einzelnen Geräte unterschieden werden - hier also tasmota_steckdose1.
Darunter gibt es jeweils für stat und cmnd identische Zweige, d.h. jedes command cmnd/%topic%/%postfix% löst im Zweifel eine Funktion aus, die zu einer passenden Meldung stat/%topic%/%postfix% führt.
Für den Switch wäre das command Topic bei Dir also cmnd/tasmota_steckdose1/POWER.
Die Zwischenebene STATE ist nicht existent (wie gesagt, es sei denn, Du hättest den Code manipuliert).
Vielleicht bist Du im Eifer des Gefechts einfach nur mit dem Topic durcheinander gekommen.

Da Tasmota die Standardwerte ON und OFF verwendet, kannst und solltest Du die Parametrierung des onValue und offValue leer lassen. Der Channel sollte also eher so aussehen:

Code: Alles auswählen

  - id: Status
    channelTypeUID: mqtt:switch
    label: Switch
    description: Status de Schalters
    configuration:
      commandTopic: cmnd/tasmota_steckdose1/POWER
      qos: 2
      stateTopic: stat/tasmota_steckdose1/POWER
Noch ein Hinweis wegen der Channel Ids:
Power -> Leistung (W).
Energy -> Energiemenge (Wh).
Das sind zwei unterschiedliche Dinge, Power ist die momentan umgesetzte Leistung, Energy ist die über die Zeit integrierte Leistung.
Du erhältst mit $.ENERGY.total die Gesamtmenge der entnommenen Energie, mit $.ENERGY.yesterday hingegen die gestern entnommene Energiemenge. Die Leistungsaufnahme ist immer auf einen Zeitpunkt bezogen, nicht auf einen Zeitraum (anders sähe es mit der maximalen Leistung aus, die wäre innerhalb eines Zeitraums gemessen worden).

Ein Schalter hat zwar einen Status, aber er wird auch zum Schalten verwendet, die Id ist also eher unglücklich gewählt.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

kdb
Beiträge: 28
Registriert: 9. Jan 2024 18:00
Answers: 0

Re: OH kann scheinbar nicht an MQTT Broker senden

Beitrag von kdb »

Hallo Udo, danke für die ausführliche Antwort. Ich werde nach Gartenarbeit alles nochmals testen. Warum aber wird ein möglicher Weise falsch benanntes topic nicht von OH bearbeitet. Habe OH bisher so verstanden ( und steure damit mehrere ESP 8266 ) , dass bei Schalten ein publish ausgeführt wird und daher in MQTTools sichtbar wird.
Im vorliegenden Falle habe ich mehrere topics zum Steuern der Steckdose ausprobiert, aber nie was gesehen.
Wo liegt mein Gedankenfehler ?
Vielen Dank im Voraus. Mit freundlichen Grüssen Klaus-Dieter Brinkmann

PS Die Bezeichnung der Topics habe ich der Anzeige der Steckdose entsprechend gewählt.

kdb
Beiträge: 28
Registriert: 9. Jan 2024 18:00
Answers: 0

Re: OH kann scheinbar nicht an MQTT Broker senden

Beitrag von kdb »

Nachdem alle Fehlersuche nicht geholfen hat.
Channel gelöscht. Mit scheinbar den gleichen Werten neu angelegt.
Und nun : ES LÄUFT.
Nochmals Danke.

Antworten