[gelöst]-Frage: Syntax MQTT_GENERIC_BRIDGE value-mapping

Begonnen von hauwech, 13 November 2018, 15:02:07

Vorheriges Thema - Nächstes Thema

hauwech

Hallo zusammen,
ich möchte erreichen, daß alle Homematic Fensterkontakte anstatt open/closed via mqtt z.B. true/false schicken.
Ich vermute, ich kann das
- in der MQTT_GENERIC-BRIDGE Instanz mit globalAlias für alle Devices oder
- im (Kontakt-)Device mit mqttAlias für ein einzelnes Device
erreichen.
Wie muß ich das eintragen?
- pub:closed=false pub:open=true oder
- pub:closed=false open=true
Soll der delimiter ein Leerzeichen oder ein Komma sein?

Danke und Gruß
Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

hexenmeister

Nein, alias ist für die Namensänderung der Attributen.
Für Änderung von Werten kann 'expression' (mit Perl-Code) in mqttSubscribe und mqttPublish (pro Device, global, habe ich das, glaube ich, nicht implementiert) verwendet werden.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

hauwech

Hallo hexenmeister,
danke für die schnelle Reaktion :)
Ich habe mir mal eben die commandref zu mqttSubscribe angeschaut, aber ich irgendwie raff' ich's im Moment nicht.
Wie müßte ich das denn formulieren? Könntest Du mir bitte mal ein Beispiel für meinen Anwendungsfall notieren?

Danke und Gruß
Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

hexenmeister

Aus dem Kopf und ungetestet:

xyz attr mqttPublish name:topic=irgendwas/und/noch/was name:expression={($value eq 'open')?true:false}



Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

hauwech

Danke, das probier' ich gleich mal.

Gruß Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

hauwech

...ich krieg's nicht hin :( Ich bitte um Nachsicht, mit mqtt habe ich erst gestern angefangen...ist wohl aber eher ein Perl-Problem...
Ich habe mir einen dummy gebaut, der open/closed annimmt. (remote kriege ich die Fenster nicht auf/zu :) )
Mit dem Attribut mqttPublish state:topic=test/dummy/fenster kommt am anderen Ende (erstmal MQTT.fx) open/closed raus, wenn ich den dummy schalte.
Ich habe allerhand Varianten probiert, z.B. state:topic=test/dummy/fenster state:[eE]xpression={($value eq 'open')?true:false} oder state:topic=test/dummy/fenster state:{($value eq 'open')?true:false} oder state:topic=test/dummy/fenster {($value eq 'open')?true:false} oder {($value eq 'open')?true:false}:topic=test/dummy/fenster
Ich habe leider auch keine Idee, wie ich debuggen könnte, was z.B. in $value steht.
Könnte mir bitte nochmal einer auf die Sprünge helfen?

Danke und Gruß
Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

hexenmeister

So ist das immer mit ungetesteten Code-Schnipseln >:(
War schon fast richtig. Hier ist mein Test-Dummy, was fiunktioniert:
defmod dummy dummy
attr dummy mqttPublish state:topic=test/dummy/fenster state:expression={($value eq 'open')?'true':'false'}


Erklärung: true und false kennt Perl so natürlich nicht, sie müssen ja Zeivhenkette sein, also fehlen Anführungszeichen.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

hauwech

kaum macht man's richtig :-)
Vielen Dank! So geht's. Es sind halt immer die kleinen Dinge...

Gruß Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS