Wetterstation

wenn man zwei solche Regensensoren verwendet, einen mit Heizung, den anderen ohne heizung, würde man dann einwandfrei erkennen, ob es regnet oder schneit?

Sprich, der ohne Heizung, meldet der im Winter „Regen“ ?!?!?!

Den Regensensor musst Du von Hand zurücksetzten(Script) nach einer gewissen Zeit.
Den ohne Heizung könnte man als Schneeerkennung verwenden, da dieser ja dann dauerhaft anzeigen würde.

Bei den Platten vom großen C solltest Du den von mir erwähnten Thread ansehen. Auf der verlinkten Seite hat einer einen Vergleich gemacht der angebotenen Platten mit dem Ergebnis, dass sich nur der teure Sensor lohnt.

Für Schnee würde ich nicht zuletzt die Temperatur berücksichtigen. Eine Schneehöhenerkennung per LevelJet o.ä. bietet sich auch an um zu sehen, ob was liegengeblieben ist.

Ja, habe mir den „teuren“ angeschaut, der in dem Thread eigentlich sehr gelobt wird …, und diesen werden ich mir auf jeden fall mal bestellen.
Und dann noch mit der Temperatur Erkennung, sollte es schon so halbwegs passen, es geht ja „nur“ um die einschaltung der SAT Spiegel Heizung

Hallo Horst, habe mal deinen Codeschnipsel eingebaut :wink:
Allerdings noch ein weiteres Mal „N“ mit eingebaut, um auch die 360° zu erfassen.

Wie würde man denn jetzt einen Durschnittswert für die Windrichtung errechnen, bzw. wie löst man das Ganze? Hast du evtl. vor das in das Windrichtungsmodul fest mit einzubauen?

Gruß
Jens

Hallo Horst,
hallo Tetrapack,

und ergänzt um die IPS_SetName-Anweisung um das Skript in die aktuelle Windrichtung umzubenennen :smiley:


<?
  // ------ Windrichtungsname
    function getWindDirectionName($WindDirection)
    {
        $WindDirectionNames = array("N", "NNO", "NO", "ONO", "O", "OSO", "SO", "SSO", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW", "N");
        $WindDirectionName = $WindDirectionNames[(int)(round($WindDirection / 22.5))];
        return $WindDirectionName;
    }
SetValue(54360 /*[Erdgeschoß\Terrasse\Wetterstation\Windsensor\WindrichtungText]*/, getWindDirectionName(GetValue(46087 /*[Erdgeschoß\Terrasse\Wetterstation\Windsensor\Windrichtung]*/)));
IPS_SetName(57042 /*[Erdgeschoß\Terrasse\Wetterstation\Windrichtung: NNW]*/, "Windrichtung: ".GetValue(54360 /*[Erdgeschoß\Terrasse\Wetterstation\Windsensor\WindrichtungText]*/));
?>

Vielen Dank Jungs.

Dieses Forum ist immer wieder Klasse.

Also bei mir erreicht die Drehung leider nie die vollen 360°, sondern wird vorher auf 0° gesetzt. Meine Uhren hier zu Hause schaffen auch nie die vollen 24:00. Bin ich da etwa auf einen billigen China-Import reingefallen :rolleyes:?

Für meine datenbankbasierte Aggregation habe ich mir folgende Funktion zur Ermittlung des Durchschnitts geschrieben:

    function calcAvg($v1, $v1c, $v2, $v2c, $v3, $v3c, $profileName)
    {
       $avg = 0;

        switch($profileName)
        {
            case "circle":
                $avg = ($v1 * $v1c + $v2 * $v2c) / ($v1c + $v2c);
                if(abs($v1 - $v2) > 180)
                {
                    $avg += (360 * ((min($v1, $v2) == $v1) ? $v1c : $v2c)) / ($v1c + $v2c);
                    $avg -= floor($avg / 360) * 360;
                }
                if($v3c != 0) { $avg = calcAvg($avg, $v1c + $v2c, $v3, $v3c, 0, 0, $profileName); }
                break;

           default:
                $avg = ($v1 * $v1c + $v2 * $v2c + $v3 * $v3c) / ($v1c + $v2c + $v3c);
                break;
        }

        return $avg;
    }

Hallo Horst,

du hast natürlich Recht mit den 360° :rolleyes:

Was deine Funktion an geht, könntest du das Ganze noch ein wenig erläutern? Also in Zusammenhang mit der Datenbank und der Asuwertung? Habe mir das zwar angesehen, stehe aber ziemlich auf dem Schlauch :confused:

Jens

Es gibt Fälle, in denen ich den zeitlich gewichteten Durchschnitt über drei Intervalle berechnen muss.
Für zwei ungewichtete Werte reicht

$avg = ($v1 + $v2) / 2;
if(abs($v1 - $v2) > 180)
{
    $avg += 360 / 2;
    $avg -= floor($avg / 360) * 360;
}

Äh … ich steh trotzdem noch aufm Schlauch … gewichtete Werte, in dem man zur Gewichtung die Windgeschwindigkeit heran zieht scheint ja am sinnvollsten zu sein, oder?
Ich blicke deine Formel leider immer noch nicht … könntest du die mal „aufdröseln“ ? liebguck

Die Windrichtungsgeschwindigkeit ist natürlich auch ein interessantes Maß, Du musst mir nur erklären, wie die zu interpretieren ist ;). Ich gewichte solange nach Zeit.

