Wetterstation für unter 80€

So Leute
Da ich ja aufgrund eines Ausfall meiner SDD so ziemlich jedes Script neu machen muss, hab ich das Script nochmal überarbeitet.
Die Variabeln legen sich nun selbst mit dem richtigem Typ und Profil an,das Logging wird eingeschaltet und ein Timer auf 60sec geschaltet.

Anleiteung:
1 Dummy Instant anlegen
2 Script mit Inhalt unten erstellen
3 die ersten 2 ID’s eintragen.
4 einmal ausführen

Fertig

<?
//Hier die Instanz wo das alles rein soll
$ParentID = 42983  /*[Außen\Wetter\Wetterstation]*/;

// Archiv Handler damit das Logging eingeschaltet werden kann.
$arhid = 34960  /*[Archive Handler]*/; 





if($_IPS['SENDER'] != "TimerEvent")
 {
IPS_SetScriptTimer($IPS_SELF, 60);
IPS_SetHidden($IPS_SELF,true);
}
   $mon_ger = array("Jan" => "Jan", "Feb" => "Feb", "Mar" => "Mrz", "Apr" => "Apr", "May" => "Mai", "Jun" => "Jun", "Jul" => "Jul", "Aug" => "Aug", "Sept" => "Sep", "Oct" => "Okt", "Nov" => "Nov", "Dec" => "Dez");
   $filename = "C:/Cumulus/data/".$mon_ger[date("M")].date("y")."log.txt";
   echo ($filename."
");
   $handle = fopen($filename,"r");
   //File nicht gefunden?
   if (!$handle) echo ("PCE-FWS20 File not found");

   //Gehe alle Datensätze durch
   while ($line = fgets($handle))
   {
      if (strlen($line) > 10)
        {
          //Datenzeile zerlegen
          $parameter = explode(";", $line);
          //Zeile enthält Parameter?
          if (count($parameter) == 17)
            {
//                echo ($parameter[0]." ".$parameter[1]."
");
            }
        }
    }

   fclose($handle);

    echo ($parameter[0]." ".$parameter[1]."
");

vars($arhid,$ParentID,'Temperatur',$parameter[2],2,"~Temperature");
vars($arhid,$ParentID,'Feuchtigkeit',$parameter[3],1,"~Humidity");
vars($arhid,$ParentID,'Taupunkt',$parameter[4],2,"~Temperature");
vars($arhid,$ParentID,'Wind',$parameter[5],2,"~WindSpeed.kmh");
vars($arhid,$ParentID,'Wind_max_10',$parameter[6],2,"");
vars($arhid,$ParentID,'Windrichtung',$parameter[7],2,"~WindDirection");
vars($arhid,$ParentID,'Regen',$parameter[8],2,"~Rainfall");
vars($arhid,$ParentID,'Regen_Tag',$parameter[9],2,"~Rainfall");
vars($arhid,$ParentID,'Luftdruck',$parameter[10],1,"~AirPressure");
vars($arhid,$ParentID,'Innen Temperatur',$parameter[12],2,"~Temperature");
vars($arhid,$ParentID,'Innen Feuchtigkeit',$parameter[13],2,"~Humidity");
vars($arhid,$ParentID,'Wind_max_zuletzt',$parameter[14],2,"~WindSpeed.kmh");
vars($arhid,$ParentID,'Wind_Chill',$parameter[15],2,"~Temperature");
vars($arhid,$ParentID,'Heat_Index',$parameter[16],2,"~Temperature");
$richtung = $parameter[7];
if (($richtung < 22.5) and($richtung >= 0)) $w_text = "N";
if (($richtung < 67.5) and($richtung >= 22.5)) $w_text = "NO";
if (($richtung < 125.5) and($richtung >= 67.5)) $w_text = "O";
if (($richtung < 157.5) and($richtung >= 125.5)) $w_text = "SO";
if (($richtung < 202.5) and($richtung >= 157.5)) $w_text = "S";
if (($richtung < 247.5) and($richtung >= 202.5)) $w_text = "SW";
if (($richtung < 292.5) and($richtung >= 247.5)) $w_text = "W";
if (($richtung < 337.5) and($richtung >= 292.5)) $w_text = "NW";
if (($richtung < 360 ) and($richtung >= 337.5)) $w_text = "N";

vars($arhid,$ParentID,'Windrichtung Text',"$w_text - $richtung °",3,"");

$bft = $parameter[6];


if (($bft <  1) and($bft >= 0)) $bft_text = "0 - Windstille";
if (($bft <  6) and($bft >= 1)) $bft_text = "1 - Leiser Zug";
if (($bft < 13) and($bft >= 6)) $bft_text = "2 - Leichte Brise";
if (($bft < 20) and($bft >= 13)) $bft_text = "3 - schwache Brise";
if (($bft < 29) and($bft >= 20)) $bft_text = "4 - mäßige Brise";
if (($bft < 39) and($bft >= 29)) $bft_text = "5 - frische Brise";
if (($bft < 51) and($bft >= 39)) $bft_text = "6 - starker Wind";
if (($bft < 62) and($bft >= 51)) $bft_text = "7 - steifer Wind";
if (($bft < 75) and($bft >= 62)) $bft_text = "8 - stürmischer Wind";
if (($bft < 89) and($bft >= 75)) $bft_text = "9 - Sturm";
if (($bft < 103) and($bft >= 89)) $bft_text = "10 - schwerer Sturm";
if (($bft < 118) and($bft >= 103)) $bft_text = "11 - orkanartiger Sturm";
if (($bft < 132.9) and($bft >= 118)) $bft_text = "12 - Orkan";

vars($arhid,$ParentID,'Wind Text',$bft_text,3,"");


function vars($arhid,$ParentID, $Variname, $wert, $VariTyp, $VariProfile)
{
$VariID = IPS_GetVariableIDByName($Variname, $ParentID);
    if ($VariID == false)
    {
        $VariID = IPS_CreateVariable ($VariTyp);
        IPS_SetVariableCustomProfile($VariID, $VariProfile);
        IPS_SetName($VariID,$Variname);
		  AC_SetLoggingStatus($arhid, $VariID, true);
        IPS_SetParent($VariID,$ParentID);
    }
    SetValue($VariID, $wert);
}

function GetParentID($ID){
  $obj = IPS_GetObject($ID);
  return $obj['ParentID'];
}
?>

Hallo Leute,

muss „Cumulus“ in den Autostart damit die Daten aufgezeichnet werden?

Joachim

Du Software muss laufen damit Daten aufgezeichnet werden. Also Ja.

Perfektes Timing! Auch wenn mich der Ausfall natürlich nicht freut, aber die Konsequenz kommt gerade recht. :smiley:

Danke!

Grüße
galleto

Hallo Leute,

hier gibt es ein php-Beispiel-Skript zum Download um die Werte grafisch aufzubereiten

Kann man so etwas auch in IPS umsetzen?
Wäre doch toll, oder?

Joachim

Hier gibt es ein paar Anregungen.

Kleiner Fehler, große Wirkung (seitens meiner Frau). :wink:

Grüße
galleto

Ok dann also so

vars($arhid,$ParentID,'Luftdruck',$parameter[10],1,"~AirPressure");

Variabel Luftdruck einfach noachmal löschen.

Hallo Leute,

ich wollte noch mal Bezug nehmen auf meine Frage in Beitrag #25.

Gibt es eine Möglichkeit diese tollen und hier absolut passenden Grafiken in IPS mit den aktuellen Werten einzubinden?

Joachim

Ich denke das wird schwer.

  1. Wie berechnet man eine Vorhersage ?
  2. Die Grafiken mussen Dynamisch sein, aber ich hab noch kein Javascript in einer String Html Box zum laufen gebracht.

Was geht ist alles was hier angeboten wird.
Charts Gallery - Google Chart Tools: Image Charts - Google Code

und Natürlich

Man könnte die Daten höchstens auf eine Anderen Seite als dem Webfront aufrufen

Hallo sschnake,

ich habe die Dateien des Downloads unter …webfront/user/gauge kopiert und als externe Seite in das Webfront eingebunden. Man sieht dann aber leider nur die Umrisse der Grafiken…

Auf der Demoseite sieht es irgendwie anders aus…:frowning:

Es wird im Skript nach einer Testtags.php gesucht, die war leider nicht dabei…

Joachim

P.S.: Eine Vorhersage ist ja nicht nötig, soll ja eigentlich nur die Werte der Wetterstation grafisch darstellen… (oder habe ich etwas falsch verstanden?)

Bei mir kommen die werte nach 20 sec

http://nasst.homeip.net:82/index.php?configuratorID=17065
Test Wetter

Hallo sschnake,

hast Du die „ältere“ Skript-Version genutzt?
Funktioniert es auch mit der neueren „Version“ bei Dir?

Joachim

Ne bekomme ich nicht ans laufen, aber ich meine da ist auch ein fehler im Script

include '/var/www/vhosts/nordicweather.net/subdomains/data/httpdocs/wd/testtags.php';

kann ja bei uns nicht gehen. Aber auch wenn ich

 var rawsnow = 1;
	  var crmaxuv = 1;
	  var crmaxsolar = 1;

draus mache geht es nicht.

Hallo sschnake,

schau Dir doch mal denn Quellcode auf diesen Seiten von anderen Usern an:

JQuery weathergauges 2 Examples
OZ7MKS Vejrstation

Da sieht der Quellcode m.E. etwas anders aus…

Joachim

P.S.: Sieht ja auf Deiner Testseite sehr ähnlich aus wie bei mir… :wink:

Auch die seiten von denen kann man in IPS nicht einbinden.
Wer baut das mal ein Script zur Wetter vorhersage?

Lektion 4: 
Wind und Luftdruck
Kombiniert man die Messungen von Wind und Luftdruck, lassen sich hochinteressante Schlüsse ziehen.
Hier einige Beispiele:
Wind aus Nordwest. Kommt der Wind aus NW und das Wetter hat sich beruhigt, dann können Sie für die nächsten 24 Stunden mit einem Anhalten des schönen Wetters rechnen, vorausgesetzt, der Höhenmesser bleibt unverändert oder zeigt eine langsame Höhenabnahme (Luftdruckanstieg) an. Hat es geregnet, und Sie lesen eine Höhenabnahme ab, wird sich das Wetter in den nächsten Stunden bessern und der Himmel auf klaren. In beiden Fällen ist mit einer Temperaturabnahme zu rechnen. Zeigt der Höhenmesser eine Zunahme an (Luftdruckabfall), und der Himmel ist wolkenarm, hält das gute Wetter noch 24Stunden an. Ist es stürmisch und/oder regnerisch, und der Luftdruck fällt noch weiter bleibt es regnerisch , auch wenn der kräftige Wind vorübergehend stark abnimmt. Wind aus Südwest: Kommt der Wind aus südwestlichen Richtungen, und das Wetter ist relativ gut (kein Regen, nur teilweise bewölkt, leichter Wind), dann kann für die nächsten 12 bis 24 Stunden mit einer Fortdauer dieses guten Wetters gerechnet werden, besonders, wenn der Höhenmesser ein Absinken in der Höhe anzeigt (Luftdruckanstieg) Ist es jedoch regnerisch, und der Höhenmessers zeigt einen Verlust an Höhe an, sollte das Schlechtwettergebiet in ungefähr sechs Stunden abgezogen sein. Zeigt der Höhenmesser einen Anstieg (Luftdruckabfall), und das Wetter war klar ist, innerhalb der nächsten 12 Stunden mit Regen zu rechnen. Sollte es schon regnen oder schlecht sein, wird der Regen weiter zunehmen, aber es besteht die Chance, dass es in 12 Stunden aufklaren wird.
Wind aus Südost (SO) ist das Wetter gut, der Wind kommt aus SO, und der Höhenmesser fällt (Luftdruckanstieg), bleibt es weiterhin schön. Ist es regnerisch, dann kann mit einem Aufklaren gerechnet werden, sobald der Höhenmesser anfängt, niedrigere Werte anzuzeigen. Ein Höhenanstieg während einer Schönwetterphase kündigt aufziehenden Regen und möglicherweise hohe Windgeschwindigkeiten in den nächsten 12 Stunden an. Regnet es jedoch schon und der Höhenmesser steigt noch weiter wird das Unwetter noch an Stärke zunehmen, und es ist erst in 24 Stunden mit einem Aufklaren zu rechnen.
Wind aus Nordost: Ist das Wetter gut, und der Wind weht aus Nordost, dann wird bei abnehmenden Höhenwerten (Luftdruckanstieg) das gute, aber kühle Wetter anhalten. Ist es regnerisch, wird es bald aufhören zu regnen, aber es wird ein bisschen kälter. Ist der Himmel klar aber der Höhenmesser fängt an zu steigen, ist innerhalb der kommenden 12 bis 24 Stunden mit Regen zu rechnen. Wenn es bereits regnerisch bei gleichen Luftdrucktendenzen ist, sind starker Regen und auch Sturm zu erwarten. Zudem wird es auch deutlich kälter werden.

Naja ich hab am Mittwoch wieder Schule bis Samstag. Vielleicht geht da was.

Woran könnte es liegen, wenn für die Luftfeuchte (innen) kein Graph gezeichnet wird?

Der Wert wird korrekt angezeigt, ändert sich also auch, aber beim Klick auf das Diagrammsymbol dahinter bekomme ich nur das leere Raster. :confused:

Edit: Variable löschen und durch das Skript neu anlegen lassen bringt nix. Alles andere funktioniert.

Grüße
galleto

Das Problem entsteht vermutlich durch die „2“ in folgender Zeile:

vars($arhid,$ParentID,'Innen Feuchtigkeit',$parameter[13],2,"~Humidity");

Liege ich richtig, dass damit der Var-Typ Float statt Integer eingerichtet wird? Das war jedenfalls die Ursache des Fehlers.

Grüße
galleto

Also so

vars($arhid,$ParentID,'Feuchtigkeit',$parameter[3],1,"~Humidity");

geht es bei mir.

Bei mir ja auch, deshalb habe ich auch für die Innen-Luftfeuchte die „2“ aus dem Skript oben zur „1“ gemacht. Seitdem zeigt auch die einen Graphen.

Grüße
galleto