Technik

 

Wetterstation

Typ:

in Betrieb seit:

Außensensoren:












Innensensoren:




 

ELV WS-500 / 2

April 2006

Kombisensor KS 500
- Luftfeuchte
- Regenbeginn
- Regenmenge
- Sonnenscheindauer
- Temperatur
- Windgeschwindigkeit
- Windrichtung
Dieser Sensor  wird ohne  Regenmesserheizung betrieben. Bei Frost anfallende Niederschläge werden deshalb erst nach einsetzendem Tauwetter erfasst.

(- Innentemperatur)
- Luftdruck
(- Luftfeuchte Innen)

PC-Anbindung : USB
 

Basisstation WS-500 / 2
Basisstation WS-500 / 2

Auswertung

PC
(lüfterlos)




Software


Anbindung Station



 

Mini-PC (Nettop-PC) auf Basis
Intel D945GSEJT
1 GB RAM,
160 GB HDD (24/7)
externes 12 V - Netzteil 60 W

WS-Logger
WSWin32

USB-Verlängerung (aktiv) 5m



 

Wetter-PC (geöffnet)
Wetter-PC (geöffnet)

Beschriebene Software und PC-Technik im Einsatz seit 12. / 13. März 2010.
Verwendete Software im Zeitraum zwischen 2006 und März 2010: Sun&Rain 4.0;  Weather Professional 1.54.
 

serverseitige Auswertung

Die hier beschriebene Wetterstation kann durch die Auswertesoftware WsWin nicht direkt ausgelesen werden. Dazu wird das Programm WS-Logger von S.Brauer benötigt, dass die Meßwerte der einzelnen Sensoren in eine CSV-Datei schreibt, die von WsWin im Modus “Dateiüberwachung” ausgelesen und ausgewertet wird.
Im Modus Dateiüberwachung besteht bisher keine Möglichkeit, den online-Status der Wetterstation festzustellen.

Der Autor umgeht diese Einschränkung durch die serverseitige Überwachung folgender Bedingungen:
- sind die auf dem Server abgelegten Daten älter als das übliche Aktualisierungsintervall?
- liefern die zur Auswertung genutzten Sensoren im vorgegebenen Zeitraum neue Daten?

Um diese Bedingungen leichter prüfen zu können, muss von WsWin ein weiteres Customfile abgearbeitet und auf den Server geladen werden. Diese Datei enthält nur die Angaben von Meßwertänderungen mehrerer (Außen-) Sensoren. Je mehr Sensoren überwacht werden, desto geringer ist die Gefahr einer falschen Statusermittlung.

Folgende Textdatei wird WsWin zur Verfügung gestellt. Diese enthält im vorgestellten Fall die Wertänderungen (tempchange / valuechange) der letzten 15, 30, 45 und 60 Minuten der Sensoren 2 (Temperatur), 35 (Windgeschwindigkeit), 36 (Windrichtung) und 37 (Sonnenscheindauer). Die gewählten Zeitdauern und Sensoren sind Festlegungen des Autors.
 

statusws.txt

status.txt

<!-- %customfile=status.txt% -->
%tempchange[2]=15% ;
%tempchange[2]=30% ;
%tempchange[2]=45% ;
%tempchange[2]=60% ;
%valuechange[35]=15% ;
%valuechange[35]=30% ;
%valuechange[35]=45% ;
%valuechange[35]=60% ;
%valuechange[36]=15% ;
%valuechange[36]=30% ;
%valuechange[36]=45% ;
%valuechange[36]=60% ;
%valuechange[37]=15% ;
%valuechange[37]=30% ;
%valuechange[37]=45% ;
%valuechange[37]=60% ;

WsWin erzeugt aus dieser Datei eine Datei mit dem Namen status.txt und füllt die Variablen mit den entsprechenden Werten.
Der Inhalt dieser Datei gleicht der Darstellung rechts.

-0,1 °C ;
-0,2 °C ;
-0,2 °C ;
-0,2 °C ;
-1,2 km/h ;
-1,8 km/h ;
+0,8 km/h ;
-0,6 km/h ;
+10 ° ;
+330 ° ;
+335 ° ;
+320 ° ;
0 min ;
0 min ;
0 min ;
0 min ;


