Eldstad Wetterstation (Wifi EW 001)  (Gelesen 24687 mal)

Offline leknilk0815

  • Allgemeiner Moderator
    • http://www.antonhofer.de/wetter/ws300wswin/html/custom.html
  • Registriert:
    14.06.2006, 12:06:21
  • Beiträge: 10.039
  • Ort:
    Wackersberg, 661m / NN
Re: Eldstad Wetterstation (Wifi EW 001)
Antwort #100 am: 09.12.2014, 13:48:28
Da vermute ich eher, das das am Einsatz von NiMh-Akkus liegt. Bei einer Reihenschaltung von 3 Stück fehlen da immerhin schon 9V gegenüber den RAM-Zellen.
...willst Du das so stehen lassen?
Zitat
Und die winzige Solarfläche wird sicherlich nicht genug Power haben um den Ladezustand der Akkus einigermaßen zu erhalten.
Doch, hat sie locker. Die RAM's erhalten sich ja auch (normalerweise...)
Gruß - Toni

KS300+WS444PC (WSL/WSWIN)+Windrichtung+Sonnenschein, CCU2, KS550, KS888

Wetterstationen.info Forum

Re: Eldstad Wetterstation (Wifi EW 001)
« Antwort #100 am: 09.12.2014, 13:48:28 »

Offline habus

    • Wetter in Teltow
    • Männlich
  • Registriert:
    06.07.2014, 20:18:29
  • Beiträge: 52
  • Ort:
    Teltow
  • Station:
    Eldstad Wifi EW 001
Re: Eldstad Wetterstation (Wifi EW 001)
Antwort #101 am: 09.12.2014, 13:51:29
Sorry, 0,9V natürlich... :D

Offline habus

    • Wetter in Teltow
    • Männlich
  • Registriert:
    06.07.2014, 20:18:29
  • Beiträge: 52
  • Ort:
    Teltow
  • Station:
    Eldstad Wifi EW 001
Re: Eldstad Wetterstation (Wifi EW 001)
Antwort #102 am: 19.12.2014, 14:01:53
Mal ne andere Frage:

Obwohl meine Wetterstation ärgerlicherweise schon wieder abgeschmiert ist, das letzte Tauschgerät hatte einen USB-Anschluß. Weiß jemand, was man damit anfangen kann?

Gruß Habus

Offline 24Online

    • Wetter Berlin, Schulzendorf, IBerlinB43
    • Männlich
  • Registriert:
    26.12.2013, 23:43:11
  • Beiträge: 86
  • Ort:
    Berlin
  • geogr. Position:
    52.6°/ 13.2° (121ft)
  • Station:
    HP1000
Re: Eldstad Wetterstation (Wifi EW 001)
Antwort #103 am: 13.03.2015, 19:01:45
Hallo, da dieser Thread nun in Richtung AA-Akkus "abgedriftet ist, ist denn der Ursprung geklärt? Ich könnte noch die XML-Erstellung zu meinen Skriptschnipsel liefern.
Ist man in kleinen Dingen nicht geduldig, bringt man die großen Vorhaben zum Scheitern.

http://wetter.mxberlin.de (Berlin, Schulzendorf)
http://wetter.mxberlin.de/technik.php (HP1000)
http://www.owsd-format.de

Offline habus

    • Wetter in Teltow
    • Männlich
  • Registriert:
    06.07.2014, 20:18:29
  • Beiträge: 52
  • Ort:
    Teltow
  • Station:
    Eldstad Wifi EW 001
Re: Eldstad Wetterstation (Wifi EW 001)
Antwort #104 am: 14.03.2015, 00:10:07
Öhm... warum machst Du es nicht einfach? ;)

Wetterstationen.info Forum

Re: Eldstad Wetterstation (Wifi EW 001)
« Antwort #104 am: 14.03.2015, 00:10:07 »

Offline 24Online

    • Wetter Berlin, Schulzendorf, IBerlinB43
    • Männlich
  • Registriert:
    26.12.2013, 23:43:11
  • Beiträge: 86
  • Ort:
    Berlin
  • geogr. Position:
    52.6°/ 13.2° (121ft)
  • Station:
    HP1000
Re: Eldstad Wetterstation (Wifi EW 001)
Antwort #105 am: 14.03.2015, 10:15:54
Ja, da hast Du sicher recht. :D :D :D Also hierzu aber noch kurz eine Info:

Meine HP1000 schreibt (per Konfiguration) in eine updateweatherstation.php auf einem lokal betriebenen Server. Um die Daten auch zu wunderground zu bekommen, habe ich meine lokale updateweatherstation.php um diese Funktion erweitert. Das Resultat meiner updateweatherstation.php ist demnach ein lokale XML-Datei (daten.xml) mit den Datenformaten wie ich sie gerne hätte zur Weiterverarbeitung und die Aktualisierung der Wunderground Seite.

