FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Depechem am 07 September 2017, 09:02:41

Titel: [Gelöst] notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: Depechem am 07 September 2017, 09:02:41
Hi,
ich möchte gern ein für mich umfangreiches "notify" erstellen.

Was soll geschehen:
wenn DME_Kontakt:closed und es NICHT Mittwochs zwischen 17:55-18:05 Uhr
soll folgendes augelößt werden: set Hoftor on sowie immer zwischen 22:00-05:00 zusätzlich set Lampe1 on

wie muss das ganze dann zusammengebaut aussehen? Ich hänge an dem Ausschließen eines bestimmten Tages sowie Uhrzeit und an der zweiten Auslösung die nur zur einer bestimmen Uhrzeit mit erfolgen soll. Oder muss ich da mehrere notifys bauen.

Eigentlich wollte ich sogar noch einen Googlekalender prüfen(also ob ich arbeiten oder zuhause bin) aber das wird im Moment zu viel.

Viele Grüße Thomas
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: betateilchen am 07 September 2017, 09:07:35
Das ist kein "umfangreiches notify" sondern pillepalle.

Bau Dir eine Funktion in der 99_myUtils.pm die Du aus dem notify aufrufst.
In dieser Funktion kannst Du Fallunterscheidungen einbauen, soviele Du willst. Und es bleibt auch nach vier Wochen noch nachvollziehbar, ganz im Gegensatz zu Romanen in der notify-Definition selbst.

Hier mal ein Beispiel aus meiner 99_myUtils.pm. Diese Funktion wird einmal pro Minute aufgerufen.


sub n_minuteJobs($$) {
my ($h,$m) = @_;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);

# do jobs every minute
my $logpath = AttrVal('global','logdir','./log/');
$logpath .= "/fhem.heartbeat";
# Debug $logpath;
qx(touch $logpath);

# do jobs all 3 min
if(!($m % 3)) {
addLog("out_Regen_Rain", "state");
addLog("GW1__Warnung", "state");
}

# do jobs all 10 min
if(!($m % 10)) {
CommandGet(undef,'gds rereadcfg');
}

# do jobs all 30 min
if(!($m % 30)) {
        # nothing to do
}

# do jobs hourly
if(!($m)) {
addLog("out_Balkon", "state");
WriteStatefile;

my $off = 22;
CommandSet(undef,'wz_TC_Climate desired-temp 19.0') if ($hour == $off);

# $off++ if ($mon >= 4 && $mon < 9);
$off++ if ($isdst && $yday < 250);
CommandSet(undef,'Licht_Balkon off') if ($hour == $off);

if(!($h)) {
# do jobs at midnight
CommandSet(undef,'wz_Licht_Regal off');
CommandSet(undef,'Logfile reopen');
CommandSet(undef,'heizperiode $month');

my $d = sprintf("%02d.%02d.%04d", $mday, $mon+1, $year+1900);
CommandSetReading(undef,"global panelDatum $d");
}
}
return;
}
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: CoolTux am 07 September 2017, 09:10:15

define notifyDepechem notify DME_Kontakt:closed {

            #my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);           # sollte in einem Notify eigentlich nicht nötig sein

            fhem('set Hoftor on') if( $wday == 3 and $hour > 16 and $min > 54 and $hour < 19 and $min < 6 );
            fhem('set Hoftor on') if( $hour < 4 and $hour > 21 );
}


Mit der Minute kleiner 6 bin ich mir unsicher. 06 wäre aber schon komisch.
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: betateilchen am 07 September 2017, 09:32:12
Zitat von: CoolTux am 07 September 2017, 09:10:15

and $min > 54 ... and $min < 6


Nenne mir bitte eine Zahl, die größer ist als 54 und gleichzeitig kleiner als 6

(Popcorn?)
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: CoolTux am 07 September 2017, 09:50:31
Jupp hast Recht. Ist doof
Neuer Versuch durch zu Hilfename einer kleinen geklauten Hilfsfunktion

99_myUtils

