Blumenkastenbewässerung

Begonnen von TeeVau, 23 Juli 2013, 15:09:16

Vorheriges Thema - Nächstes Thema

Alex

ZitatIch habe im Internet gesehen das die Gardena Pumpe 180l/h macht. Deine ausgewählte macht 20l/min, das sind 1200l/h,

Das ist mir auch aufgefallen.
Ich war der meinung dass es sich bei der Pumpe um eine Kreiselpumpe handelt. Keine Ahnung wie ich darauf gekommen bin. Und wenn ich mich recht erinnere ist für Kreiselpumpen nicht so schlimm, wenn wir nicht die gesamten 1200 liter auf den  Blumen verteilen. Wenn die 1.1bar aufgebaut sind ist die Fördeleistung gleich dem Verbrauch bei den tropfern... Das ist dann für die Pumpe die maximale Belastung.
Ich habe mich auch nach Alternativen umgeschaut, aber auf den ersten Blick nichts brauchbares mit vergleichbaren Druckwerten gefunden

ulli

Zitat von: Alex am 24 März 2014, 09:57:35
Das ist mir auch aufgefallen.
Ich war der meinung dass es sich bei der Pumpe um eine Kreiselpumpe handelt. Keine Ahnung wie ich darauf gekommen bin. Und wenn ich mich recht erinnere ist für Kreiselpumpen nicht so schlimm, wenn wir nicht die gesamten 1200 liter auf den  Blumen verteilen. Wenn die 1.1bar aufgebaut sind ist die Fördeleistung gleich dem Verbrauch bei den tropfern... Das ist dann für die Pumpe die maximale Belastung.
Ich habe mich auch nach Alternativen umgeschaut, aber auf den ersten Blick nichts brauchbares mit vergleichbaren Druckwerten gefunden

Ich habe auch keine Alternative gefunden die im ähnlichen Preisrahmen ~20€ liegt. 
Ich bin mir sicher das die Pumpe bei 1.1bar Gegendruck über längere Zeit betrieben werden kann. (Dafür ist sie ausgelegt) Die Frage ist nur ob die geförderte Menge über ein Überdruckventil in der Pumpe selbst wieder in den Eimer gefördert wird oder ob der Druck dann >1.1bar ansteigt und irgendwann die Pumpe beschädigt. Dann wäre ein zusätzliches separates Überdruckventil notwendig, dass den Druck einstellt.

Alex

Nein - ein überdruckventil brauchen wir sicher nicht. Die 1,1 bar sind der maximale druck, den die Pumpe bei geschlossenem Kreislauf erzeugen kann. Wenn weniger als die 1200l/h "verbraucht" werden und die 1,1 bar erreicht sind kann die Pumpe keinen höheren Druck aufbauen. Sie kann aufgrund des Funktionsprinzips nur soviel Wasser ansaugen, wie über das Rohrsystem abgegeben wird. bei 1,1 bar --> AnsaugVolumen ~ 0 .... bei 0 bar Gegendruck --> 1200l/h ( veranschaulicht)

ujaudio

Hallo (und guten Abend),
ich habe mir gerade die wichtigsten Teile zugelegt: Tropfer und Schläuche. Ein 400 Liter fassender Behälter und Tauchpumpe waren schon vorhanden. Ich werde zuerst mal eine Zeitsteuerung realisieren, später will ich mich um einen Feuchtesensor kümmern. Die Pumpe schaltet bei Wassermangel ab, nur hätte ich gerne eine Wasserstandsanzeige des Behälters, dami ich rechtzeitig nachfüllen kann,
Was könnt ihr einem FHEM-Neuling empfehlen? Suchstichworte genügen
Einen lieben Gruß
Jürgen

ulli

Sehr interessant. Was hast du für eine Tauchpumpe?

kvo1

such mal nach Zisterne oder Füllstandsanzeige

oder hier

http://forum.fhem.de/index.php/topic,13776.msg86058.html#msg86058


Ich habe eine Füllstandsanzeige mit einem ELV Sensor .....allerdings im Brunner (3000l)
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

ujaudio

Zitat von: ulli am 08 April 2014, 20:32:17
Sehr interessant. Was hast du für eine Tauchpumpe?

Habe ich geschenkt bekommen, ist von Gardena, Modell unbekannt (müsste ich jetzt rausgehen und aus der Tonne holen)
Einen lieben Gruß
Jürgen

