[Unwetterwarnung] 77_UWZ.pm Modul für unwetterzentrale.de und wetteralarm.at

Begonnen von CoolTux, 23 März 2016, 12:06:02

Vorheriges Thema - Nächstes Thema

RitterSport

Danke für die schnelle Antwort und das auch noch so ausführlich.
Soweit hatte ich das schon, jeweils dachte ich das......

Ich bekomme als Meldung folgendes:
491xxxxxx Unwetterwarnung vor 7 - Durch kalte Höhenluft sind mit Aufzug von Schauern von Westen her ab Sonntagmittag und -nachmittag lokal gewittrige Regenschauer möglich. Dabei kann die Gefahr von Starkregen, vereinzelt kleinem Hagel und Sturmböen bestehen. Sonntagabend lässt die Schauer- und Gewitterneigung wieder nach. - Unwetterwarnung endet am 0 um 0

Deswegen ging ich davon aus das die Anfangs und Endzeiten sowie der Typ der Warnung schon von dir vorher in den Readings der Unwetteruentrale erzeugt wurden.
Dort habe ich nicht End_Date und End_Time sondern nur End und Start als Unixtime, sowie eine Zahlenangabe zum Typus der Warnung. Hier als 7
Da er die genannten Readings nicht hat, gibt er mir jeweils 0 und 0 aus.

Meine Readings der Unwetterzentrale:
WarnCount
Warn_0_End
Warn_0_Hail
Warn_0_IconURL
Warn_0_LongText
Warn_0_Severity
Warn_0_ShortText
Warn_0_Start
Warn_0_Type
Warn_0_levelName
Warn_0_uwzLevel
durationFetchReadings
lastConnection
state


CoolTux

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

RitterSport


FunkOdyssey

Zitat von: CoolTux am 14 April 2016, 14:24:59

([Unwetterzentrale:WarnCount] == 0) ({fhem ("set WhatsApp send 491xxxxx Keine Unwetterwarnung für dich mehr")})

