Notify mit Unwetterwarung Syntax Problem

Begonnen von Decki, 29 Oktober 2017, 15:13:02

Vorheriges Thema - Nächstes Thema

Decki

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
Raspi 2 im Schaltschrank, USB IR Lesekopf am EHz21, Gaszähler mit Reedkontakt, Jeelink,  16 FS20 Aktoren,  3 Ufos für LED, 11 FS20 Rolladenaktore, AMAD 4.0 mit Sprachausgabe, Esp12 mit EspEasy

amenomade

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

CoolTux

Es gibt Beispiele im UWZ Thread. Dort wird sowas mit einer 99_myUtils gelöst
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

Decki

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
Raspi 2 im Schaltschrank, USB IR Lesekopf am EHz21, Gaszähler mit Reedkontakt, Jeelink,  16 FS20 Aktoren,  3 Ufos für LED, 11 FS20 Rolladenaktore, AMAD 4.0 mit Sprachausgabe, Esp12 mit EspEasy