Oregon WMRS 200USB - Trendanzeige

Hallo,

ich versuche seit einiger Zeit die Wettervorhersage der WMRS200 in IPS zubekommen. Bislang leider ohne Erfolg.

Wo gibt es eine Aufschlüsselung der Trend-Werte aus den einzelnen *.csv Dateien aus dem WeatherStation\Daten Verzeichnis?

Dort steht z.B. TemperatureTrend 0, Humidity Trend 2 ???

Klar kann man auch „nur“ die Wettervorhersage vom DWD nutzen, aber dann brauche ich nicht eine so große Station.

Warum klemmst du die gute Station nicht direkt an IP-Symcon?

paresy

Wie meinst du das?
Ich habe im IPS die einzelnen Sensoren als Instanzen hinzugefügt.
Dort werden aber „nur“ die Messwerte angezeigt, nicht aber die Trends.

Nach IP-Symcon werden nur die aktuellen Werte übermittelt, nicht die Tendenzen und auch nicht die Mittelwerte über verschiedene Zeiträume.

Hallo zusammen,

da ich die lokalen Werte der eigenen Wetterstation auch wichtig habe ich mal die Datenschlüssel gesucht und mir ein Script für den Import zu IPS gebastelt. Da ich noch nicht all zu viel Erfahrung in php habe kann man sicherlich das eine oder andere noch verbessern. Vorschläge nehme ich gerne an.

Mein Vorgehen:

[ol]
[li]für alle gewünschten Werte Variablen in IPS angelegt
[/li][li]Script erstellt (es müssen nur die Variablen IDs und ggf. der Pfad zum Weather OS Software geändert werden)
[/li][li]Variablen Profile erstellen
[/li][ul]
[li]Weather Status (0:partly cloudy; 1:Rain; 2:cloudy; 3:sunny; 4:clear night; 5:snowy; 6 partly cloudy at night)
[/li][li]Trend (0: stable; 1:rising; 2:falling)
[/li][/ul]
[li]Timer für das Script erstellen (aktuell lasse ich es alle 5min laufen)
[/li][/ol]

<?

 //WeatherOS Dateien einlesen
 
$path = "C:\Program Files (x86)\Oregon Scientific\Weather OS\DATA" ;//Pfad zum Data Ordner

$Wstatus = ;//Weather status
$Trendp = ;//Pressure Trend
$TrendT = ;//Temperature Trend
$MinT = ;//Min T
$MaxT = ;//Max T
$AvT = ;//Averrage T
$MinH = ;//Min H
$MaxH = ;//Max H
$AvH = ;//Average H
$TrendH = ;//Humidty Trend
$Comfort = ;//Comfort Zone
$Tempg = ;//gefühlte Temperatur

$TimeWind = ;
$TimeBaro =;
$TimeTH = ;
$TimeTHall = ;

//BARO file (1day)
$file = $path ."\BARO\\1day.csv"; // Datei festlegen (1day)
echo $file ."
";
if(file_exists ($file)) // Wenn Datei existiert
{
	$zeilen = File($file); // jede Zeile in Array
	$data = explode(",", $zeilen[0]); //Daten trennen (,)
	list($jahr, $monat, $tag) = explode("-", $data[0]);
   list($stunde, $minute) = explode(":", $data[1]);
   $Timestamp = mktime($stunde, $minute, 0, $monat, $tag, $jahr);
   SetValue($TimeBaro, date("d.m.Y", $Timestamp)." ".date("H:i:s", $Timestamp));
//	echo sizeof($data);
//	echo "
" .$data[4];
	SetValue($Trendp, $data[4]);
	SetValue($Wstatus, $data[5]);
}