sub isTime($) {

    my $dfi = shift;

    $dfi =~ s/{([^\x7d]*)}/$cmdFromAnalyze=$1; eval $1/ge; # Forum #69787
    my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;
    my $dhms = sprintf("%s\@%02d:%02d:%02d", $wday, $hour, $min, $sec);
    foreach my $ft (split(" ", $dfi)) {
      my ($from, $to) = split("-", $ft);
      if(defined($from) && defined($to)) {
        $from = "$wday\@$from" if(index($from,"@") < 0);
        $to   = "$wday\@$to"   if(index($to,  "@") < 0);
        return 0 if($from le $dhms && $dhms le $to);
      }
    }
   
    return 1;
}

Noch ungetestet



define notifyDepechem notify DME_Kontakt:closed {

            #my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);           # sollte in einem Notify eigentlich nicht nötig sein

            fhem('set Hoftor on') if( $wday == 3 and isTime('17:55-18:05') );
            fhem('set Hoftor on') if( isTime('21:00-04:00') );
}



Da mich das auch interessiert teste ich es gleich mal
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: Depechem am 07 September 2017, 10:02:14
Zitat von: CoolTux am 07 September 2017, 09:50:31
Jupp hast Recht. Ist doof
Neuer Versuch durch zu Hilfename einer kleinen geklauten Hilfsfunktion

99_myUtils

sub isTime($) {

    my $dfi = shift;

    $dfi =~ s/{([^\x7d]*)}/$cmdFromAnalyze=$1; eval $1/ge; # Forum #69787
    my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;
    my $dhms = sprintf("%s\@%02d:%02d:%02d", $wday, $hour, $min, $sec);
    foreach my $ft (split(" ", $dfi)) {
      my ($from, $to) = split("-", $ft);
      if(defined($from) && defined($to)) {
        $from = "$wday\@$from" if(index($from,"@") < 0);
        $to   = "$wday\@$to"   if(index($to,  "@") < 0);
        return 0 if($from le $dhms && $dhms le $to);
      }
    }
   
    return 1;
}

Noch ungetestet



define notifyDepechem notify DME_Kontakt:closed {

            #my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);           # sollte in einem Notify eigentlich nicht nötig sein

            fhem('set Hoftor on') if( $wday == 3 and isTime('17:55-18:05') );
            fhem('set Hoftor on') if( isTime('21:00-04:00') );
}



Da mich das auch interessiert teste ich es gleich mal

Super Grundlegend funktioniert dies.
Nur ist dies ja jetzt die Routine das set Hoftor on nur am Tag 3 zw. 17:55-18:05 funktioniert, aber es soll ja genau umgedreht sein:
set Hoftor on am Tag 3 zw. 17:55-18:05 NICHT auslösen, sonst immer

Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: CoolTux am 07 September 2017, 10:09:30
Hatte noch Fehler im return


sub isTime($) {

    my $dfi = shift;

    $dfi =~ s/{([^\x7d]*)}/$cmdFromAnalyze=$1; eval $1/ge; # Forum #69787
    my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;
    my $dhms = sprintf("%s\@%02d:%02d:%02d", $wday, $hour, $min, $sec);
    foreach my $ft (split(" ", $dfi)) {
      my ($from, $to) = split("-", $ft);
      if(defined($from) && defined($to)) {
        $from = "$wday\@$from" if(index($from,"@") < 0);
        $to   = "$wday\@$to"   if(index($to,  "@") < 0);
        return 1 if($from le $dhms && $dhms le $to);
      }
    }
   
    return 0;
}

So funktioniert es nun korrekt

Und nun zum Notify

define notifyDepechem notify DME_Kontakt:closed {

            #my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);           # sollte in einem Notify eigentlich nicht nötig sein

            fhem('set Hoftor on') if( $wday != 3 or ($wday == 3 and ! isTime('17:55-18:05')) );
            fhem('set Hoftor on') if( isTime('21:00-04:00') );
}


So und jetzt nehme ich bitte ein bisschen Popcorn. So früh am Morgen denken macht müde.

@Udo
Hast Du Zeit und Lust kurz ein zweites Beispiel zu bringen? Es gibt sicherlich noch eine einfachere Lösung. Also weniger Code.
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: CoolTux am 07 September 2017, 10:28:47
Habe das Notify noch mal angepasst. Auf meinem Testsystem rennt es nun genau so wie Du es wolltest.
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: Depechem am 07 September 2017, 10:53:20
Danke Leon, es funktioniert fast genau so wie gewünscht.

nur soll: fhem('set Hoftor on') if( isTime('21:00-04:00') ); auch nicht Mittwochs zw. 17:55-18:05 Uhr angehen.

