UWZ - Modul - Wie eine Gewitterwarnung mit DOIF auswerten, wenn Reading nicht da

Begonnen von Stargazer, 15 August 2018, 09:56:17

Vorheriges Thema - Nächstes Thema

Stargazer

Hallo zusammen,

ich habe da eine Frage zu einem Problem, welches ich in dieser Form noch nicht hatte.

Und zwar nutze ich die Daten des UWZ-Moduls (Unwetterzentrale) um eine Warnung vor Gewitter abzugreifen. Ein DoIF-Modul greift den Wert ab und schaltet einen Dummy. Eigentlich recht einfach.

Wenn eine Gewitterwarnung vorliegt, zeigt er das unter "Warn_0_Type" mit einer 7 an. Diese kann ich ja direkt auswerten.
Doch wenn die Warnung aufgehoben wurde ist das Reading weg und das DOIF beklagt sich natürlich.

Wie kann ich lösen ? Habe da derzeit noch keinen Plan.

Viele Grüße und besten Dank

André

Pfriemler

Frag das Reading in der alten "Langfassung" mit ReadingsVal ab - dort kannst Du einen Default setzen genau für den Fall dass das Reading nicht existiert. Daran kannst Du ggf. auch erkennen und auswerten, dass es nicht existiert.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

tomspatz

Moin
Ich bin da auch im Moment dran, so habe ich es geschrieben. Allerdings noch ungetestet da keine Warnung vorliegen:
defmod UWZ_Benachrichtigung DOIF ([Unwetterzentrale:WarnCount:d] == 0) (\
msg @rr_Tom |Unwetterwarnung !| Keine Unwetterwarnungen vorhanden.) \
DOELSE (\
msg @rr_Tom |Unwetterwarnung !| <b>[Unwetterzentrale:Warn_0_ShortText].</b> \n[Unwetterzentrale:Warn_0_LongText] \n \nWarnung gültig vom: [Unwetterzentrale:Warn_0_Start_Date]  [Unwetterzentrale:Warn_0_Start_Time] Uhr \nbis zum: [Unwetterzentrale:Warn_0_End_Date]  [Unwetterzentrale:Warn_0_End_Time] Uhr)\

attr UWZ_Benachrichtigung do always


LG
Tom

darkness

Hm, bei Warn_0_Type ist die Null doch abhängig von der Anzahl der Meldungen? Oder liege ich da falsch?
Es kann doch also auch Warn_[0...9]_Type geben?

Leider habe ich gerade keine Warnmeldung aktiv  ;)


Edit:
Vielleicht hilft das auch weiter :
https://forum.fhem.de/index.php/topic,51233.msg462487.html#msg462487

Damian

Auch bei DOIF gibt es die Möglichkeit einen Defaultwert anzugeben, wenn es kein Reading gibt

z.B. mit -1

([Unwetterzentrale:Warn_0_Type,-1] == 7)...
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Stargazer

Hallo zusammen,

vielen Dank für eure Hilfe!
Das hört sich soweit echt gut an.

@Damian: Okay..das kannte ich bis jetzt noch nicht.
Ich habe das mal ins DOIF eingebaut. Es scheint gut zu laufen. Zumindest tut er nun das, was er bei einer Nicht-Meldung machen soll. Auch checkall bleibt ohne Fehler.
Ich warte jetzt mal eine Warnung ab und melde mich dann hier nochmals.

Besten Dank nochmal und VG

André

tomspatz

Warn_0_Type
ist ein Reading welches es OHNE Warnungen gar nicht gibt. M.E. muss man das auch gar nicht als Trigger nutzen.
WarnCount
dagegen ist IMMER da.

LG
Tom

Stargazer

Hallo Tom,

der WarnCount ist immer da, das stimmt.
Ich möchte aber nur den Typ 7, die Gewitter, anfangen.
Gestern, als der Typ noch aktiv war, zeigte WarnCount eine 1
an. Also eine einzige anstehende Meldung.
Das hätte ich dann bei einer Warnung für Glätte auch. Diese ist für mich jedoch uninteressant.

Darum die Auswertung des "Warn_type".

VG

André

tomspatz

ZitatGestern, als der Typ noch aktiv war, zeigte WarnCount eine 1
Ist schon klar aber das Reading
Warn_0_ShortText
und viele andere
Ist in dem Fall dann ja auch mit aussagekräftig.

ist ja nur ne Idee

LG
Tom

Stargazer

Hallo Tom,

was du schreibst ist vollkommen korrekt  ;).
Nur brauche ich halt keinen Text zum Anzeigen, sondern ein Warnkriterium um etwas zu schalten.

Ich habe das UWZ-Modul seit gestern im Einsatz. Nur was passiert mit dem "warn_type" - Reading, wenn z. B. erst die 7 und dann z. B. die 9 auftaucht ? Es wird da doch immer die aktuellste Meldungskategorie angezeigt, oder ?

darkness

Darf ich mal fragen was dein Ziel ist?

Du hast eine Meldung Gewitter und kurze Zeit später eine Meldung Schneefall. Dann steht doch in Warn_0_Type = 3 und in Warn_1_Type = 7 (Gültigkeiten entsprechend vorausgesetzt). Oder die Meldungen gleichzeitig kommen.

Daher solltest du doch alle vorhandenen Meldungen auswerten und wenn eine davon Warn_X_Type = 7 ist entsprechend reagieren.

Stargazer

Ja.. das muss ich dann erst selber sehen, wie die Kategorisierung der warn_type's ist. Wenn die so gestaffelt auflaufen, muss ich die natürlich mit berücksichtigen.

Danke für die Info, @Darkness !

VG

André