+ Antworten
Ergebnis 1 bis 4 von 4
  1. #1
    Registriert seit
    Apr 2010
    Ort
    Oberbayern
    Beiträge
    4,839

    Standard Eigene Wetterseite mit Wunderground API

    Hallo.

    Anbei meine Anpassung an die API von Weather Underground. Ist zwar mit heisser Nadel gestrickt (WAF im Nacken - "Wo ist die Wetterseite geblieben?!") aber vielleicht kann es dem einen oder anderen ja als Grundlage dienen:

    Bitte beachten, dass da diverse Anpassungen vorzunehmen sind. API-Key, Ortsname, Landkreis, lokale Temperatur und Luftdruck. Letzere beiden messe ich lieber selber als Sie von einem Wetterdienst zu holen.

    PHP-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="Content-Style-Type" content="text/css">
    <meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="0">


    <link rel="stylesheet" type="text/css" href="wetterUser.css" />

    </head><body>

    <?php
    require_once IPS_GetKernelDir()."scripts\konfigurationWetter.ips.php";

        
    // Modifikation Wetter.com ANFANG ===========================
        
    $key "xxxxxxxxxxxxxxxxxxxx";  // Bei www.wunderground anfordern
        
    $sprache "DL"// DL = deutsch
        
    $land "Germany"// Land
        
    $city "Name des Ortes"// Lässt sich mittels Funktion geolookup und Längen-/Breitengrad ermitteln. Siehe auch Dokumentation der API
        
    $iconset "http://icons-ak.wxug.com/i/c/h/"// gewünschtes Icon-Set
        
    $json_string file_get_contents("http://api.wunderground.com/api/".$key."/forecast/lang:".$sprache."/q/".$land."/".$city.".json");
        
    $parsed_json json_decode($json_string);

        
    $replace = array("Ä","Ö","Ãœ","ä","ö","ü","ß","é","è","ê","â","á","Ã","§","°");
        
    $umlaute = array("Ä","Ö","Ü","ä","ö","ü","ß","é","è","ê","â","á","à","§","°");

        
    $wetter['stadt'] = "Name des Ortes";
        
    $wetter['datum'] = $parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[0]->{'date'}->{'day'}.".";
        
    $wetter['datum'] = $wetter['datum'].$parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[0]->{'date'}->{'month'}.".";
        
    $wetter['datum'] = $wetter['datum'].$parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[0]->{'date'}->{'year'};

        
    $wetter['zeit'] = $parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[0]->{'date'}->{'hour'}.":";
        
    $wetter['zeit'] = $wetter['zeit'].$parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[0]->{'date'}->{'min'}.":";
        
    //$wetter['zeit'] = $wetter['zeit'].$parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[0]->{'date'}->{'sec'};

        
    $wetter[0]['temperatur'] = GetValue(10477);

        for (
    $i 0$i <= 3$i++) {
            
    $wetter[$i]['tag'] = $parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[$i]->{'date'}->{'weekday'};
            
    $wetter[$i]['temp_min'] = $parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[$i]->{'low'}->{'celsius'};
            
    $wetter[$i]['temp_max'] = $parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[$i]->{'high'}->{'celsius'};
            
    $wetter[$i]['hum_ave']  = $parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[$i]->{'avehumidity'};
            
    $wetter[$i]['hum_min']  = $parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[$i]->{'minhumidity'};
            
    $wetter[$i]['hum_max']  = $parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[$i]->{'maxhumidity'};
            
    $wetter[$i]['ave_wind_kmh'] = $parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[$i]->{'avewind'}->{'kph'};
            
    $wetter[$i]['ave_wind_dir'] = str_replace($replace$umlaute$parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[$i]->{'avewind'}->{'dir'});
             
    $wetter[$i]['max_wind_kmh'] = $parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[$i]->{'maxwind'}->{'kph'};
             
    $wetter[$i]['max_wind_dir'] = str_replace($replace$umlaute$parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[$i]->{'maxwind'}->{'dir'});
             
    $wetter[$i]['icon'] = $parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[$i]->{'icon_url'};
             
    $wetter[$i]['icon'] = $iconset.substr($wetter[$i]['icon'], strrpos($wetter[$i]['icon'], "/")+1);
             
    $wetter[$i]['zustand'] = str_replace($replace$umlaute$parsed_json->{'forecast'}->{'simpleforecast'}->forecastday[$i]->{'conditions'});
        }


    // Modifikation Wetter.com ENDE ===========================


    $tableAktuell "<table>";
    $tableAktuell .= "<tr><td style='width:200px;'>";
    $tableAktuell .= $wetter[0]['zustand']."<br/>\n";
    $tableAktuell .= "Ist-Temperatur: ".$wetter[0]['temperatur']." &deg;C<br/>\n";
    $tableAktuell .= "Erwartet ".$wetter[0]['temp_min']." - ".$wetter[0]['temp_max']." &deg;C<br/>";
    $tableAktuell .= "Luftfeuchte: ".$wetter[0]['hum_min']." - ".$wetter[0]['hum_max']." %"."<br/>";
    $tableAktuell .= "Wind: ".$wetter[0]['ave_wind_kmh']." - ".$wetter[0]['max_wind_kmh']." Km/h"."<br/>";
    $tableAktuell .= "aus ".$wetter[0]['ave_wind_dir']." - ".$wetter[0]['max_wind_dir']."."."<br/>";
    $tableAktuell .= "Luftdruck: ".GetValueFormatted(46254)."<br/>";
    //$tableAktuell .= "Luftdruck: ".GetValueFormatted(29351)." hPa<br/>";
    $tableAktuell .= "</td>";
    $tableAktuell .= "<td style='width:80px;'><img src=\"".$wetter[0]['icon']."\" alt=\"".$wetter[0]['zustand']."\"height=120 />\n";
    $tableAktuell .= "</td></tr></table>";

    $tableTage "<table>";

    for (
    $i 1$i <= 3$i++) {
        
    $tableTage .= "<td style='width:220px;'>";
        
    $tableTage .= "<b>".$wetter[$i]['tag']."</b><br/>\n";
        
    $tableTage .= $wetter[$i]['zustand']."<br/>\n";
        
    $tableTage .= "Temp. ".$wetter[$i]['temp_min']." - ".$wetter[$i]['temp_max']." &deg;C<br/>";
        
    $tableTage .= "Luftf. ".$wetter[$i]['hum_min']." - ".$wetter[$i]['hum_max']." %<br/>";
        
    $tableTage .= "<img src=\"".$wetter[$i]['icon']."\" alt=\"".$wetter[$i]['zustand']."\"height=80 />\n";
        
    $tableTage .= "</td>";
    }
    $tableTage .= "</tr></table>";

    $imgKarte Sys_GetURLContent("http://www.dwd.de/dyn/app/ws/maps/".$warnung);
    $imagePfad IPS_GetKernelDir()."webfront/user/WetterFtpDWD/warnungen/".$warnung;

    $fp fopen($imagePfad"wb+");
    fwrite($fp$imgKarte);
    fclose($fp);

    $image imagecreatefromgif($imagePfad);
    list(
    $width$height) = getimagesize($imagePfad);
    $newWidth $width $factorWetterwarnung;
    $newHeight $height $factorWetterwarnung;

    $imageResized ImageCreateTrueColor($newWidth$newHeight);
    $transparenz ImageColorTransparent($imageimagecolorexact($image255255255));
    for(
    $i=0$i<$height$i++)
    {
        for(
    $j=0$j<$width$j++)
        {
            
    $pos imagecolorat($image$j$i);
            
    $index imagecolorsforindex($image$pos);
            
    $rgb $index["red"] + $index["green"] + $index["blue"];
            if(
    $rgb == "0")
            {
                
    $weiss imagecolorresolve($image255255255);
                
    imagesetpixel($image$j$i$weiss);
            }
        }
    }
    ImageColorTransparent($imageResized$transparenz);
    ImageCopyResampled($imageResized$image0000$newWidth$newHeight$width$height);

    $normal[0] = imagecolorexact($imageResized102181255);
    $pos array_search(imagecolorat($imageResized$posX$posY), $normal);

    if(
    $pos === false)
    {
        if(!(
    $conn_id ftp_connect($ftp_server)))
        {
            goto 
    weiter;
        }
        if(!(
    $login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass)))
        {
            
    ftp_close($conn_id); 
        }
        if(!
    ftp_pasv($conn_idtrue))
        {
            
    ftp_close($conn_id); 
        }  
        
    ftp_chdir($conn_id"gds/specials/warnings/sms/".$warnRegion."/");
        
    $ftp_list ftp_nlist($conn_id".");

        
    $h date("d");
        
    $suche "/(H[\w]{1}{$warnRegion}[\d]{2})_{$landkreis}[\w]{1}_({$h}[\d]{4})/";

        foreach(
    $ftp_list as $lk => $v)
        {
            
    preg_match_all($suche$v$sPREG_SET_ORDER);
            foreach(
    $s as $sms)
            {
                
    $sim[] = $sms;
            }
        }
        if(!isset(
    $sim))
        {
            
    SetValue(24108"Es sind keine Warnmeldungen für den Landkreis vorhanden!");
        }
        else
        {
            
    $smsMeldung array_pop($sim);
            
    $letztesmsMeldung array_shift($smsMeldung);
            
    $smsMeldung IPS_GetKernelDir()."webfront/user/WetterFtpDWD/warnungen/smsWarnmeldung.txt";
            
    $handleSMS = @fopen($smsMeldung'wb+');
            if(!
    ftp_fget($conn_id$handleSMS$letztesmsMeldungFTP_ASCII))
            {
                
    //Meldung
            
    }
            
    fclose($handleSMS);
            
    $smsWarnmeldung file_get_contents("../WetterFtpDWD/warnungen/smsWarnmeldung.txt");
            
    SetValue(24108$smsWarnmeldung);
        }
        
    ftp_close($conn_id);
    }
    //
    //else
    //{
    //    $color = imagecolorallocate($imageResized, 255, 0, 0);
    //    ImageRectangle($imageResized, $posX+1, $posY+1, $posX, $posY, $color);
    //}

    weiter:
    imagegif($imageResized$imagePfad);
    imagedestroy($image);
    imagedestroy($imageResized);

    $berichtHeute file_get_contents("../WetterFtpDWD/berichte/berichtHeute.txt");
    $berichtHeute preg_replace('/\b[A-Z]{1}+[a-z]{4,}\b.*([:].*)/'""$berichtHeute);
    //$berichtHeute = preg_replace('/Letzte Aktualisierung: ([\d]{2}.[\d]{2}.[\d]{4}, [\d]{2}.[\d]{2} Uhr)/', "", $berichtHeute);
    $berichtMorgen file_get_contents("../WetterFtpDWD/berichte/berichtMorgen.txt");
    $berichtMorgen preg_replace('/\b[A-Z]{1}+[a-z]{4,}\b.*([:].*)/'""$berichtMorgen);
    $berichtUebermorgen file_get_contents("../WetterFtpDWD/berichte/berichtUebermorgen.txt");
    $berichtUebermorgen preg_replace('/\b[A-Z]{1}+[a-z]{4,}\b.*([:].*)/'""$berichtUebermorgen);
    $berichtTag4 file_get_contents("../WetterFtpDWD/berichte/berichtTag4.txt");
    $berichtTag4 preg_replace('/\b[A-Z]{1}+[a-z]{4,}\b.*([:].*)/'""$berichtTag4);

    $berichtGesamt $berichtHeute;
    if(
    $berichtanzahl == 2$berichtGesamt $berichtHeute $berichtMorgen;
    if(
    $berichtanzahl == 3$berichtGesamt $berichtHeute $berichtMorgen $berichtUebermorgen;
    if(
    $berichtanzahl == 4$berichtGesamt $berichtHeute $berichtMorgen $berichtUebermorgen $berichtTag4;

    if(
    $berichtGesamt == ""
    {
        
    $berichtGesamt "Der Wetterbericht steht momentan nicht zur Verfügung!";
    }

    ?>

    <div id="containerTopLeft">
        <div class="pos"><?php echo $ort;?></div>
        <div class="containerBorderAktuell">
            <div class="containerTableAktuell"><?php echo $tableAktuell;?></div>
        </div>
    </div>
    <div id="containerTopRight">
        <div class="pos">Vorhersage f&uuml;r die n&auml;chsten 3 Tage</div>
        <div class="containerBorderTage">
            <div class="containerTableTage"><?php echo $tableTage;?></div>
        </div>
    </div>
    <div id="containerBottomLeft">
        <div class="pos"><?php echo $ueberschriftKarte;?></div>
        <div class="containerWarnung">
            <div class="containerGif"><img src='/user/WetterFtpDWD/warnungen/<?php echo $warnung;?>' border="0" alt="karte" usemap="#karte">
                <div class="linkGif"><map name="karte">
                <area shape="poly" coords="120,209,124,206,128,205,131,208,137,204,138,207,136,209,135,222,130,221,127,226,123,226,127,222,119,219,120,210" 

    href="Warnmeldung.php" alt="Dein Landkreis" title="Dein Landkreis"></map>
                </div>
                <div class="containerTextWarnung"><img src='/user/WetterFtpDWD/warnungen/containerTextWarnungen.png'></div>
            </div>
        </div>
    </div>
    <div id="containerBottomRight">
        <div class="pos">Wetterbericht</div>
        <div class="containerBericht">
            <div class="berichtText"><?php echo $berichtGesamt;?></div>
        </div>
    </div>

    <?php require "barBottom.php"?>


    </body></html>
    Nachtrag - es geht hier um die WetterIndex.php.
    Geändert von kronos (30.08.12 um 09:37 Uhr) Grund: Nachtrag
    Grüsse, Kronos.
    Wenn am Anfang alles schief geht, nenne es Version 1.0
    IPS 5.3 auf Server 2016 / HM mit CCU2 (RaspberryMatic) + LAN-Adapter + LAN- & Wired Gateway, 241 Geräte / XBee Pro (Roomba) / RoboRock S50 / RGB-W 868 / MiLight / EKM 868 / AKM / ein Rudel Squeezeboxen+Pi / EM24DIN+VS102 / AM 220 AC / PlugWise / VU+ / ALL4x00 / LevelJet / IRTRans / Echos diverse / viel zu wenig Zeit


    Einfach mal rein schauen: IPS-Chat

  2. #2
    Registriert seit
    Jun 2011
    Ort
    Fessenheim, Schwaben, Bayern
    Beiträge
    554

    Hallo,

    - hat diese Seite das gleiche Design wie die "Eigene Wetterseite" von RWN nur die Daten von Wunderground ???
    - funktioniert diese Version der Wetterseite aktuell ???

    Gruß Proxima
    Unlimited IP-Symcon 5.2 4383 benutzte Variablen
    Server: Windows Server 2016 Essentials auf Intel Xeon E3-1245v5; 32GB RAM; SSD für System; 12TB Daten-HDD's Hardware: HomeMatic (OCCU, RS485 & HMIP); 1-Wire; Sonos; IrTrans Ethernet; WMRS 200; Plugwise; UVR1611; Harmony Elite; Xiaomi Roborock S50; Echo Dots; Synology NAS DS-414 (externes BackUp)

  3. #3
    Registriert seit
    Apr 2010
    Ort
    Oberbayern
    Beiträge
    4,839

    Hallo Proxima.

    Vom Grundsatz her nutze ich diese Verson nach wie vor. Ich muss aber zugeben - nachdem das Echo hier gleich null war habe ich den Thread nicht wirklich weiter gepflegt. In wie weit ich in der Zwischenzeit Änderungen an meiner Version der WetterIndex.php vorgenommen hatte kann ich daher nicht aus dem Stegreif nachvollziehen.
    Grüsse, Kronos.
    Wenn am Anfang alles schief geht, nenne es Version 1.0
    IPS 5.3 auf Server 2016 / HM mit CCU2 (RaspberryMatic) + LAN-Adapter + LAN- & Wired Gateway, 241 Geräte / XBee Pro (Roomba) / RoboRock S50 / RGB-W 868 / MiLight / EKM 868 / AKM / ein Rudel Squeezeboxen+Pi / EM24DIN+VS102 / AM 220 AC / PlugWise / VU+ / ALL4x00 / LevelJet / IRTRans / Echos diverse / viel zu wenig Zeit


    Einfach mal rein schauen: IPS-Chat

  4. #4
    Registriert seit
    Dec 2015
    Ort
    Biblis
    Beiträge
    7

    Echo

    Finde das Thema sehr interessant und werde es weiter verfolgen! Läuft es bei dir unter 4.?

Ähnliche Themen

  1. Wetterdaten - Wunderground API
    Von SmartHomeSchweiz im Forum WebFront
    Antworten: 148
    Letzter Beitrag: 18.03.19, 21:29
  2. Eigene Wetterseite
    Von RWN im Forum WebFront
    Antworten: 1
    Letzter Beitrag: 06.09.12, 16:00
  3. Mobotix VoIP Verbindung mit HTTP-API
    Von Bugelnig im Forum Audio & Video, TK-Anlagen, ISDN
    Antworten: 4
    Letzter Beitrag: 08.03.11, 20:19
  4. Antworten: 0
    Letzter Beitrag: 13.08.10, 14:12
  5. Antworten: 0
    Letzter Beitrag: 05.11.09, 13:58