Folgendes Skript wird ja bekanntlich mit dem Wettersensor HM-WDS100-C6-O-2 installiert (vielleicht hat den ja noch der ein oder andere ).
Code: Alles auswählen
var rainToday = dom.GetObject(5091);
var rainYesterday = dom.GetObject(5092);
var rainCounter = dom.GetObject(5076);
if ( (rainToday) && (rainYesterday) && (rainCounter) )
{
if (rainCounter.LastTimestamp())
{
var diff = rainCounter.Value() - rainCounter.LastValue();
if ( diff < 0.0)
{
diff = diff + rainCounter.ValueMax();
}
rainToday.State(rainToday.State() + diff);
}
else
{
rainToday.State(0.0);
rainYesterday.State(0.0);
}
}
Ich hatte ziemlich hohe Werte beim RAIN_COUNTER und musste dem mal nachgehen.
Nach meinem bescheidenen Skriptverständnis wird der letzte bekannte Wert (rainCounter.LastValue) vom aktuellen Wert (rainCounter.Value) subtrahiert. Und wenn das Ergebnis kleiner ist als 0.0, dann wird ein maximaler Wert (rainCounter.ValueMax) dazuaddiert. (Hoffe, das ist so richtig)
Diese Skriptzeile (12) verstehe ich nicht, da müsste mich mal jemand erleuchten.
Nach einem Batteriewechsel oder Stromausfall (bei Betrieb mit einem Batterie-Dummy), wird der RAIN_COUNTER ja immer auf Null gesetzt.
Somit ergibt diese Rechnung immer weniger als Null.
Aktueller Wert ist nach Spannungswegfall 0.0 minus letzter Wert z.B. 10 ergibt -10 also kleiner als Null. Somit ergibt -10 + Value.Max(bei mir 999) = 989
Sorry, hab mich da gerade irgendwie festgefahren. Müsste das nicht LastValue heißen anstatt ValueMax? Oder für welchen Ernstfall ist diese Zeile da?
Gruß Tino.