[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

tdoe

Moin Michael,

Zitat von: Michael am 05 August 2016, 20:02:51
Moin CoolTux, tdoe

Wollte mein InfoFrame einrichten.
Und da zu brauchte ich die möglichen Farbe vom attr. WarnUWZLevel_Color.

Also schaute ich in das Modul an folgende Stelle.
Und fand wohl die beiden "Fehler" :

#####################################
sub UWZ_GetSeverityColor($$) {
    my ($name,$uwzlevel) = @_;
    my $alertcolor       = "";

    my %UWZSeverity = ( "0" => "gruen",
                            "1" => "orange",
                            "2" => "gelb",
                            "3" => "orange",
                            "4" => "rot",
                            "5" => "violett");

    return $UWZSeverity{$uwzlevel};
}


#####################################
sub UWZ_GetUWZLevel($$) {
    my ($name,$warnname) = @_;
    my @alert            = split(/_/,$warnname);

    if ( $alert[0] eq "notice" ) {
        return "1";
    } elsif ( $alert[1] eq "forewarn" ) {
        return "2";
    } else {

        my %UWZSeverity = ( "green" => "0",
                            "yellow" => "2",
                            "orange" => "3",
                            "red" => "4",
                            "violet" => "5");

        return $UWZSeverity{$alert[2]};
    }
}


1.)  my %UWZSeverity = ( "0" => "gruen",
                            "1" => "orange",
Solte bestimmt dunkelgruen lauten.

Hier hast du recht und auch nicht ;-)

Die Funktion hab ich erstellt um das passende Warn-Image zu erhalten, und hier gibt es kein dunkelgruen.
Siehe z.B. auch hier:
http://www.unwetterzentrale.de/images/icons/temperatur-orange.gif

Du hast recht in sofern dass ich die Funktion zwar für die Unwetterbilchen nutzen kann, aber nicht für den gesamtstatus und dessen Farbe....
Hier muss ich wohl nochmal Hand anlegen und hierfür eine seperate Funktion hinzufügen.

Danke für das finding!

Zitat von: Michael am 05 August 2016, 20:02:51
2.)   my %UWZSeverity = ( "green" => "0",
                            "yellow" => "2",
                            "orange" => "3",
                            "red" => "4",
                            "violet" => "5");
