Neues Modul: 77_UWZ.pm

Begonnen von tdoe, 08 Februar 2015, 22:09:06

Vorheriges Thema - Nächstes Thema

tdoe

Hallo,

da ich auf meinem Floorplan Unwetterwarnungen anzeigen wollte, war ich auf der Suche nach einer Möglichkeit dies zu realisieren.
Erste Versuche mit HTTPMOD waren zwar erfolgreich, aber hierbei gab es einige Punkte die mir bei dieser Lösung nicht so gut gefallen haben.
Aus diesem Grund habe ich dann angefangen andere Module zu inspizieren, um dann u.U. ein Modul für unwetterzentrale.de zu erstellen. (Als Ergänzung für AT wurde unwetter.wetteralarm.at hinzugefügt).
Den erste Versuch, bei dem ich auch viel von anderen Modulen abgeschaut habe, habe ich angehängt.
Es fehlen auch noch ein paar Unwetter-Typ Beschreibungen, damit dann ein passendes Icon angezeigt werden kann, diese müssen bei den nächsten Unwettern erst  abgegriffen werden.
Im Großen und Ganzen funktioniert es bei mir bis dato ganz gut.

Zur Verwendung:

define Unwetterzentrale UWZ DE 77777 3600
define <name> UWZ <Ländercode> <PLZ> <INTERVAL>

Auch ein paar Funktionen zur Benutzung durch weblink sind integriert:


define UnwetterDetailiert weblink htmlCode {UWZAsHtml("Unwetterzentrale")}
define UnwetterLite weblink htmlCode {UWZAsHtmlLite("Unwetterzentrale")}
define UnwetterFloorplan weblink htmlCode {UWZAsHtmlFP("Unwetterzentrale")}
define UnwetterKarteBY weblink htmlCode {UWZAsHtmlKarteLand("Unwetterzentrale","Bayern")}


Der zweite Parameter kann folgendes sein:

  • europa
  • deutschland
  • deutschland-small
  • bayern
  • bremen
  • baden-wuerttemberg
  • brandenburg
  • berlin
  • hessen
  • niedersachsen
  • rheinland-pfalz
  • saarland
  • sachsen
  • sachsen-anhalt
  • thueringen
  • nordrhein-westfalen
  • mecklenburg-vorpommern
  • schleswig-holstein
  • hamburg

  • oesterreich
  • burgenland
  • kaernten
  • niederoesterreich
  • oberoesterreich
  • salzburg
  • steiermark
  • tirol
  • vorarlberg
  • wien

  • isobaren1
  • isobaren2

Readings:

    Warn_0|1|2|3...|9_... - aktive Warnmeldungen
    WarnCount - Anzahl der aktiven Warnmeldungen
    Warn_0_Start - Beginn der Warnung
    Warn_0_Start_Date - Startdatum der Warnung
    Warn_0_Start_Time - Startzeit der Warnung
    Warn_0_End - Warn Ende
    Warn_0_End_Date - Enddatum der Warnung
    Warn_0_End_Time - Endzeit der Warnung
    Warn_0_Severity - Schwere des Unwetters (0 kein Unwetter, 12 massives Unwetter)
    Warn_0_Type - Art des Unwetters
        1 - unbekannt
        2 - Sturm/Orkan
        3 - Schneefall
        4 - Regen
        5 - Extremfrost
        6 - Waldbrand
        7 - Gewitter
        8 - Glätte
        9 - Hitze
      10 - Glatteisregen
      11 - Bodenfrost
    Warn_0_uwzLevel - Schwere des Unwetters (wie Severity)
    Warn_0_levelName - Level Warn Name
    Warn_0_ShortText - Kurzbeschreibung der Warnung
    Warn_0_LongText - Ausführliche Unwetterbeschreibung
    Warn_0_IconURL - Kumulierte URL um Warnungs-Icon von www.unwetterzentrale.de anzuzeigen
    Warn_0_Hail - Hagelwarnung (0|1)