TeeVau

Zitat von: ulli am 23 März 2014, 21:49:35
@TeeVau:
Das hört sich super an. Habe das gleich vor. Was ich nur noch nicht ganz verstehe. Die Pumpe liefert 20l/h bei 1.1bar habe ich gesehen. Fördert die Pumpe dann durchgehend in die Leitungen und baut einen konstanten Druck von 1.1bar auf? d.h. die Pumpe hat ein Überdruckventil integriert, dass die übermenge dann wieder in den Eimer absteuert?
Die Pumpte hat kein Überdruckventil. Welchen Druck das Ding jetzt genau im Betrieb macht weis ich gar nicht. Es funktioniert auf jeden Fall. Ich könnte mir aber auch nicht erklären wieso das Ding mehr als 1,1Bar machen soll/kann :-) Irgendwo im Internet habe ich gelesen, dass die Tropfer ab 0,5 Bar funktionieren, das wird schon mit der gekauften passen. Den letzten Sommer hat meine Pumpe überstanden (ca. 3 mal Täglich, insgesamt 300 Betriebsminuten).
Wenn jetzt endlich das Haus fertig angestrichen ist und das Gerüst wieder abgebaut ist, kommt der ganze Kram auch wieder aus dem Wohnzimmer raus auf den Balkon.
Code schreibe ich jetzt raus, hat wieder mal alles länger gedauert bei mir
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

TeeVau

Funktion
Auf dem Balkon ist das Problem, dass einige Blumen keinen großen Wasserspeicher haben. Es muss also öfters gegossen werden, sonst gibt es schnell hängende Köpfe. Am Südbalkon ist zudem eine Herausforderung, dass dort die Mittagssonne ziemlich knallt und da besonders viel Wasser gebraucht wird. Aber pauschal eine Zeit X bewässern ist auch nicht klug, da standen dann nämlich die Blumen an trüben Tagen im Wasser.
Die Idee war, 3 mal täglich zu bewässern. Morgens und Abends fix, Mittags wenn Bedarf ist. Abgewandelt ist das ganze von der Garden.pl aus dem SVN contrib. Mit der Formel habe ich etwas gespielt und eine andere Kennlinie ausgewählt.
Im Grund wird bei hohen Temp. viel bewässert, bei wenig Temp. weniger. Das ganze wäre nicht notwendig, wenn der Wasserspeicher der Pflanzen (also der Topf) groß genug wäre. Ist bei mir aber eben nicht der Fall ;-)

Bewässern morgens:
Die Durchschnittstemp. der letzten 24 Stunden wird ermittelt, ebenso die aktuelle vorhergesagte Tageshöchsttemperatur. Durch die Werte berechne ich einen Multiplikator. Die wirkliche Bewässerungszeit ist dann 120 Sekunden * Multiplikator.

*08:00 {
  my $tempAve = myAverage(24*60*60, "FileLog_AussenTemp", "4:AussenTemp.*T::");
  my $fcTemp = ReadingsVal("myWeather", "fc1_high_c", "0.1");
  my $mult = exp( 2.0 * log( $tempAve / 20 )) + exp( 2.0 * log( $fcTemp / 25 ));
  $mult = 4 if($mult > 4);
  my $duration = myCalcFS20Time(120*$mult);
  $duration = 120 if($duration < 120);
 
  fhem "trigger bk_pumpe multiplier: $mult";
  fhem "trigger bk_pumpe newDuration: $duration";
  Log 3, "Dyn. watering: Starte Wasser für $duration sekunden (Avg: $tempAve°C FC: $fcTemp °C)";
  fhem "set bk_pumpe on-for-timer $duration";
  fhem "set bk_pumpe on-for-timer $duration";
}


Bewässern mittags:
zwischen 15 und 17 Uhr wird die Durchschnittstemp. der letzten 3 Stunden ermittelt. Ist diese höher als 24 Grad wird bewässert. Die Bewässerungsdauer richtet sich nach einem Multiplikator (der u.a. aus dem 3 Stunden Durchnitt errechnet wird) multipliziert mit 120 Sekunden.
Hintergrund ist folgender:
Keine Sonne: Kleine Temp, wenig oder keine bewässerung
Mittlere Sonne: Mittlere Temp, wenig bewässerung bis mäßig
Knallende Sonne: Hohe Temp, viel Wasser.