Also die Routine so das:
Notify NIE Mittwochs zw. 17:55-18:05 Uhr auslößt, sonst immer set Hoftor on sowie zusätzlich fhem('set Hoftor2 on') if( isTime('21:00-04:00') ) < Aber auch nicht Mittwochs in zw. 17:55-18:05 Uhr.
Verstehst?
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: CoolTux am 07 September 2017, 10:57:15
Oh man das mit dem verstehen ist so eine Sache  ;D
Sehe auch gerade das ich ja eh Mist gemacht habe, das zweite war ja eine Lampe. Ich lese jetzt noch mal gaaanz genau und versuche es dann noch einmal.
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: Depechem am 07 September 2017, 11:02:41
Zitat von: CoolTux am 07 September 2017, 10:57:15
Oh man das mit dem verstehen ist so eine Sache  ;D
Sehe auch gerade das ich ja eh Mist gemacht habe, das zweite war ja eine Lampe. Ich lese jetzt noch mal gaaanz genau und versuche es dann noch einmal.

:-*
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: CoolTux am 07 September 2017, 11:04:00

define notifyDepechem notify DME_Kontakt:closed {

            #my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);           # sollte in einem Notify eigentlich nicht nötig sein

            fhem('set Hoftor on') if( $wday != 3 or ($wday == 3 and ! isTime('17:55-18:05')) );
            fhem('set Lampe1 on') if( isTime('21:00-04:00') );
}

Also laut Deiner Beschreibung geht nun IMMER Hoftor auf AUSSER Mittwoch zwischen 17:55 und 18:05 ausserdem geht (IMMER ZWISCHEN) 21:00-04:00 Uhr die Lampe an.


Ist das für so einen Feuerwehrmelder, wenn Einsatzmeldung kommt dann los ausser Mittwoch um 18 Uhr da ist Probealarm?
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: Depechem am 07 September 2017, 11:06:04
Zitat von: CoolTux am 07 September 2017, 11:04:00

define notifyDepechem notify DME_Kontakt:closed {

            #my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);           # sollte in einem Notify eigentlich nicht nötig sein

            fhem('set Hoftor on') if( $wday != 3 or ($wday == 3 and ! isTime('17:55-18:05')) );
            fhem('set Lampe1 on') if( isTime('21:00-04:00') );
}

Also laut Deiner Beschreibung get nun IMMER Hoftor auf AUSSER Mittwoch zwischen 17:55 und 18:05 ausserdem geht (IMMER ZWISCHEN) 21:00-04:00 Uhr die Lampe an.

Lampe soll nur zw. 21:00-04:00 Uhr angehen, aber auch nicht  "Mittwoch zwischen 17:55 und 18:05" < da Probealarm

Zitat von: CoolTux am 07 September 2017, 11:04:00
Ist das für so einen Feuerwehrmelder, wenn Einsatzmeldung kommt dann los ausser Mittwoch um 18 Uhr da ist Probealarm?
Ja genau  ;)
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: CoolTux am 07 September 2017, 11:08:12
Die Lampe kann am Mittwoch ja gar nicht zwischen 7:55-18:05 angehen, da wir ja schon sagen sie soll nur zwischen 21:00-04:00 angehen. Das passt also. Kannst das letzte Notify nehmen.
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: Depechem am 07 September 2017, 11:10:19
Zitat von: CoolTux am 07 September 2017, 11:08:12
Die Lampe kann am Mittwoch ja gar nicht zwischen 7:55-18:05 angehen, da wir ja schon sagen sie soll nur zwischen 21:00-04:00 angehen. Das passt also. Kannst das letzte Notify nehmen.

Na ich bin ja blöd  ::) stimmt  :D

VIEELEN DANK wiedereinmal mehr.
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: CoolTux am 07 September 2017, 11:17:48
Ich Danke Udo für den dezenten Stups (Popcorn kommt vielleicht noch) und Rudi für den Code zum überprüfen einer Zeitspanne (geklaut aus der fhem.pl)   ;D

Grüße und viel Spaß
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: Depechem am 07 September 2017, 11:26:08
Ups doch noch ein Problem  :-\

statt
fhem('set Hoftor on')

muss bei mir indoorMessage sowie Pushover Nachrichten rein.
Hab jetzt alle möglichen Klammer ausprobiert, aber ich bekomme sie nicht ins Notify rein.

