Einlaufende Wassermenge in Zisterne summieren

Begonnen von Jewe, 10 August 2017, 08:12:47

Vorheriges Thema - Nächstes Thema

Jewe

Hallo,
ich möchte die Wassermenge die in meine Zisterne einläuft summieren und durch die Dachgrundfläche teilen. Somit hätte ich die Regenmenge pro m2.
Wie kann ich das angehen, mir fehlt der Ansatz.
Den Füllstand der Zisterne habe ich über einen Analogsensor in Fhem.

Jens

Gesendet von meinem KFFOWI mit Tapatalk


rudolfkoenig

Da gibt es viele Moeglichkeiten:
- Differenz per average oder statistics berechnen, und den Wert danach per notify/DOIF berechnen, und entweder in dummy per set oder in dem urpruenglichen FHEM-Geraet mit setreading speichern.
- userReadings im FHEM-Geraet, der den Fuellstand hat, erst mit differential, und dann die Berechnung mit Grundflaeche. mit userReading kann man kein average/statistics nehmen, da erst userReading und dann average ausgewertet wird, und man braucht das hier in umgekehrter Reihenfolge.

Es wuerde mich wundern, wenn fuer sowas keine Beispiele hier im Forum oder im Wiki gibt.

fiedel

Hi Jens,

ganz schön fies von dir! Das ist schon mein Patent! Als ich es anmelden wollte hat die Tante vom Patentamt gesagt: Und was machen sie, wenn die Zisterne gerade voll ist???  ;D

Na egal, hier mein Stand: Fläche berechnen würde ich nicht. Ich hab mit einem Regenglas gemessen, was gefallen ist und daraus für den Zuwachs in der Zist. einen Faktor errechnet. Dann rechnest du "Zuwachs in L mal Faktor = Regenmenge in L pro m²".
Anstatt Regenglas geht auch jedes rechteckige Gefäß (Fotoschale, Plastikbox) und die Rechenseite Cactus2000

Meine Berechnung ist hier aus dem Forum geklaut, von einer Energie- Tagesmengenberechnung. Sie hatte funktioniert, ging jedoch nach einem Update nicht mehr. Du musst sie also debuggen:

##################################################
# Regen Tagesmenge berechnen
##################################################
sub
prg_Daily_Rain()
{
# Zunächst Tagesmenge (aktueller Wert - Wert von gestern) berechnen
   $data{DRval} = ReadingsVal("Sens_L_Zisterne","content","0")*6.666666 - Value("Dum_DR_Diff_D");
Log 1, "Berechnung Regenmenge1: $data{DRval}";
# Tagesverbrauch in Dum_Daily_Rain_D speichern ; wenn Wert kleiner Null, setze auf Null
   if ( $data{DRval} le 0 ) {$data{DRval} = 0}
   fhem ("set Dum_Daily_Rain_D $data{DRval}");
# Aktuellen Wert in Daily_Rain_Diff speichern (entspricht Regenmenge am Tagesende)
   $data{DRval} = ReadingsVal("Sens_L_Zisterne","content","0")*6.666666;
Log 1, "Berechnung Regenmenge2: $data{DRval}";
   fhem ("set Dum_DR_Diff_D $data{DRval}");
   fhem("save");
}


Das Ganze ist für die myUtils geschrieben. " Dum_Daily_Rain_D" ist der Dummy, der die Tagesmenge enthalten soll, "Dum_DR_Diff_D" der Dummy für die Differenz. Diese setzt du am Anfang von Hand auf Null. Elegant wäre ggf. die Diff. als userreading des Mengendummy anzulegen. Aufrufen kannst du das alles kurz vor Null Uhr per at, oder dynamisch bei Änderung des Zisternenstandes. Dieser schwankt aber meist etwas, wegen Meßungenauigkeiten. Also sollte es eine Ansprechschwelle geben.
Statt "$data{DRval}" würde ich jetzt normale lokale Var. benutzen.

Viel Erfolg!

Frank
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

rudolfkoenig

Zitatif ( $data{DRval} le 0 ) {$data{DRval} = 0}
Das ist definitiv merkwuerdig: le ist ein Stringvergleich.

Jewe

Viele Dank schon mal. Ist je schon eine quasi fertig Lösung. OK. mit Patent [emoji16] soviel hatte ich gar nicht erwartet. Werde es mir anschauen.
Ja, wenn die Zisterne ganz voll ist funktioniert es nicht mehr.


Gesendet von meinem KFFOWI mit Tapatalk