Attribute
    download [0|1]
    savepath (default:"/tmp/")
    maps (leerzeichen separierte Liste der zu speichernden Unwetterkarten. Siehe UWZAsHtmlKarteLand)
    humanreadable [0|1] (aktiviert Warn_0_Start_Date, Warn_0_Start_Time, Warn_0_End_Date und Warn_0_End_Time.)


Get
    get <name> <unwetter>
    Gibt aus ob aktuell eine Unwetterwarnung besteht (active|inactive).
    für <unwetter> können folgende Werte verwendet werden:

  • Bodenfrost
  • Extremfrost
  • Gewitter
  • Glaette
  • Glatteisregen
  • Hagel
  • Hitze
  • Regen
  • Schneefall
  • Sturm
  • Waldbrand

Falls es jemand testen möchte und dabei durch Zufall genau der Unwetter-Typ 1 oder sonst ein unbekannter Typ auftritt, würde ich mich über Feedback freuen und die passenden Infos dann einarbeiten.


Update:
Die aktuelle Version des Moduls ist als Anhang an diesem Thread oder kann mit folgendem Befehl direkt aus fhem upgedated  werden:

update 77_UWZ.pm https://raw.githubusercontent.com/tobias-d-oe/fhem-uwz/master/control-uwz.txt




Changelog:
27. 7.2015 -> Noch ein paar Style fixes
26. 7.2015 -> Styling Bugfix
25. 7.2015 -> Get Funktion bei WarnCount=0 lieferte kein Ergebniss
21. 7.2015 -> Get Funktion fuer jeden Unwettertyp incl. Hagel hinzugefuegt.
20. 7.2015 -> Karten in fhem default style
  7. 6.2015 -> Unwettertyp 9 = Hitzewarnung
20. 5.2015 -> Bugfixing "Warn_?_Hail"
12. 5.2015 -> Löschen der Readings beim Update nun "geziehlter" (^(Warn_[0-9]_|WarnCount))
10. 5.2015 -> Readings Warn_?_Start_Date, Warn_?_Start_Time, Warn_?_End_Date,
                       Warn_?_End_Time per default aus. Werden mit attribut "humanreadable" aktiviert.
                       Leere Warnmeldungen entfernt.
                       Neues Reading Warn_?_Hail, zur Anzeige der Hagelgefahr.
  6. 5.2015 -> Neue Readings hinzugefügt Warn_?_Start_Date, Warn_?_Start_Time, Warn_?_End_Date,
                       Warn_?_End_Time auf Wunsch von björnbo und Michael.
  6. 5.2015 -> Unwettertyp 11 = Bodenfrost hinzugefügt.
17. 4.2015 -> Unwettertyp 6 = Gewitter; Unwettertyp 7 = Waldbrand hinzugefügt.
20. 2.2015 -> Karten integriert: europa, isobaren1, isobaren2
14. 2.2015 -> Unwetterkarten um Österreich erweitert.
14. 2.2015 -> Erweiterungswunsch zum download der Unwetterkarten integriert
  9. 2.2015 -> Änderungsvorschlag von hexenmeister eingebaut. (UWZAsHtmlKarteLand)
  9. 2.2015 -> Unwettertyp 10 = Glatteisregen implementiert

Gruß tdoe

Franz Tenbrock

#1
Thanks, werde es gleich testen

ei meinem cubie fehlt wohl was
Perl moduls JSON are missing on this system

das geht wohl irgendwie so
sudo apt get Json

Sorry Debian ist mir noch sehr fremd
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

tdoe

Hi Franz,

denke:

sudo apt-get install libjson-perl


sollte funktionieren.

Gruß tdoe

Franz Tenbrock

thanks
lädt gerade wohl runter
das kann ich ja nun
endlich

so das klappt nun :-)

Habe zwar in der def unsere PLZ gesetzt
aber er zeigt mir unter anderem die Karte von Bayern
DEF   
htmlCode {UWZAsHtmlKarteBayern("Unwetterzentrale")}
da muss wohl NRW rein ?!

aber auf die Schnelle war das schon mal klasse
morgen abend gehts weiter,
muss mal schlafen, morgen wirds wieder turbulent
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

mw77

Hallo,

gerade ausprobiert und ich bin begeistert, hat sofort geklappt und sieht top aus.

