Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1

THEMA:

Wetterdaten in Webcambild einblenden 29 Mär 2011 08:41 #164685

  • Mickey
  • Mickeys Avatar Autor
  • Besucher
  • Besucher
Ich weiss nicht ganz, wo ich das hinposten soll, ich hoffe, hier ist es richtig. Ich habe gestern - angeregt durch Stachi - ein Script auf meine Homepage gebracht, die es ohne Zusatzsoftware Serverseitig schafft, die Wetterdaten aus der weatherBoxx ins Webcambild zu "brennen" und die Bilder dann abzulegen.

Hier ist das Endresultat zu sehen:
http://www.rheintalwetter.ch/joomla/rheintalwetter/webcam.html

Das ganze kann nun sehr einfach angepasst werden. Ich werde hier kurz alles beschreiben und das Script veröffentlichen, Stachi hat mich dazu angeregt, also nehme ich an, dass er damit einverstanden ist.

Also, als 1. muss folgender Code:
[code:tunvagel]
<?xml version="1.0" encoding="ISO-8859-1" ?>
<meteohub>
<Station>Wetterstation xxx</Station>
<aktuell>Aktuell</aktuell>
<aktzeit>[actual_date0_time_local]</aktzeit>
<aktdatum>[actual_date0_puredate_local]</aktdatum>
<akttemp>[actual_th0_temp_c]</akttemp>
<aktregen>[actual_rain0_rate_mm]</aktregen>
<aktchill>[actual_wind0_chill_c]</aktchill>
<aktwind>[actual_wind0_speed_kmh]</aktwind>
<aktgust>[actual_wind0_gustspeed_kmh]</aktgust>
<akthum>[actual_th0_hum_rel]</akthum>
<aktpress>[actual_thb0_sealevel_hpa]</aktpress>
<aktfcnr>[actual_thb0_fc_rule]</aktfcnr>
<aktfcpic>[actual_thb0_fc]</aktfcpic>
<aktvpicon>[actual_thb0_fc_vpicon]</aktvpicon>
<aktfc>[actual_thb0_fc_textdeiso]</aktfc>
<akttaglaenge>[actual_daylength_standard_hhmm]</akttaglaenge>
<aktsunrise>[actual_sunrise_standard_local]</aktsunrise>
<aktsunset>[actual_sunset_standard_local]</aktsunset>
<aktmondphase>[actual_lunar_phase_segment]</aktmondphase>
<aktmondphaseperc>[actual_lunar_phase_percentage]</aktmondphaseperc>
<aktmondalter>[actual_lunar_age_days]</aktmondalter>
<aktmondphase_de>[actual_lunar_phase_de]</aktmondphase_de>
<aktwinddir>[actual_wind0_dir_de]</aktwinddir>
<aktwinddeg>[actual_wind0_dir_deg]</aktwinddeg>
<aktdew>[actual_th0_dew_c]</aktdew>
<aktsol>[actual_sol0_radiation_wqm]</aktsol>
<aktuv>[actual_uv0_index]</aktuv>
<akt_evotranspiration>[actual_sol0_evotranspiration_mm]</akt_evotranspiratin>
</meteohub>
[/code:tunvagel]

mit einem Editor als meine_werte.html gespeichert werden. Dann kopiert man die Daten auf meteohub in den Ordner graphs.

Anschliessend loggt man sich in meteohub ein, wählt Grafiken hochladen und wählt dort meine_werte* aus, wählt jede Minute aktualisieren aus und lässt das Resultat dann als meine_werte.xml ausgeben.

Dieser Code:
[code:tunvagel]
<?php
$meine_werte = 'http://Deine Domain/Dein Pfad/meine_werte.xml';
$xml = simplexml_load_file($meine_werte);
$act_date = $xml->aktdatum[0]; //Zeitstempel Datum
$act_temp = $xml->akttemp[0]; //aktuelle Temperatur
$act_rain = $xml->aktregen[0]; //aktueller Niederschlag
$act_wind = $xml->aktwind[0]; //aktuelle Windgeschwindigkeit
$act_time = $xml->aktzeit[0]; //Zeitstempel Uhrzeit
$act_dew = $xml->aktdew[0]; //aktueller Taupunkt
$chill_temp = $xml->aktchill[0]; //aktuelle Chill-Temperatur
$gust_act = $xml->aktgust[0]; //aktuelle Böen-Geschwindigkeit
$act_hum = $xml->akthum[0]; //Feucht
$act_press = $xml->aktpress[0]; //Luftdruck
$act_wind_dir = $xml->aktwinddir[0];//Windrichtung
$act_wind_deg = $xml->aktwinddeg[0];//Grad
$act_sol = $xml->aktsol[0]; //Globalstrahlung
$act_uv = $xml->aktuv[0]; //UV-Index
$act_evotranspiration = $xml->akt_evotranspiration[0];//
?>
[/code:tunvagel]

speichert man mit Hilfe von Notepad oder einem anderen Editor als xml-werte.php ab und schiebt es auf den Webspace.