DOELSEIF
([Unwetterzentrale:WarnCount] == 1) (...

Machen wir mal einen mathematischen Vergleich draus dann passt das besser.
Und ich würde im DOELSEIF eine RegExpr für 1-9 machen.

Mit der "Beta" der neue DOIF-Oster-Version kann über das DOIF-Attribut "checkReadingEvent" nur auf die Änderung einzelner Readings prüfen. Prüft man also auf "WarnCount", so dürfen sich im Hintegrund ruhig alle anderen Readings ändern. Und das DOIF wird nicht periodisch ausgeführt, sondern nur bei Veränderung (event-on-change-reading für WarnCount beim UWZ).

Bei mir steht jedoch bisher nicht mehr als folgendes:


(
[Unwetterzentrale:WarnCount] gt 0

)
(
{DebianMail('mail@domain.de','Unwetterwarnung: [Unwetterzentrale:WarnCount] Meldungen vorhanden', getUWZDetails("Unwetterzentrale"));;}
)
DOELSE
(
{DebianMail('mail@domain.de','Unwetterwarnung: Keine Meldungen mehr vorhanden', 'Es gibt aktuell keine Warnmeldungen mehr.');;}
)



Attributes:
   checkReadingEvent 1
   do         always



99_myUtils.pm
# Gibt von einem Device UWZ alle Warnmeldungen aus mit Start-, Enddatum, Short Text und Long Text
# Author : TeeVau
# Aufruf : getUWZDetails("Unwetterzentrale")
# Param 1: Name des UWZ Device
# Return : Text mit allen Warnmeldungen
sub getUWZDetails($) {
  my ($device) = @_;
  my $warnCount = ReadingsVal($device,"WarnCount", undef);
  my $retVal = "";
  return undef if(!$device or !defined($warnCount));
  for(my $i = 0; $i < $warnCount; $i++) {
    my $warnStart = strftime("%d.%m.%Y %H:%M", localtime(ReadingsVal($device,"Warn_".$i."_Start", undef)));
    my $warnEnd = strftime("%d.%m.%Y %H:%M", localtime(ReadingsVal($device,"Warn_".$i."_End", undef)));
    my $warnShortText = ReadingsVal($device,"Warn_".$i."_ShortText", undef);
    my $warnLongText = ReadingsVal($device,"Warn_".$i."_LongText", undef);
   
    $retVal .= "Beginn: $warnStart Ende: $warnEnd\n";
    $retVal .= "$warnShortText\n";
    $retVal .= "$warnLongText\n\n";
  }
  return $retVal;
}


Wenn jemand den RegExpr-Teil für ein DOIF mal umgesetzt haben sollte, so wäre ich für den Code ganz dankbar. Aber mit der obigen (einfachen) Variante bin ich auch ganz gut zufrieden. Aber wie gesagt: DOIF-Beta erforderlich!

Alveole

Hallo,
ich habe einmal eine ganz andere Frage zu diesem Modul.
Ich bekomme folgende Warnung:
ZitatAb Freitagmorgen sind in der labilen Luftmasse von Südwesten her örtlich warnrelevante Regenschauer und Gewitter möglich. Dabei besteht die Gefahr von Starkregen mit rund 10 bis 20l/m² binnen kurzer Zeit, kleinem Hagel und Sturmböen. Freitagabend lässt die Schauer- und Gewitterneigung von Westen vorübergehend wieder nach.
dazu das Level
Zitat7
schaut man aber den Warn_0_Type an
Zitat7

Nun bedeutet aber 7 laut command ref "Waldbrand"

An was kann diese Diskrepanz liegen?

Danke!

moonsorrox

ich möchte jetzt auch mal meinen Dank hier sagen für das Modul, da meine alten Warnmeldungen gar nicht mehr gekommen sind.
Das Ergebnis präsentiere ich hier mal anhand eines Screenshots und habe auch gleich mal ein Frage dazu.

In meiner RSS Anzeige sieht es aus folgendermaßen in der layout Datei aus.

text x y { "gültig von: "  .localtime(ReadingsVal("Unwetterzentrale","Warn_0_Start","")) }

Betrifft die Formatierung der Zeit und des Datum - wie auf dem Screeshot - was jetzt nicht so Mega prall ist, schön wäre es eine ganz normale Schreibweise z.B.
Sonntag 29. Mai 1.00 Uhr bis Montag 30. Mai 6.00 Uhr oder ähnlich...!
Ist alles nur Optik wäre aber schöner...

Ich denke einfach die Sekunden dahinter braucht kein Mensch und die Jahreszahl ist jetzt auch nicht Mega wichtig da es ja Tages aktuelle Meldungen sind.
Sicher kann man das irgendwie mit Perl ändern, evtl. hat hier jemand eine schönere Lösung ich bin kein Perl Profi.


Mache ich das so wie ich es genutzt habe
text x y { "gültig von: "  .substr((ReadingsVal("Unwetterzentrale","Warn_0_Start","")),0,16) }

erscheint hinter gültig von: "1464476460" nur diese Zahl.

Zu der Komplett Anzeige einer Warnmeldung
define UnwetterDetailiert weblink htmlCode {UWZAsHtml("Unwetterzentrale")}

vielleicht kann man ein Attribut dazu geben welches die Breite einschränkt, da diese Meldungen ja sehr groß sind schiebt sich diese Meldung bei mir über die komplette Seite in Fhem, evtl. geht das zu machen.

In der RSS Anzeige habe ich dafür ein Rechteck (Meldungsbox) erstellt in der wird es angezeigt und formatiert.
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Hans Franz

Zitatschön wäre es eine ganz normale Schreibweise z.B.
Sonntag 29. Mai 1.00 Uhr bis Montag 30. Mai 6.00 Uhr oder ähnlich
Ich habe dafür ein userReading:
Warn_0_Start_de {
my $t = ReadingsVal("Unwetterzentrale","Warn_0_Start","?");
my @Wochentage = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
my @Monatsnamen = qw(Januar Februar März April Mai Juni Juli August September Oktober November Dezember);
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime($t);
my $datum = sprintf("%s %02d. %s",$Wochentage[$Wochentag],$Monatstag,$Monatsnamen[$Monat]);
my $zeit = sprintf("%02d:%02d Uhr",$Stunden,$Minuten);
return $datum." ".$zeit;
},
Warn_0_End_de {
my $t = ReadingsVal("Unwetterzentrale","Warn_0_End","?");
my @Wochentage = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
my @Monatsnamen = qw(Januar Februar März April Mai Juni Juli August September Oktober November Dezember);
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime($t);
my $datum = sprintf("%s %02d. %s",$Wochentage[$Wochentag],$Monatstag,$Monatsnamen[$Monat]);
my $zeit = sprintf("%02d:%02d Uhr",$Stunden,$Minuten);
return $datum." ".$zeit;
}

Gehört eigentlich in die MyUtils, aber geht auch so.

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

moonsorrox

zeigt mir aber jede menge Fehler wenn ich das so anlege...! Wo hast du das angelegt..?
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Hans Franz

Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

moonsorrox

oh man ich hatte es als "userattr" gemacht... blöd  ;)

