Optionale Anzeige des Pegelstandes (z.B. Rhein)

Diskussion, Fragen, Anregungen und Wünsche zu efa2

Moderatoren: nick, smg

Forumsregeln
Verfasse bitte die Beiträge in den passenden Kategorien und gib ihnen einen aussagekräftigen Betreff.
Antworte bitte nur zum Thema und beginne ein neues Thema, falls Du noch etwas Zusätzliches sagen möchtest.
JNoelle
Beiträge: 16
Registriert: Do 26. Mai 2011, 11:27

Optionale Anzeige des Pegelstandes (z.B. Rhein)

Beitrag von JNoelle » Fr 28. Jun 2013, 10:11

Hallo zusammen,

in unserem Verein ist das Rudern ab einem Pegel von 7,50m untersagt.
Es wäre schön, wenn man den aktuellen Pegelstand (für Köln z.B. abrufbar
unter http://www.pegelonline.wsv.de/gast/stam ... nr=2730010)
ein EFA einblenden könnte, und ab einem Grenzwert eine Warnung ausgeben,
falls jemand versucht eine Fahrt zu beginnen.

Viele Grüße
Jens

nick
Beiträge: 1300
Registriert: Sa 10. Jul 2010, 11:45

Re: Optionale Anzeige des Pegelstandes (z.B. Rhein)

Beitrag von nick » Fr 28. Jun 2013, 16:15

Hallo Jens,

zu diesem Thema gibt es bereits einen Request for Enhancement. Eine solche Erweiterung ist geplant. (Zeitpunkt kann ich noch nicht versprechen.)

Danke & Gruß,
Nicolas

iww-martin
Beiträge: 266
Registriert: Fr 24. Feb 2012, 15:42
Wohnort: Itzehoe
Kontaktdaten:

Re: Optionale Anzeige des Pegelstandes (z.B. Rhein)

Beitrag von iww-martin » Sa 29. Jun 2013, 18:20

Hallo,

die Wasser- und Schifffahrtsverwaltung des Bundes bietet auf http://pegelonline.wsv.de/ eine ganze Reihe Möglichkeiten, Pegelstände abzurufen.

Den aktuellen Pegelstand Köln gibt es z.B. in JavaScript Object Notation (json) unter
http://www.pegelonline.wsv.de/webservic ... ement.json
mit Zeitangabe, Pegelstand und Trend.

Mit ein klein wenig Programmierung z.B. in php lässt sich mit dieser Datenquelle ein HTML-Widget auf dem Vereins-Web-Server realisieren, das in efa angezeigt werden kann. Eine Warnung kann dann im HTML-Widget realisiert werden. Da gibt es dann viele Gestaltungsmöglichgkeiten. Voraussetzung ist natürlich ein Internetzugang für den Bootshausrechner...

Hinweis; Man kann den Namen des Pegels im URL austauschen und so jeden verfügbaren Pegel (Namen siehe http://www.pegelonline.wsv.de/gast/pegelinformationen) abrufen.

Und wer so ein HTML-Widget programmiert hat, könnte Nick bitten, den Code auf http://efa.nmichael.de/ zum Herunterladen bereitzustellen. ;)

Viele Grüße
Martin

Itzehoer Wasser-Wanderer e.V.
Zuletzt geändert von iww-martin am So 30. Jun 2013, 12:37, insgesamt 1-mal geändert.

iww-martin
Beiträge: 266
Registriert: Fr 24. Feb 2012, 15:42
Wohnort: Itzehoe
Kontaktdaten:

So gehts: Anzeige des Pegelstandes (z.B. Rhein)

Beitrag von iww-martin » So 30. Jun 2013, 12:10

Hallo zusammen,

hier ein php-Skript, das den Pegelstand von pegelonline.wsv.de als json-Struktur zu einem Pegelnamen abruft, aufbereitet und als einfach formatiertes HTML ausgibt. Ich habe mal das Kölner Beispiel mit einem Wasserstand von 7,50 Metern als Standardauswahl gewählt. Das Skript wünscht entweder "Gute Fahrt!" oder es gibt die Warnung "HOCHWASSER Rudern verboten!" (in rot) aus. Wer will kann die Ausgabe mit einem roten Hintergrund, blinkender Schrift, Stoppschild o.ä. weiter aufhübschen:

Code: Alles auswählen

<?php
  // HTML-Widget für efa Bootshaus
  // Abruf und Anzeige aktueller Pegelstände von pegelonline.wsv.de
  //
  // Für die Anzeige einer Warnmeldung muss ein Parameter "max"
  // mit dem Pegelstand in Zentimetern übergeben werden (Beispiel: max=750).
  // Eine Warnmeldung wird angezeigt, wenn der aktuelle Pegelstand über dem Wert des übergebenen Parameters liegt. 
  
  // Pegelname und Pegelstand für Warnmeldung als Parameter übernehmen
  if (isset($_GET["name"]))
  {
    $pegelname = $_GET["name"];
    $pegelname = htmlspecialchars($pegelname);
  }
  else
    $pegelname = "KÖLN";
  
  if (isset($_GET["max"]))
  {
    $maxpegel = $_GET["max"];
    $maxpegel = htmlspecialchars($maxpegel);
  }
  else
    $maxpegel = "";
  
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>efa HTML Widget - Pegel <?php print utf8_decode($pegelname); ?></title>
</head>
<body>
<?php
  
  // Pegelinformation als json-Struktur abrufen...
  $url = "http://pegelonline.wsv.de/webservices/rest-api/v2/stations/".mb_convert_encoding($pegelname, "ISO-8859-1")."/W/currentmeasurement.json";
  $json = file_get_contents($url);
  $pegel = json_decode($json, TRUE);

  $nachricht = "Gute Fahrt!";
  
  // Warnhinweis in Abhängigkeit vom Wasserstand
  if (($maxpegel != "") and ($pegel["value"] >= $maxpegel))
  {
      $nachricht = "<font color="#ff0000">H O C H W A S S E R<br>rn";
      $nachricht = $nachricht."<b>RUDERN VERBOTEN!</b></font>";  
  } 
  // Trend
  switch ($pegel["trend"])
  {
    case -1:
	  $trend = "fallend";
	  break;
    case 0:
	  $trend = "gleichbleibend";
	  break;
    case 1:
	  $trend = "steigend";
	  break;
	default:
	  $trend = "k.A.";
	  break;
  }  
?>
  <center>  
  <font size="+1">Pegel</font><br>
  <font size="+2"><b><?php print utf8_decode($pegelname); ?></b></font><br>
  <font size="+1">Pegelstand <b><?php print number_format($pegel["value"]/100,2,",","."); ?></b> Meter</font><br>
  <font size="-1">Trend: <?php print $trend;?></font><br>
  <br>
  <font size="+1"><?php print $nachricht ?></font><br>
  <br>
  <font size="-1">letzte Aktualisierung<br>
  <?php print subStr($pegel["timestamp"],8,2).".".subStr($pegel["timestamp"],5,2).".".subStr($pegel["timestamp"],0,4)." - ".subStr($pegel["timestamp"],11,5);?> Uhr</font><br>
  <font size="-1">Quelle: pegelonline.wsv.de</font><br>
  </center>
</body>
</html>
[Hinweis: Skript geändert am 02. Juli 2013: Kodierung von Umlauten]

Eine Liste mit den Namen aller verfügbaren Pegel gibt es unter http://pegelonline.wsv.de/gast/pegelinformationen

Zum Ausprobieren könnt Ihr mal in dem folgenden Link die Parameterwerte für "namen" und "max" ändern (Angabe in Zentimetern) ...
http://www.itzehoer-wasser-wanderer.de/ ... LN&max=750
(Hinweis: URL wird hier im Forum nicht als Link angezeigt, wenn es KÖLN heißt. Es können im URL Umlaute verwendet werden...)

Da wir so eine Pegelanzeige selbst nicht brauchen, kann dieser Link zum Ausprobieren verwendet werden.
ACHTUNG: Wir übernehmen nicht das Hosting. Passt das Skript ggf. an, stellt es für den produktiven Einsatz in Eurem Bootshaus auf Euren eigenen Web-Server und lasst die Ausgabe als HTML-Widget anzeigen.
Macht was draus... ;)

Viele Grüße
Martin

Itzehoer Wasser-Wanderer e.V.
Zuletzt geändert von iww-martin am Do 24. Nov 2016, 22:15, insgesamt 3-mal geändert.

JNoelle
Beiträge: 16
Registriert: Do 26. Mai 2011, 11:27

Re: Optionale Anzeige des Pegelstandes (z.B. Rhein)

Beitrag von JNoelle » Mi 3. Jul 2013, 15:14

Vielen Dank - ich werde es ausprobieren.

Jens

ulzo
Beiträge: 105
Registriert: So 18. Jul 2010, 21:20

Re: Optionale Anzeige des Pegelstandes (z.B. Rhein)

Beitrag von ulzo » So 4. Aug 2013, 15:39

Hallo iww-martin,
schönes Script. Bei der Ausgabe auf dem Webserver kommt folgende Fehlermeldung:

Code: Alles auswählen

Warning: file_get_contents(http://pegelonline.wsv.de/webservices/rest-api/v2/stations/KÖLN/W/currentmeasurement.json) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/www/xxx/pegel.php on line 27
In Zeile 27 steht

Code: Alles auswählen

$json = file_get_contents($url);
Die Ausgabe von KÖLN sieht so aus K?LN. Eine Ahnung was da schief läuft?
Gruß
ulzo

iww-martin
Beiträge: 266
Registriert: Fr 24. Feb 2012, 15:42
Wohnort: Itzehoe
Kontaktdaten:

Re: Optionale Anzeige des Pegelstandes (z.B. Rhein)

Beitrag von iww-martin » So 4. Aug 2013, 21:21

Hallo Uzo,

...das hat mit der Zeichenkodierung des Umlauts zu tun. Dabei kommt nicht der richtige Dateiname heraus, so dass die .json-Datei nicht gefunden und geöffnet werden kann.

Versuch mal im Aufruf KÖLN als K%C3%96LN zu schreiben...

Viele Grüße
Martin

Itzehoer Wasser-Wanderer e.V.

geändert am 05.08.2013: Tippfehler beseitigt.
Zuletzt geändert von iww-martin am Mo 5. Aug 2013, 10:29, insgesamt 1-mal geändert.

ulzo
Beiträge: 105
Registriert: So 18. Jul 2010, 21:20

Re: Optionale Anzeige des Pegelstandes (z.B. Rhein)

Beitrag von ulzo » So 4. Aug 2013, 22:16

iww-martin hat geschrieben:Hallo Uzo,

...das hat mit der Zeichenkodierung des Umlauts zu tun. Dabei kommt nicht der richtige Dateiname heraus, so dass die .json-Datei nicht gefunden und geöffnet werden kann.

Versuch mal im Aufruf KÖLN als K%C3%96N zu schreiben...

Viele Grüße
Martin

Itzehoer Wasser-Wanderer e.V.
Hallo Martin,
hab ich gemacht. Die Fehlermeldung bleibt die gleiche.

Code: Alles auswählen

Warning: file_get_contents(http://pegelonline.wsv.de/webservices/rest-api/v2/stations/K%C3%96N/W/currentmeasurement.json) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/www/xxx/pegel.php on line 27
Die weitere Ausgabe sieht so aus:
Dateianhänge
snip.png
Serverausgabe
snip.png (2.87 KiB) 21731 mal betrachtet
Gruß
ulzo

iww-martin
Beiträge: 266
Registriert: Fr 24. Feb 2012, 15:42
Wohnort: Itzehoe
Kontaktdaten:

Re: Optionale Anzeige des Pegelstandes (z.B. Rhein)

Beitrag von iww-martin » Mo 5. Aug 2013, 10:28

Hallo Ulzo,

sorry, Tippfehler. Es muss natürlich K%C3%96LN (mit L) heißen...

Viele Grüße
Martin
Itzehoer Wasser-Wanderer e.V.

ulzo
Beiträge: 105
Registriert: So 18. Jul 2010, 21:20

Re: Optionale Anzeige des Pegelstandes (z.B. Rhein)

Beitrag von ulzo » Mo 5. Aug 2013, 15:59

iww-martin hat geschrieben:Hallo Ulzo,

sorry, Tippfehler. Es muss natürlich K%C3%96LN (mit L) heißen...

Viele Grüße
Martin
Itzehoer Wasser-Wanderer e.V.

Hallo Martin, kann ja passieren, das Ding mit dem Tippfehler. Leider ist die Augabe immer noch nicht korrekt, wenn auch jetzt die Fehlermeldung weg ist. Hast du eine eine Idee, was jetzt noch faul ist?
Dateianhänge
snip.png
snip.png (2.99 KiB) 21722 mal betrachtet
Gruß
ulzo

Antworten