Vielen Dank. :D

Gruß Markus
HM, HMIP, Shelly, und anderes

hexenmeister

Ist nur eine Methode für Bayern drin. Daher ein Erweiterungsvorschlag:

sub
UWZAsHtmlKarteLand($$)
{
  my ($hash,$land) = @_;
  my $lmap;
  my $land=lc($land);
  $lmap->{'deutschland'}='deutschland_index.png';
  $lmap->{'niedersachsen'}='niedersachsen_index.png';
  $lmap->{'bremen'}='niedersachsen_index.png';
  $lmap->{'bayern'}='bayern_index.png';
  $lmap->{'schleswig-holstein'}='schleswig_index.png';
  $lmap->{'hamburg'}='schleswig_index.png';
  $lmap->{'mecklenburg-vorpommern'}='meckpom_index.png';
  $lmap->{'sachsen'}='sachsen_index.png';
  $lmap->{'sachsen-anhalt'}='sachsenanhalt_index.png';
  $lmap->{'nordrhein-westfalen'}='nrw_index.png';
  $lmap->{'thueringen'}='thueringen_index.png';
  $lmap->{'rheinland-pfalz'}='rlp_index.png';
  $lmap->{'saarland'}='rlp_index.png';
  $lmap->{'baden-wuerttemberg'}='badenwuerttemberg_index.png';
  $lmap->{'hessen'}='hessen_index.png';
  $lmap->{'brandenburg'}='brandenburg_index.png';
  $lmap->{'berlin'}='brandenburg_index.png';
 
  my $url = $lmap->{$land};
  my $ret = '';
  $ret .= '<table class="uwz"><tr><th></th><th></th></tr>';
 
  $ret .= '<tr><td class="uwzMap">';
  if(defined($url)) {
    $ret .= '<img src="http://www.unwetterzentrale.de/images/map/'.$url.'">';
  } else {
    $ret .= 'unbekannte Landbezeichnung';
  }
  $ret .= '</td></tr>';

  $ret .= '</table>';

  return $ret;
}


define UnwetterKarteNS weblink htmlCode {UWZAsHtmlKarteLand("Unwetterzentrale","Niedersachsen")}

Zeile 324 : ref($enc); liefert eine Warnung.

Ansonsten - sehr gut! :)
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Franz Tenbrock

nur zum Verständnis
die sub muss in die myutils rein oder in die pm?
hab bis heute Abend keine Möglichkeit das zu probieren, zu mehr reicht es bei mir mit dem Verständnis noch nicht
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

hexenmeister

Zitat von: Franz Tenbrock am 09 Februar 2015, 09:51:54
nur zum Verständnis
die sub muss in die myutils rein oder in die pm?
hab bis heute Abend keine Möglichkeit das zu probieren, zu mehr reicht es bei mir mit dem Verständnis noch nicht

Am besten natürlich in die 77_UWZ.pm. Es war als Vorschlag an den Author gerichtet. Wird jedoch vorerst auch in 99_myUtils funktionieren.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

mi.ke

Gerade installiert.
Nutze nur die Readings .....läuft bisher prima !

Super Modul.
Danke
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

tdoe

Hallo zusammen,

vielen dank fürs testen, und auch einen besonderen danke an hexenmeister, habe deinen Vorschlag (UWZAsHtmlKarteLand) eingebaut.

Die neue Version ist am ersten Post angehangen.

Das mit der Warning von Zeile 324 werd ich mir Richtung WE anschauen.

Gruß tdoe

schka17

Hallo tdoe,

tolles Modul, würde ich gerne nutzen. Ich versuche gerade das für einen Ort in Österreich zu verwenden, scheinbar gibt es hier aber unterschiedliche datafeeds und mangels perl Kenntnisse durchschaue ich dein Modul nicht wirklich. Ich habe es mit Countrycode AT und einer Region wo es aktuell Wetterwarnung gibt z.B. PLZ 5071 probiert, leider kein Ergebnis.

Irgendeine Idee das auch in Österreich nutzen zu können?

Gruß

Karl
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

tdoe

Hi,