OK doch alles klar...! Danke sieht besser aus  :D ;)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

tdoe

Moin,

Zitat von: Alveole am 27 Mai 2016, 21:16:39
Hallo,
ich habe einmal eine ganz andere Frage zu diesem Modul.
Ich bekomme folgende Warnung:dazu das Levelschaut man aber den Warn_0_Type an
Nun bedeutet aber 7 laut command ref "Waldbrand"

An was kann diese Diskrepanz liegen?

Danke!

da hat sich wohl ein Fehler oin die commandref eingeschlichen...

siehe:


    if    ($a[1] =~ /^Sturm/)            { UWZ_GetCurrent($hash,2); }
    elsif ($a[1] =~ /^Schneefall/)       { UWZ_GetCurrent($hash,3); }
    elsif ($a[1] =~ /^Regen/)            { UWZ_GetCurrent($hash,4); }
    elsif ($a[1] =~ /^Extremfrost/)      { UWZ_GetCurrent($hash,5); }
    elsif ($a[1] =~ /^Waldbrand/)        { UWZ_GetCurrent($hash,6); }
    elsif ($a[1] =~ /^Gewitter/)         { UWZ_GetCurrent($hash,7); }
    elsif ($a[1] =~ /^Glaette/)          { UWZ_GetCurrent($hash,8); }
    elsif ($a[1] =~ /^Hitze/)            { UWZ_GetCurrent($hash,9); }
    elsif ($a[1] =~ /^Glatteisregen/)    { UWZ_GetCurrent($hash,10); }
    elsif ($a[1] =~ /^Bodenfrost/)       { UWZ_GetCurrent($hash,11); }



In der Commandref scheint 6 mit 7 vertauscht.

Gruß Tobias

CoolTux

Kann ich mir gerne anschauen und gerade ziehen wenn es ok ist Tobias.
Dann würde ich auch gleich eine Version 1.0.1 frei geben für morgen.
Passt das?


Grüße
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

Otto

Hi,

gibt es eine Übersicht was alles bei Warn_0_levelName stehen kann, habe zur Zeit "alert_forewarn_red"

Das würde ich gerne "lesbarer" machen.
Gruss Otto

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

docker - homematic

CoolTux

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

tdoe

Moin Otto,

Zitat von: Otto am 30 Mai 2016, 12:12:54
Hi,

gibt es eine Übersicht was alles bei Warn_0_levelName stehen kann, habe zur Zeit "alert_forewarn_red"

Das würde ich gerne "lesbarer" machen.

hab ich keine, jedoch kannst einiges selbst ableiten.

Es wird folgende geben:

  • alert_warn_<farbe>
  • alert_forewarn_<farbe>
Gruß Tobias