updateweatherstation.php
<?php 
// Wetterdatenübernahme HP1000, Autor: Joachim Bieniak
// Version 0.7

// Variablen der PWS aufnehmen
$ID urlencode($_GET["ID"]);
$PASSWORD urlencode($_GET["PASSWORD"]);
$indoortempf $_GET["indoortempf"];
$tempf $_GET["tempf"];
$dewptf $_GET["dewptf"];
$windchillf $_GET["windchillf"];
$indoorhumidity $_GET["indoorhumidity"];
$humidity $_GET["humidity"];
$windspeedmph $_GET["windspeedmph"];
$windgustmph $_GET["windgustmph"];
$winddir $_GET["winddir"];
$absbaromin $_GET["absbaromin"];
$baromin $_GET["baromin"];
$rainin $_GET["rainin"];
$dailyrainin $_GET["dailyrainin"];
$weeklyrainin $_GET["weeklyrainin"];
$monthlyrainin $_GET["monthlyrainin"];
$yearlyrainin $_GET["yearlyrainin"];
$solarradiation $_GET["solarradiation"];
$UV $_GET["UV"];
$dateutc =  urlencode($_GET["dateutc"]);
$softwaretype $_GET["softwaretype"];
$action urlencode($_GET["action"]);
$realtime $_GET["realtime"];
$rtfreq $_GET["rtfreq"];

// Aktuelles Datum und Uhrzeit ermitteln
$timestamp time();
$datum date("d.m.Y",$timestamp);
$uhrzeit date("H:i:s",$timestamp);
$tage = array("Sonntag""Montag""Dienstag""Mittwoch""Donnerstag""Freitag""Samstag");
$tag date("w");
$utcdate date("Y-m-d",$timestamp);
$now $utcdate."T".$uhrzeit;
    
// Umrechnung Lufttemperatur von F in C
$tempc = ($tempf 32) * (5/9);
$tempc round($tempc1);

//Umrechnung Taupunkt von F in C
$dewptc = ($dewptf 32) * (5/9);
$dewptc round($dewptc1);

//Umrechnung Windchill von F in C
$wct_c = ($windchillf 32) * (5/9);
$wct_c round($wct_c1);

//Umrechnung Inndoortemp von F in C
$indoortemp_c = ($indoortempf 32) * (5/9);
$indoortemp_c round($indoortemp_c1);

//Umrechnung Rel. Luftdruck von inHG in hPA
$relpres = ($baromin 33.862);
$relpres round($relpres1);

//Umrechnung Abs. Luftdruck von inHG in hPA
$abspres = ($absbaromin 33.862);
$abspres round($abspres1);    
    
settype($wind_gust_mph,"float");
    
//Umrechnung Windgeschwindigkeit von mph zu kmh
$windkmh = ($windspeedmph 1.6);
settype($windkmh,"float");
$windkmh round($windkmh1);

//Umrechnung Windboeengeschwindigkeit von mph zu kmh
$windgustkmh = ($windgustmph 1.6);
settype($windgustkmh,"float");
$windgustkmh round($windgustkmh1);

//Umrechnung Niederschlag Stunde
$rain = ($rainin 25.4);
$rain round($rain2);

//Umrechnung Niederschlag Tag
$raind = ($dailyrainin 25.4);
$raind round($raind1);

//Umrechnung Niederschlag Woche
$rainw = ($weeklyrainin 25.4);
$rainw round($rainw1);

//Umrechnung Niederschlag Monat
$rainm = ($monthlyrainin 25.4);
$rainm round($rainm1);

//Umrechnung Niederschlag Jahr
$rainj = ($yearlyrainin 25.4);
$rainj round($rainj1);

// Funktion zum Errechnen der Beaufort-Werte der derzeitigen Windgeschwindigkeit
    
    
function kmh2bft($windkmh)
    {
        
$val round($windkmh);
        if(
$val >  117)    {$bft 12;}
        if(
$val <= 117)    {$bft 11;}
        if(
$val <  103)    {$bft 10;}
        if(
$val <  89)     {$bft 9;}
        if(
$val <  75)     {$bft 8;}
        if(
$val <  62)     {$bft 7;}
        if(
$val <  50)     {$bft 6;}
        if(
$val <  39)     {$bft 5;}
        if(
$val <  29)     {$bft 4;}
        if(
$val <  20)     {$bft 3;}
        if(
$val <  12)     {$bft 2;}
        if(
$val <  6)      {$bft 1;}
        if(
$val <  3)      {$bft 0;}
    return 
$bft;
    } 
    
