notify mit system Aufruf und Variable

Begonnen von duu75, 30 November 2015, 09:33:45

Vorheriges Thema - Nächstes Thema

duu75

Brauche mal Hilfe bei einem Notify, wo ich einen Kalender namens "CalendarDoorBell" auswerte.
Das Ganze möchte ich gerne wesentlich verschlanken, weil es durch mehrere IF Abfragen usw. sehr mächtig geworden ist.

Kurz gesagt, das Notify ist die Haustürklingel. Es soll je nach Jahreszeit, saisonalen Fest etc. ein anderer Klingelton abgespielt werden.
Spielerei werden viele sagen, ich weiß, aber wenn es der Server nun mal her gibt, warum nicht. ;-)

... notify Klingeltaster
{if
   ( ... && ...  && (ReadingsVal("CalendarDoorBell","modeStarted","") eq "xmas"))
      {system("/usr/bin/mpg123 /opt/fhem/audio/xmas.mp3 &")}
}


Es gibt also Einträge wie xmas, hallooween, newyear etc.
Dafür gibts derzeit jedesmal eine eigene IF Schleife zum Abfragen des ReadingsVal "modeStarted".
Bläht das Ganze sehr auf.
Gibt es die Möglichkeit den system Befehl mit mpg123 im MP3 File mit einer Variable zu konfigurieren und diese Variable anhand des modeStarted zusammenzusetzen?
Das es dann sozusagen so aussieht.

... notify Klingeltaster
{if
   ( ... && ... )
      {
      my $Klingelton = "ReadingsVal("CalendarDoorBell","modeStarted",""),".mp3"" ;
      system("/usr/bin/mpg123 /opt/fhem/audio/$Klingelton.mp3 &")
      }
}


Wie macht man das?
Geht das so oder versuche ich da vergeblich?


dev0

Versuch es mal so:
my $Klingelton = ReadingsVal("CalendarDoorBell","modeStarted","") . ".mp3";
system("/usr/bin/mpg123 /opt/fhem/audio/" . $Klingelton . " &")

duu75

Danke!
Hat geklappt.
Hatte nur noch ein paar Probleme mit den verschachtelten IF Schleifen und der nicht übergreifenden Variablengültigkeit.