Ankündigung

Einklappen
Keine Ankündigung bisher.

Unwetterzentrale

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [WireGate-Plugin] Unwetterzentrale

    Tag zusammen,

    Inspiriert von dem HS/FS Plugin gleichen Namens habe ich ein WG-Plugin erstellt, dass die Unwettermeldungen ausliest und auf den Bus sendet. Findet sich auch im SVN.

    Viel Spass damit,

    der Jan

    Code:
    # Plugin zum Auslesen der Unwettermeldungen
    # Version 0.1 29.09.2011
    # Copyright: JNK (https://knx-user-forum.de/members/jnk.html)
    # In Anlehnung an HS/FS Logigbaustein 19909 by Michael Grosalski
    # License: GPL (v2)
    # Aufbau möglichst so, dass man unterhalb der Einstellungen nichts verändern muss!
    
    
    ####################
    ###Einstellungen:###
    ####################
    
    my $unwetter_txt_GA = '0/1/1'; # sendet Textmeldung DPT 16
    my $unwetter_max_stufe_GA  = '0/1/2'; # sendet höchste Warnstufe als DPT 5.005
    my $unwetter_max_typ_GA = '0/1/3'; # sendet höchsten Warntyp als DPT 5.005
    my $unwetter_max_neu_GA = '0/1/4'; # sendet 1=neue Meldungen, 0=alte Meldungen, DPT 1
    
    my $plz = '45886'; #PLZ
    my $baseurl = 'http://www.unwetterzentrale.de/uwz/getwarning_de.php?plz='; # Basis-URL
    my $country = 'DE'; # Land
    my $lang = 'de';  # deutsch
    
    
    ######################
    ##ENDE Einstellungen##
    ######################
    
    use LWP::Simple;
    
    my %warnstufen = ( gelb => 1, orange => 2, rot => 3, violett => 4 );
    my %warntyp = ( gewitter => 1, glatteisregen => 2, regen => 3, schnee => 4, sturm => 5, temperatur => 6 );
    
    my @warnstufen_txt = ( 'keine Meldung', 'Vorwarn.', '', 'stark. ', 'extr. ' );
    my @warntyp_txt = ( '', 'Gewitter', 'Glatteis', 'Regen', 'Schnee', 'Sturm', 'Temperatur' );
    
    $plugin_info{$plugname.'_cycle'} = 900;
    
    # Abfrage
    
    my $url = $baseurl.$plz.'&uwz=UWZ-'.$country.'&lang='.$lang;
    my $content = get($url);
    
    if ($content eq undef) {
      return 'HTTP failed.';
    }
    
    my @LINES = split (/\n/, $content);
    
    my $high_typ = 0;
    my $high_stufe = 0;
    my $all_str = '';
    my $typ;
    my $stufe;
    
    for (my $i=0;$i<@LINES;$i++)  {
      if ($LINES[$i] =~ /<div style="float:left;display:block;width:117px;height:110px;padding-top:6px;"><img src="..\/images\/icons\/(.*?)-(.*?).gif" width="117" height="104"><\/div>/i) {
        $typ = $warntyp{$1};
        $stufe = $warnstufen{$2};
        my $str = $stufe.$typ;
        if ($stufe>$high_stufe) {
          $high_stufe = $stufe;
          $high_typ = $typ;
        }
        $all_str .= $str;
      }
    }
    
    
    
    if ($unwetter_txt_GA) {
      knx_write($unwetter_txt_GA, $warnstufen_txt[$high_stufe].$warntyp_txt[$high_typ], 16);
    }
    
    if ($unwetter_max_stufe_GA) {
      knx_write($unwetter_max_stufe_GA, $high_stufe, 5.005);
    }
    
    if ($unwetter_max_typ_GA) {
      knx_write($unwetter_max_typ_GA, $high_typ, 5.005);
    }
    
    if ($plugin_info{$plugname.'_allstr'} == $all_str) {
      if ($unwetter_max_neu_GA) {
        knx_write($unwetter_max_neu_GA, 0, 1);
      }
    } else {
      if ($unwetter_max_neu_GA) {
        knx_write($unwetter_max_neu_GA, 1, 1);
      }
      $plugin_info{$plugname.'_allstr'} = $all_str;
    }
    
    return $all_str;
    KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

    #2
    Habs noch nicht ausprobiert aber meine Rede -> Das geht

    Makki
    EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
    -> Bitte KEINE PNs!

    Kommentar


      #3
      Eine neue Version liegt im SVN, hinzugefügt:

      - Meldungstyp "7" "Glätte"
      - UDP Support (z.B. für PROWL-Plugin), sendet Textmeldung an UDP-Port
      KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

      Kommentar


        #4
        Hoi

        Hab's für die Schweiz adaptiert:
        Code:
        my $plz = 'XXXX'; #PLZ
        my $baseurl = 'http://alarm.meteocentrale.ch/getwarning_de.php?plz='; # Basis-URL
        my $country = 'CH'; # Land
        my $lang = 'de';  # deutsch
        Grüsse Bodo
        Fragen gehören ins Forum, und nicht in mein Postfach;
        EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

        Kommentar


          #5
          Jede Jahreszeit bringt ein neues Feature

          Makki
          EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
          -> Bitte KEINE PNs!

          Kommentar


            #6
            Ich hab jetzt mal eine Höhenerkennung eingebaut (nur Alarm wenn man auch in Alarm-relevanten Höhe ist), dafür mußte ich aber jede Menge dreckiger Workarounds einbauen (ich bin kein Programmierer ... aber es funktioniert, meine Motto: nicht schön, aber selten).

            Hat da noch jemand Interesse daran? Ins SVN würde ich es wegen der Qualität ungern hochladen, aber ich könnt es ja hier posten...

            Kommentar


              #7
              Ja dann poste doch mal. Nur Mut!

              Kommentar


                #8
                Wenn Du mir das schickst, guck ich's mir an und bau das ein. Dann kann ich auch gleich das .conf einbauen.

                Gruß,

                der Jan
                KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

                Kommentar


                  #9
                  So, neue Version liegt im SVN einschliesslich einer leicht modifizierten Höhenerkennung (Dank an ctr für eine erste Version) und umgestellt auf separate Konfigurationsdatei.

                  Gruss,

                  der Jan
                  KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

                  Kommentar


                    #10
                    Hoi

                    Ist das auch im SF Repository?
                    Oder wird es da hin kommen? Wo ist es denn jetzt? Link?
                    Grüsse Bodo
                    Fragen gehören ins Forum, und nicht in mein Postfach;
                    EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

                    Kommentar


                      #11
                      Zitat von Bodo Beitrag anzeigen
                      Ist das auch im SF Repository?
                      Oder wird es da hin kommen? Wo ist es denn jetzt? Link?
                      Bodo,

                      es ist genau da :-)

                      Gruss,

                      der Jan
                      KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

                      Kommentar


                        #12
                        Hoi

                        Danke.
                        War letztes Mal wohl blind.
                        Grüsse Bodo
                        Fragen gehören ins Forum, und nicht in mein Postfach;
                        EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

                        Kommentar


                          #13
                          Zitat von JNK Beitrag anzeigen
                          So, neue Version liegt im SVN einschliesslich einer leicht modifizierten Höhenerkennung (Dank an ctr für eine erste Version) und umgestellt auf separate Konfigurationsdatei.


                          Danke, aber hast Du mit Absicht den Fall "alle Höhenstufen" entfernt?
                          Das gibt es manchmal als Höhenangabe im "Flachland"...

                          Kommentar


                            #14
                            Jein, das ist quasi implizit vorhanden: wenn die Höhenerkennung fehlschlägt, wird die Meldung immer bearbeitet. Da es keinen Fall für 'alles' gibt, wird das also auch immer bearbeitet.

                            Gruß,

                            der Jan
                            KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

                            Kommentar


                              #15
                              Ich habe mal noch das hier geändert, damit er auch nach eine .conf als ConfigDatei sucht (und nicht nur "Unwetterzentrale"):
                              Code:
                              --- generic-svn/Unwetterzentrale.pl    2011-12-30 16:01:48.000000000 +0100
                              +++ generic/Unwetterzentrale.pl    2011-12-30 19:54:27.000000000 +0100
                              @@ -39,7 +39,7 @@
                               my @warnstufen_txt = ( 'keine Meldung', 'Vorwarn.', '', 'stark. ', 'extr. ' );
                               my @warntyp_txt = ( '', 'Gewitter', 'Glatteis', 'Regen', 'Schnee', 'Sturm', 'Temperatur', 'Glaette' );
                               
                              -my $confFile = '/etc/wiregate/plugin/generic/conf.d/'.basename($plugname,'.pl');
                              +my $confFile = '/etc/wiregate/plugin/generic/conf.d/'.basename($plugname,'.pl').'.conf';
                               if (! -f $confFile)
                               {
                                 plugin_log($plugname, " no conf file [$confFile] found."); 
                              @@ -183,4 +183,4 @@
                                 $plugin_info{$plugname.'_allstr'} = $all_str;
                               }

                              Kommentar

                              Lädt...
                              X