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
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;
}
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.
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?)
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
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
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.
Habe das Notify noch mal angepasst. Auf meinem Testsystem rennt es nun genau so wie Du es wolltest.
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?
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.
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.
:-*
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?
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 ;)
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.
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.
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ß
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) }
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
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
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);
}
}
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.
fhem("set Pushover_Pushnachrichten msg 'EINSATZALARM' 'FEUERWEHR' 'iPhoneThomas' 1 'persistent'");
Mach mal am Anfang und am Ende doppelte Gänsefüße (Hochkommatar)
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)
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.
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
...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).
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.
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
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...
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.
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"?
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.
ZitatDOIF ist riesig, da will sich keiner einarbeiten im Code.
OK... da muss ich überlegen ;)
echt lustig hier...
Mist - und ich bin Schuld. :-[
man kann auch versuchen es zu kombinieren ( ... (https://forum.fhem.de/index.php/topic,76364.msg682481.html#msg682481) )
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
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
alles klar, danke!