Bitte um wohlwollende Prüfung folgenden Vorschlages:
Index: 91_notify.pm
===================================================================
--- 91_notify.pm (revision 5350)
+++ 91_notify.pm (working copy)
@@ -14,7 +14,7 @@
$hash->{DefFn} = "notify_Define";
$hash->{NotifyFn} = "notify_Exec";
$hash->{AttrFn} = "notify_Attr";
- $hash->{AttrList} = "disable:0,1 disabledForIntervals forwardReturnValue:0,1";
+ $hash->{AttrList} = "disable:0,1 disabledForIntervals forwardReturnValue:0,1 showTriggerTime:0,1";
}
@@ -69,6 +69,7 @@
$found = ("$n:$s" =~ m/^$re$/);
}
if($found) {
+ CommandSetstate(undef, "$ln ".localtime) if AttrVal($ln,'showTriggerTime',0);
Log3 $ln, 5, "Triggering $ln";
my (undef, $exec) = split("[ \t]+", $ntfy->{DEF}, 2);
@@ -230,6 +231,9 @@
triggers this notify will also return this value. This can cause e.g
FHEMWEB to display this value, when clicking "on" or "off", which is
often not intended.</li>
+
+ <li>showTriggerTime<br/>
+ Replace STATE content 'active' by timestamp of last execution.</li>
</ul>
<br>
Danke.
Hab die Zuweisung etwas CPU-freundlicher gestaltet (hoffentlich ohne Nebeneffekte) und eingecheckt.
Zitat von: rudolfkoenig am 28 März 2014, 18:40:26
etwas CPU-freundlicher
ich hab doch keine Fritzbox 8)
Getestet. Funktioniert. Aber mir ist noch was aufgefallen.
Wie findest Du diese Variante?
$ntfy->{STATE} = AttrVal($ln, 'showTriggerTime', 0) ? $dev->{NTFY_TRIGGERTIME} : 'active';
Hat den Vorteil, dass nach einem eventuellen Löschen des Attributes wieder der alte Zustand (active) eingetragen wird anstatt ewig (bis zum nächsten Neustart/Reload) den letzten Zeitstempel zu haben.
Habs eingecheckt. Haette nichtmal was dagegen das Attribut standardmaessig zu aktivieren.
Gegenargumente?
Dann habe ich es geaendert.
Danke.
Wenn das jetzt Standard ist, solltest Du diese Änderung vielleicht in den Ankündigungen erwähnen.* Vielleicht arbeitet der eine oder andere doch mit Abfragen auf "active" oder "disabled" bei seinen notifies. Anstatt auf "active" sollte man dann ggf. auf "!disabled" prüfen, falls man das Attribut nicht ändern will.
* Ich werde einen Hinweis in den Ankündigungen posten.
Hallo Rudi,
könntest Du die Triggertime bitte auf einen Zeitpunkt NACH der Ausführung verschieben?
So wie es jetzt umgesetzt ist, kann man den Zeitpunkt der letzten Ausführung nicht innerhalb eines notify lesen, weil er vorher schon wieder durch die aktuelle Ausführung überschrieben wird. Ich kann also nicht feststellen, ob ein notify "heute" schon einmal gelaufen ist.
Ich denke, eine Stelle nach AnalyzeCommandChain() wäre wohl der bessere Zeitpunkt.
Viele Grüße
Udo
Habs nach hinten geschoben und eingecheckt.
Danke :)