FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: raspklaus am 10 Dezember 2015, 20:03:53

Titel: Probleme im notify
Beitrag von: raspklaus am 10 Dezember 2015, 20:03:53
Ich hoffe, dass ich hier richtig bin. Ich habe folgendes notify:

define Removal4Sonos notify Removal4Sonos {\
my $message = "Removal";;\
if (ReadingsVal("RemovalBlack", "state", "") eq "on") {$message .= "Black"};;\
if (ReadingsVal("RemovalBrown", "state", "") eq "on") {$message .= "Brown"};;\
if (ReadingsVal("RemovalBlue", "state", "") eq "on") {$message .= "Blue"};;\
if (ReadingsVal("RemovalYellow", "state", "") eq "on") {$message .= "Yellow"};;\
if ($message ne "Removal")\
   {fhem("define SonosRemoval at 19:30:00 set Sonos_Buero PlayURITemp \\192.200.100.97\SonosSpeak\$message.mp3 50")}\
   {Log 3,"Inside if: define SonosRemoval at 19:30:00 set Sonos_Buero PlayURITemp $message.mp3 35"}\
}
attr Removal4Sonos room Abfall
attr Removal4Sonos verbose 5


und dadurch zwei Probleme:

das erste:

die Fehler im Log nach einem trigger:

2015.12.10 19:45:10 1: PERL WARNING: Unrecognized escape \S passed through at (eval 393) line 8.
2015.12.10 19:45:10 3: eval: my $TYPE='notify';my $SELF='Removal4Sonos';my $EVENT='';my $NAME='Removal4Sonos';{
my $message = "Removal";
if (ReadingsVal("RemovalBlack", "state", "") eq "on") {$message .= "Black"};
if (ReadingsVal("RemovalBrown", "state", "") eq "on") {$message .= "Brown"};
if (ReadingsVal("RemovalBlue", "state", "") eq "on") {$message .= "Blue"};
if (ReadingsVal("RemovalYellow", "state", "") eq "on") {$message .= "Yellow"};
if ($message ne "Removal")
   {fhem("define SonosRemoval at 19:30:00 set Sonos_Buero PlayURITemp \\192.200.100.97\SonosSpeak\$message.mp3 35")}
   {Log 3,"Inside if: define SonosRemoval at 19:30:00 set Sonos_Buero PlayURITemp \\192.200.100.97\SonosSpeak\$message.mp3 35"}
}
2015.12.10 19:45:10 3: Inside if: define SonosRemoval at 19:30:00 set Sonos_Buero PlayURITemp \\192.200.100.97\SonosSpeak\RemovalBrown.mp3 35


um 19:30 wird dadurch nichts abgespielt

Ein
set Sonos_Buero PlayURITemp \\192.200.100.97\SonosSpeak\RemovalBrown.mp3 35

erzeugt eine Ausgabe.

Das zweite Problem hängt aber wahrscheinlich mit dem nicht ausgeführten at zusammen. Ein erneutes trigger erzeugt die Fehlermeldung:

2015.12.10 19:48:10 3: define SonosRemoval at 19:30:00 set Sonos_Buero PlayURITemp \192.200.100.97SonosSpeak$message.mp3 50 : SonosRemoval already defined, delete it first


Ich habe die Beschreibungen so interpretiert, dass ein einmal auszuführendes at von fhem weggeworfen bzw  nach der Ausführung vergessen wird und definiere das at mit einem einmal täglich auszuführenden trigger des notify.

Vielleicht gibt es ja einen einfacheren Weg ?
Titel: Antw:Probleme im notify
Beitrag von: Ellert am 10 Dezember 2015, 20:18:18
ZitatUnrecognized escape \S passed through at (eval 393) line 8.

Den Fehler findest Du, wenn Du in Zeile 8 Deiner Definition nach "\S" suchst. Falls es unbedingt "\" sein muss, solltest Du es maskieren.

PS. Einfacher geht es mit einem DOIF, at und notify in einer Definition, mit dynamischer Zeitangabe.
Titel: Antw:Probleme im notify
Beitrag von: raspklaus am 10 Dezember 2015, 21:25:27
Zeile 8 ist:

{fhem("define SonosRemoval at 19:30:00 set Sonos_Buero PlayURITemp \\192.200.100.97\SonosSpeak\$message.mp3 50")}

Das sind die \ Backslashes aus der URL

sieht doch Syntaxmässig io aus.
ZitatPS. Einfacher geht es mit einem DOIF, at und notify in einer Definition, mit dynamischer Zeitangabe.

Wo finde ich da Beispiele ?  Klingt für eine Frage im Anfängerthreat etwas kompliziert
Titel: Antw:Probleme im notify
Beitrag von: raspklaus am 10 Dezember 2015, 21:30:49
so scheint es besser zu sein:

{fhem("define SonosRemoval at 19:30:00 set Sonos_Buero PlayURITemp \\\\192.200.100.97\\SonosSpeak\\$message.mp3 50")}

Wird das at nach der Ausführung auch wirklich von fhem vergessen ?
Titel: Antw:Probleme im notify
Beitrag von: raspklaus am 11 Dezember 2015, 07:55:13
Bin hier anscheinend doch im falschen Thema ?
Titel: Antw:Probleme im notify
Beitrag von: marvin78 am 11 Dezember 2015, 07:56:21
Ja, es wird vergessen. Eventuell antwortet dir niemand, weil das ja explizit in der Doku zu at erwähnt wird.
Titel: Antw:Probleme im notify
Beitrag von: raspklaus am 11 Dezember 2015, 09:59:48
Ich wollte ja ursprünglich wissen ob es einen einfacheren Weg mit gleichem Ergebnis gibt.
Titel: Antw:Probleme im notify
Beitrag von: Ellert am 11 Dezember 2015, 14:57:46
ZitatWo finde ich da Beispiele ?

Wie immer, in der Commandref.
Titel: Antw:Probleme im notify
Beitrag von: Baumi am 11 Dezember 2015, 15:18:24
Allgemeiner Tipp, falls Du (wie ich ;-) ) lieber mit Perl arbeitest als mit FHEMs Befehlen: Wenn man eine 99_myUtils-Datei für eigene Funktionen nutzt (http://www.fhemwiki.de/wiki/99_myUtils_anlegen), kann das die Fehlersuche sehr vereinfachen. Zum Einen braucht man nicht so viele Escape-Slashes und Extra-Semikolons, zum Anderen bekommt man bei Fehlern Zeilennummern, mit denen man etwas anfangen kann.

Andererseits muss man natürlich nach jeder Änderung einmal "reload 99_myUtils.pm" in FHEM machen, aber damit kann ich zumindest leben.
Titel: Antw:Probleme im notify
Beitrag von: marvin78 am 11 Dezember 2015, 15:27:15
Zitat von: Baumi am 11 Dezember 2015, 15:18:24
Andererseits muss man natürlich nach jeder Änderung einmal "reload 99_myUtils.pm" in FHEM machen, aber damit kann ich zumindest leben.

Nein. Das muss man nicht, wenn man den FHEM-internen Editor verwendet (mit Codemirror wirklich brauchbar).
Titel: Antw:Probleme im notify
Beitrag von: Baumi am 11 Dezember 2015, 15:38:19
Oh, danke für den Hinweis. Die Codemirror-Integration ist komplett an mir vorüber gegangen. Muss ich mir bei Gelegenheit mal näher ansehen.