FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: rapster am 11 Juli 2015, 00:05:41

Titel: notify, wie eigenen Namen herausfinden?
Beitrag von: rapster am 11 Juli 2015, 00:05:41
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
Titel: Antw:notify, wie eigenen Namen herausfinden?
Beitrag von: Wuppi68 am 11 Juli 2015, 23:47:34
https://kb.wisc.edu/middleware/page.php?id=4309
Titel: Antw:notify, wie eigenen Namen herausfinden?
Beitrag von: Talkabout am 12 Juli 2015, 10:19:22
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
Titel: Antw:notify, wie eigenen Namen herausfinden?
Beitrag von: Talkabout am 12 Juli 2015, 11:41:20
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
Titel: Antw:notify, wie eigenen Namen herausfinden?
Beitrag von: Talkabout am 12 Juli 2015, 11:44:52
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
Titel: Antw:notify, wie eigenen Namen herausfinden?
Beitrag 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ß
Titel: Antw:notify, wie eigenen Namen herausfinden?
Beitrag von: Talkabout am 12 Juli 2015, 13:48:37
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