mdzio / ccu-jack

CCU-Jack bietet einen einfachen und sicheren REST- und MQTT-basierten Zugriff auf die Datenpunkte der Zentrale (CCU) des Hausautomations-Systems HomeMatic. Zudem können einfach Fremdgeräte an die CCU angebunden werden.
GNU General Public License v3.0
112 stars 11 forks source link

Empfänger für MQTT-Textnachrichten #92

Closed diddi68 closed 2 years ago

diddi68 commented 2 years ago

Falls das irgendwie machbar ist, wünsche ich mir ein virtuelles Gerät, mit dem ich MQTT-Textnachrichten empfangen kann. Mein Mähroboter sendet unter anderem z.B. Timerdaten in Uhrzeitformat (08:00) und Wochentag (Mo). Wäre super, wenn das implementiert werden könnte.

mdzio commented 2 years ago

Kennt vielleicht jemand ein HomeMatic-Gerät, das einen Text als Wert sendet?

diddi68 commented 2 years ago

Beim HmIP-Device "WRCD_V2" gibt es den Datenpunkt "Channel 1 - KEY_TRANSCEIVER", und da ist der Parameter "TEXT" logisch als "string" und physikalisch als "integer" read/write. Ich kenn mich damit nicht sonderlich gut aus, aber vielleicht hilft es dir weiter. Ein reines HM-Device habe ich leider nicht gefunden.

mdzio commented 2 years ago

Wie sehen denn die gesendeten Payloads aus?

Ich weiß gar nicht, ob man in CCU-Programmen überhaupt Zeichenketten verarbeiten kann.

Wenn es einen festen Satz an Zeichenketten gibt (z.B. Mo bis So), dann könnten sie auf die Zahlen von 0 bis 6 abgebildet werden. Eine Uhrzeit könnte auch auf eine Zahl abgebildet werden.

Der MQTT Analogwertempfänger könnte entsprechend erweitert werden.

diddi68 commented 2 years ago

Wie sehen denn die gesendeten Payloads aus? Sehr unterschiedlich. Als Uhrzeit (z.B. 08:00), als Wochentag in Hex (z.B. 0x01) oder bei meinem Wasserzähler der Fehlerzeitbereich (z.B. 22-31 days). Die Beispiele stellen jeweils einen Payload dar.

Ich weiß gar nicht, ob man in CCU-Programmen überhaupt Zeichenketten verarbeiten kann. Das Verarbeiten in Programmen wäre für mich gar nicht so wichtig. Das Anzeigen des MQTT-Payloads würde mir reichen (auch in einer Systemvariablen).

mdzio commented 2 years ago

Die oben genannten Payloads kann der CCU-Jack bereits in Zahlen konvertieren:

Beispiel für die Uhrzeit:

Template Eingabe Ausgabe
{{slice . 0 2}}{{slice . 3 5}} 14:23 1423,0
{{slice . 0 2}}{{slice . 3 5}} 00:01 1,0

Beispiel für die Wochentage:

Template Eingabe Ausgabe
{{slice . 3 4}} 0x03 3,0

Die Zahlen vom Fehlerzeitbereich können einzeln extrahiert werden, z.B. mit einem regulären Ausdruck.

Eine Beschreibung ist im Wiki zu finden.

An die Datenpunkte kannst Du dann ein CCU-Programm hängen, das die Zahlenwerte als Text umwandelt und in in Systemvariablen ablegt.

Siehe auch #93.

diddi68 commented 2 years ago

Vielen Dank für den Tipp. Werde ich bei nächster Gelegenheit mal ausprobieren.

mdzio commented 2 years ago

Es gibt noch die Möglichkeit, dass der Text direkt auf ein MQTT-Topic einer Zeichenkettensystemvariablen (z.B. /sysvar/set/1234) geschrieben wird. Das Topic muss dann aber beim Sender konfigurierbar sein.

Dann schließe ich den Eintrag vorläufig. Technisch ist die ursprüngliche Anforderung wohl nicht zu erfüllen.