MQTT Probleme mit dem Command Topic

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
mhbosch
Beiträge: 28
Registriert: 29. Jan 2019 19:10
Answers: 0

MQTT Probleme mit dem Command Topic

Beitrag von mhbosch »

Hallo,

ich habe einen Ventilator, den ich per MQTT angebunden habe. Leider habe ich ein Problem beim zurückliefern des Commands, das er kein Mapping macht.

Der Reihe nach.
Mein Thing Channel sieht so aus:

Code: Alles auswählen

Type number : geschwindigkeit [ stateTopic="Vent/Blauberg/Fan_Speed", transformationPattern="map:3states.map" , commandTopic="Vent/Blauberg/Command", 1="SPEED1", 2="SPEED2", 3="SPEED3"]

Das Mapping so:

Code: Alles auswählen

low=1
medium=2
high=3
Und mein ITEM:

Code: Alles auswählen

Number FF_Bedroom_Ventilation_Geschwindigkeit "Geschwindigkeit" <fan> (FF_Bedroom)  {channel="mqtt:topic:boschhome:FF_Bedroom_Vent:geschwindigkeit"}
In der Sitemap habe ich das Item so aufgebaut:

Code: Alles auswählen

  Switch item=FF_Bedroom_Ventilation_Geschwindigkeit mappings=[1="low",2="medium",3="high"]
Der Ventilator liefert low, medium, high. Das wird auch ordentlich umgesetzt. Die Sitemap reagiert.

Nur beim zurückliefern über den Channel bekomme ich nur die Nummern 1, 2 oder 3. Eigentlich würde ich vermuten, dass folgendes Mapping greift:

Code: Alles auswählen

commandTopic="Vent/Blauberg/Command", 1="SPEED1", 2="SPEED2", 3="SPEED3"

Code: Alles auswählen

2020-04-27 15:15:40.270 [ome.event.ItemCommandEvent] - Item 'FF_Bedroom_Ventilation_Geschwindigkeit' received command 1
2020-04-27 15:15:40.328 [nt.ItemStatePredictedEvent] - FF_Bedroom_Ventilation_Geschwindigkeit predicted to become 1
2020-04-27 15:15:40.623 [ome.event.ItemCommandEvent] - Item 'FF_Bedroom_Ventilation_Geschwindigkeit' received command 2
2020-04-27 15:15:40.644 [nt.ItemStatePredictedEvent] - FF_Bedroom_Ventilation_Geschwindigkeit predicted to become 2
2020-04-27 15:15:40.681 [vent.ItemStateChangedEvent] - FF_Bedroom_Ventilation_Geschwindigkeit changed from 1 to 2
2020-04-27 15:15:41.177 [ome.event.ItemCommandEvent] - Item 'FF_Bedroom_Ventilation_Geschwindigkeit' received command 3
2020-04-27 15:15:41.209 [nt.ItemStatePredictedEvent] - FF_Bedroom_Ventilation_Geschwindigkeit predicted to become 3
2020-04-27 15:15:41.246 [vent.ItemStateChangedEvent] - FF_Bedroom_Ventilation_Geschwindigkeit changed from 2 to 3
2020-04-27 15:15:41.760 [ome.event.ItemCommandEvent] - Item 'FF_Bedroom_Ventilation_Geschwindigkeit' received command 1
2020-04-27 15:15:41.778 [nt.ItemStatePredictedEvent] - FF_Bedroom_Ventilation_Geschwindigkeit predicted to become 1
2020-04-27 15:15:41.800 [vent.ItemStateChangedEvent] - FF_Bedroom_Ventilation_Geschwindigkeit changed from 3 to 1

Da ich mehrere Steuerungsbefehle über den Channel senden will, wäre eine Unterscheidung wünschenswert.

Sieht jemand mein Denkfehler, warum ich auf dem Commandchannel nicht SPEED1, SPEED2 oder SPEED3 geliefert bekomme?


Beste Grüße,

mhbosch

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: MQTT Probleme mit dem Command Topic

Beitrag von Darkwin101 »

Das Mapping ist nur für die UI und nicht für die Channels

mhbosch
Beiträge: 28
Registriert: 29. Jan 2019 19:10
Answers: 0

Re: MQTT Probleme mit dem Command Topic

Beitrag von mhbosch »

Hallo,

danke für das Feedback. Aber wie setze ich es in den Commandchannel um? Dafür ist doch das Commandtopic?

Wo ist mein Gedankenfehler?Das Mapping ist beim Auslesen und für die UI. Wo bestimme ich dann die Rückmeldung?

Beste Grüße


Gesendet von meinem SM-T830 mit Tapatalk


Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: MQTT Probleme mit dem Command Topic