Nun brauchen wir noch das Script, welches die nun generierten Wetterdaten in das Webcambild einbrennt:

Diesen Code hier:
[code:tunvagel]
<?php

// aktuelle Wetterdaten einlesen
include('/home/www/web115/html/php/xml-werte.php'); // HIER PFAD ANGEBEN

//
// Dunkelheiten rechnen
//
$lat = 47.50979; // nördlicher Breitengrad // HIER KOORDINATEN ANPASSEN
$long = 9.40969; // östlicher Längengrad // HIER KOORDINATEN ANPASSEN
$offset = date('H')-gmdate('H');// Differenz zwischen GMT und Lokalzeit in Stunden
// Nautische Dunkelheit = Umrisse (z.B. auf See) können noch schemenhaft - besonders gegen den Horizont - wahrgenommen werden
$zenith=102;
$nautical_sunrise = date_sunrise(time(), SUNFUNCS_RET_STRING, $lat, $long, $zenith, $offset);
$nautical_sunset = date_sunset(time(), SUNFUNCS_RET_STRING, $lat, $long, $zenith, $offset);
// Astronomische Dunkelheit = Dunkel (Stockdüster)
$zenith=108;
$astronomical_sunrise = date_sunrise(time(), SUNFUNCS_RET_STRING, $lat, $long, $zenith, $offset);
$astronomical_sunset = date_sunset(time(), SUNFUNCS_RET_STRING, $lat, $long, $zenith, $offset);
// verwendete Dunkelheits-Zeiten wählen:
$sunrise = $astronomical_sunrise; // HIER SONNENAUFGANG ANGEBEN
$sunset = $astronomical_sunset; // HIER SONNENAUFGANG ANGEBEN
// Zeiten in Unix-Time umwandeln
$sunrise_h = substr($sunrise, 0, 2); // Sunrise-Zeit umwandeln
$sunrise_m = substr($sunrise, 3, 2);
$timestamp_sunrise = mktime($sunrise_h, $sunrise_m, 0, 0, 0, 0);
$sunset_h = substr($sunset, 0, 2); // Sunset-Zeit umwandeln
$sunset_m = substr($sunset, 3, 2);
$timestamp_sunset = mktime($sunset_h, $sunset_m, 0, 0, 0, 0);
$uhrzeit = date("H:i",time()); // aktuelle Serverzeit lesen und umwandeln
$uhrzeit_h = substr($uhrzeit, 0, 2);
$uhrzeit_m = substr($uhrzeit, 3, 2);
$timestamp_uhrzeit = mktime($uhrzeit_h, $uhrzeit_m, 0, 0, 0, 0);

//
// Definitionen für Fototexte
//
$font_1 = "./verdanab.ttf"; // Schrift Verdana fett
$font_2 = "./verdana.ttf"; // Schrift Verdana normal
$groesse_1 = "10"; // Schriftgrösse oberer Text (Titel)
$groesse_2 = "8"; // Schriftgrösse Messwerte
$x_wert_1 = "10"; // Textpositionen x Titel
$x_wert_2 = "482"; // Textpositionen x Messwerte
$y_wert_1 = "20"; // Textpositionen y Titel
$y_wert_2 = "460"; // Textpositionen y Messwerte
$winkel_1 = "0"; // Textwinkel Titel
$winkel_2 = "0"; // Textwinkel Messwerte
// Texte
$titel_1 = "Wetterstation Berneck"; // HIER TITEL ANGEBEN
$titel_2 = date("d") . "." . date("m") . "." . date("Y") . ", " . date("H") . ":" . date("i") . "h";
// DIE NACHFOLGENDEN VARIABLEN IN $aktuell ENTSPRECHEND DER XML-DATEI ANPASSEN:
$aktuell = "Temperatur " . $act_temp . "°C | Niederschlag " . $act_rain . "mm/h | Wind " . $act_wind . "km/h aus " . $act_wind_dir . " | Böe " . $gust_act . "km/h | Luftfeuchtigkeit " . $act_hum . "% nLuftdruck "
. $act_press . "hPa | Taupunkt " . $act_dew . "°C | Windchill " . $chill_temp . "°C | Solar " . $act_sol . "W/m² | UV " . $act_uv . " | Evapotransp. " . $act_evotranspiration . "mm";
// Zeitstempel
$ausgabezeit = date("H") . "_" . date("i");
$ausgabedatum = date("d") . "_" . date("m") . "_" . date("Y");
$zeitstempel = "_" . $ausgabedatum . "_" . $ausgabezeit;
// Texthintergrund
$r = rand(0,120);
$g = rand(0,120);
$b = rand(0,120);

//
// Definitionen der Fotopfade
//
$dir_jahr = date("Y");
$dir_monat = date("m");
$dir_tag = date("d");
$start_dir = "/home/www/web115/html/Wetter/Webcam"; // HIER SPEICHERPFAD ANGEBEN
$php_dir = "/home/www/web115/html/php";