Hier diese beiden Dinge müssten irgendwie umformatiert werden das ich sie in deinen neuen vorgefertigten notify bekomme.
set Pushover_Pushnachrichten msg 'EINSATZALARM' 'FEUERWEHR' 'iPhoneThomas' 1 'persistent'; { indoorMessage('EINSATZALARM FEUERWEHR','WandTabletWohnzimmerThomas,WandTabletBadThomas',15) }

im alten normalen notify hieß es so und wurde ausgelößt
DME_Kontakt:closed set Pushover_Pushnachrichten msg 'EINSATZALARM' 'FEUERWEHR' 'iPhoneThomas' 1 'persistent'; set Klingelmodul_Thomas playTone 029; { indoorMessage('EINSATZALARM FEUERWEHR','WandTabletWohnzimmerThomas,WandTabletBadThomas',15) }
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: Otto123 am 07 September 2017, 11:28:58
Jetzt wo es mit notify gelöst ist traue ich mich mal noch. Ich habe parallel mal die Textaufgabe in DOIF geschrieben.
Auch wenn ich damit wieder Haue von Udo bekomme  :)
define di_DME DOIF ([DME_Kontakt:"closed"] and [17:55-18:05|3])() DOELSEIF ([DME_Kontakt:"closed"] and [22:00-05:00])(set Hoftor on, set Lampe1 on) DOELSEIF ([DME_Kontakt:"closed"])(set Hoftor on)
attr di_DME do always

Ich schreibe noch mal als Text was es tun sollte:
Jedesmal wenn der Kontakt schließt ->
Mittwoch zwischen 17:55-18:05 tut er nichst und rastet in cmd1 ein.
zwischen 22:00-05:00 schaltet er immer Hoftor und Lampe1 on und rastet bei cmd2 ein.
ansonsten rastet er immer in cmd3 ein und schaltet das Hoftor on.

Ist aber im Gegensatz zu dem notify Code nicht getestet!

Eigentlich bräuchte man do always nicht. Damit würde man das mehrfach schalten verhindern.
Die Frage die ich mir die ganze Zeit stelle: Wer schaltet Hoftor und Lampe wieder aus?  8)

Aber sicher waren beide "nur so" als Platzhalter - wie ich jetzt lese  ;)

Gruß Otto
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: Beta-User am 07 September 2017, 11:33:44
Zitat von: Otto123 am 07 September 2017, 11:28:58
Auch wenn ich damit wieder Haue von Udo bekomme  :)
Udo ist damit nicht alleine. DOIF ist und bleibt gruselig...

Zitat von: Depechem am 07 September 2017, 11:26:08
statt
fhem('set Hoftor on')

muss bei mir indoorMessage sowie Pushover Nachrichten rein.

Du mußt das nachgestellte "if" an den Anfang setzen, und dann die beiden auszuführenden Befehle innerhalb einer geschweiften Klammer "{}" abarbeiten.

Gruß, Beta-User
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: CoolTux am 07 September 2017, 11:35:29
Zitat von: Otto123 am 07 September 2017, 11:28:58
Jetzt wo es mit notify gelöst ist traue ich mich mal noch. Ich habe parallel mal die Textaufgabe in DOIF geschrieben.
Auch wenn ich damit wieder Haue von Udo bekomme  :)
define di_DME DOIF ([DME_Kontakt:"closed"] and [17:55-18:05|3])() DOELSEIF ([DME_Kontakt:"closed"] and [22:00-05:00])(set Hoftor on, set Lampe1 on) DOELSEIF ([DME_Kontakt:"closed"])(set Hoftor on)
attr di_DME do always

Ich schreibe noch mal als Text was es tun sollte:
Jedesmal wenn der Kontakt schließt ->
Mittwoch zwischen 17:55-18:05 tut er nichst und rastet in cmd1 ein.
zwischen 22:00-05:00 schaltet er immer Hoftor und Lampe1 on und rastet bei cmd2 ein.
ansonsten rastet er immer in cmd3 ein und schaltet das Hoftor on.

Eigentlich bräuchte man do always nicht. Damit würde man das mehrfach schalten verhindern.
Die Frage die ich mir die ganze Zeit stelle: Wer schaltet Hoftor und Lampe wieder aus?  8)

