Hauptmenü

notify und userattr

Begonnen von Achim_T, 18 Juli 2018, 22:10:14

Vorheriges Thema - Nächstes Thema

Achim_T

Hallo,
ich benutze folgendes notify um über 'result-rfreceived-data' die userattr 'bridgeOff' und 'bridgeOn' abzufragen wenn ein passsender Wert an einem Device gefunden wird.

define n_SonoffBridgeCode notify BridgeSonoff:result-rfreceived-data:.* {}
{
    fhem("setstate a:bridgeOff=" . $EVTPART1 . ":FILTER=STATE=on off");
    fhem("setstate a:bridgeOn=" . $EVTPART1 . ":FILTER=STATE=off on");
}


Ein entsprechendes Device sieht bsp so aus:
define WZ_SchrankLichtProxy dummy
attr WZ_SchrankLichtProxy userattr bridgeOn bridgeOff
attr WZ_SchrankLichtProxy bridgeOff 501014
attr WZ_SchrankLichtProxy bridgeOn 501015
attr WZ_SchrankLichtProxy setList on:noArg off:noArg
attr WZ_SchrankLichtProxy webCmd on:off


Mein Problem ist, das ich gerne das entsprechende 'reading state' mit aktualisieren würde, weil nur STATE gesetzt wird. Ich hoffe ich habe mich verständlich ausgedrückt und jemand kann mir helfen.

Achim_T

Hallo,
ich wollte meine Frage noch weiter eingrenzen.
Mit dem notify ändere ich ja den  (Internals) "STATE" des entsprechenden Device, kann ich das soweit abändern (vor allem wie) um das automatisch angelegte reading "state" mit zu aktualisieren?

Achim_T

Ich melde mich nochmal, weil ich immer noch nicht so recht weiter komme.
Was ich nachlesen konnte ist, "setstate ändert nur das reading und erzeugt kein event".
Meine Frage dazu ist, könnte ich bei den entsprechenden Devices nicht  auf eine Änderungs des STATE reagieren also einen Vergleich machen und mit "setreading" den state aktualisieren?
Meine PERL kenntnisse sind da nicht ausreichend beziehungsweise nicht vorhanden. Grüße

Achim_T

jetzt habe ich für mich eine Lösung gefunden, ganz einfach...
ich habe das notify dahingehend erweitert, so kann ich das für jedes DEvice übernehmen wo ich es benötige.

Sonoff_Bridge:result-rfreceived-data:..* {
fhem("setstate a:bridgeOff=" . $EVTPART1 . ":FILTER=STATE=on off");
fhem("setstate a:bridgeOn=" . $EVTPART1 . ":FILTER=STATE=off on");
if ($EVTPART1 == "D34D8E") {
fhem('set Sonoff_BM1 on');
}
}