Wenn das at einmal greift, wird der at disabled und erst später wieder für den nächsten Tag aktiviert.

+*00:30 {
  if($hour >= 15 && $hour <= 17){
    my $tempAve = myAverage("10800", "FileLog_AussenTemp", "4:AussenTemp.*T::");
    if ($tempAve > 24){
      my $mult = exp( 2.5 * log( $tempAve / 24 ));
      $mult = 4 if($mult > 4);
      my $duration = myCalcFS20Time(120*$mult);
      fhem "trigger bk_pumpe multiplier: $mult";
      fhem "trigger bk_pumpe newDuration: " . myCalcFS20Time($duration);
      Log 3, "Dyn. watering: Starte Wasser für $duration Sekunden ($tempAve °C)";
      fhem "set bk_pumpe on-for-timer $duration";
      fhem "set bk_pumpe on-for-timer $duration";
      prowl("Water for $duration seconds...", "Bewässerung",1);
      fhem "attr at_watering2 disable 1";
    }
  }
}


Bewässern Abends:
Ähnlich wie Mittags. Der Durchschnitt der letzten 4 Stunden wird genommen und entsprechend gewässert.

*20:00 {
  my $tempAve = myAverage(4*60*60, "FileLog_AussenTemp", "4:AussenTemp.*T::");
  my $mult = exp( 2.0 * log( $tempAve / 20 ));
  $mult = 4 if($mult > 4);
  my $duration = myCalcFS20Time(120*$mult);
  fhem "trigger bk_pumpe multiplier: $mult";
  fhem "trigger bk_pumpe newDuration: $duration";
  fhem "set bk_pumpe on-for-timer $duration";
  fhem "set bk_pumpe on-for-timer $duration";
  Log 3, "Dyn. watering: Starte Wasser für $duration sekunden ($tempAve°C)";
}


Werte zurücksetzen:
Nachts werden die Tagesbetriebszeiten auf 0 gesetzt. Zudem wird das at wieder aktiviert, was mittags die temp. überwacht und ggf. dann bewässert.

*00:01 {
readingsSingleUpdate($defs{bk_drip_Total},"actualDay", "0", 1);
readingsSingleUpdate($defs{bk_pumpe},"betriebssekunden", "0", 1);
fhem("deleteattr at_watering2 disable");
}


Benutzen Funktionen, devices etc.:
myCalcFS20Time()
Eine Funktion in der 99_myUtils. Ist aus dem FHEM Source geklaut, damit bei dem on-for-timer direkt die richtige Zeit angegeben wird. Sonst sprengt mir das die Logfiles, weil das FHEM Modul die on-for-time Zeit anpasst, das mag ich nicht :-)

sub myCalcFS20Time($){
  my $time = shift;
  my $val = undef;
  my $c = "";
 
  $c = sprintf("%02X", (hex($c) | 0x20)); # Set the extension bit

  ########################
  # Calculating the time.
  LOOP: for(my $i = 0; $i <= 12; $i++) {
    for(my $j = 0; $j <= 15; $j++) {
      $val = (2**$i)*$j*0.25;
      if($val >= $time) {
        if($val != $time) {
          Log 4, "myCalcFS20Time(): changing timeout to $val from $time";
        }
        $c .= sprintf("%x%x", $i, $j);
        last LOOP;
      }
    }
  }
  Log 3, "myCalcFS20Time(): Specified timeout too large, max is 15360" if(length($c) == 2);
  return -1 if(length($c) == 2);
  return $val;
}



myAverage()
ist eine Funktion in den 99_myUtils:

##########################################################
# myAverage
# berechnet den Mittelwert aus LogFiles über einen beliebigen Zeitraum
sub myAverage($$$){
my ($offset,$logfile,$cspec) = @_;
my $period_s = strftime "%Y-%m-%d\x5f%H:%M:%S", localtime(time-$offset);
my $period_e = strftime "%Y-%m-%d\x5f%H:%M:%S", localtime;
my $oll = $attr{global}{verbose};
$attr{global}{verbose} = 2;
my @logdata = split("\n", fhem("get $logfile - - $period_s $period_e $cspec"));
$attr{global}{verbose} = $oll;

my ($cnt, $cum, $avg) = (0)x3;
foreach (@logdata){
  my @line = split(" ", $_);
  if(defined $line[1] && "$line[1]" ne ""){
   $cnt += 1;
   $cum += $line[1];
  }
}
if("$cnt" > 0){$avg = sprintf("%0.1f", $cum/$cnt)};
Log 4, ("myAverage: File: $logfile, Field: $cspec, Period: $period_s bis $period_e, Count: $cnt, Cum: $cum, Average: $avg");
return $avg;
}



