diff --git a/README.md b/README.md index 38439cf..85d2c7c 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,14 @@ -Fahrradwetter -============= +# Fahrradwetter Kann man mit dem Fahrrad fahren? -Cronjob -======== +## Anleitung + +* Dateien auf den Server laden (README.md, und Screenshot.png nicht benötigt) +* Cronjob anlegen +* 10 Minuten warten + +## Cronjob Erstelle einen Cronjob: @@ -13,15 +17,14 @@ Erstelle einen Cronjob: Beispiel: */10 * * * * wget -N --quiet --output-document=/var/www/customers/cust123/html/bike/api.json http://api.wunderground.com/api/abc1234def/forecast10day/q/DE/Leipzig.json -Die Datei api.json und index.php müssen im gleichen Verzeichnis liegen und vom Webserver lesbar sein. Zudem muss api.json durch den Nutzer des Cronjobs beschreibbar sein. +Alle Dateien müssen im gleichen Verzeichnis liegen und vom Webserver lesbar sein. Zudem muss api.json durch den Nutzer des Cronjobs beschreibbar sein. + +## Screenshot / Demo -Screenshot / Demo -========== ![Alt text](screenshot.png) Demo unter http://fahrradwetter.mainboarder.de/ -Lizenz -======= +## Lizenz Nicht militärische und nicht geheimdienstliche Nutzung und Weiterentwicklung für jedermann entgeltfrei erlaubt, solange die Hinweise des Urhebers nicht entfernt werden. diff --git a/api.json b/api.json new file mode 100644 index 0000000..e69de29 diff --git a/index.php b/index.php index ee73112..f5e5aca 100644 --- a/index.php +++ b/index.php @@ -25,103 +25,27 @@ define('WETTERSTATION', 'http://www.wunderground.com/cgi-bin/findweather/hdfFore */ define('STADT', 'Leipzig'); -/** - * Erhalte die Wetterdaten und baue ein Array - * - * @param string Stadtname - * @return array Wetterdaten - */ -function getWeather(){ - // JSON holen - $json_string = file_get_contents('api.json'); - $parsed_json = json_decode($json_string, true); - - // Daten aus JSON für die nächsten vier Tage holen - for($i = 0; $i <= 9; $i++){ - $rain[$i] = $parsed_json['forecast']['simpleforecast'] - ['forecastday'][$i]['pop']; - $icon[$i] = $parsed_json['forecast']['simpleforecast'] - ['forecastday'][$i]['icon_url']; - $day[$i] = $parsed_json['forecast']['simpleforecast'] - ['forecastday'][$i]['date']['weekday']; - $tempHi[$i] = $parsed_json['forecast']['simpleforecast'] - ['forecastday'][$i]['high']['celsius']; - - // Fahrradwetter? - Grundsätzlich ja. - $fahrrad = 'Ja'; - - // Vielleicht, wenn Regenwahrscheinlichkeit größer als 40% oder - // Temperaturen nicht zwischen 15 und 24°C - if($rain[$i] >= 40 || $tempHi[$i] <= 15 || $tempHi[$i] > 24){ - $fahrrad = 'Vielleicht'; - } - // Kein Fahrradwetter, wenn Regenwahrscheinlichkeit über 55% - // oder Temperaturen nicht zwischen 10 und 27°C - if($tempHi[$i] >= 27 || $tempHi[$i] <= 10 || $rain[$i] >= 55){ - $fahrrad = 'Nein'; - } - - // Array mit den Daten für einen Tag zusammenbauen - $wetter[$i] = - array( - 'rain' => $rain[$i], - 'icon' => $icon[$i], - 'day' => $day[$i], - 'tempHi' => $tempHi[$i], - 'rad' => $fahrrad, - ); - - // Arrays miteinander verknüpfen - if(isset($wetter[$i-1])){ - array_merge($wetter[$i-1], $wetter[$i]); - } - } +require_once('wetter.php'); - return $wetter; -} +$daten = new wetter(WETTERSTATION, STADT); -/** - * Erstelle eine Tabellenzeile aus einem Array - * - * @param array array Auszuwertendes Array mit den Daten - * @param schluessel string Schlüssel nach dem im Array gesucht wird - * @param stringVor string Zeichen die vor dem String auftauchen sollen - * @param stringNach string Zeichen die nach dem String auftauchen sollen - * @param first string Was soll einmalig am Anfang stehen - * - * @return string - */ -function makeTable($array, $schluessel, $stringVor = NULL, - $stringNach = NULL, $first = NULL){ - - $string = ''.$first.''; - - foreach($array as $daten){ - $string .= ''; - $string .= $stringVor . $daten[$schluessel] . $stringNach; - $string .= ''; - } - - return ' - ' . $string . ' -'; -} - -$wetter = getWeather(); +$wetter = $daten->getWeather(); echo '
-