Aber sicher waren beide "nur so" als Platzhalter - wie ich jetzt lese  ;)

Gruß Otto

Jetzt wo Depechem noch gesagt hat das es nicht um Hoftor geht bin ich mir sicher das er den Code/Gedanken aus einem anderen aktuellen Thread her hat  ;D
Ging da um Wemos und Feuerwehrmelder.

Also statt Hoftor nun das andere

define notifyDepechem notify DME_Kontakt:closed {

            fhem('set Lampe1 on') if( isTime('21:00-04:00') );

            if( $wday != 3 or ($wday == 3 and ! isTime('17:55-18:05')) ) {
                fhem('set Pushover_Pushnachrichten msg 'EINSATZALARM' 'FEUERWEHR' 'iPhoneThomas' 1 'persistent'');
                indoorMessage('EINSATZALARM FEUERWEHR','WandTabletWohnzimmerThomas,WandTabletBadThomas',15);
            } 
}
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: Depechem am 07 September 2017, 11:41:21
Zitat von: CoolTux am 07 September 2017, 11:35:29
Jetzt wo Depechem noch gesagt hat das es nicht um Hoftor geht bin ich mir sicher das er den Code/Gedanken aus einem anderen aktuellen Thread her hat  ;D
Ging da um Wemos und Feuerwehrmelder.

Also statt Hoftor nun das andere

define notifyDepechem notify DME_Kontakt:closed {

            fhem('set Lampe1 on') if( isTime('21:00-04:00') );

            if( $wday != 3 or ($wday == 3 and ! isTime('17:55-18:05')) ) {
                fhem('set Pushover_Pushnachrichten msg 'EINSATZALARM' 'FEUERWEHR' 'iPhoneThomas' 1 'persistent'');
                indoorMessage('EINSATZALARM FEUERWEHR','WandTabletWohnzimmerThomas,WandTabletBadThomas',15);
            } 
}


Ja genau Leon,

wenn ich deinen Code nehme(hatte ich auch schon so ungefähr probiert bringt er mir beim speichern des notify immer folgenden Fehler Bad name after EINSATZALARM' at (eval 2831) line 6, <GEN1102> line 1.
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: CoolTux am 07 September 2017, 11:43:52
fhem("set Pushover_Pushnachrichten msg 'EINSATZALARM' 'FEUERWEHR' 'iPhoneThomas' 1 'persistent'");

Mach mal am Anfang und am Ende doppelte Gänsefüße (Hochkommatar)
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: Depechem am 07 September 2017, 11:57:21
sooo ich glaub jetzt hab ich es endlich komplett fertig. Dank eurer Hilfe

DME_Kontakt:closed {

            fhem('set Treppenaufgang on-for-timer 120; set Buero on-for-timer 120') if( isTime('21:00-05:00') );

            if( $wday != 3 or ($wday == 3 and ! isTime('17:55-18:05')) ) {
                fhem("set Pushover_Pushnachrichten msg 'EINSATZALARM' 'FEUERWEHR' 'iPhoneThomas' 1 'persistent'");
                indoorMessage('EINSATZALARM FEUERWEHR','WandTabletWohnzimmerThomas,WandTabletBadThomas',15);
                fhem('set Klingelmodul_Thomas playTone 029; set 4_fach_Aktor_Hoftor_Sw_01 on')
           
            }
}


Eingabe in "99_myUtils.pm"
#####################################################################################################
# Uhrzeit für Notify-DME - ANFANG

sub isTime($) {
   
    my $dfi = shift;

    $dfi =~ s/{([^\x7d]*)}/$cmdFromAnalyze=$1; eval $1/ge; # Forum #69787
    my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;
    my $dhms = sprintf("%s\@%02d:%02d:%02d", $wday, $hour, $min, $sec);
    foreach my $ft (split(" ", $dfi)) {
      my ($from, $to) = split("-", $ft);
      if(defined($from) && defined($to)) {
        $from = "$wday\@$from" if(index($from,"@") < 0);
        $to   = "$wday\@$to"   if(index($to,  "@") < 0);
        return 1 if($from le $dhms && $dhms le $to);
      }
    }
return 0;
}

# Uhrzeit für Notify-DME - ENDE
#####################################################################################################




Nun wird bei Alarm
- im ganzen Haus eine Durchsage gemacht
- ich bekomme den Alarm auf iPhone
- ab 21 Uhr wird für 2 min das Licht an bestimmten Orten eingeschalten
- das Hoftor öffnet automatisch

der Probealarm wird ausgeblendet

8)
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: CoolTux am 07 September 2017, 12:00:17