bin die Woche dienstlich unterwegs. Bei den ersten Versuchen ist natürlich in AT schönes Wetter. Hab auf die schnelle keinen Ort gefunden, welcher eine Unwetterwarnung hat.

Am WE kann ich nochmals nen Sniff starten und einen Ort in AT abrufen, um zu sehen in wie weit sich die URL unterscheidet.
Was du mal testen kanns, pack mal bitte eine führende 0 oder eine führende 1 vor deine PLZ.

Ansonsten schau ich am WE danach.

Gruß tdoe

schka17

Hallo tdoe,

danke.  Ich habe das mit 0 und 1 schon probiert, auch Orte in Italien wo es gerade Meldungen gibt, aber leider scheitere ich daran die daten zu analysieren

The Web Console logging API (console.log, console.info, console.warn, console.error) has been disabled by a script on this page.

Gruß

Karl
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

tdoe

Hallo Schka17,

Mittels tpacketcapture habe ich eine Anfrage von Alert Pro (android app) mitgesnifft.
Der interessante Part der url den ich hierbei abgegriffen habe war:
UWZAT01028 für Wals in AT. Auf http://www.wetteralarm.at/
Kannst du dir eine Übersicht über Unwetterwarnungen in AT verschaffen.
Eigentlich sollte das Modul bei gemeldeten Unwetter auch für AT CH IT .... funktionieren.
die Aufgerufene URL ist bis auf Ländercode und PLZ identisch.


Rom in Italien = UWZIT00218
Zürich in der Schweiz = UWZCH2602

Selbst USA ist die selbe URL. Der einzige Unterschied den ich auf die schnelle gesehen habe ist,  dass bei USA der Ländercode entfällt und stattdessen nur die plz abgefragt wird.
Gesnifft hatte ich Washington  (Main) hier war der besagte Part der URL: 023013.

Hoffe ich konnte dir helfen. Ansonsten muss ich dich bis zum WE mit ausnahmsweise hoffentlich Unwetter vertrösten.

Gruß tdoe

schka17

Hallo tdoe,

das habe ich auch geglaubt, habe mich ein bischen mit dem feedurl gespielt.

mit http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=UWZDE94481
bekomme ich
{"results":[{"center":"UWZ","areaID":"UWZDE93444","dtgEnd":1423641600,"areaType":"UWZCODE","dtgStart":1423609200,"payload":{"translationsLongText":{"DE":"In Lagen oberhalb von 500 Metern kann es ab der 2.Nachth\u00e4lfte stellenweise, zum Mittwochmorgen hin bei kurzzeitigen Auflockerungen auch streckenweise zu Gl\u00e4tte durch gefrierende N\u00e4sse oder Gefrieren von Tauwasser kommen. Durch geringen Spr\u00fchregen ist stellenweise auch ein d\u00fcnner Glatteisansatz m\u00f6glich."},"id":"14235843859429","creation":1423585680000,"uwzLevel":4,"translationsShortText":{"DE":"Oberhalb von 500 m: Stellenweise, zum Morgen hin streckenweise Gefrieren von N\u00e4sse"},"fileName":"meteogroup_warn_14235843859429_20150210162840_1423641600_1423585812.xml","levelName":"notice_warn_orange","shortText":"Above 500 meters:","longText":"For areas above 500 meters: Slippery road sections due to glazed frost.","altMin":500,"altMax":9000},"severity":4,"type":8}],"generator":"PHPjf"}

Alles klar soweit, ich kann damit quasi alle aktiven Meldungen abfragen. In Österreich gibt es "leider" zur Zeit keine Warnungen daher habe ich irgendeine Stelle mit aktuellen Meldungen ausserhalb Deutschlands gesucht, in diesem Fall Italien (Belgien ahbe ich auch ausprobiert):
http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=UWZIT88050
Antwort:
{"results":[],"generator":"PHPjf"}

und das ist genau die selbe Meldung die ich auch für meine Region bekomme

http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=UWAT02522

Aber keinen Stress, ich frage zur Zeit noch mit httpmod ab, ist zwar nicht so elegant aber zumidest habe ich Information.

danke und Gruß

Karl
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000