FHEM Forum

FHEM => fhem-users => Thema gestartet von: Guest am 11 Mai 2012, 21:58:16

Titel: follow-on-for-timer generiert setstate timer
Beitrag von: Guest am 11 Mai 2012, 21:58:16
Originally posted by: <email address deleted>

Hallo!

Ich habe eine Frage:
Warum generiert das follow-on-for-timer Attribut einen Timer mit
"setstate xxx off" ?

Das Problem für mich ist, dass dadurch kein Log-Eintrag (z.B. per
"inform on") getriggert wird und es nicht möglich ist, das Event
außerhalb von FHEM mitzubekommen.

"set xxx off" wäre hier praktischer, oder habe ich da was übersehen?
In diesem Fall könnte ich das Event über "inform on" mitbekommen!



Vielen Dank,

Ciao, Arno

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: follow-on-for-timer generiert setstate timer
Beitrag von: Guest am 11 Mai 2012, 22:30:50
Originally posted by: <email address deleted>

Hi,

ich habe herausbekommen, dass ich das gewünschte Verhalten mit
folgendem Notify nachbilden kann:
define OnForTimerNotify notify .*-for-timer.* define @_offtimer at
+00:01:00 set @ off

Aber wie kann ich statt +00:01:00 die Sekundenzahl vom den *-for-timer
Event verwenden?

Ciao, Arno




On 11 Mai, 21:58, akw wrote:
> Hallo!
>
> Ich habe eine Frage:
> Warum generiert das follow-on-for-timer Attribut einen Timer mit
> "setstate xxx off" ?
>
> Das Problem für mich ist, dass dadurch kein Log-Eintrag (z.B. per
> "inform on") getriggert wird und es nicht möglich ist, das Event
> außerhalb von FHEM mitzubekommen.
>
> "set xxx off" wäre hier praktischer, oder habe ich da was übersehen?
> In diesem Fall könnte ich das Event über "inform on" mitbekommen!
>
> Vielen Dank,
>
> Ciao, Arno

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: follow-on-for-timer generiert setstate timer
Beitrag von: rudolfkoenig am 12 Mai 2012, 08:18:40
                                                   

> "set xxx off" wäre hier praktischer, oder habe ich da was übersehen?

Ja: man will doch keinen unnoetigen Funk-Telegramm aussenden, abschalten tut
das Geraet alleine. Was man will ist "trigger off", damit dieses
Ereignis von Logs/Notifies etc ausgewertet werden kann, das habe ich gerade
eingebaut und eingecheckt.

Achtung: wegen dem zusaetzlichen Event koennten notifies/watchdogs/FileLogs
sich anders verhalten.


> Aber wie kann ich statt +00:01:00 die Sekundenzahl vom den *-for-timer Event
> verwenden?

Du hast hier gleich 2 Probleme:
- auf das Argument zugreifen: %EVTPART1
- das Sekunden-Argument als Stunden/Minute/Sekunde formatieren
  define OnForTimerNotify notify .*-for-timer.* {\
    my $t=%EVTPART1;;\
    my $tspec = sprintf("%%02d:%%02d:%%02d", $t/3600, ($t%%3600)/60, $t%%60);;\
    fhem("define @_offtimer at +$tspec set @ off");;\
  }
  Ungetestet.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: follow-on-for-timer generiert setstate timer
Beitrag von: Guest am 01 Juni 2012, 18:29:24
Originally posted by: <email address deleted>

Hi Rudi,

da ich (noch) nicht auf der CVS-Version fahre, würde ich das gerne
versuchen:

On May 12, 8:18 am, Rudolf Koenig wrote:
>   define OnForTimerNotify notify .*-for-timer.* {\
>     my $t=%EVTPART1;;\
>     my $tspec = sprintf("%%02d:%%02d:%%02d", $t/3600, ($t%%3600)/60, $t%%60);;\
>     fhem("define @_offtimer at +$tspec set @ off");;\
>   }
>   Ungetestet.

Bringt aber einen Fehler:

syntax error at (eval 1000) line 1, near "-for"

Ich denke, die "-" in der REGEXP .*-for-timer.* werden angemeckert.
Die REGEXP in " zu setzen hat aber nicht geklappt, weil ja sonst ein
timer .*_offtimer hätte gesetzt werden müssen, wenn ich ein Device mit
on-for-timer setze. Wurde aber nicht. Die "-" durch "." ersetzen
brachte nur weitere Fehler. Tipps?

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: follow-on-for-timer generiert setstate timer
Beitrag von: Guest am 01 Juni 2012, 18:37:22
Originally posted by: <email address deleted>

Nein, der Fehler liegt wohl ein dem fehlenden 2. % bei my $t=
%EVTPART1.
Nach Korrektur bekomme ich einen neuen Fehler:

2012.06.01 18:34:33 2: FS20 set sd.kg.hzg.zirkulation on-for-timer
1920
2012.06.01 18:34:33 3: Global symbol "%EVTPART1" requires explicit
package name at (eval 1005) line 1.

