[patch] 91_notify.pm - Uhrzeit der letzten Ausführung anzeigen

Begonnen von betateilchen, 28 März 2014, 15:31:16

Vorheriges Thema - Nächstes Thema

betateilchen

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.
----------
Es ist mir egal, wer Dein Vater ist.
Solange ich hier angele, läufst Du hier nicht übers Wasser!
----------

rudolfkoenig

Hab die Zuweisung etwas CPU-freundlicher gestaltet (hoffentlich ohne Nebeneffekte) und eingecheckt.

betateilchen

----------
Es ist mir egal, wer Dein Vater ist.
Solange ich hier angele, läufst Du hier nicht übers Wasser!
----------

betateilchen

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.
----------
Es ist mir egal, wer Dein Vater ist.
Solange ich hier angele, läufst Du hier nicht übers Wasser!
----------

rudolfkoenig

Habs eingecheckt. Haette nichtmal was dagegen das Attribut standardmaessig zu aktivieren.
Gegenargumente?

betateilchen

----------
Es ist mir egal, wer Dein Vater ist.
Solange ich hier angele, läufst Du hier nicht übers Wasser!
----------

rudolfkoenig


betateilchen

#7
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.
----------
Es ist mir egal, wer Dein Vater ist.
Solange ich hier angele, läufst Du hier nicht übers Wasser!
----------

betateilchen

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
----------
Es ist mir egal, wer Dein Vater ist.
Solange ich hier angele, läufst Du hier nicht übers Wasser!
----------

rudolfkoenig


betateilchen

----------
Es ist mir egal, wer Dein Vater ist.
Solange ich hier angele, läufst Du hier nicht übers Wasser!
----------