Und hier gibt es keine => "1"
Hier hast du einen wichtigen part abgeschnitten.


    if ( $alert[0] eq "notice" ) {
        return "1";
    } elsif ( $alert[1] eq "forewarn" ) {
        return "2";
    } else {


Die Funktion UWZ_GetUWZLevel wird im Modul benutzt um aus Warn_X_levelName das UWZ Level zu generieren. Und hierbei spielt nicht nur die Farbe hinten sondern auch z.B. ist es vom typ notice(1) oder alert(3,4,5) oder forwarn(2)? Level 0 hat keine Warnungen somit kein Warn_X_levelName. Denke das müsste passen.

Gruß Tobias

Pete37

Hallo,

schön, dass ihr Euch des Themas angenommen habt - danke!

Schade, dass ich es derzeit nicht nutzen kann: seit meinem Urlaub, geht das Modul nicht mehr. Mein Device ist aus der config verschwunden und ein erneutes Anlegen wird mit dem Hinweis "Cannot load module UWZ" abgelehnt.

Ich habe heute mehrere Updates gemacht und immer wieder Restart. Was kann ich noch versuchen? Woran kann das liegen?

Fhem info:
  Release  : 5.7 FeatureLevel: 5.7
  OS       : linux
  Arch     : arm-linux-gnueabihf-thread-multi-64int
  Perl     : v5.20.2


File      Rev   Last Change

No Id found for 77_UWZ.pm


Gruß und Dank,
Pete37
Fhem auf Raspberry Pi3 mit Fritzbox inkl. Steckdosen, Philips Hue inkl. Orsam Lightify-Lampen, eq-3 Max!, SONOS, Rollotron Rolläden, Asus ZenPad, Samsung Galaxy xCover 3

moonsorrox

Zitat von: Pete37 am 19 August 2016, 18:14:10
Mein Device ist aus der config verschwunden und ein erneutes Anlegen wird mit dem Hinweis "Cannot load module UWZ" abgelehnt.
wenn er das sagt ist das Modul nicht da...!
schau doch mal mit FTP in dein Verzeichnis ob das Modul überhaupt noch drin ist..!
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

Pete37

es ist ein "77_UWZ.pm" anwesend. Könnte evtl. eine alte Version sein? im Copyright steht nur 2015 und nix von den neuen Änderungen?

Edit: habe es grad mal gelöscht und per update neu installiert - es bleibt dabei: "Cannot load module UWZ"
:(
Fhem auf Raspberry Pi3 mit Fritzbox inkl. Steckdosen, Philips Hue inkl. Orsam Lightify-Lampen, eq-3 Max!, SONOS, Rollotron Rolläden, Asus ZenPad, Samsung Galaxy xCover 3

CoolTux

Bitte schaue einmal in die pm Datei rein. Irgendwo am Anfang so die ersten 100 Zeilen muß eine Version stehen.


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

Pete37

das habe ich gefunden:
my $version = "1.4.2";

Das wäre dann wirklich nicht die neueste kam per "update 77_UWZ.pm" rein. hätte ich das anders aktualisieren müssen?
Fhem auf Raspberry Pi3 mit Fritzbox inkl. Steckdosen, Philips Hue inkl. Orsam Lightify-Lampen, eq-3 Max!, SONOS, Rollotron Rolläden, Asus ZenPad, Samsung Galaxy xCover 3

moonsorrox

aktuell bei mir ist die
my $MODUL           = "UWZ";
my $version         = "1.4.6";


was mich wundert, bei dir steht was von Perl-Skript
Bei mir steht PM-Datei Größe 79.611

Irgend etwas ist da bei dir faul  ;) keine Ahnung
Es sei denn diese Anzeige liegt am System, ich schaue mit Filezilla FTP drauf...!
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 Pete37,

bitte kontrollier mal die Dateiberechtigungen und Eigentümer und vergleiche mit den anderen.

Gruß Tobias

Pete37

Danke tdoe, die Gruppe war tatsächlich falsch. Stand auf "dialout".

Zack, kaum macht man's richtig. XML::Simple installiert, Device neu angelegt, und noch währen ich diesen Satz schreibe, liest mein Tablet mir die aktuelle Unwetterwarnung vor!

FHEM ist echt ne Wucht (wenn's funktioniert) - Ein riesen DANKESCHÖN an Alle, die das möglich machen!

Gruß,
Pete37

PS: Moonsorrox, der Screenshot war direkt aus dem RasPi-Browser. Andere Systeme nennen eine .pm Datei vermutlich anders...
Fhem auf Raspberry Pi3 mit Fritzbox inkl. Steckdosen, Philips Hue inkl. Orsam Lightify-Lampen, eq-3 Max!, SONOS, Rollotron Rolläden, Asus ZenPad, Samsung Galaxy xCover 3

moonsorrox

Zitat von: Pete37 am 20 August 2016, 12:18:15
die Gruppe war tatsächlich falsch. Stand auf "dialout".
wobei "dialout" nicht falsch ist...! (evtl. beim RasPi anders)
da ich öfter mal ein Icon meiner Wahl per FTP überspiele setze ich danach diesen Befehl ab..!
chown -R fhem:dialout /opt/fhem


und das war noch nie falsch!
Aber wie gesagt evtl. ist das auf dem RasPi anders, sollte vllt. mal geklärt werden
Besitzer ist bei mir "Fhem" und Gruppe ist "dialout"
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

frank

meine minianwendung für event-on-change von hier https://forum.fhem.de/index.php/topic,51233.msg477803.html#msg477803 habe ich gerade etwas erweitert. damit wird meine raumübersichtsseite im webbrowser, auf der ich den htmllink für uwz platziert habe, nun bei jeder "änderung" neu geladen. somit ist die anzeige jetzt automatisch immer aktuell. zumindestens hat es gerade funktioniert.

userreadings: (Wetter-Unwetter => name meiner raumseite, also anpassen)
lastWarnUpdate:Warn.* {
map {
FW_directNotify("FILTER=room=Wetter-Unwetter", "#FHEMWEB:$_", "location.reload('true')", "")
} devspec2array("WEB.*");
return ReadingsTimestamp($name,"lastConnection","???");
}


gefunden habe ich es hier https://forum.fhem.de/index.php/topic,48736.0.html

ps: ich habe jetzt zwar endlich ein wikiacount, aber kenn mich überhaupt noch nicht damit aus.  ;)

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

frank

ich hätte (mal wieder  :) ) einen verbesserungsvorschlag.

bei mir ist es zu zeit sehr warm, wie man im screenshot schön sieht. allerdings finde ich die darstellung etwas "chaotisch", da es eigentlich nur 2 ereignisse (1x hitze und 1x waldbrand) gibt, diese aber unnötigerweise öfter, mit leichten unterschieden, existieren. ich habe daher mal die eventID und das creationDate in den htmlcode integriert, um zu sehen, was hier los ist.

die eventID scheint aus 2 teilen zu bestehen. vor dem punkt die eigentliche eventID und hinter dem punkt handelt es sich um eine art versionsnummer. also etwa bei ID:14719511356309.8. somit hat das aktuelle hitze event 14719511356309 bereits die 8. aktualisierung bekommen, übertragen werden aber auch noch weiterhin version 3 und version 7. für mich sieht es so aus, als würden alte noch "gültige" events einfach weiterhin im feed bleiben.