FileLog_AussenTemp
Das FileLog zum Temp.fühler am Balkon.

AussenTemp
Der Temp.füherl auf dem Balkon

myWeather
Das ist meine Weather Instanz in FHEM zur Wettervorhersage

bk_pumpe
Das FHEM Device, was die Pumpe ansteuert (Einfach eine FS20-ST)


Im Anhang ist noch eine Grafik, wo die Bewässerungszeit in Abhängigkeit von der Temp. zu sehen ist. Damit habe ich dann etwas rumgespielt um das richtige für meine Gegebenheitn zu finden. Zwar alles etwas hochgestochen für ein paar billige Blumen und Wasser, aber so sind Hobbys eben ;-)
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

kvo1

Hallo  TeeVau,

nicht schlecht  ;) , das werde ich mir bei Gelegenheit mal nähere ansehen da ich
ähnliches vorhabe  :)
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

fhainz

#40
Hallo TeeVau,

vielen dank für den Code! Genau das gleiche hatte ich auch vor und du hast mir hierdurch sehr viel Zeit erspart. :)

Hab deinen Code gerade mit Dummys eingerichtet, die Bewässerungs-Hardware muss ich erst besorgen. Um das ganze für mich übersichtlicher zu machen hab ich alles in eine eigene 99_myUtils_bw_Balkon.pm gespeichert und die at's rufen nur mehr die einzelnen Funktionen auf. Weiters hab ich auch für FileLog_AussenTemp, benötigte Regexp, Wetter und FS20 Device Variablen eingerichtet. Ich denke das klappt soweit..

Was ich noch nicht ganz verstehe sind diese Zeilen

fhem "trigger bk_pumpe multiplier: $mult";
fhem "trigger bk_pumpe newDuration: " . myCalcFS20Time($duration);


und


readingsSingleUpdate($defs{bk_drip_Total},"actualDay", "0", 1);
readingsSingleUpdate($defs{bk_pumpe},"betriebssekunden", "0", 1);


Kannst du mir sagen was die machen?

Grüße

TeeVau

Guten Morgen!

fhem "trigger bk_pumpe multiplier: $mult";
fhem "trigger bk_pumpe newDuration: " . myCalcFS20Time($duration);

Die 2 Zeilen sorgen eigentlich nur dafür, dass entsprechend Events getriggert werden. Das habe ich deshalb gemacht, um die 2 Werte über FileLog loggen zu können. So habe ich letzten Sommer geguckt wie sich Multiplikator und Bewässerungszeit verhalten. Wird für die Funktion an sich nicht benötigt und kann eigentlich auch entfernt werden.


readingsSingleUpdate($defs{bk_drip_Total},"actualDay", "0", 1);
readingsSingleUpdate($defs{bk_pumpe},"betriebssekunden", "0", 1);

Damit setzte ich den Betriebssekundenzähler der Pumpe für den aktuellen Tag auf 0. Zudem wird die Wassermenge (actualDay) auf 0 gesetzt.
Sind beides nur statistische Werte die nichts mit der Funktion zu tun haben.
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

ulli

Freunde der kleinen Bewässerung :)
Im Folgenden ein heißer Tipp wo die Einzelkomponenten preisgünstig auch ohne Gardena Aufdruck gekauft werden können :)
http://www.magnetventile-shop.de/bewaesserungstechnik/mikroberegnung/?xploidID=9advdhsgf5bv9blt2ov5kunug7

Tobias

so sieht meine "Hardware" aus. Gesteuert mit mehreren Bodenfeuchtesensoren und eigenem FHEM-Bewässerungsmodul
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

gestein

Hallo,

hast Du Deine Bewässerung noch immer so in Verwendung?
Ich habe auch vor, meine Topfpflanzen am Balkon so wie Du zu steuern.

Wie verwendest Du Deine Codes?
Füge ich die über ein "define myBlumen at <dein jeweiliger Code> ein?

Danke im Voraus
lg, Gerhard