Beispielfall:
$v1: bisheriger Durchschnittswinkel
$v1c: Messdauer bisheriger Durchschnittswinkel
$v2: letzter Winkelwert
$v2c: Delta-Messdauer letzter Winkelwert
$v3: neuer Winkelwert
$v3c: Messdauer neuer Winkelwert (beträgt normalerweise 1 Sekunde, da ich ja nicht sicher sein kann, dass das Gerät zum nächstgeplanten Intervall noch in Betrieb ist)

Der Code sorgt ansonsten nur dafür, dass der Durchschnittswinkel von 350° und 5° bei 357,5° liegt und nicht bei 177,5°. Dies tritt ein bei einer Winkeldifferenz von über 180°. Dazu muss zunächst einer Weiterdrehung hinzugerechnet werden. Hinterher wird das ganze noch in den Bereich von unter 360° gebracht, falls der Winkel darüberhinausgeschossen ist, wie z.B. bei 1080°.

Hallo,

habe bei meiner WMRS200 festgestellt, dass nach einem Rechner Neustart oder ziehen und wieder einstecken des USB-Kabels bei der zughörigen I/O Instanz HDI eine Fehlermeldung kommt.

Das Gerät ist nicht geöffnet.
Ich muß händisch über die Verwaltungskonsole das Gerät öffnen.

Kann man das auch automatisch machen ???

Hallo Clippoer_I,

kann ich bestätigen, nicht immer aber relativ oft.

Vlt. was für die BUG-Abteilung.

Die Fehlermeldung habe ich auch, kann sie mir aber nicht erklären. Da sie aber keine sonstigen Auswirkungen hat habe ich sie daher einfach sein lassen.
Bei mir wird der Port übrigens automatisch wieder geöffnet. Laufen habe ich eine WMRS200 unter Windows 2003 Server und eine unter 2008 Server.
Zum Testen haben Windows 7, Vista und XP noch herhalten müssen und auch dort funktionierte der Reconnect.

Hallo,
ist es falsch, wenn ich einfach eine halbe Minute alle Sekunde den Wert der Windrichtung abfrage, addiere und dann durch 30 teile?
Bin ganz verunsichert!

Gruß
Klaus

Alle 1s macht nur Sinn, wenn da auch alle 1s neue Werte gemessen werden. Da muss man eigentlich schon sehr viel Geld für die Sensoren ausgeben. So reicht Skriptausführung auf onUpdate / onChange aus.

Problematisch bei der Durchschnittsberechnung ist folgender Fall:
(315° + 45°) / 2 = 180°, aber man hätte da ja eigentlich 0° haben wollen. Das muss man, wie vorher von mir gezeigt, im Skript abfangen.

Hallo Horst,
ich verstehe Dein Programm leider nicht.
Wann mußt Du drei Meßpunkte verarbeiten? Wenn Du bei jedem onchange die Funktion aufrufst?
Was wird mit $profileName übergeben?

Gruß
Klaus

Och, das ist alles Teils meines großen Plans die Aggregationsherrschaft an mich zu reißen, was derzeit mit 407 Zeilen recht effizientem Code auch wunderbar läuft. $profileName enthält entweder „circle“, wenn man den Durchschnitt bei nem Kreis berechnen will, oder irgendwas anderes, z.B. „“, da mir bisher keine weiteren Sonderfälle begegnet sind. Verständlicher als bei meiner bisherigen Beschreibung kann ich mich jetzt auch nicht ausdrücken, eher komplizierter. Eigentlich sollst Du ja auch nur drauf achten bei Kreiswerten den Durchschnittswinkel richtig zu berechnen :).

Hallo,

habe die WRMS 200 (Version 3.0) in Verbindung mit einem UVN800. Dieser liefert sowohl in IPS als auch unter der Oregon-Sientific SW Weather-OS imm den UV Wert 0.

Habe den Sensor bereits bei Oregaon Sientific getauscht, jedoch ohne Erfolg.

Kennt hier im Forum noch jemand dieses Phänomen ?

Ich hatte vorgestern meinen bisherigen Höchstwert von 3 gehabt. Du kannst ja mal direkt auf die Sonne zielen, damit habe ich meinen ersten Wert herausgeholt als es noch zu winterlich war.
Kommen denn überhaupt minütlich neue Datensätze in IP-Symcon an?