Kann meine verwendete FHEM Version 5.0 das noch nicht?


On Jun 1, 6:29 pm, Juergen Lennefer wrote:
> Hi Rudi,
>
> da ich (noch) nicht auf der CVS-Version fahre, würde ich das gerne
> versuchen:
>
> On May 12, 8:18 am, Rudolf Koenig wrote:
>
> >   define OnForTimerNotify notify .*-for-timer.* {\
> >     my $t=%EVTPART1;;\
> >     my $tspec = sprintf("%%02d:%%02d:%%02d", $t/3600, ($t%%3600)/60, $t%%60);;\
> >     fhem("define @_offtimer at +$tspec set @ off");;\
> >   }
> >   Ungetestet.
>
> Bringt aber einen Fehler:
>
> syntax error at (eval 1000) line 1, near "-for"
>
> Ich denke, die "-" in der REGEXP .*-for-timer.* werden angemeckert.
> Die REGEXP in " zu setzen hat aber nicht geklappt, weil ja sonst ein
> timer .*_offtimer hätte gesetzt werden müssen, wenn ich ein Device mit
> on-for-timer setze. Wurde aber nicht. Die "-" durch "." ersetzen
> brachte nur weitere Fehler. Tipps?

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: follow-on-for-timer generiert setstate timer
Beitrag von: rudolfkoenig am 02 Juni 2012, 10:21:20
                                                   

> Kann meine verwendete FHEM Version 5.0 das noch nicht?

Korrekt, %EVTPART1 kam spaeter. Und so emuliert man es:

define OnForTimerNotify notify .*-for-timer.* {\
  my @@a = split(" ", "%");
  my $t = $a[1];
  my $tspec = sprintf("%%02d:%%02d:%%02d", $t/3600, ($t%%3600)/60, $t%%60);;\
  fhem("define @_offtimer at +$tspec set @ off");;\
}

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: follow-on-for-timer generiert setstate timer
Beitrag von: Guest am 02 Juni 2012, 10:41:20
Originally posted by: <email address deleted>

Danke Rudi.

Mit allen Escape-Zeichen wäre es also so richtig:

define OnForTimerNotify notify .*-for-timer.* {\
  my @@a = split(" ", "%");;\
  my $t = $a[1];;\
  my $tspec = sprintf("%%02d:%%02d:%%02d", $t/3600, ($t%%3600)/60, $t%
%60);;\
  fhem("define @_offtimer at +$tspec set @ off");;\
}

Getestet und funktioniert!


On Jun 2, 10:21 am, Rudolf Koenig wrote:
> > Kann meine verwendete FHEM Version 5.0 das noch nicht?
>
> Korrekt, %EVTPART1 kam spaeter. Und so emuliert man es:
>
> define OnForTimerNotify notify .*-for-timer.* {\
>   my @@a = split(" ", "%");
>   my $t = $a[1];
>   my $tspec = sprintf("%%02d:%%02d:%%02d", $t/3600, ($t%%3600)/60, $t%%60);;\
>   fhem("define @_offtimer at +$tspec set @ off");;\
>
>
>
>
>
>
>
> }

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: follow-on-for-timer generiert setstate timer
Beitrag von: Guest am 23 Juni 2012, 13:07:34
Originally posted by: <email address deleted>

Jetzt ergibt sich das Problem, dass evtl. der at "@_offtimer" noch
existiert vom vorherigen on-for-timer. Also muesste ich den erst loeschen.
Aber ein einfaches "delete @_offtimer" fuehrt zur Fehlermeldung, wenn er
nich da ist. Wie kann ich in Perl die FHEM-at-Definition auf Existenz
testen?

LG,
Juergen


Am Samstag, 2. Juni 2012 10:41:20 UTC+2 schrieb JuergenL:
>
> Danke Rudi.
>
> Mit allen Escape-Zeichen wäre es also so richtig:
>
> define OnForTimerNotify notify .*-for-timer.* {\
>   my @@a = split(" ", "%");;\
>   my $t = $a[1];;\
>   my $tspec = sprintf("%%02d:%%02d:%%02d", $t/3600, ($t%%3600)/60, $t%
> %60);;\
>   fhem("define @_offtimer at +$tspec set @ off");;\
> }
>
> Getestet und funktioniert!
>
>
> On Jun 2, 10:21 am, Rudolf Koenig wrote:
> > > Kann meine verwendete FHEM Version 5.0 das noch nicht?
> >
> > Korrekt, %EVTPART1 kam spaeter. Und so emuliert man es:
> >
> > define OnForTimerNotify notify .*-for-timer.* {\
> >   my @@a = split(" ", "%");
> >   my $t = $a[1];
> >   my $tspec = sprintf("%%02d:%%02d:%%02d", $t/3600, ($t%%3600)/60,
> $t%%60);;\
> >   fhem("define @_offtimer at +$tspec set @ off");;\
> >
> >
> >
> >
> >
> >
> >
> > }

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: follow-on-for-timer generiert setstate timer
Beitrag von: Guest am 23 Juni 2012, 14:10:00
Originally posted by: <email address deleted>

