Werte über einen selbstbestimmten Zeitraum rückwirkend summieren

Begonnen von matze1999, 28 Mai 2024, 17:47:50

Vorheriges Thema - Nächstes Thema

matze1999

Hallo,

ich hab gedacht, das man so etwas mit dem HourCounter machen kann, aber leider offensichtlich nicht (HIER):

Ich möchte meine Bewässerung u.a. davon abhängig machen, ob es in den letzten X Tagen eine Menge Y geregnet hat.

Hat jemand eine Idee, wie ich das einfach realisieren kann, oder muss ich wirklich eine Datenbank dafür anlegen?

matze1999

dkreutz

Evtl. geht das mit einem "statistics"-Device. Damit kann man u.a. Werte vom Vortag auswerten (min, max, avg, Delta)
Raspberry Pi3B+ (Bullseye) / JeeLink868v3c (LaCrosse), nanoCUL433 (a-culfw V1.24.02), HM-MOD-UART (1.4.1), TEK603, MapleCUL / diverse Sensoren/Sender/Aktoren von Technoline, Intertechno, Shelly, Homematic und MAX!, Froggit Wetterstation, Luftdaten.info / Autor des fhem-skill für Mycroft.ai

Beta-User

Vielleicht hilft https://wiki.fhem.de/wiki/Gleitende_Mittelwerte_berechnen_und_loggen.

Dachte erst auch an "event-aggregator", aber damit geht es vermutlich nicht.

PS: Wie reagierst du dann auf eine durchgeführte Bewässerung?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Nobbynews

Um den Niederschlag der letzten 7 Tage für genau diese Anwendung zu ermitteln, habe ich mir einen vermutlich unkonventionellen Weg ausgedacht.
Im device gibt es readings rain0 bis rain6.
Über ein tägliches at werden diese readings um eine Position verschoben, also rain5 wird rain6, rain4 wird rain5 usw.
Anschließend wird in rain0 der aktuelle tägliche Niederschlag gespeichert und dann die Summe über alles gebildet.

define atRegenTag at *23:59:30 {\
 for (my $i=5;; $i>=0;; $i--) {\
  fhem ("setreading WS980 rain".($i+1)." ".ReadingsNum("WS980","rain$i",0));;\
  }\
 fhem ("setreading WS980 rain0 ".ReadingsNum("WS980","rainPerDay",0));;\
 my $rainWeek = 0;;\
 for (my $i=0;; $i<=6;; $i++) {\
  $rainWeek += ReadingsNum("WS980","rain$i",0);;\
  }\
 fhem ("setreading WS980 rainLast7days $rainWeek");; \
}
Ginge mit einer Datenbank vermutlich viel eleganter, habe ich aber nicht.

matze1999

Danke!

Zitat von: Beta-User am 29 Mai 2024, 08:17:57PS: Wie reagierst du dann auf eine durchgeführte Bewässerung?

Das ist eine Kombination aus Bodenfeuchte und Aussentemperatur und Niederschlag der letzten Tage. Normalerweise würde ich nach Bodenfeuchte bewässern, aber die Messung ist recht träge und die Meßpunkte sind nicht ideal - geht aber nicht anders.

Da ich auch keine Datenbank anlegen möchte/habe, werde ich das at von @Nobbynews mal ausprobieren.

matze1999