[Gelöst] notify - an bestimmten Tag zur bestimmen Uhrzeit ausschließen

Begonnen von Depechem, 07 September 2017, 09:02:41

Vorheriges Thema - Nächstes Thema

CoolTux

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ß
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Depechem

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) }
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Otto123

#17
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

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
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

CoolTux

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);
            } 
}
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Depechem

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.
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

CoolTux

fhem("set Pushover_Pushnachrichten msg 'EINSATZALARM' 'FEUERWEHR' 'iPhoneThomas' 1 'persistent'");

Mach mal am Anfang und am Ende doppelte Gänsefüße (Hochkommatar)
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Depechem

#22
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)
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

CoolTux


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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

amenomade

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
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Beta-User

...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).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

amenomade

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
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Beta-User

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 aufwärmen zu müssen...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

amenomade

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.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus