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
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.
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
Aus dem Kopf und ungetestet:
xyz attr mqttPublish name:topic=irgendwas/und/noch/was name:expression={($value eq 'open')?true:false}
Danke, das probier' ich gleich mal.
Gruß Roland
...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
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.
kaum macht man's richtig :-)
Vielen Dank! So geht's. Es sind halt immer die kleinen Dinge...
Gruß Roland