Beitrag von peter-pan »

Also wenn ich das Binding-Handbuch richtig verstehe (Transformations are not applied for sending data), dann wird das nicht unterstützt.

Hast du schon mal daran gedacht, das mit einer Regel zu steuern ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

mhbosch
Beiträge: 28
Registriert: 29. Jan 2019 19:10
Answers: 0

Re: MQTT Probleme mit dem Command Topic

Beitrag von mhbosch »

Hallo peter-pan,

danke für den Tipp, da habe ich das Handbuch falsch verstanden.
Ich denke nicht, dass ich dies über eine Regel ändern werde. Es wäre dann einfacher für mich, einen zweiten Commandchannel zu öffnen, da ich die Schnittstelle selber programmiere.

Aber folgende Änderung half:

Code: Alles auswählen

Type number : geschwindigkeit [ stateTopic="Vent/Blauberg/Fan_Speed", transformationPattern="map:3states.map" , commandTopic="Vent/Blauberg/Command", formatBeforePublish="SPEED=%s"]
formatBeforePublish="SPEED=%s" ist die Lösung.

Danke für den Schubbs.

Beste Grüße

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: MQTT Probleme mit dem Command Topic

Beitrag von peter-pan »

Super. Das muss ich auch mal ausprobieren. Ich habe da nämlich auch ein ähnliches Szenario, dass ich aber momentan mit Regeln erledige. Mal sehen, ob ich das da einsetzen kann, zumindest teilweise.

Gruss - Peter
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: MQTT Probleme mit dem Command Topic

Beitrag von udo1toni »

So als Tipp, wenn Du das eh selbst entwickelst, solltest Du eher ein Topic für die speed verwenden, welche dann einfach als Zahl angegeben werden könnte. Also z.B. ein Topic Vent/Blauberg/Command/Speed und ein Topic Vent/Blauberg/Command/Power, falls das ein anderes mögliches Kommando sein sollte. Als Status könntest Du auch ein JSON Objekt zurück liefern (das wäre als Kommando auch noch eine Option).
Wobei ich mich schon frage, was an dem Ventilator über die Stufe hinausgehend noch alles gesteuert werden kann (Stufe 0 für OFF wäre ja auch eine Möglichkeit).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mhbosch
Beiträge: 28
Registriert: 29. Jan 2019 19:10
Answers: 0

Re: MQTT Probleme mit dem Command Topic

Beitrag von mhbosch »

Hallo Udo1Toni,

gibt es einen guten Grund für viele TOPICs, entgegen möglicher Commands? Dann mache ich das gerne (manchmal kann man etwas ja falsch verstehen, daher meine ich die Frage wirklich ernst. Ich bin nicht so der erfahrene Entwickler und möchte mein Programm möglichst komfortabel gestalten). Ich ging davon aus, dass ein permanent laufendes Script besser auf wenig TOPICs reagieren kann, und die Programmlogik dann entscheidet.

Der Lüfter hat noch eine manuelle Geschwindigkeit, die ich aber nicht implementieren möchte.
Zudem hat er 3 Lüftungsstufen, wobei 2 wichtig sind. Ventilation und Wärmerückgewinnung.
Es handelt sich um eine Installation in der Wand, die benötigt wird, um einen Raum permanent zu entfeuchten und im Winter halt Wärmeeffizent.

Mein Ansinnen ist halt, in den Nachtstunden möglichst ohne, oder dann halt mit "leiser" Stufe das Raumklima zu halten.
Und neben den Nachtstunden (da er im Schlafzimmer installiert ist) dann mit viel Kraft die Luftfeuchtigkeit zu regulieren.
Daher soll meine Rule später auch 3 Dinge automatisch schalten. AN/AUS, Geschwindigkeit, Entlüftungsprogramm.
Und dies im Einklang mit dem TÜR/FENSTER auf Zustand und Außentemperatur.

JSON, ja, würde bestimmt viel Sinn machen, habe ich mir auch schon überlegt. Leider bin ich da nicht so erfahren, aber ich vermute, etwas einlesen (wie auch in diesem Thema) hilft.
Bei den Steuerungscommandos greife ich auf etwas Fremdcode zurück (unter MIT Lizenz). Da verstehe ich nur einzelne Schaltbefehle, da im HEXcode per UDP eine Kommunikation stattfindet. Diesen Aufbau verstehe ich aber nicht ganz ;-(
Hier suche ich aber immer noch Mitentwickler (habe ich auch hier veröffentlicht).

Für Feedback bin ich immer dankbar. Nur so kann meine Steuerung besser werden.

Bleibt gesund,

mhbosch

Antworten