Guten Tag, ich muss in Abhängigkeit vom Wochentag manchmal bestimmte Befehle schalten. Diese lauten in FHEM wie folgt
Montags: set Viessmann WW_1Mo_an und dann 5 Minuten später set Viessmann WW_1Mo_aus
Dienstags: set Viessmann WW_1Di_an und dann 5 Minuten später set Viessmann WW_1Di_aus
usw.
Ich will diese Befehle durch eine Fernbedienung auslösen lassen. Das entsprechende Event wird durch den Anruf einer internen Rufnummer angestoßen, dieses Event wird dann auch ordentlich erzeugt. Mein Problem ist nun das entsprechende Notify. Bisher habe ich das so definiert:
In my_utils gibt es folgende sub
sub WochentagHolen(){
our %myUtils_wochentagskurzel = (
"0" , "7So",
"1" , "1Mo",
"2" , "2Di",
"3" , "3Mi",
"4" , "4Do",
"5" , "5Fr",
"6" , "6Sa",
);
#Wochentag bestimmen
my $Wochentagsnummer = strftime('%w', localtime); #0:So 1:Mo 2:Di 3:Mi 4:Do 5:Fr 6:Sa
return $myUtils_wochentagskurzel{$Wochentagsnummer};
}
Diese Wochentagsnummer liefert den eigentlichen Befehlscode. Der muss aber in einem notify stehen und das habe ich so gemacht:
defmod WarmwasserAn notify TelefonMonitor:external_number:.WarmwasserAn@127.0.0.1 {my $befehl = "set Viessmann WW_".WochentagHolen()."_voll";; fhem($befehl)};; sleep (300);; {my $befehl = "set Viessmann WW_".WochentagHolen()."_norm";; fhem($befehl)}
Die sub in myutils finde ich noch ok. Aber was ich dann mit dem notify mache, scheint mir irgendwie extrem umständlich zu sein. Gibt es da keine elegantere Lösung?
- Das ist keine Anfängerfrage
- Das Zuordnen würde ich nicht mit einem hash lösen, sondern mit einem array
- Du kannst die gesamte Befehlsausführung in Deinem notify auch in die Funktion Deiner myUtils verlagern, dann musst Du im notify nur noch einmal die Funktion aufrufen
Danke! Zu 1: Ich sehe mich als Anfänger, aber es stimmt, so richtig einsortiert ist das nicht.
Ich wusste nicht, dass ich in der my_utils direkt fhem aufrufen kann. Das geht dann mit fhem(" usw"), oder? So wie in https://fhem.de/commandref_DE.html#command beschrieben?
Also so?
sub WarmwasserEinUndAus(){
my @myUtils_wochentagskurzel = ("7So", "1Mo", "2Di", "3Mi", "4Do", "5Fr", "6Sa");
my $Wochentagsnummer = strftime('%w', localtime); #0:So 1:Mo 2:Di 3:Mi 4:Do 5:Fr 6:Sa
fhem("set Viessmann WW_".$Wochentagsnummer."_an");
fhem("sleep 300");
fhem("set Viessmann WW_".$Wochentagsnummer."_aus");
}
Fast.
fhem("sleep 300; set Viessmann WW_".$Wochentagsnummer."_aus");
Kein doppeltes Semikolon innerhalb von fhem(,,...")?
Gesendet von iPhone mit Tapatalk Pro
Nein
my @tage = qw/1Mo 2Di 3Mi 4Do 5Fr 6Sa 7So/;
my $Wochentagsnummer = $tage[ (localtime(time))[6] - 1 ];