Berechnung der Regendauer über geloggte Boolean Variable

Hallo,

Ich hab da ein für mich kniffeliges Problem. :frowning:
Eine KNX Wetterstation schreibt mir in eine Boolean Variable ob es derzeit regnet oder nicht. Diese Variable wird auch geloggt.

Ich versuche nun heraus zu finden, wie viele Stunden es an einem Tag regnet hat.

Ich habe versucht mit AC_GetAggregatedValues direkt die Dauer auszulesen und auch über AC_GetLoggedValues indem ich alle Elemente durchgehe und die Zeitdifferenz zwischen true und false zusammen rechne.
Ich habe auch versucht statt der Timestamps direkt die Duration vom Zustand abzufragen.

Was ich auch mache, ich komme nicht auf 24 Stunden für einen Tag für Regen + kein Regen. :confused:

Hat jemand von euch schon mal was in der Richtung gemacht und hat vielleicht einen Code-Schnippsel der mir auf die Sprünge hilft?

Im 2. Schritt müsste ich noch eine weitere Variable hinzunehmen die mir verrät ob es stark oder wenig geregnet hat. Entsprechend würde sich das auf die Gewichtung der Intensität auswirken.
Um es richtig zu machen könnte man auch einfach in einen echten Regenmesser investieren, der mir den Wert als mm/m² ausgibt oder einen Bodenfeuchtesensor, aber eigentlich reicht mir ein Näherungswert.

Ziel ist einfach nur zu entscheiden ob der Rasen beregnet werden muss. Das wäre Blödsinn, wenn es zuvor 3 Stunden stark geregnet hat.

Beste Grüße

Andreas

Gabs schonmal als Betriebsstundenzähler.

Ah super. Auf das Stichwort bin ich einfach nicht gekommen.
Ich probier das mal aus.

Vielen Dank

Andreas

Nur so zur Info,

ich hab den Natatmo Regenmesser im Einsatz.
Kann man in IPS problemlos einbinden.
da haste genaue Werte funkt problemlos.

Der Thread ist zwar schon a bissi alt, aber trotzdem noch eine kleine Anmerkung zum Thema:

Ich versuche nun heraus zu finden, wie viele Stunden es an einem Tag regnet hat.

Ich glaube, dass Du genaugenommen wissen möchstest, wie feucht der Boden ist um daraus abzulesen, ob beregnet werden soll, oder nicht.

Die Feuchtigkeit wiederum ist m.E. nach eine PT1-Funktion (y=K*(1-e^(t/T))) des Regens und eine Funktion des Trocknens (würde ich der Einfachheit halber erstmal weglassen).
Unter ein paar Vereinfachungen ergibt sich daraus die bekannte Wichtungsfunktion yneu=yaltk+x(1-k)

Das heißt, Du bräuchtest zu diesem Zweck gar keinen Rückgriff auf die geloggten Werte, sondern Du simulierst quasi den Feuchtegrad des Bodens. Das ist ganz einfach:

In einen zyklischen Script (z.B. 1min) schreibst Du sinngemäß


$esregnet 	=49517 /*[Testbereich\regen\esregnet]*/;
$giessen		=14267 /*[Testbereich\regen\giessen]*/;/*BOOL*/
$FZ			=59963 /*[Testbereich\regen\FZ]*/; /*FeuchteZustand des Bodens - FLOAT*/

/* Einstellungen zur Empfindlichkeit*/
$k			=0.99; 	//[0..1] je, näher an 1, desto langsamer reagiert das System
$schwelle=0.5; 	//bei welcher Feuchtigkeitsschwelle soll nicht mehr gegossen werden
$hyst		=0.2; 	//Hysterese

$temp=GetValue($FZ)*($k)+GetValue($esregnet)*(1-$k);

SetValue($FZ,$temp);

/*soll gegossen werden?*/
if ($temp < $schwelle - $hyst/2)
{
	/*ab jetzt giessen erlaubt*/
	SetValue($giessen,true);
}
elseif  ($temp > $schwelle + $hyst/2)
{
	/*ab jetzt nicht mehr erlaubt*/
	SetValue($giessen,false);
}

Du müsstest nur etwas mit den Parametern $k und $schwelle spielen.
Denkbar ist auch eine "Trocknungsfunktion mit einzubauen, und zwar anhand eines Helligkeitssensors und der Aussentemperatur mit der gleichen Funktion.

Ist zwar wissenschaftlich nicht ganz korrekt, sollte aber seinen Zweck erfüllen…

tommes