Hallo zusammen,
ich versuche mit einem Notify eine Sprachausgabe des Unwetter Module UWZ an AMAD auf dem Tablet zu übergeben bzw. auszugeben.
Meine Anleitung ist von : https://waschto.eu/unwetterwarnungen-per-sprachausgabe-ausgeben/#Unwetterwarnungen_abrufen
Habe zuerst mit:
Unwetterzentrale:.* {
my $Zeit = sprintf("%%02d:%%02d",$hour,$min);;
my $warncounter = (ReadingsVal('Unwetterzentrale','WarnCount',""));;
my $warntext = (ReadingsVal('Unwetterzentrale','Warn_0_LongText',""));;
if(($warncounter > 0) && ($Zeit gt "08:00") && ($Zeit lt "22:00")) {fhem ("set Tablet ttsMsg Wetterwarnung für Eppingen. $warntext ")};;}
es versucht.
Wollte dieses nun erweitern, da es heute mehrere (3) Warnungen gab. Möchte alle Warnungen nacheinander ansagen lassen.
Meine Idee:
Unwetterwarnung:.* {
my ($Zeit1) = @_;;
my ($warntext) = @_;;
$Zeit1 = sprintf("%02d:%02d",$hour,$min);;
$warntext = (Value("Warn_0_LongText"));;
if((Value("WarnCount") ge 1) && ($Zeit1 gt "08:00") && ($Zeit1 lt "22:00")) $warntext =(Value("Warn_0_LongText") {fhem ("set TabletWohnzimmer ttsMsg Wetterwarnung fuer Eppingen. $warntext ")}
elsif((Value("WarnCount") ge 2) && ($Zeit1 gt "08:00") && ($Zeit1 lt "22:00")) $warntext =(Value("Warn_1_LongText") {fhem ("set TabletWohnzimmer ttsMsg Wetterwarnung fuer Eppingen. $warntext ")}
elsif((Value("WarnCount") ge 3) && ($Zeit1 gt "08:00") && ($Zeit1 lt "22:00")) $warntext =(Value("Warn_2_LongText") {fhem ("set TabletWohnzimmer ttsMsg Wetterwarnung fuer Eppingen. $warntext ")}
}
Als Fehler im Web-editor von Fhem bekommen ich:
syntax error at (eval 26496) line 7, near ") $warntext "
Global symbol "$Zeit1" requires explicit package name at (eval 26496) line 9.
Global symbol "$Zeit1" requires explicit package name at (eval 26496) line 9.
Global symbol "$warntext" requires explicit package name at (eval 26496) line 9.
Global symbol "$Zeit1" requires explicit package name at (eval 26496) line 11.
Global symbol "$Zeit1" requires explicit package name at (eval 26496) line 11.
Global symbol "$warntext" requires explicit package name at (eval 26496) line 11.
Ich weis, dass das auch mit einem Zähler in der Schleife geht, aber als Perl Anfänger erst mal mit dem obigen Beispiel.
Was mache ich falsch?
Warncount ist eine Zahl als Reading und gibt die Anzahl der Warnungen an. Die Text-Warnmeldung beginnt bei 0.
Die Text-Sprachausausgabe am Tablet funktioniert.
Andy
Warum
my ($Zeit1) = @_;;
my ($warntext) = @_;;
wenn Du sofort
$Zeit1 = sprintf("%02d:%02d",$hour,$min);;
$warntext = (Value("Warn_0_LongText"));;
machst???
Die Syntax, die Du am Anfang nutzt, ist (fast) um die Variablen mit Parametern vom Aufruf der Funktion zu befüllen.
Mach einfach:
my $Zeit1 = sprintf("%02d:%02d",$hour,$min);;
my $warntext = ReadingsVal('Unwetterzentrale','Warn_0_LongText',"");;
und die Zeilen mit @_weg.
ZitatWarncount ist eine Zahl als Reading
Wenn das ein Reading vom Device Umwetterzentrale ist, musst Du so schreiben:
ReadingsVal('Unwetterzentrale','WarnCount',"")
statt
Value("WarnCount")
Value("WarnCount") bedeutet "Status (STATE) des Devices WarnCount"
Das gleiche gilt für Warn_0_LongText: das ist ein Reading vom Device Umwetterzentrale, kein Device per se. Und auch für Warn_1_Longtext usw.
Es gibt Beispiele im UWZ Thread. Dort wird sowas mit einer 99_myUtils gelöst
Hallo Cooltux,
habe ich gelesen, das ist aber nur ; soweit ich das verstanden habe; wenn der MP3 Player auch auf dem Raspi ist, bei mir spielt aber das Tablet dies mit AMAD ab.
amenomade,
hatte ich anfangs so, aber nach dem vielen lesen und probieren kam dann der erste Versuch heraus. Habe es nun gelöst mit deinem Hinweis:
Unwetterwarnung:.* {
my $Zeit1 = sprintf("%02d:%02d",$hour,$min);;
my $warntext = (ReadingsVal('Unwetterwarnung','Warn_0_LongText',""));;
if(ReadingsVal('Unwetterwarnung','WarnCount',"") ge 1 && $Zeit1 gt "08:00" && $Zeit1 lt "22:00") {{$warntext =(ReadingsVal('Unwetterwarnung','Warn_0_LongText',""))}
{fhem ("set TabletWohnzimmer ttsMsg Wetterwarnung fuer Eppingen. $warntext ")}}
elsif(ReadingsVal('Unwetterwarnung','WarnCount',"") ge "2" && $Zeit1 gt "08:00" && $Zeit1 lt "22:00") {{$warntext =(ReadingsVal('Unwetterwarnung','Warn_1_LongText',""))}
{fhem ("set TabletWohnzimmer ttsMsg Wetterwarnung fuer Eppingen. $warntext ")}}
elsif(ReadingsVal('Unwetterwarnung','WarnCount',"") ge "3" && $Zeit1 gt "08:00" && $Zeit1 lt "22:00") {{$warntext =(ReadingsVal('Unwetterwarnung','Warn_2_LongText',""))}
{fhem ("set TabletWohnzimmer ttsMsg Wetterwarnung fuer Eppingen. $warntext ")}}
}
Nochmals Danke für Eure Hilfe
Andy