[gelöst] event-on-change hilft nicht - war: Perl-Syntax wohl falsch

Begonnen von der_da, 28 April 2016, 12:22:49

Vorheriges Thema - Nächstes Thema

der_da

Hallo!
Ich habe ein DOIF, welches bei Vorliegen einer Unwetterwarnng eine Nachricht versenden soll:
([Unwetterzentrale:WarnCount] > 0) ({fhem ("set telegram message @Vorname_Nachname Hier ist die Nachricht)})

Leider funktioniert es nicht. Gebe ich
set telegram message @Vorname_Nachname Hier ist die Nachricht
in der FHEM-Kommandozeile ein, wird die Nachricht versandt. Mein DOIF endet mit folgendem Fehler:
Global symbol "@Vorname_Nachname" requires explicit package name at (eval 249553) line 1.

Kann mir jemand einen Tipp dazu geben?

marvin78

@ bezeichnet in Perl ein Array. Bitte ein wenig mit Perl beschäftigen Variablen in " werden auch als solche erkannt. Deshalb musst du entweder einfache Anführungszeichen verwenden oder @ mit \ maskieren. Perl Grundlagen also.

der_da

Danke. Was so ein kleiner \ ausmachen kann  ;D

Wernieman

Und warum macht Du den Umweg über Perl?

ein "set" kannst Du aus gfhem auch direkt aufrufen, ohne erst mit {} eine perl-Session aufmachen zu müssen ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

marvin78

Ich nahm an, dass es nur ein Ausschnitt ist, wie das hier aktuell üblich wird: man postet einen Ausschnitt und der Fehler befindet sich dann auch oft im nicht geposteten ;)

Wernieman

Es war nicht an Dich gerichtet, sondern an der_da

Habe das Gefühl, das viel zu häufig auf Perl gewechselt wird, obwohl es auch mit FHEM Bordmitteln lösbar wäre ... und damit eine Komplexität weniger ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

marvin78

Dann sind wir uns einig. Ich wollte damit nur sagen, dass ich nicht mehr darauf hinweise, weil dann oft zurück kommt: Ist ja nur ein Ausschnitt.

der_da

Ich muss das leider noch mal vor kramen. Mein DOIF lautet so:
([Unwetterzentrale:WarnCount] > 0) ({fhem ("set telegram message \@Vorname_Nachname Unwetterwarnung: [Unwetterzentrale:Warn_0_ShortText] ")})
DOELSE
(set telegram message @Vorname_Nachname Keine Unwetterwarnung mehr.)
attr event-on-change-reading WarnCount
attr do always


Das funktioniert auch, aber eigentlich wollte ich bewirken, dass eine Warnung NUR gesendet wird, wenn sich bei WarnCount eine Änderung ergibt. Die Unwetterzentrale ist so definiert, dass diese stündlich die Readings neu einliest (Interval 3600) und auch hier ein
attr event-on-change-reading WarnCount
gesetzt ist.
Genau das passiert aber nicht, sondern ich bekomme jede Stunde die Nachricht, dass (die eine schon bekannte) Warnung vorliegt. Wie kann ich das so programmieren, wie gewünscht?

dev0

Das Attribut muss auf Unwetterzentrale angewendet werden, nicht auf das DOIF/notify...

der_da

attr event-on-change-reading WarnCount
ist auf Unwetterzentrale (und weil es nicht half) auch auf dem DOIF definiert. Das scheint nicht alles zu sein  :-\

dev0


der_da

Internals:
   CountryCode DE
   DEF        DE 03046 3600
   INTERVAL   3600
   NAME       Unwetterzentrale
   NR         371
   PLZ        03046
   STATE      Warnungen: 1
   TYPE       UWZ
   URL        http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=UWZDE03046
   VERSION    1.0.0
   Readings:
     2016-05-06 21:49:37   WarnCount       1
     2016-05-06 21:49:37   Warn_0_End      1462816800
     2016-05-06 21:49:37   Warn_0_Hail     0
     2016-05-06 21:49:37   Warn_0_IconURL  http://www.unwetterzentrale.de/images/icons/waldbrand-orange.gif
     2016-05-06 21:49:37   Warn_0_LongText Anhaltende Trockenheit und sonniges Wetter sorgen für steigende Waldbrandgefahr. Voraussichtlich erst am Montagabend entspannt sich die Situation durch Wolken und eventuell auch schwache Schauer.
     2016-05-06 21:49:37   Warn_0_Severity 4
     2016-05-06 21:49:37   Warn_0_ShortText anhaltende Trockenheit und sonniges Wetter sorgen für erhöhte Waldbrandgefahr
     2016-05-06 21:49:37   Warn_0_Start    1462521600
     2016-05-06 21:49:37   Warn_0_Type     6
     2016-05-06 21:49:37   Warn_0_levelName notice_warn_orange
     2016-05-06 21:49:37   Warn_0_uwzLevel 4
     2016-05-06 21:49:37   durationFetchReadings 0.32
     2016-05-06 21:49:37   lastConnection  12 values captured in 0.32 s
     2016-05-06 21:49:37   state           Warnungen: 1
   Fhem:
     LOCAL      0
   Helper:
Attributes:
   event-on-change-reading WarnCount

dev0

Sieht mMn ok aus. Verbose 5 für uwz und DOIF setzen, zusätzlich event monitor oder inform laufen lassen, falls niemand ne bessere Idee hat.

der_da

2016.05.06 21:49:37 3: UWZ Unwetterzentrale: Run.637 Done fetching data
2016.05.06 22:49:37 4: UWZ Unwetterzentrale: JSONAcquire.302 Start capturing of http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=UWZDE03046
2016.05.06 22:49:37 4: UWZ Unwetterzentrale: JSONAcquire.316 757 characters captured
2016.05.06 22:49:37 5: UWZ Unwetterzentrale: Run.531 757 characters captured
2016.05.06 22:49:37 4: UWZ Unwetterzentrale: Run.537 There are 1 warnings active
2016.05.06 22:49:37 4: UWZ Unwetterzentrale: Run.570 Warn_0_Type: 6
2016.05.06 22:49:37 4: UWZ Unwetterzentrale: Run.573 Warn_0_uwzLevel: 4
2016.05.06 22:49:37 4: UWZ Unwetterzentrale: Run.576 Warn_0_Severity: 4
2016.05.06 22:49:37 4: UWZ Unwetterzentrale: Run.579 Warn_0_Start: 1462521600
2016.05.06 22:49:37 4: UWZ Unwetterzentrale: Run.582 Warn_0_End: 1462816800
2016.05.06 22:49:37 4: UWZ Unwetterzentrale: Run.604 Warn_0_levelName: notice_warn_orange
2016.05.06 22:49:37 1: PERL WARNING: Wide character in print at fhem.pl line 833.
2016.05.06 22:49:37 4: UWZ Unwetterzentrale: Run.607 Warn_0_LongText: Anhaltende Trockenheit und sonniges Wetter sorgen f�r steigende Waldbrandgefahr. Voraussichtlich erst am Montagabend entspannt sich die Situation durch Wolken und eventuell auch schwache Schauer.
2016.05.06 22:49:37 4: UWZ Unwetterzentrale: Run.610 Warn_0_ShortText: anhaltende Trockenheit und sonniges Wetter sorgen f�r erh�hte Waldbrandgefahr
2016.05.06 22:49:37 4: UWZ Unwetterzentrale: Run.613 Warn_0_IconURL: http://www.unwetterzentrale.de/images/icons/waldbrand-4.gif
2016.05.06 22:49:37 4: UWZ Unwetterzentrale: Run.626 Warn_0_Hail: 0
2016.05.06 22:49:37 3: UWZ Unwetterzentrale: Run.637 Done fetching data
2016.05.06 22:49:37 4: UWZ Unwetterzentrale: Run.638 Will return : Unwetterzentrale|Warn_0_Type|6|Warn_0_uwzLevel|4|Warn_0_Severity|4|Warn_0_Start|1462521600|Warn_0_End|1462816800|Warn_0_levelName|notice_warn_orange|Warn_0_LongText|Anhaltende Trockenheit und sonniges Wetter sorgen für steigende Waldbrandgefahr. Voraussichtlich erst am Montagabend entspannt sich die Situation durch Wolken und eventuell auch schwache Schauer.|Warn_0_ShortText|anhaltende Trockenheit und sonniges Wetter sorgen für erhöhte Waldbrandgefahr|Warn_0_IconURL|http://www.unwetterzentrale.de/images/icons/waldbrand-orange.gif|Warn_0_Hail|0|durationFetchReadings|0.36|WarnCount|1
2016.05.06 22:49:37 4: UWZ Unwetterzentrale: Done.388 Delete old Readings
2016.05.06 22:49:37 5: UWZ Unwetterzentrale: Done.403 reading:Warn_0_ShortText value:anhaltende Trockenheit und sonniges Wetter sorgen für erhöhte Waldbrandgefahr
2016.05.06 22:49:37 5: UWZ Unwetterzentrale: Done.403 reading:WarnCount value:1
2016.05.06 22:49:37 5: UWZ Unwetterzentrale: Done.403 reading:Warn_0_LongText value:Anhaltende Trockenheit und sonniges Wetter sorgen für steigende Waldbrandgefahr. Voraussichtlich erst am Montagabend entspannt sich die Situation durch Wolken und eventuell auch schwache Schauer.
2016.05.06 22:49:37 5: UWZ Unwetterzentrale: Done.403 reading:Warn_0_IconURL value:http://www.unwetterzentrale.de/images/icons/waldbrand-orange.gif
2016.05.06 22:49:37 5: UWZ Unwetterzentrale: Done.403 reading:Warn_0_Type value:6
2016.05.06 22:49:37 5: UWZ Unwetterzentrale: Done.403 reading:Warn_0_levelName value:notice_warn_orange
2016.05.06 22:49:37 5: UWZ Unwetterzentrale: Done.403 reading:durationFetchReadings value:0.36
2016.05.06 22:49:37 5: UWZ Unwetterzentrale: Done.403 reading:Warn_0_uwzLevel value:4
2016.05.06 22:49:37 5: UWZ Unwetterzentrale: Done.403 reading:Warn_0_Severity value:4
2016.05.06 22:49:37 5: UWZ Unwetterzentrale: Done.403 reading:Warn_0_Hail value:0
2016.05.06 22:49:37 5: UWZ Unwetterzentrale: Done.403 reading:Warn_0_Start value:1462521600
2016.05.06 22:49:37 5: UWZ Unwetterzentrale: Done.403 reading:Warn_0_End value:1462816800
2016.05.06 22:49:37 4: UWZ Unwetterzentrale: Done.417 12 values captured


LuckyDay

das problem ist bei UWZ , dass alle Readings immer gelöscht werden bevor neue geschrieben werden, dadurch wirkt das
event-on-change nicht. ich hab mir geholfen dass ich ein Clonedummy auf das uwz device gesetzt habe, und dann dort
event-on-change anwende,