notify, wie eigenen Namen herausfinden?

Begonnen von rapster, 11 Juli 2015, 00:05:41

Vorheriges Thema - Nächstes Thema

rapster

Servus,

gibt es eigentlich die Möglichkeit über eine Variable den Namen des Notify zu bekommen in welchem ich mich gerade befinde?

$NAME gibt mir das triggernde device zurück, doch wie finde ich innerhalb des notifys heraus wie das notify selber heist?


Zum Hintergrund, ich benutze in paar Notifys folgende definition um z.B. einen Schalter zu entprellen, oder wenn teilweise viele trigger gleichzeitig auf das selbe Notify auftreffen, mich allerdings das Ergebnis nur alle paar Minuten interessiert.

^device:\s*trigger {
my $ntfy_Name = "ntfy_NAME";
my $minDelay = 10;
   
if ( time - ReadingsVal($ntfy_Name,'lastExecution',0) > $minDelay ) {
tu_etwas();
        CommandSetReading(undef, "$ntfy_Name lastExecution ". time);
}
}


Dadurch wird tu_etwas() in dem Beispiel nur max 1x alle 10 Sek ausgeführt.

Wenn ich allerdings mal das notify renamen sollte, darf ich natürlich nicht vergessen $ntfy_Name auch anzupassen, da sonst das notify nie mehr ausgelöst wird.

Das vorhandene Attr disabledForIntervals scheint ja hierfür ungeeignet zu sein, ein neues Attribut für sowas wäre zwar fein, aber die Info wie das notify heisst in dem ich gerade bin, würde mir schon reichen.

Hat einer einen Tipp?

Grüße

Wuppi68

FHEM unter Proxmox als VM

Talkabout

#2
Zitat von: Wuppi68 am 11 Juli 2015, 23:47:34
https://kb.wisc.edu/middleware/page.php?id=4309
Ich glaube, das wird ihm nicht sonderlich helfen. Er möchte ja den Namen des FHEM notify Devices, keine PERL Routine.

Aus dem Code konnte ich keine Möglichkeit rauslesen. Dort werden tatsächlich nur die angegebenen Parameter ($NAME, $EVENT, $TYPE) zur Verfügung gestellt. Von der Implementierung her sollte das aber eher eine Kleinigkeit sein, ich denke, dass sich da der Rudi breitschlagen lassen wird :)

Gruss

Talkabout

Hatte ich doch glatt vergessen:

Die Anfrage solltest Du in diesem Forum posten:

http://forum.fhem.de/index.php/board,20.0.html

Dort liest dann auch der Rudi mit. In das Anfänger-Forum verirrt er sich nur ganz selten :)

Gruss

Talkabout

Ach was soll's... Im Anhang eine Änderung, mit der Du in Deinem Notify über "$SELF" an den Namen des notifies kommen solltest. Kannst Du es bitte ausprobieren? Sollte es gehen werde ich es dann in das andere Forum posten, vielleicht übernimmt es der Rudi dann.

Die Datei in

fhem/FHEM

kopieren und die alte Datei überschreiben.

Gruss

rapster

Hi Talkabout, und Danke für deine Mühe! :-)

Hat noch nicht ganz funktioniert, aber sogut wie.

statt
my %specials= (
                "%NAME" => $n,
                "%TYPE" => $t,
                "%EVENT" => $s,
                "%SELF" => $dev

      );

(Liefert die dev-Hashref als String zurück)

Muss das ganze lauten:
my %specials= (
                "%NAME" => $n,
                "%TYPE" => $t,
                "%EVENT" => $s,
                "%SELF" => $ln

      );


Hat hiermit super funktioniert!
Hab nochmal die funktionierende .pm angehangen.

Sehr praktisch!, würdest du das bitte Rudi mal vorschlagen zu implementieren?, scheint ja wirklich keine allzu große Sache zu sein :-)

Danke und Gruß

Talkabout

Zitat von: rapster am 12 Juli 2015, 13:42:09
Hi Talkabout, und Danke für deine Mühe! :-)

Hat noch nicht ganz funktioniert, aber sogut wie.

statt
my %specials= (
                "%NAME" => $n,
                "%TYPE" => $t,
                "%EVENT" => $s,
                "%SELF" => $dev

      );

(Liefert die dev-Hashref als String zurück)

Muss das ganze lauten:
my %specials= (
                "%NAME" => $n,
                "%TYPE" => $t,
                "%EVENT" => $s,
                "%SELF" => $ln

      );


Hat hiermit super funktioniert!
Hab nochmal die funktionierende .pm angehangen.

Sehr praktisch!, würdest du das bitte Rudi mal vorschlagen zu implementieren?, scheint ja wirklich keine allzu große Sache zu sein :-)

Danke und Gruß
Das kommt davon, wenn man den Code nicht testet ;)

Ich werde es im richtigen Forum posten.

Danke!

Gruss