FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: andies am 24 August 2018, 18:07:46

Titel: Perl-Befehle mit variablem Wochentagsnamen zusammenfassen?
Beitrag von: andies am 24 August 2018, 18:07:46
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?
Titel: Antw:Perl-Befehle mit variablem Wochentagsnamen zusammenfassen?
Beitrag von: betateilchen am 24 August 2018, 19:10:05
Titel: Antw:Perl-Befehle mit variablem Wochentagsnamen zusammenfassen?
Beitrag von: andies am 24 August 2018, 19:21:17
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?
Titel: Antw:Perl-Befehle mit variablem Wochentagsnamen zusammenfassen?
Beitrag von: andies am 24 August 2018, 19:38:40
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");
}
Titel: Antw:Perl-Befehle mit variablem Wochentagsnamen zusammenfassen?
Beitrag von: CoolTux am 24 August 2018, 20:01:03
Fast.

fhem("sleep 300; set Viessmann WW_".$Wochentagsnummer."_aus");
Titel: Antw:Perl-Befehle mit variablem Wochentagsnamen zusammenfassen?
Beitrag von: andies am 24 August 2018, 20:18:04
Kein doppeltes Semikolon innerhalb von fhem(,,...")?


Gesendet von iPhone mit Tapatalk Pro
Titel: Antw:Perl-Befehle mit variablem Wochentagsnamen zusammenfassen?
Beitrag von: CoolTux am 24 August 2018, 20:19:11
Nein
Titel: Antw:Perl-Befehle mit variablem Wochentagsnamen zusammenfassen?
Beitrag von: betateilchen am 24 August 2018, 20:29:04

   my @tage = qw/1Mo 2Di 3Mi 4Do 5Fr 6Sa 7So/;
   my $Wochentagsnummer = $tage[ (localtime(time))[6] - 1 ];