Gibt es eigentlich auch ein follow-off-for-timer für off-for-timer
Kommandos?

Ciao, Arno



On 23 Jun., 13:07, JuergenL wrote:
> Jetzt ergibt sich das Problem, dass evtl. der at "@_offtimer" noch
> existiert vom vorherigen on-for-timer. Also muesste ich den erst loeschen.
> Aber ein einfaches "delete @_offtimer" fuehrt zur Fehlermeldung, wenn er
> nich da ist. Wie kann ich in Perl die FHEM-at-Definition auf Existenz
> testen?
>
> LG,
> Juergen
>
> Am Samstag, 2. Juni 2012 10:41:20 UTC+2 schrieb JuergenL:
>
>
>
>
>
>
>
>
>
> > Danke Rudi.
>
> > Mit allen Escape-Zeichen wäre es also so richtig:
>
> > define OnForTimerNotify notify .*-for-timer.* {\
> >   my @@a = split(" ", "%");;\
> >   my $t = $a[1];;\
> >   my $tspec = sprintf("%%02d:%%02d:%%02d", $t/3600, ($t%%3600)/60, $t%
> > %60);;\
> >   fhem("define @_offtimer at +$tspec set @ off");;\
> > }
>
> > Getestet und funktioniert!
>
> > On Jun 2, 10:21 am, Rudolf Koenig wrote:
> > > > Kann meine verwendete FHEM Version 5.0 das noch nicht?
>
> > > Korrekt, %EVTPART1 kam spaeter. Und so emuliert man es:
>
> > > define OnForTimerNotify notify .*-for-timer.* {\
> > >   my @@a = split(" ", "%");
> > >   my $t = $a[1];
> > >   my $tspec = sprintf("%%02d:%%02d:%%02d", $t/3600, ($t%%3600)/60,
> > $t%%60);;\
> > >   fhem("define @_offtimer at +$tspec set @ off");;\
>
> > > }

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: follow-on-for-timer generiert setstate timer
Beitrag von: rudolfkoenig am 23 Juni 2012, 16:59:24
                                                   

> Aber ein einfaches "delete @_offtimer" fuehrt zur Fehlermeldung, wenn er
> nich da ist. Wie kann ich in Perl die FHEM-at-Definition auf Existenz
> testen?

fhem("delete @_offtimer") if($defs{@_offtimer});

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: follow-on-for-timer generiert setstate timer
Beitrag von: Guest am 23 Juni 2012, 17:30:22
Originally posted by: <email address deleted>

> fhem("delete @_offtimer") if($defs{@_offtimer});
>

Ich hatte zwischenzeitlich auch 'ne Lösung gefunden:

 if(Value("@_offtimer") ne "") { fhem("delete @_offtimer") }
>

... aber deine ist eleganter. Danke!

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: follow-on-for-timer generiert setstate timer
Beitrag von: Tobias am 24 Juni 2012, 07:50:00
                                                   

soetwas in der Art??

http://fhemwiki.de/wiki/On-for-timer_zur%C3%BCcksetzen

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Re: follow-on-for-timer generiert setstate timer
Beitrag von: Guest am 13 Mai 2012, 10:50:39
Originally posted by: <email address deleted>

Hi Rudolf,

vielen Dank, das verwenden von "trigger" leuchtet mir ein!
Danke auch für die Erklärung, wie man den selbstgebauten
follow-on-for-timer korrekt baut (mit %EVPART1).
Das sollte aber dank des Pasches dann nicht mehr notwendig sein. :-)

Ciao, Arno



Am 12. Mai 2012 08:18 schrieb Rudolf Koenig :
>> "set xxx off" wäre hier praktischer, oder habe ich da was übersehen?
>
> Ja: man will doch keinen unnoetigen Funk-Telegramm aussenden, abschalten tut
> das Geraet alleine. Was man will ist "trigger off", damit dieses
> Ereignis von Logs/Notifies etc ausgewertet werden kann, das habe ich gerade
> eingebaut und eingecheckt.
>
> Achtung: wegen dem zusaetzlichen Event koennten notifies/watchdogs/FileLogs
> sich anders verhalten.
>
>
>> Aber wie kann ich statt +00:01:00 die Sekundenzahl vom den *-for-timer Event
>> verwenden?
>
> Du hast hier gleich 2 Probleme:
> - auf das Argument zugreifen: %EVTPART1
> - das Sekunden-Argument als Stunden/Minute/Sekunde formatieren
>  define OnForTimerNotify notify .*-for-timer.* {\
>    my $t=%EVTPART1;;\
>    my $tspec = sprintf("%%02d:%%02d:%%02d", $t/3600, ($t%%3600)/60, $t%%60);;\
>    fhem("define @_offtimer at +$tspec set @ off");;\
>  }
>  Ungetestet.
>
> --
> To unsubscribe from this group, send email to
> fhem-users+unsubscribe@googlegroups.com



--
Arno Willig

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com