DME_Kontakt:closed {

            fhem('set Treppenaufgang on-for-timer 120; set Buero on-for-timer 120') if( isTime('21:00-05:00') );

            if( $wday != 3 or ($wday == 3 and ! isTime('17:55-18:05')) ) {
                fhem("set Pushover_Pushnachrichten msg 'EINSATZALARM' 'FEUERWEHR' 'iPhoneThomas' 1 'persistent'; set Klingelmodul_Thomas playTone 029; set 4_fach_Aktor_Hoftor_Sw_01 on");
                indoorMessage('EINSATZALARM FEUERWEHR','WandTabletWohnzimmerThomas,WandTabletBadThomas',15);
            }
}


Sollte so auch gehen.
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: amenomade am 07 September 2017, 13:59:56
Und dieses ganze Thread beweist, wie Notify für komplexe Aufgaben weniger intuitiv, weniger lesbar und weniger mächtig als ein DOIF ist!



Gnagnagna ;)  8) Hehehe
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: Beta-User am 07 September 2017, 14:14:16
...kommt wohl auf die Sichtweise an 8) ...

- Lesbar ist notify iVm. perl sehr gut, wenn man sich nur ein wenig mit perl beschäftigt hat ::)
- Intuitiv: wenn ich mir die beliebten Ratespiele zu DOIF ansehe, sehe ich mich immer wieder in der Ansicht bestätigt, dass das jedenfalls nur scheinbar intuitiv ist. Und wenn man eine Ladung Attribute braucht, ist es auch nicht mehr so "schein-übersichtlich" ;D ;D ;D . Aber ok: Es ist einfacher, einem Anfänger irgend ein komplexes Ding unterzujubeln, das er nur ein ganz kleines bißchen auf seine Gerätenamen und Uhrzeiten anpassen muß :'( .
- Mächtig: DOIF ist in perl geschrieben. Im Ergebnis kann es max 1:1 ausgehen ;) .

Vielleicht möchte der TE den Thread als "Gelöst" markieren (siehe Signatur-Link).
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: CoolTux am 07 September 2017, 14:56:25
Zitat von: amenomade am 07 September 2017, 13:59:56
Und dieses ganze Thread beweist, wie Notify für komplexe Aufgaben weniger intuitiv, weniger lesbar und weniger mächtig als ein DOIF ist!

Gnagnagna ;)  8) Hehehe

Ich kann schneller Perl Code lesen und verstehen als DOIF Optionen zu erkennen/erraten.
Daher lieber notify und Co.
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: amenomade am 07 September 2017, 15:52:19
Typische Ansicht von perl Programmer ;)

Ich weiss, ich bin es teilweise auch  :-[ Aber warum gibt es überhaupt FHEM Modulen, wenn man alles selbst in 99_myUtils schreiben kann, nicht wahr? ;) Es würde reichen, nur das Sub-Forum Codeschnipsel ein bisschen zu erweitern / kategorisien  :P
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: Beta-User am 07 September 2017, 16:06:09
Zitat von: amenomade am 07 September 2017, 15:52:19
Typische Ansicht von perl Programmer ;)
Das ist hier echt OT und daher nur zur Klarstellung: für mich ist perl-Programmieren harte Arbeit und ich habe davon eigentlich keinen Plan! Meine Kenntnisse sind aus Notwehr gegen DOIF entstanden:

Was ich habe, ist Erfahrung mit einigen DOIFs, die eine Zeitlang so funktioniert haben, wie sie sollten und dann irgendwann - vermutlich weil ein wohlmeinender Programmierer ein neues feature eingebaut hat - dann doch nicht mehr wollten wie sie sollten. Das hat mich zu der Überzeugung gebracht, dass es -in dem Fall jedenfalls - besser ist, zukünftig das "Original" (=perl) zu wählen, dann habe ich es besser in der Hand, was da passiert. Und es ist - jedenfalls für mich - einfacher, als mich nach Jahren durch eine dicke Dokumentation mir nunmehr völlig unverständlicher Attribute zu wälzen.

