[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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

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

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

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

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

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
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig


betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!