// Funktion zum Errechnen der Beaufort-Werte der derzeitigen Windböen
    
      
function kmhgust2bft($windgustkmh)
    {
        
$valgust round($windgustkmh);
        if(
$valgust >  117)    {$bftgust 12;}
        if(
$valgust <= 117)    {$bftgust 11;}
        if(
$valgust <  103)    {$bftgust 10;}
        if(
$valgust <  89)     {$bftgust 9;}
        if(
$valgust <  75)     {$bftgust 8;}
        if(
$valgust <  62)     {$bftgust 7;}
        if(
$valgust <  50)     {$bftgust 6;}
        if(
$valgust <  39)     {$bftgust 5;}
        if(
$valgust <  29)     {$bftgust 4;}
        if(
$valgust <  20)     {$bftgust 3;}
        if(
$valgust <  12)     {$bftgust 2;}
        if(
$valgust <  6)      {$bftgust 1;}
        if(
$valgust <  3)      {$bftgust 0;}
    return 
$bftgust;
    } 
    
// Array zur Zuweisung Werte zu Beaufort-Beschreibung
    
    
$bfttext = array(
    
'12' => "Orkan",
    
'11' => "orkanartiger Sturm",
    
'10' => "schwerer Sturm",
    
'9'  => "Sturm",
    
'8'  => "st&uuml;rmischer Wind",
    
'7'  => "steifer Wind",
    
'6'  => "starker Wind",
    
'5'  => "frische Brise",
    
'4'  => "m&auml;&szlig;ige Brise",
    
'3'  => "schwache Brise",
    
'2'  => "leichte Brise",
    
'1'  => "leiser Zug",
    
'0'  => "still");
// Ermittlung Beaufort Werte und Beschreibungen    
$windbft kmh2bft($windkmh);
$gustbft kmhgust2bft($windgustkmh);
$windbfttext $bfttext[kmh2bft($windkmh)];
$gustbfttext $bfttext[kmh2bft($windgustkmh)];