Nach dem Hochladen per ftp steht die Datei status.txt auf dem Webserver zur Verfügung.
Beim Aufruf der Wetterseite wird nun eine php-Datei abgearbeitet, die das Dateialter der Datei status.txt ermittelt, den Inhalt zeilenweise ausliest, alle Zahlen extrahiert und prüft.
Ist wenigstens ein Zahlenwert der Datei status.txt ungleich Null und ist das Dateialter kleiner als das übliche Aktualisierungsintervall, kann davon ausgegangen werden, dass die Station korrekt arbeitet und aktuelle Daten auf dem Webserver vorliegen. Sind alle Werte gleich Null oder ist die Datei älter als die Dauer eines Aktualisierungsintervalls,  besteht eine sehr hohe Wahrscheinlichkeit, dass die Station offline ist.
Entsprechend dem festgestellten Status erfolgt eine Rückantwort des Scriptes (im vorliegenden Fall durch Ausgabe eines gif-Bildes).
 

status.php

<?php
// H.Stolze; www.kyffnet.de

function SOnline($Status){
 if ($Status == "true") {
  echo "<img src='online.gif'
  alt='online'
  title='Die Wetterstation ist online'>";                                                                //true == Station ist online, Daten sind aktuell
  }
 else
  {
  echo "<img src='offline.gif'
  alt='offline'
  title='Die Wetterstation ist vorübergehend außer Betrieb'>";                      //false == Station offline
  }
}

function dateiauslesen($datei){
 $fp = @fopen($datei, "r") or die ("Kann Datei nicht lesen.");                        //Datei öffnen
 $Status = "false";                                                                                                   //Station offline setzen
 $regex ='/[^0-9]/';                                                                                                    //Filter setzen (Zahlen von 0 bis 9)
  while($line = fgets($fp, 1024)){                                                                         //zeilenweise lesen
   $line = preg_replace ($regex,'',$line);                                                             //Zahlen herausfiltern (siehe regex)
   preg_match("/\d+/",$line[0],$zerlegen);                                                          //1.Zahl (vor Komma) extrahieren
   if ($zerlegen[0] != 0) {                                                                                         //Wert ungleich 0 --> online, Schleife verlassen
      $Status = "true";
      break;
   }
   preg_match("/\d+/",$line[1],$zerlegen1);                                                       //Nachkommazahl extrahieren
   if ($zerlegen1[0] != 0) {                                                                                      //Wert ungleich 0 --> online, Schleife verlassen
      $Status = "true";
      break;
   }
 }
 fclose($fp);                                                                                                             //datei schliessen
 SOnline($Status);                                                                                                 //ermittelten Status übergeben
}

function dateidatum($datei){
  if (file_exists($datei))                                                                                          //Datei vorhanden?
   {
    $Alter = time() - filemtime($datei);                                                                 //Alter der Datei ermitteln
    if ($Alter > 1200) {SOnline(false);} else dateiauslesen($datei);             //älter als 20 Minuten --> offline, sonst Datensatz prüfen
  }
  else echo "Fehler!";                                                                                            //Datei existiert nicht
}

echo dateidatum("status.txt");                                                                            //Aufruf Alter der Datei status.txt ermitteln
?>


Die Dateien status.txt und status.php (und die Grafiken online.gif und offline.gif) befinden auf dem Webserver in dem Verzeichnis, in dem alle WsWin-Daten mit aktuellen Wetterdaten abgelegt werden. Ein Aufruf der Datei status.php erfolgt an gewünschter Stelle der Website z. B. per iFrame oder php-include.

Die hier gezeigte Vorgehensweise kann bei Interesse gerne genutzt, verbessert oder den eigenen Bedürfnissen angepasst werden.
Bei Nutzung des kleinen Scriptes und dieser Vorgehensweise wäre ein Link zu kyffnet.de eine nette Geste.
 

Linkcode (Bsp.)

<a href="http://www.kyffnet.de" target="_blank"  title="Willkommen am Kyffhäuser">Kyffhäuser</a>

Diese Seite weitersagen über
Facebook Twitter Google+ WhatsApp E-Mail
 

kyffnet.de © H.Stolze