Ich habe ein dummy "Rollo1" mit dem "Stufen" 0 25 50 75 100
Wenn ich nun 50 klicke, dann hat er den Status 50. Alles gut.
Nun möchte ich ein notify erstellen, was mit den zurückzulegenden Weg ermittelt.
Klicke ich auf 75, fährt der Motor noch 25, da ja schon 50 erledigt sind.
Alles funktioniert soweit, allerdings, woher bekomme ich den "vorherigen" Status?
Mein
my $Status = ReadingsVal("Rollo1", "state", 0);
my $Ziel = $EVENT;
haben beide den Wert 75 und nicht wie gehofft "ReadingsVal" 50 und EVENT 75.
Eigentlich auch verständlich ;)
Habt Ihr ne Idee?
Vlt. gibts ja sowas wie ein ReadingsVal("Rollo1", "state -1", 0);
;)
Du kannst einem dummy soviele Readings zuweisen, wie Du möchtest. Gib dem Dummy einfach ein reading "alterWert" und schreibe da am Ende (!) Deines notify immer den dann aktuellen Wert rein.
Beim nächsten notify steht dann im event der neue Wert und in "alterWert" immer noch der vorherige.
Deine bisherige Logik kann nicht funktionieren, weil Dein notify erst NACH dem Ändern des Status ausgelöst wird. Zu diesem Zeitpunkt ist der aktuelle Wert bereits überschrieben.
wärst Du so lieb mir die entsprechende Zeile zu schreiben?
geht das in die Richtung?
attr Rollo1 userReadings alterWert 0
oder eher im notify in Richtung:
set alterWert $EVENT
Ahhh!
setreading Rollo1 alterWert 50
Das reading state sollte vom device unter Berücksichtigung vom Attribut eventMapping auf STATE$ abgebildet werden.
STATE kann über die funktionen Value(devname) und der alte Wert über OldValue(devname)
abgefragt werden. (perl)
Elektrolurch
Von userReading habe ich nirgends etwas geschrieben.