Status Reading von einem anderen Device

Begonnen von butaluk, 08 Februar 2019, 10:28:31

Vorheriges Thema - Nächstes Thema

butaluk

Hallo Zusammen.

ich habe das Problem mit der Anbindung vom Reading eines Devices an einen anderen.
Im Grunde ist es ein und das selbe Device, ich habe die Ausgänge des Devices separat definiert um die einzeln anzusteuern.

Es handelt sich um einen MySensr RS485 Device mit 4xRelais und 1-wire DS18B20 Sensoren.
Folgendes Device wurde vom Fhem angelegt:
define MYSENSOR_10 MYSENSORS_DEVICE 10
attr MYSENSOR_10 IODev meinMSG
attr MYSENSOR_10 mapReading_id1 1 id
attr MYSENSOR_10 mapReading_id2 2 id
attr MYSENSOR_10 mapReading_power 0 power
attr MYSENSOR_10 mapReading_power1 1 power
attr MYSENSOR_10 mapReading_power2 2 power
attr MYSENSOR_10 mapReading_power3 3 power
attr MYSENSOR_10 mapReading_status 0 status
attr MYSENSOR_10 mapReading_status1 1 status
attr MYSENSOR_10 mapReading_status2 2 status
attr MYSENSOR_10 mapReading_status3 3 status
attr MYSENSOR_10 mapReading_temperature1 1 temperature
attr MYSENSOR_10 mapReading_temperature2 2 temperature
attr MYSENSOR_10 mode node
attr MYSENSOR_10 room Heizung_OG
attr MYSENSOR_10 setReading_power 1
attr MYSENSOR_10 setReading_power1 1
attr MYSENSOR_10 setReading_power2 1
attr MYSENSOR_10 setReading_power3 1
attr MYSENSOR_10 setReading_status off,on
attr MYSENSOR_10 setReading_status1 on,off
attr MYSENSOR_10 setReading_status2 on,off
attr MYSENSOR_10 setReading_status3 on,off
attr MYSENSOR_10 stateFormat radioId
attr MYSENSOR_10 version 2.3.0


Um die Ausgänge einzeln anzusteuern habe ich jeden Ausgang einzeln definiert:
define Relais1 MYSENSORS_DEVICE 10
attr Relais1 IODev meinMSG
attr Relais1 mapReading_power 0 power
attr Relais1 mapReading_status 0 status
attr Relais1 setCommands on:status:on off:status:off
attr Relais1 setReading_power 1
attr Relais1 setReading_status off,on
attr Relais1 stateFormat status


Es funktioniert soweit ganz gut. Das Problem ist, wird gerade Temperatur vom Device übertragen und einer der Ausgänge vom Fhem geschaltet wird, wird es vom Device nicht übernommen, der Status des Ausganges steht aber auf "On".
Den Sketch des Devices habe ich so angepasst dass der aktueller Status vom geschalteten Ausgang zurückgegeben wird.
Das Funktioniert auch soweit ganz gut.

Nun kommt es vor wenn einer der Ausgänge nicht geschaltet wird,
sind die Readings Status anzeigen vom MySensor Device und dem geschalteten Ausgang unterschiedlich sind. (siehe Screens)

Wie kann ich den Status von dem Device zu den Status des Ausganges anbinden?

Beta-User

Vorab: Warum postest du hier und nicht in der Bastelecke bei MySensors?

Die Idee, einfach einzelne MySensors-Devices zu basteln, indem man doppelt, finde ich erst mal interessant, ich habe das bisher eher über ReadingsProxy gelöst, daher kann ich im Moment auch nicht sagen, ob eine Rückmeldung von einer Node auch tatsächlich an mehrere Devices in FHEM verteilt wird. Wenn das grundsätzlich funktioniert:

Versuche doch, Schaltvorgänge vom "Teil-Device" dann mit ACK-Anforderung zu versenden, dann mußt du dich nicht im Node-Code darum kümmern, dass der Status jeweils paßt - es bleibt auf dem letzten Zustand, bis das ACK kommt...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

butaluk

Danke für die Schnelle Antwort. und für den Tipp! Hab das Thema entsprechend verschoben.

ZitatVersuche doch, Schaltvorgänge vom "Teil-Device" dann mit ACK-Anforderung zu versenden, dann mußt du dich nicht im Node-Code darum kümmern, dass der Status jeweils paßt - es bleibt auf dem letzten Zustand, bis das ACK kommt...

Wie wird das in Fhem umgesetzt? hast du vlt. eine Beispiel? Das wehre sehr nett!

Beta-User

Das mit dem Ack ist ein Attribut, das am DEVICE (oder dem GW) gesetzt werden kann; bitte in die Doku schauen, wenn du es nicht direkt findest.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

butaluk

Hallo,

um die Sache hier zum Abschluss zu bringen wollte ich meine Laufende Lösung mitteile.

Für den MySensor Device musste noch ein Attribut "requestAck" auf 1 gesetzt werden.
define MYSENSOR_10 MYSENSORS_DEVICE 10
attr MYSENSOR_10 IODev meinMSG
attr MYSENSOR_10 mapReading_id4 4 id
attr MYSENSOR_10 mapReading_id5 5 id
attr MYSENSOR_10 mapReading_power 0 power
attr MYSENSOR_10 mapReading_power1 1 power
attr MYSENSOR_10 mapReading_power2 2 power
attr MYSENSOR_10 mapReading_power3 3 power
attr MYSENSOR_10 mapReading_status 0 status
attr MYSENSOR_10 mapReading_status1 1 status
attr MYSENSOR_10 mapReading_status2 2 status
attr MYSENSOR_10 mapReading_status3 3 status
attr MYSENSOR_10 mapReading_temperature4 4 temperature
attr MYSENSOR_10 mapReading_temperature5 5 temperature
attr MYSENSOR_10 mode node
attr MYSENSOR_10 requestAck 1
attr MYSENSOR_10 setReading_power 1
attr MYSENSOR_10 setReading_power1 1
attr MYSENSOR_10 setReading_power2 1
attr MYSENSOR_10 setReading_power3 1
attr MYSENSOR_10 setReading_status off,on
attr MYSENSOR_10 setReading_status1 off,on
attr MYSENSOR_10 setReading_status2 off,on
attr MYSENSOR_10 setReading_status3 off,on


Um die Relais einzeln anzusteuern habe ich so wie der Beta-User vorgeschlagen hat "readingsProxy" definiert
define Relais1 readingsProxy MYSENSOR_10:status
attr Relais1 devStateIcon on:sani_heating_level_100@red:off off:sani_heating_level_0@#18B8ED:on
attr Relais1 setFn {($CMD eq "on")?"status on":"status off"}
attr Relais1 setList on off