Hallo,
ich fang mit MQTT2_DEVICE gerade rest an und hab mir auch die Praxisbeispiele angeguckt, daraus entstanden ist folgendes Gerät
defmod MQTT_luefter_4 MQTT2_DEVICE
attr MQTT_luefter_4 IODev MQTT2_FHEM_Server
attr MQTT_luefter_4 alias Lüfter 4
attr MQTT_luefter_4 devStateIcon 0:vent_ventilation_level_0@red:10 1.:vent_ventilation_level_1@green:20 2.:vent_ventilation_level_2@green:30 3.:vent_ventilation_level_2@green:40 4.:vent_ventilation_level_2@orange:50 5.:vent_ventilation_level_2@orange:60 6.:vent_ventilation_level_2@red:70 7.:vent_ventilation_level_3@red:80 8.:vent_ventilation_level_3@red:90 9.:vent_ventilation_level_3@red:100 100:vent_ventilation_level_3@red:10 .*:hourglass
attr MQTT_luefter_4 genericDeviceType Fanv2
attr MQTT_luefter_4 group Lüftungsanlage
attr MQTT_luefter_4 homebridgeMapping clear\
On=state,cmdOff=0,cmdOn=20\
CurrentFanState=CurrentFanState,cmd=CurrentFanState\
RotationSpeed=RotationSpeed,minValue=0,maxValue=100,minStep=10,cmd=,delay=1\
RotationDirection=RotationDirection,cmd=RotationDirection\
TargetFanState=TargetFanState,values=off:AUTO;;;;on:MANUAL,cmd=TargetFanState
attr MQTT_luefter_4 icon vent_ventilation
attr MQTT_luefter_4 readingList /Smarthome/Haus/SEVI160/Luefter4.* { json2nameValue($EVENT) }
attr MQTT_luefter_4 room TEST->Lueftungsanlage
attr MQTT_luefter_4 setList RotationSpeed:slider,0,10,100 /Smarthome/Haus/SEVI160/Luefter4 {"$EVTPART0":"$EVTPART1"}\
CurrentFanState:0,1,2 /Smarthome/Haus/SEVI160/Luefter4 {"$EVTPART0":"$EVTPART1"}\
TargetFanState:0,1 /Smarthome/Haus/SEVI160/Luefter4 {"$EVTPART0":"$EVTPART1"}\
RotationDirection:0,1 /Smarthome/Haus/SEVI160/Luefter4 {"$EVTPART0":"$EVTPART1"}\
Winter_rotation:rein,raus /Smarthome/Haus/SEVI160/Luefter4 {"$EVTPART0":"$EVTPART1"}\
Stosslueften:on,off /Smarthome/Haus/SEVI160/Luefter4 {"$EVTPART0":"$EVTPART1"}
attr MQTT_luefter_4 siriName MQTTArbeitszimmer
attr MQTT_luefter_4 webCmd RotationSpeed
sende ich jetzt via MQTT FX { "RotationDirection" : 1 }
auf /Smarthome/Haus/SEVI160/Luefter4 erscheint im Log
5: PUBLISH: 0=(0) /Smarthome/Haus/SEVI160/Luefter4{ "RotationDirection" : 0 }
4: MQTT2_FHEM_Server_192.168.1.18_51152 MQTT_FX_Client PUBLISH /Smarthome/Haus/SEVI160/Luefter4:{ "RotationDirection" : 0 }
5: MQTT2_FHEM_Server: dispatch autocreate=simple\000MQTT_FX_Client\000/Smarthome/Haus/SEVI160/Luefter4\000{ "RotationDirection" : 0 }
Und der das Reading wird gesetzt.
Mach ich jetzt ein set mit dem MQTT2_DEVICE erscheint im Log
5: MQTT2_FHEM_Server: PUBLISH /Smarthome/Haus/SEVI160/Luefter4 {"RotationDirection":"1"}
das Reading bleibt aber unverändert stattdessen habe ich im
state RotationDirection
stehen.
Fehlt mir noch irgendwo was?
spontan fällt mir da deine formatierung auf. man beachte die leerstellen zwischen den befehlen.
Zitat von: BOFH am 01 Juni 2019, 10:48:41
5: PUBLISH: 0=(0) /Smarthome/Haus/SEVI160/Luefter4{ "RotationDirection" : 0 }
5: MQTT2_FHEM_Server: PUBLISH /Smarthome/Haus/SEVI160/Luefter4 {"RotationDirection":"1"}
mal bitte abchecken und dann den status beobachen, das müsste noch ne feedback sache sein.
wasn des fürn aktor? und hast mal ein list?
Das mit der fehlenden Rückmeldung vom Aktor ist ggf. eine Baustelle (faktisch geschalten wird, oder?), aber auch beim Versenden kann man festlegen, ob was in die Readings oder im state geschrieben wird. Für diese 2. Baustelle gibt es das Attribut setStateList (das aber in den Readings ein "set_" davor macht, damit man sieht, wo die Info herkommt (von FHEM oder der Rückmeldung des Aktors); kann sein, dass du das im devStateIcon wieder berücksichtigen müßtest).
Zitat von: DasQ am 01 Juni 2019, 11:58:12
spontan fällt mir da deine formatierung auf. man beachte die leerstellen zwischen den befehlen.
mal bitte abchecken und dann den status beobachen, das müsste noch ne feedback sache sein.
wasn des fürn aktor? und hast mal ein list?
da ich
attr MQTT_luefter_4 readingList /Smarthome/Haus/SEVI160/Luefter4.* { json2nameValue($EVENT) }
den so nutze denke ich, wäre es egal? wenn ich via mqtt fx ein .../Luefter4 blub bla im topic nutze funzt das auch ohne Probleme.
Der Topic MIT leerzeichen wird vom MQTT2_Device erstellt, da kann ich dann ja ohnehin nichts abändern?
Aktor ? Ähm keiner - habe das MQTT2_DEVICE das die Infos bekommt und publishen soll - Quasie nur ein Speicherort für die Infos.
Via Python-mqqt client empfang ich dann die Daten und setzt das weiter um
Funktioniert dann eher nicht, wie Beta-User schreibt, mangels setStateListe. Das muss ich mir mal angucken.
Also ich bezog mich auf den Syntax im mqttfx ... der Client macht/will ja wieder json draus und da sind Leerzeichen an der falschen Stelle fatal.
Das Problem ist ja doch, dass das MQTT2_DEVICE sein eigenen published Verkehr nicht empfängt?
Ich wuerde das als "gewuenschtes Verhalten" und nicht als "Problem" beschreiben.
Problem ist auch immer so negativ. Wie bekomm ich das Feature dann wegoptimiert?
Was muss der client ( der python subscribte ja das Topic ) antworten, damit das mqtt2_device das reading dann aktualisiert ?
Etwas, was mit readingsList zum gewuenschten Reading konvertiert wird.
Sollte mal jemand es ähnliche aufbauen wollen wie ich, was wohl atypisch ist ( mit dem MQTT_DEVICE geht es nämlich einfach so ).
Ich hab es nun so "gelöst"
attr MQTT2_FHEM_Server rePublish 1
im commandref zum MQTT2_Server stand die "Lösung"