//
// Prüfung ob Tagesordner vorhanden, wenn notwendig erstellen
//
chdir($start_dir);
if (is_dir($dir_jahr . $dir_monat . $dir_tag))
{
// rmdir ($dir_jahr . $dir_monat . $dir_tag);
echo "ok";
}
else
{
mkdir ($dir_jahr . $dir_monat . $dir_tag, 0777);
chmod ($dir_jahr . $dir_monat . $dir_tag, 0777);
}
chdir($php_dir);

// Abfrage ob Tageslicht vorhanden
//if (($timestamp_uhrzeit >= $timestamp_sunrise) AND ($timestamp_uhrzeit <= $timestamp_sunset))
//{

// Snapshot
$richtung = ", www.rheintalwetter.ch"; // HIER TEXT ANPASSEN

$img = imagecreatefromjpeg ("http://DOMAIN.dyndns.org:81/axis-cgi/jpg/image.cgi?resolution=640x480"); // HIER BEFEHL UND PFAD ZUR KAMERA ANPASSEN
$color = ImageColorAllocate ($img,255,255,255);
$fuellfarbe = imagecolorallocatealpha($img, 0, 0, 0, 98);
imagefilledrectangle ($img, 0, 0, 640, 30, $fuellfarbe);
imagefilledrectangle ($img, 0, 445, 640, 480, $fuellfarbe);
imagettftext($img, $groesse_1, $winkel_1, $x_wert_1, $y_wert_1, $color, $font_1, $titel_1 . $richtung);
imagettftext($img, $groesse_1, $winkel_1, $x_wert_2, $y_wert_1, $color, $font_1, $titel_2);
imagettftext($img, $groesse_2, $winkel_2, $x_wert_1, $y_wert_2, $color, $font_2, $aktuell);
// imagejpeg ($img, $start_dir . '/' . $dir_jahr . $dir_monat . $dir_tag . '/bildkommentar' . $zeitstempel . '.jpg', 100); // HIER BILDKOMMENTAR ANPASSEN ODER LÖSCHEN
imagejpeg ($img, $start_dir . '/' . 'cam.jpg', 100); // HIER BILDKOMMENTAR ANPASSEN ODER LÖSCHEN
imagedestroy ($img);

$fullm = (int)$uhrzeit_m;
if ($fullm < 5 )
{
copy($start_dir . '/' . 'cam.jpg',$start_dir . '/' . 'cam_' . $uhrzeit_h . '.jpg');
}

//}
//else
//{
//echo "...es ist dunkel!";
//}

?>
[/code:tunvagel]

Ich habe hier einiges auskommentiert und z.B: auch jeweils Anfang der Stunde ein einzelnes Stundenbild mit dem Namen cam_07 (für 7:00) abgelegt.

Wichtig ist noch, dass die ttf Fonts in das Script Verzeichnis geladen wird (das bei mir php heisst). Diese Fonts findet ihr im Windows/Fonts Verzeichnis.

Dieses Prozedere sollte für einen geübten in einer Stunde locker zu schaffen sein, für einen weniger geübten müsste es aber auch machbar sein.

Sollten Fragen auftauchen, ich bin gerne bereit, Auskünfte zu erteilen. An dieser Stelle nochmals herzlichen Dank an Stachi, der mir alle Scripts ohne Wenn und Aber zugeschickt hat und mir auch da und dort Hilfe geleistet hat!

Bitte Anmelden um der Konversation beizutreten.

Wetterdaten in Webcambild einblenden 29 Mär 2011 08:46 #164686

  • Mickey
  • Mickeys Avatar Autor
  • Besucher
  • Besucher
Hehe, etwas wichtiges habe ich noch vergessen: Die Zeile, die das Bild aus der Kamera holt setzt noch einiges voraus! Zum einen muss das Bild von aussen, also vom Webserver aus erreichbar gemacht werden. D.h. dass man einen dyndns account braucht, wenn Webcam und Webspace nicht im selben Netzwerk sind, wovon ich mal ausgehe. Dann muss man den Port der Webcam (meist 80) per NAT vom Router aus forwarden. Dann muss man rausfinden, unter welcher Adresse die Kamera das Bild im Kamera-internen Webserver ablegt. Bei meiner AXIS ist das hier:

$img = imagecreatefromjpeg (" DOMAIN.dyndns.org:81/axis-cgi/jpg/image.cgi?resolution=640x480 "); // HIER BEFEHL UND PFAD ZUR KAMERA ANPASSEN

Dieser Pfad lässt sich beliebig anpassen, d.h. er MUSS von jedem angepasst werden!

Sola, nun wünsche ich viel Spass und hoffe, dass diese Anleitung für einige hilfreich ist!

Bitte Anmelden um der Konversation beizutreten.

  • Seite:
  • 1
Moderatoren: Markus Brotschi
Ladezeit der Seite: 0.117 Sekunden
Zum Seitenanfang
JSN Boot template designed by JoomlaShine.com