// Ermittlung UV-Index Beschreibung
if ($UV <= 2
    {
    
$uvtext "Niedrig";
    }
    if (
$uv >= AND $uv <= 5)    
    {
    
$uvtext "Mittel";
    }
    if (
$uv >= AND $uv <= 7)  
    {
    
$uvtext "Hoch";
    }
    if (
$uv >= AND $uv <= 10
    {
        
$uvtext "Sehr hoch";
    }
    if (
$uv >= 11
    {
    
$uvtext "Extrem";    
    }
    
// Ermitteln Sonnenaufgang, Sonnenuntergang    
$gmt_offset 1
$zenith=90+50/60
$sunset date_sunset($timestampSUNFUNCS_RET_TIMESTAMP52.61093513.243770$zenith$gmt_offset); 
$sunrisedate_sunrise($timestampSUNFUNCS_RET_TIMESTAMP52.61093513.243770$zenith$gmt_offset); 
$sunset date("H:i",$sunset);
$sunrise date("H:i",$sunrise);

// Ermitteln der Mondphase
$ursprung mktime(18,31,18,12,22,1999); 
$akt_date time(); 
define('ZYCLUS'floor(29.530588861 86400)); 
$mondphase round(((($akt_date $ursprung) / ZYCLUS) - floor(($akt_date $ursprung) / ZYCLUS)) * 1000); 

// $mondphasen_img = round(($mondphase /50),1) *50; 
// if ($mondphasen_img == 100) $mondphasen_img == 0; 

if ($mondphase <= || $mondphase >= 99 $phase_text 'Vollmond'
elseif (
$mondphase && $mondphase 49$phase_text 'abnehmender Mond'
elseif (
$mondphase >= 49 && $mondphase <= 51$phase_text 'Neumond'
else 
$phase_text 'zunehmender Mond'

// Ermittlung Windrichtungen kurz und lang

function getWindDirShortName($wd1)
    {
        
$WindDirShortNames = array("N""NNO""NO""ONO""O""OSO""SO""SSO""S""SSW""SW""WSW""W""WNW""NW""NNW");
        
$WindDirShortName $WindDirShortNames[(int)(round($wd1 22.5))];

        return 
$WindDirShortName;
    }
    
function 
getWindDirLongName($wd2)
    {
        
$WindDirLongNames = array("NORD""NORDNORDOST""NORDOST""OSTNORDOST""OST""OSTSUEDOST""SUEDOST""SUEDSUEDOST""SUED""SUEDSUEDWEST""SUEDWEST""WESTSUEDWEST""WEST""WESTNORDWEST""NORDWEST""NORDNORDWEST");
        
$WindDirLongName $WindDirLongNames[(int)(round($wd2 22.5))];

        return 
$WindDirLongName;
    }

$winddirkurz getWindDirShortName($winddir);
$winddirlang getWindDirLongName ($winddir);


$solarradiation round($solarradiation0);
    
//XML-Datei Schreiben
if(!$xmlw=simplexml_load_file('daten.xml')){
        
trigger_error('Error reading XML file',E_USER_ERROR);
}


$xmlw->sektion02->gruppe02->date_time $now;
$xmlw->sektion02->gruppe02->date $datum;
$xmlw->sektion02->gruppe02->time $uhrzeit;
$xmlw->sektion02->gruppe03->temp_air_2m_0_c $tempc;
$xmlw->sektion02->gruppe03->temp_dewpoint_c $dewptc;
$xmlw->sektion02->gruppe03->temp_wct_c $wct_c
$xmlw->sektion02->gruppe04->humidity $humidity;
$xmlw->sektion02->gruppe04->baromin $relpres;
$xmlw->sektion02->gruppe04->absbaromin $abspres;
$xmlw->sektion02->gruppe05->windspeed $windkmh;
$xmlw->sektion02->gruppe05->windbft $windbft;
$xmlw->sektion02->gruppe05->windbfttxt =$windbfttext;
$xmlw->sektion02->gruppe05->windgust $windgustkmh;
$xmlw->sektion02->gruppe05->gustbft $gustbft;
$xmlw->sektion02->gruppe05->gustbfttxt =$gustbfttext;
$xmlw->sektion02->gruppe05->winddir $winddir;
$xmlw->sektion02->gruppe06->rainin $rain
$xmlw->sektion02->gruppe06->dailyrainin $raind
$xmlw->sektion02->gruppe06->weeklyrainin $rainw;
$xmlw->sektion02->gruppe06->monthlyrainin $rainm;
$xmlw->sektion02->gruppe06->yearlyrainin $rainj;
$xmlw->sektion02->gruppe08->solar_radiation_0 $solarradiation
$xmlw->sektion02->gruppe08->uvi_0 $UV;
$xmlw->sektion02->gruppe08->uvi_txt $uvtext;
$xmlw->sektion02->gruppe99->indoortemp_c $indoortemp_c
$xmlw->sektion02->gruppe99->indoorhumidity $indoorhumidity
$xmlw->sektion02->gruppe99->sunset $sunset;
$xmlw->sektion02->gruppe99->sunrise $sunrise;
$xmlw->sektion02->gruppe99->mondphase $phase_text;
$xmlw->sektion02->gruppe99->winddirkurz $winddirkurz;
$xmlw->sektion02->gruppe99->winddirlang $winddirlang;

$handle fopen("daten.xml""wb"); 
fwrite($handle$xmlw->asXML());

fclose($handle);


// www.wunderground.com updaten
$url fopen("http://weatherstation.wunderground.com/weatherstation/updateweatherstation.php?ID=$ID&PASSWORD=$PASSWORD&action=$action&dateutc=$dateutc&tempf=$tempf&dewptf=$dewptf&humidity=$humidity&winddir=$winddir&windspeedmph=$windspeedmph&windgustmph=$windgustmph&UV=$UV&solarradiation=$solarradiation&baromin=$baromin&rainin=$rainin&dailyrainin=$dailyrainin&realtime=$realtime""r");
fclose($url);


echo 
"success";

?>


Die xml-Datei sieht dann so aus:

<?xml version="1.0" encoding="utf-8"?>
<data>
    <sektion01>
        <gruppe00>
            <data_format>OWSD-Format</data_format>
            <data_format_v>V0.0.1</data_format_v>
            <data_format_url>http://www.owsd-format.de</data_format_url>
            <data_format_language>DE</data_format_language>
        </gruppe00>
        <gruppe01>
            <station_id>IBERLINB43</station_id>
            <register>Wunderground</register>
            <station_url>http://www.example.org</station_url>
            <station_mail>ID@example.org</station_mail>
            <station_hw>Fine Offset HP1000</station_hw>
            <station_sw>V1.1.1</station_sw>
            <location>Berlin - Schulzendorf </location>
            <country>Deutschland</country>
            <city>Berlin</city>
            <country_code>DE</country_code>
            <pws_timezone>UTC+1</pws_timezone>
            <longitude>52.610935</longitude>
            <latitude>13.243770</latitude>
            <altitude_m>36.88</altitude_m>
            <altitude_f>121</altitude_f>   
        </gruppe01>
        <gruppe11>
            <operator_nickname_0>Nickname</operator_nickname_0>
            <operator_name_0>vorname Nachname</operator_name_0>
            <operator_mail_0>user@example.org</operator_mail_0>
        </gruppe11>
    </sektion01>
    <sektion02>
        <gruppe02>
            <date_time>2015-03-14T10:02:35</date_time>
            <date>14.03.2015</date>
            <time>10:02:35</time>
        </gruppe02>
        <gruppe03>
            <temp_air_2m_0_c>3.6</temp_air_2m_0_c>     
            <temp_dewpoint_c>2.4</temp_dewpoint_c>
            <temp_wct_c>3.6</temp_wct_c>
        </gruppe03>
        <gruppe04>
            <humidity>92</humidity>
            <baromin>1030.1</baromin>
            <absbaromin>1026.7</absbaromin>
        </gruppe04>
        <gruppe05>
            <windspeed>0</windspeed>
            <windbft>0</windbft>
            <windbfttxt>still</windbfttxt>
            <windgust>0</windgust>
            <gustbft>0</gustbft>
            <gustbfttxt>still</gustbfttxt>
            <winddir>46</winddir>
        </gruppe05>
        <gruppe06>
            <rainin>0</rainin>
            <dailyrainin>1</dailyrainin>
            <weeklyrainin>1.3</weeklyrainin>
            <monthlyrainin>18.5</monthlyrainin>
            <yearlyrainin>182.1</yearlyrainin>
        </gruppe06>
        <gruppe08>
            <solar_radiation_0>79</solar_radiation_0>
            <uvi_0>1</uvi_0>
            <uvi_txt>Niedrig</uvi_txt>
        </gruppe08>
        <gruppe99>
            <indoortemp_c>21.7</indoortemp_c>
            <indoorhumidity>49</indoorhumidity>
            <sunset>18:10</sunset>
            <sunrise>06:21</sunrise>
            <mondphase>abnehmender Mond</mondphase>
            <winddirkurz>NO</winddirkurz>
            <winddirlang>NORDOST</winddirlang>
        </gruppe99>   
    </sektion02>
   
</data>


Zur Weiterverarbeitung auf meiner Seite (siehe unten) lese ich dann per PHP die daten.xml aus. Um dies in 2 Lokationen (also lokal und im Internet) zu tun, habe ich eine ähnliche Weiterleitung der Daten (ähnlich wie der zu Wunderground) am Ende des ersten Skriptes zu meiner Internetseite gebaut.

Sicherlich nicht schönste Art PHP zu programmieren, aber diese Skripte laufen so seit rund einem Jahr. Nutzer die diese Skripte verwenden (Anfragen hatte ich 4 oder 5) sind auch alle zum Erfolg gekommen.

Eins noch: Die Datei daten.xml wird mit dieser Variante alle 5-17 Sekunden neu geschrieben bzw. aktualisiert. Meine HP1000 scheint den Intervall eigenständig zu variieren oder andere Einflüsse (Antwortzeitverhalten oder ähnliches) wirken sich hier aus. Um die Skripte  auszuprobieren muss man zunächst eine xml-Datei (daten.xml) mit Grundgerüst erzeugen.

In einigen Beiträgen vorher ging es darum, auf welche Art und Weise man es hinbekommt, das nicht alle Datenintervalle (5-17 sek.) in die Datenbank geschrieben werden. Ich habe ein kleines php-Skript geschrieben, das die Daten aus der daten.xml ausliest und in eine mysql-Datenbank schreibt. Dieses kleine Skript wird alle 5 Minuten durch einen cronjob per sh.skript ausgeführt bzw. aufgerufen. Somit hat man exakt einen 5 Minuten Intervall für die DB-Einträge.

Code des Datenbankupdate-Skripts (update_db.php)

<?php

//XML-Datei einlesen 
if(!$xmlr=simplexml_load_file('daten.xml')){
        
trigger_error('Error reading XML file',E_USER_ERROR);
}

// Sektion01
/* Gruppe00 einlesen   
$data_format = $xmlr->sektion01->gruppe00->data_format;
$data_format_v = $xmlr->sektion01->gruppe00->data_format_v;
$data_format_url = $xmlr->sektion01->gruppe00->data_format_url;
$data_format_language = $xmlr->sektion01->gruppe00->data_format_language;
*/

/* Gruppe01 einlesen
$station_id = $xmlr->sektion01->gruppe01->station_id;
$register = $xmlr->sektion01->gruppe01->register;
$station_url = $xmlr->sektion01->gruppe01->station_url;
$station_mail = $xmlr->sektion01->gruppe01->station_mail;
$station_hw = $xmlr->sektion01->gruppe01->station_hw;
$station_sw = $xmlr->sektion01->gruppe01->station_sw;
$location = $xmlr->sektion01->gruppe01->location;
$country = $xmlr->sektion01->gruppe01->country;
$city = $xmlr->sektion01->gruppe01->city;
$country_code = $xmlr->sektion01->gruppe01->country_code;
$pws_timezone = $xmlr->sektion01->gruppe01->pws_timezone;
$longitude = $xmlr->sektion01->gruppe01->longitude;
$latitude = $xmlr->sektion01->gruppe01->latitude;
$altitude_m = $xmlr->sektion01->gruppe01->altitude_m;
$altitude_f = $xmlr->sektion01->gruppe01->altitude_f;    
*/

/* Gruppe11 einlesen
$operator_nickname_0 = $xmlr->sektion01->gruppe11->operator_nickname_0;
$operator_name_0 = $xmlr->sektion01->gruppe11->operator_name_0;
$operator_mail_0 = $xmlr->sektion01->gruppe11->operator_mail_0;
*/

// Sektion02
// Gruppe02 einlesen
$now $xmlr->sektion02->gruppe02->date_time;
$datum $xmlr->sektion02->gruppe02->date;
$uhrzeit $xmlr->sektion02->gruppe02->time;
// Gruppe03 einlesen
$tempc $xmlr->sektion02->gruppe03->temp_air_2m_0_c;
$dewptc $xmlr->sektion02->gruppe03->temp_dewpoint_c;
$wct_c $xmlr->sektion02->gruppe03->temp_wct_c;
// Gruppe04 einlesen
$humidity $xmlr->sektion02->gruppe04->humidity;
$relpres $xmlr->sektion02->gruppe04->baromin;
$abspres $xmlr->sektion02->gruppe04->absbaromin;
// Gruppe05 einlesen
$windkmh $xmlr->sektion02->gruppe05->windspeed;
$windbft $xmlr->sektion02->gruppe05->windbft;
$windbfttext $xmlr->sektion02->gruppe05->windbfttxt;
$windgustkmh $xmlr->sektion02->gruppe05->windgust;
$gustbft $xmlr->sektion02->gruppe05->gustbft;
$gustbfttext $xmlr->sektion02->gruppe05->gustbfttxt;
$winddir $xmlr->sektion02->gruppe05->winddir;
// Gruppe06 einlesen
$rain $xmlr->sektion02->gruppe06->rainin
$raind $xmlr->sektion02->gruppe06->dailyrainin
$rainw $xmlr->sektion02->gruppe06->weeklyrainin;
$rainm $xmlr->sektion02->gruppe06->monthlyrainin;
$rainj $xmlr->sektion02->gruppe06->yearlyrainin;
// Gruppe08 einlesen
$solarradiation $xmlr->sektion02->gruppe08->solar_radiation_0
$UV $xmlr->sektion02->gruppe08->uvi_0;
$uvtext $xmlr->sektion02->gruppe08->uvi_txt;
// Gruppe99 einlesen
$indoortemp_c $xmlr->sektion02->gruppe99->indoortemp_c
$indoorhumidity $xmlr->sektion02->gruppe99->indoorhumidity
$sunset $xmlr->sektion02->gruppe99->sunset;
$sunrise $xmlr->sektion02->gruppe99->sunrise;
$phase_text $xmlr->sektion02->gruppe99->mondphase;
$winddirkurz $xmlr->sektion02->gruppe99->winddirkurz;
$winddirlang $xmlr->sektion02->gruppe99->winddirlang;

$db mysql_connect ("SERVER","USER","PASSWORT")
OR DIE ("&nbsp;Passwort falsch ");
$tab = @mysql_select_db ("OWSD-DB")
OR DIE ("&nbsp;");

// UPDATE SEKTION01
/* Update Gruppe00
mysql_query ("UPDATE `SEKTION01` SET 
    data_format = '$data_format', 
    data_format_v = '$data_format_v',
    data_format_language = '$data_format_language',
    data_format_url = '$data_format_url' WHERE id='1'");
*/

// Update Gruppe01
mysql_query ("UPDATE `SEKTION01` SET 
    station_id = '
$station_id', 
    register = '
$register',
    station_url = '
$station_url',
    station_mail = '
$station_mail',
    station_hw = '
$station_hw',
    station_sw = '
$station_sw',    
    location = '
$location', 
    country = '
$country',
    city = '
$city',
    country_code = '
$country_code',    
    pws_timezone = '
$pws_timezone', 
    longitude = '
$longitude', 
    latitude = '
$latitude', 
    altitude_m = '
$altitude_m', 
    altitude_f = '
$altitude_f' WHERE id='1'");
//

/* Update Gruppe11
mysql_query ("UPDATE `SEKTION01` SET 
    operator_nickname = '$operator_nickname_0', 
    operator_name = '$operator_name_0',
    operator_mail = '$operator_mail_0' WHERE id='1'");
 
*/

//INSERT SEKTION02

mysql_query ("INSERT INTO `SEKTION02` (`date_time`, `date`, `time`, `temp_air_2m_0_c`, `temp_dewpoint_c`, `temp_wct_c`, `humidity`, `baromin`, `absbaromin`, `windspeed`, `windbft`, `windbfttxt`, `windgust`, `gustbft`, `gustbfttxt`, `winddir`, `rain`, `dailyrain`, `weeklyrain`, `monthlyrain`, `yearlyrain`, `solar_radiation_0`, `uvi_0`, `uvi_txt`, `indoortemp_c`, `indoorhumidity`, `sunset`, `sunrise`, `mondphase`, `winddirkurz`, `winddirlang`) VALUES ('$now', '$datum', '$uhrzeit', '$tempc', '$dewptc', '$wct_c', '$humidity', '$relpres', '$abspres', '$windkmh', '$windbft', '$windbfttext', '$windgustkmh', '$gustbft', '$gustbfttext', '$winddir', '$rain', '$raind', '$rainw', '$rainm', '$rainj', '$solarradiation', '$UV', '$uvtext', '$indoortemp_c', '$indoorhumidity', '$sunset', '$sunrise', '$phase_text', '$winddirkurz', '$winddirlang')");

mysql_close($db);
?>


sh.skript

#!/bin/ash
wget -q -o /dev/null -O /dev/null http://www.example.org/update_db.php

Feedback, Anregungen und Kritik lese ich gerne.

Ausführungen zum Format der Informationen in der xml-Datei und der Datenbankstruktur  findet man hier im Wiki auf der Baustelle "OWSD-Format".

Viele Grüße

24Online
« Letzte Änderung: 14.03.2015, 11:16:13 von 24Online »
Ist man in kleinen Dingen nicht geduldig, bringt man die großen Vorhaben zum Scheitern.

http://wetter.mxberlin.de (Berlin, Schulzendorf)
http://wetter.mxberlin.de/technik.php (HP1000)
http://www.owsd-format.de

Offline habus

    • Wetter in Teltow
    • Männlich
  • Registriert:
    06.07.2014, 20:18:29
  • Beiträge: 52
  • Ort:
    Teltow
  • Station:
    Eldstad Wifi EW 001
Re: Eldstad Wetterstation (Wifi EW 001)
Antwort #106 am: 14.03.2015, 13:36:22
Ich hab das ganze ein wenig anders gelöst, allerdings verarbeite ich die Daten weder lokal noch schicke ich sie an Wunderground, ich schicke sie lediglich an meine eigene Webseite. Das Eintragen in die DB wird bei mir direkt durch die updateweatherstation.php erledigt. Dabei dient das Senden der Daten durch die Station sozusagen gleich als Cronjob.
Um zu verhindern, dass alle Daten in die DB geschrieben werden, lese ich per PHP bei jedem Aufruf durch die Station die Zeit des letzten Datenbankeintrages aus und erlaube das Schreiben erst nach 5 Minuten.

#Zeit des letzten Datenbank-Eintrages auslesen
$_resultat4=mysqli_query($db_link, "SELECT id,zeit FROM wetterdaten2 ORDER BY id DESC");

$_daten4 = mysqli_fetch_array($_resultat4);
$letztereintrag = $_daten4[1];

#Werte in Datenbank eintragen
if (($time > $letztereintrag+300)&&($Luftdruck != 0)) {
$eintrag = "INSERT INTO wetterdaten2

Diese Daten verwende ich eigentlich nur für die verschiedenen Diagramme auf meiner Seite.
Für die laufend aktualisierten Daten auf meinem "Barometer" erstelle ich lediglich eine kleine Textdatei. Das wird auch gleich mit durch die updateweatherstation.php erledigt.

Übrigens sind die Intervalle bei mir ebenfalls so unterschiedlich.

Gruß Habus

Offline 24Online

    • Wetter Berlin, Schulzendorf, IBerlinB43
    • Männlich
  • Registriert:
    26.12.2013, 23:43:11
  • Beiträge: 86
  • Ort:
    Berlin
  • geogr. Position:
    52.6°/ 13.2° (121ft)
  • Station:
    HP1000
Re: Eldstad Wetterstation (Wifi EW 001)
Antwort #107 am: 14.03.2015, 14:00:54
Naja, "Weiterverarbeitung" ist bei mir die Ablage in einer mysql-Datenbank und die Nutzung für die grafische Aufbereitung der Historie (diese wird in Wintermonaten erweitert). Zudem kommt die messwertbezogene Steuerung einiger AVM-SmartHome-Aktoren (auch hierfür habe ich mal ein Skript gepostet). Eine lokale Website (optisch wie die externe nur zusätzlich mit Innentemperatur und -luftfeuchte) macht den Aufruf der externen Seite unnötig, zeigt die für die andere Menschheit uninteressanten Werte und läuft auf einem alten iPad 1 als Display.

Das Posten von Skripten bedarf aus meiner Sicht immer einer etwas aufwändigere Prüfung, das man nicht spontan und ungewollt irgendwelche Secrets mitgibt, die eine Störung des Eigenbetriebs zur Folge haben könnten.

Diese hatte ich gestern Abend nicht zur Hand, deshalb fragte ich zunächst mal nach, ob überhaupt noch Fragen offen sind... :)

Schönes WE
Ist man in kleinen Dingen nicht geduldig, bringt man die großen Vorhaben zum Scheitern.

http://wetter.mxberlin.de (Berlin, Schulzendorf)
http://wetter.mxberlin.de/technik.php (HP1000)
http://www.owsd-format.de

Offline WeatherCrack

  • Registriert:
    30.04.2014, 21:48:11
  • Beiträge: 63
Re: Eldstad Wetterstation (Wifi EW 001)
Antwort #108 am: 14.03.2015, 20:56:02
Hallo Joachim,

schön Dich hier wieder zu lesen :-) (bin ja einer der 4-5, der Deinen Script als Vorlage verwendet).

Mittlerweile habe ich hier die Eldstad HP1000 V2.1.0 am laufen, da mir die vorherige leider wegen defekter Aussenheit "abhanden" gekommen ist. In der Bedienung/Software/Firmware unterscheidet sich die aber nur sehr unwesentlich. Es gibt in dieser eine USB Schnittstelle, über die man in die Station "hineingucken" kann (die Ordnerstrucktur entspricht in etwa der, der entzippten Updatedateien). Da gibt es allerdings eine weather.dat, welche wohl die gesammelten Daten der Station enthält - leider völlig unbekanntes Format, habe mit allen möglichen Tools versucht da ran zu kommen :-(

Nochmal zu den Intervallen:
Ja, es ist richtig, das Senden aus der WS findet komischerweise alle 5-17 sek. statt, laut techn. Beschreibung angeblich alle 16 sek. Das kann man auch (noch) nirgends einstellen. Einstellen kann man den Uploadintervall, der bei Wunderground entgegengenommen wird. Statt Deines Cronjobs scriptes bietet sich allerdings im MySQL eine recht einfache Möglichkeit an:
Trigger. Damit kann man auch gleich neue DB´s mit min/max/average erzeugen.

Die script-Lösung von habus halte ich dagegen für etwas nachfragewürdig, denn da gehen ja alle min/max-Werte der letzten 300 sek. verloren, ausser wenn bei $letztereintrag + 300 zufällig grad mal min/max getroffen wird.

Alles in allem kann ich sagen, dass man für das Geld (habe eine Reserve-Station für 1xx EUR in der Bucht ersteigert, neu) kaum  etwas besseres bekommen kann - alleine die Dokumentation (USB-Schnittstelle / Updates etc.) vom Hersteller lässt sehr zu wünschen übrig. Aber das ist ja leider bei vielen Herstellern so.

WeatherCrack wünscht auch ein schönes WE

Wetterstationen.info Forum

Re: Eldstad Wetterstation (Wifi EW 001)
« Antwort #108 am: 14.03.2015, 20:56:02 »

Offline habus

    • Wetter in Teltow
    • Männlich
  • Registriert:
    06.07.2014, 20:18:29
  • Beiträge: 52
  • Ort:
    Teltow
  • Station:
    Eldstad Wifi EW 001
Re: Eldstad Wetterstation (Wifi EW 001)
Antwort #109 am: 14.03.2015, 21:18:20
Zitat
Die script-Lösung von habus halte ich dagegen für etwas nachfragewürdig, denn da gehen ja alle min/max-Werte der letzten 300 sek. verloren, ausser wenn bei $letztereintrag + 300 zufällig grad mal min/max getroffen wird.

Ja, da hast Du natürlich recht. Ich gehe aber davon aus, dass sich die entsprechenden Werte innerhalb von 5 Minuten nicht sooo dramatisch ändern. Vielleicht 1, 2 Zehntel, aber das nehme ich gern in Kauf. Ein min- oder max-Wert kann ja auch in den 5-17 Sekunden, in denen die Station eh Pause macht, erreicht werden. Ich seh das also gelassen.

Gruß Habus