Fahrradwetter in '. STADT .'? - '.$wetter[0]['rad'].'.

+

Fahrradwetter in '. STADT . + '? - '.$wetter[0]['rad'].'.

'; -echo makeTable($wetter, 'day'); -echo makeTable($wetter, 'icon', ''); -echo makeTable($wetter, 'rain', NULL, '%', 'Regenwahrscheinlichkeit'); -echo makeTable($wetter, 'tempHi', NULL, '°C', 'Höchsttemperatur'); -echo makeTable($wetter, 'rad', NULL, NULL, 'Fahrradwetter'); -echo ' -
'; +echo $daten->makeTable($wetter, 'day'); +echo $daten->makeTable($wetter, 'icon', ''); +echo $daten->makeTable($wetter, 'rain', NULL, '%', 'Regenwahrscheinlichkeit'); +echo $daten->makeTable($wetter, 'tempHi', NULL, '°C', 'Höchsttemperatur'); +echo $daten->makeTable($wetter, 'rad', NULL, NULL, 'Fahrradwetter'); + ?> + +


Daten via Wunderground, alle 10 Minuten neu abgerufen.

Fahrradwetter hat eine Regenwahrscheinlichkeit unter 40% und Temperaturen zwischen 15 und 24°C.

diff --git a/wetter.php b/wetter.php new file mode 100644 index 0000000..cbad5d8 --- /dev/null +++ b/wetter.php @@ -0,0 +1,89 @@ +Ja'; + + // Vielleicht, wenn Regenwahrscheinlichkeit größer als 40% oder + // Temperaturen nicht zwischen 15 und 24°C + if($rain[$i] >= 40 || $tempHi[$i] <= 15 || $tempHi[$i] > 24){ + $fahrrad = 'Vielleicht'; + } + // Kein Fahrradwetter, wenn Regenwahrscheinlichkeit über 55% + // oder Temperaturen nicht zwischen 10 und 27°C + if($tempHi[$i] >= 27 || $tempHi[$i] <= 10 || $rain[$i] >= 55){ + $fahrrad = 'Nein'; + } + + // Array mit den Daten für einen Tag zusammenbauen + $wetter[$i] = + array( + 'rain' => $rain[$i], + 'icon' => $icon[$i], + 'day' => $day[$i], + 'tempHi' => $tempHi[$i], + 'rad' => $fahrrad, + ); + + // Arrays miteinander verknüpfen + if(isset($wetter[$i-1])){ + array_merge($wetter[$i-1], $wetter[$i]); + } + } + + return $wetter; + } + + /** + * Erstelle eine Tabellenzeile aus einem Array + * + * @param array array Auszuwertendes Array mit den Daten + * @param schluessel string Schlüssel nach dem im Array gesucht wird + * @param stringVor string Zeichen die vor dem String auftauchen sollen + * @param stringNach string Zeichen die nach dem String auftauchen sollen + * @param first string Was soll einmalig am Anfang stehen + * + * @return string + */ + function makeTable($array, $schluessel, $stringVor = NULL, + $stringNach = NULL, $first = NULL){ + + $string = ''.$first.''; + + foreach($array as $daten){ + $string .= ''; + $string .= $stringVor . $daten[$schluessel] . $stringNach; + $string .= ''; + } + + return ' + ' . $string . ' + '; + } +}