ich bin der meinung, man könnte sich immer auf die aktuellste version eines events beschränken.
das würde eine menge readings mit entsprechenden events sparen, die ganze anzeige informativer und übersichtlicher gestalten, aber keine informationsverluste bedeuten.

was haltet ihr von der idee?

ergänzung:
auf der website wird mir für die hitzebelastung wahrscheinlich allerdings version 7 angezeigt. passt auch ungefähr zur creationzeit. vom infogehalt eventuell auch besser, da der zeitraum länger ist, wenn auch die eigentliche hitzebelastung eher zur version 8 passt, da ja über nacht hoffentlich keine 30 grad herschen werden.
im augenblick vermute ich, dass sie auf der website die version mit der neuesten creationzeit anzeigen, denn im feed kam jedenfalls erst version 8 und kurze zeit später wurde von version 7 die creationzeit verändert. wahrscheinlich ist bei denen etwas nicht ganz rund gelaufen.

falls noch jemand mit forschen möchte. mit diesem veränderten if/else-block ab zeile 992 sind id und creationzeit im html zu sehen:
        if ($htmlsequence eq "descending") {
            for ( my $i=ReadingsVal($name, "WarnCount", "")-1; $i>=0; $i--){
           
                $ret .= '<tr><td class="uwzIcon" style="vertical-align:top;"><img src="'.ReadingsVal($name, "Warn_".$i."_IconURL", "").'"></td>';
                $ret .= '<td class="uwzValue"><b>'.ReadingsVal($name, "Warn_".$i."_ShortText", "").'</b><br><br>';
                $ret .= ReadingsVal($name, "Warn_".$i."_LongText", "").'<br><br>';
     
                $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Start:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_Start", "")).'</td>';
               
                # language by AttrVal
                if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) {
                    $ret .= '<td><b>Ende:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_End", "")).'</td>';
                } else {
                    $ret .= '<td><b>End:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_End", "")).'</td>';
                }
                # end language by AttrVal

# neu-start
                $ret .= '</tr>';
                $ret .= '<tr>';
                $ret .= '<td>';
$ret .= '<b>ID: </b>'.ReadingsVal($name, "Warn_".$i."_EventID", "");
                $ret .= '</td>';
                $ret .= '<td>';
$ret .= '<b>Update: </b>'.localtime(ReadingsVal($name, "Warn_".$i."_Creation", ""));
                $ret .= '</td>';
# neu-ende

                $ret .= '</tr></table>';
                $ret .= '</td></tr>';
            }
        } else {
###       
            for ( my $i=0; $i<ReadingsVal($name, "WarnCount", ""); $i++){
           
                $ret .= '<tr><td class="uwzIcon" style="vertical-align:top;"><img src="'.ReadingsVal($name, "Warn_".$i."_IconURL", "").'"></td>';
                $ret .= '<td class="uwzValue"><b>'.ReadingsVal($name, "Warn_".$i."_ShortText", "").'</b><br><br>';
                $ret .= ReadingsVal($name, "Warn_".$i."_LongText", "").'<br><br>';
     
                $ret .= '<table '.$attr.'><tr><th></th><th></th></tr><tr><td><b>Start:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_Start", "")).'</td>';
               
                # language by AttrVal
                if ( $hash->{CountryCode} ~~ [ 'DE', 'AT', 'CH' ] ) {
                    $ret .= '<td><b>Ende:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_End", "")).'</td>';
                } else {
                    $ret .= '<td><b>End:</b></td><td>'.localtime(ReadingsVal($name, "Warn_".$i."_End", "")).'</td>';
                }
                # end language by AttrVal

# neu-start
                $ret .= '</tr>';
                $ret .= '<tr>';
                $ret .= '<td>';
$ret .= '<b>ID: </b>'.ReadingsVal($name, "Warn_".$i."_EventID", "");
                $ret .= '</td>';
                $ret .= '<td>';
$ret .= '<b>Update: </b>'.localtime(ReadingsVal($name, "Warn_".$i."_Creation", ""));
                $ret .= '</td>';
# neu-ende

                $ret .= '</tr></table>';
                $ret .= '</td></tr>';
            }
        }


gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

CoolTux

Da es sich immer um eine andere Meldung handelt. Mal ab Mittwoch dann ab Freitag inkl. Wochenende würde ich persönlich es so lassen.
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

frank

Zitat von: CoolTux am 26 August 2016, 19:52:49
Da es sich immer um eine andere Meldung handelt. Mal ab Mittwoch dann ab Freitag inkl. Wochenende würde ich persönlich es so lassen.
prima, auch eine gute idee. also ein neues attribut.  :)

attr <name> reduceWarningsBy none|creationTime|creationVersion

edit: attributname passender gewählt.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

CoolTux

Die Idee finde ich in Ordnung. Werde es mit Tobias bei passender Gelegenheit besprechen. Eventuell ließt er ja auch mit.


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