Dann lerne ich lieber einmal die Grundzüge einer echten Programmiersprache, als mir (und anderen) derartiges anzutun. Ich empfinde es also (kein Witz!) als Zumutung, wenn jemand nach perl-code fragt und man dann glaubt, ihm ein "einfaches" DOIF unterschieben zu dürfen. Das grenzt an Körperverletzung...

Daher auch die nachdrückliche Empfehlung an perl-Einsteiger: Überlegt euch gut, ob ihr die Zeit aufwendet, euch in perl einzudenken oder in DOIF. Das Risiko ist groß, dass ihr es mit DOIF doppelt tut!

Just my2ct...

Beta-User

PS: mach mal ein [Gelöst] in den Titel, nicht dass da jemand glaubt, alte Diskussionen (https://forum.fhem.de/index.php/topic,66830.0.html) aufwärmen zu müssen...
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: amenomade am 07 September 2017, 17:05:10
ohlala.... Die alte Diskussion(en) kenn ich schon. Das war nur ein Scherz! Nicht sofort sich aufregen!  :o 8)
Ich hab schon paar Mal im Anfängersforum geholfen, und ich kann zusagen: DOIF ist nicht immer einfach für Anfänger, insbesondere diejenige die schon ein einfaches Notify auf einem einzigen Event nicht verstanden haben.
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: Beta-User am 07 September 2017, 17:24:43
Bin schon wieder auf dem Boden 8) , und ich weiß schon, dass du es nur gut meinst :) .

Aber vielleicht überlegst du zukünftig noch besser, ob solche Kommentare wie in #25 wirklich notwendig sind, das ist geradezu eine Einladung (genau wie das in #18 :-* und #19 ::) ).

Noch schöner wäre natürlich, wir alle würden es unterlassen, Anfängern, die wegen einer eindeutigen Reaktion auf ein einzelnes Ereignis (also ohne weitere Abfrage) ein DOIF mit "attr do always" empfehlen. Die neu hinzukommenden Leute sollten wenigstens die Chance haben zu erkennen,
- dass es außer DOIF noch andere kluge Module gibt, ohne dass man gleich den ganzen Code selber schreiben muß :D
- was die eigentlichen Basisbestandteile von FHEM sind und wie sie ticken (notify und at...).

Wieder nur: just my2ct 8)

BTW: wann wird dieser Thread "gelöst"?
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: CoolTux am 07 September 2017, 17:32:29
Die Anfänger sollen nicht lernen das es neben DOIF noch...
Sondern das man bei Bedarf neben notify, at und watchdog ein DOIF neben kann.
Für DOIF gibt es nur einen Maintainer, wenn das Mal schief geht stehen die Leute da. Die anderen Dinge sind FHEM Bestandteil und es gibt mehrere die sich auskennen oder weil nur wenig Zeilen Code schnell einarbeiten können. DOIF ist riesig, da will sich keiner einarbeiten im Code.
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: amenomade am 07 September 2017, 17:53:55
ZitatDOIF ist riesig, da will sich keiner einarbeiten im Code.
OK... da muss ich überlegen ;)
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: betateilchen am 07 September 2017, 18:41:47
echt lustig hier...
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: Otto123 am 07 September 2017, 20:45:16
Mist - und ich bin Schuld.  :-[
Titel: Antw:notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: nils_ am 08 September 2017, 09:55:59
man kann auch versuchen es zu kombinieren ( ... (https://forum.fhem.de/index.php/topic,76364.msg682481.html#msg682481) )
Titel: Antw:[Gelöst] notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: kumue am 12 September 2017, 21:28:53
muss das Thema mal rauskramen...

Geht isTime wirklich über Mitternacht ?

ein
defmod NO_Test notify dummy1:on {if (isTime('20:20-22:10')) {fhem("set dummy2 on")}}
schaltet dummy2 ein

aber
defmod NO_HZ_EG_KU notify dummy1:on {if (isTime('20:20-06:10')) {fhem("set dummy2 on")}}
leider nicht
Titel: Antw:[Gelöst] notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: CoolTux am 12 September 2017, 21:57:08
Nein geht nicht über Mitternacht. Die Funktion basiert auf den Code von disableForIntervals und benötigt die selbe Syntax.  21:00-24:00 00:00-06:00
Titel: Antw:[Gelöst] notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen
Beitrag von: kumue am 12 September 2017, 22:12:54
alles klar, danke!