//WIND file
$file = $path ."\WIND\\1day.csv"; // Datei festlegen (1day)
echo $file ."
";
if(file_exists ($file)) // Wenn Datei existiert
{
	$zeilen = File($file); // jede Zeile in Array
	$data = explode(",", $zeilen[0]); //Daten trennen (,)
	list($jahr, $monat, $tag) = explode("-", $data[0]);
   list($stunde, $minute) = explode(":", $data[1]);
   $Timestamp = mktime($stunde, $minute, 0, $monat, $tag, $jahr);
   SetValue($TimeWind, date("d.m.Y", $Timestamp)." ".date("H:i:s", $Timestamp));
//	echo sizeof($data);
//	echo "
" .$data[5];
	If($data[5]="NA")
		SetValue($Tempg, -100);
	else
		SetValue($Tempg, floatval($data[5]));
}

//Temperatur (Außen)
$file = $path ."\TH\\sensor1-1day.csv"; // Datei festlegen (1day)
echo $file ."
";
if(file_exists ($file)) // Wenn Datei existiert
{
	$zeilen = File($file); // jede Zeile in Array
	$data = explode(",", $zeilen[0]); //Daten trennen (,)
	list($jahr, $monat, $tag) = explode("-", $data[0]);
   list($stunde, $minute) = explode(":", $data[1]);
   $Timestamp = mktime($stunde, $minute, 0, $monat, $tag, $jahr);
   SetValue($TimeTH, date("d.m.Y", $Timestamp)." ".date("H:i:s", $Timestamp));
//	echo sizeof($data);
//	echo "
" .$data[2];
	SetValue($TrendT, $data[2]);
	SetValue($TrendH, $data[5]);
	SetValue($Comfort, $data[6]);
}

//Temperatur (Außen)
$file = $path ."\TH\\sensor1-all.csv"; // Datei festlegen (all)
echo $file ."
";
if(file_exists ($file)) // Wenn Datei existiert
{
	$zeilen = File($file); // jede Zeile in Array
	$last = sizeof($zeilen);
	$last = $last-1;
//	echo $last ."
";
	$data = explode(",", $zeilen[$last]); //Daten trennen (,)
	list($jahr, $monat, $tag) = explode("-", $data[0]);
   list($stunde, $minute) = explode(":", $data[1]);
   $Timestamp = mktime($stunde, $minute, 0, $monat, $tag, $jahr);
   SetValue($TimeTHall, date("d.m.Y", $Timestamp)." ".date("H:i:s", $Timestamp));
//	echo sizeof($data);
//	echo "
" .$data[2];
	SetValue($MinT, floatval($data[2]));
	SetValue($MaxT, floatval($data[3]));
	SetValue($AvT, floatval($data[4]));
	SetValue($MinH, $data[5]);
	SetValue($MaxH, $data[6]);
	SetValue($AvH, $data[7]);
}
?>

Zuätzlich habe ich noch ein Script erstellt, welches den Link und Batterie Status importiert. Vorgehen analog wie oben, wobei 1=low und 0=ok bedeutet:


<?

//WeatherOS Dateien einlesen

$path = "C:\Program Files (x86)\Oregon Scientific\Weather OS\DATA" ;//Pfad zum Data Ordner

//Battery Variables
$Bch1 = ;
$Buv1 = ;
$Bwind = ;
$Brain = ;

//Link Variables
$Lch1 = ;
$Luv1 = ;
$Lwind = ;
$Lrain = ;



//SENSOR Datei
$file = $path ."\SENSOR\\all.csv"; // Datei festlegen (all)
echo $file ."
";

if(file_exists ($file)) // Wenn Datei existiert
{
	$zeilen = File($file); // jede Zeile in Array
	$last = sizeof($zeilen);
	$last = $last-1;
//	echo $last ."
";
	$data = explode(",", $zeilen[$last]); //Daten trennen (,)
//	echo sizeof($data);
//	echo "
" .$data[2];
	SetValue($Bch1, $data[18]);
	SetValue($Buv1, $data[28]);
	SetValue($Bwind, $data[31]);
	SetValue($Brain, $data[32]);
	SetValue($Lch1, $data[2]);
	SetValue($Luv1, $data[12]);
	SetValue($Lwind, $data[15]);
	SetValue($Lrain, $data[16]);
}
?>