Verschiedenes > Projekte

Bewässerungssteuerung - Vorstellung und Ideensammlung

<< < (2/28) > >>

funclass:
Bewässerung beenden / deaktivieren

Beschreibung folgt noch...


--- Code: ---define notify_BeregnungAus notify Beregnung:off {\
# falls gerade automatikprozess aktiv ist, dann diesen unterbrechen und Zeitgeber löschen\
{if (ReadingsVal('Beregnung','Automatik_Aktiv','0') eq 'ja') {\
fhem ("setReading Beregnung Automatik_Aktiv nein");;\
fhem ("delete autoRegner.*");;\
fhem ("set pushmsg msg 'Beregnung' 'Automatikprogramm Rasenbewässerung unterbrochen.' 'iPhone' -1 ''");;\
# Beregnungsmenge wieder zurücksetzen\
my $menge_aktuell = ReadingsVal('Beregnungsmenge', 'state', '0');;\
my $menge_last = ReadingsVal('Beregnungsmenge', 'Last', '0');;\
fhem ("set Beregnungsmenge $menge_last");;\
fhem ("setReading Beregnungsmenge Last $menge_aktuell");;\
}}\
# falls ein Beregnungskreis aktiv ist, diesen ausschalten\
{if (ReadingsVal('Beregnung','Aktiver_Regner','0') > 0) {\
fhem ("setReading Beregnung Aktiver_Regner 0");;\
}}\
}
attr notify_BeregnungAus group Bewässerung
attr notify_BeregnungAus icon general_aus
attr notify_BeregnungAus room Außen

--- Ende Code ---


--- Code: ---define notify_BeregnungskreisAus notify Relais01.value:.off|Relais02.value:.off|Relais03.value:.off|Relais04.value:.off {\
# Kennzeichen für Beregnungskreis nach Einzelbetrieb zurücksetzen\
{if (ReadingsVal('Beregnung', 'Automatik_Aktiv', '0') eq "nein") {\
fhem ("setReading Beregnung Aktiver_Regner 0");;\
}}\
}
attr notify_BeregnungskreisAus group Bewässerung
attr notify_BeregnungskreisAus icon general_aus
attr notify_BeregnungskreisAus room Außen

--- Ende Code ---

funclass:
Hinweis für anstehende Bewässerung

Beschreibung folgt noch...


--- Code: ---define BeregnungsHinweis at *19:55:00 {if (Value("Beregnung") eq "on") {\
## wenn Bewässerungsautomatik aktiviert\
my $liter_soll = 10;;\
my $tage_max = 4;;\
my $niederschlag = ReadingsVal('Beregnung', 'Menge', '0');;\
my $tage = ReadingsVal('Beregnung', 'Tage', '0');;\
## prüfen ob Niederschlag der letzten x Tage kleiner als x Liter\
{if (($tage > $tage_max) && ($niederschlag < $liter_soll)) {\
# dann Pushmeldung versenden\
fhem ("set pushmsg msg 'Beregnung' 'Morgen wird voraussichtlich der Rasen bewässert.'");;\
}}\
}}
attr BeregnungsHinweis icon message_attention
attr BeregnungsHinweis room Aktionen

--- Ende Code ---

funclass:
Bewässerungszyklus (automatisch) starten

Beschreibung folgt noch...


--- Code: ---define bewaesserung_starten at *03:59:00 {if (Value("Beregnung") eq "on") {\
## wenn Bewässerungsautomatik aktiviert\
my $liter_soll = 10;;\
my $tage_max = 5;;\
my $niederschlag = ReadingsVal('Beregnung', 'Menge', '0');;\
my $tage = ReadingsVal('Beregnung', 'Tage', '0');;\
## prüfen ob Niederschlag der letzten x Tage kleiner als x Liter\
{if (($tage > $tage_max) && ($niederschlag < $liter_soll)) {\
## Beregnungsmenge einstellen (min. 35%)\
my $menge = int(100 - $niederschlag / $liter_soll * 100);;\
{if ($menge < 35) {\
$menge = 35;;\
}}\
my $menge_aktuell = ReadingsVal('Beregnungsmenge', 'state', '0');;\
# aktuellen Wert vor Änderung speichern\
fhem ("setReading Beregnungsmenge Last $menge_aktuell;;");;\
fhem ("set Beregnungsmenge $menge;;");;\
my $min_gr = ReadingsVal("Beregnungsmenge","Getrieberegner",'0');;\
my $sek_gr = $min_gr * 60 - 10;;\
my $min_sr = ReadingsVal("Beregnungsmenge","Spruehregner",'0');;\
my $sek_sr = $min_sr * 60 - 10;;\
## Logik zum Schalten der Beregnungskreise\
my $sek = 60;;\
my $zeit0 = myOffset($sek);;\
$sek = $sek + $sek_gr + 10;;\
my $zeit1 = myOffset($sek);;\
$sek = $sek + $sek_gr + 10;;\
my $zeit2 = myOffset($sek);;\
$sek = $sek + $sek_sr + 10;;\
my $zeit3 = myOffset($sek);;\
$sek = $sek + $sek_sr + 10;;\
my $zeit4 = myOffset($sek);;\
fhem ("setReading Beregnung Automatik_Aktiv ja;;");;\
fhem ("set pushmsg msg 'Beregnung' 'Automatikprogramm Rasenbewässerung startet in einer Minute mit $menge%.' 'iPhone' 0 ''");;\
fhem ("defmod autoRegner1 at +$zeit0 setReading Beregnung Aktiver_Regner 1");;\
fhem ("defmod autoRegner2 at +$zeit1 setReading Beregnung Aktiver_Regner 2");;\
fhem ("defmod autoRegner3 at +$zeit2 setReading Beregnung Aktiver_Regner 3");;\
fhem ("defmod autoRegner4 at +$zeit3 setReading Beregnung Aktiver_Regner 4");;\
fhem ("defmod autoRegnerEnde at +$zeit4 setReading Beregnung Aktiver_Regner 0");;\
fhem ("attr autoRegner.* room Außen;; attr autoRegner.* group Bewässerung;;");;\
}}\
}}
attr bewaesserung_starten cmdIcon execNow:audio_play
attr bewaesserung_starten group Bewässerung
attr bewaesserung_starten icon control_arrow_turn_right
attr bewaesserung_starten room Außen
attr bewaesserung_starten sortby 2
attr bewaesserung_starten webCmd execNow

--- Ende Code ---

Die Funktion myOffset muss in der Datei 99_myUtils.pm eingefügt werden. Diese dient dazu die Startzeitpunkte für die einzelnen Beregnungskreise korrekt zu formatieren.


--- Code: ---sub myOffset($) {

my ($Sekunden) = @_;

my $Stunden = int($Sekunden / 3600);
   $Sekunden %= 3600;
 
my $Minuten = int($Sekunden / 60);
   $Sekunden %= 60;

return sprintf("%02d:%02d:%02d", $Stunden, $Minuten, $Sekunden)

}

--- Ende Code ---

Dersch:
Ich bin der von Facebook :) Freut mich, dass du dir hier die Mühe machst das aufzuschreiben! Ich hoffe es geht weiter und die Beteiligung wächst.

jnewton957:
An den Thema Bewässerungssteuerung bin ich auch schon länger dran. Bisher auf Basis MySensors - aber so richtig zuverlässig habe ich das auf der Testbench nicht hinbekommen. Mal schalten die Relais - mal nicht. Ich habe Gardena 24V im Garten an 5 Strängen. Bisher eben langweilig über eine Gardena 6030 in der Garage

Deine Lösung ist super und ich würde mir gerne die Teile der "Hardware" gerne besorgen bzw. sehen, ob ich die da habe.

Kannst du etwas zur Hardware posten und insbesondere auch dein sketch und Anschluss des nanos beschreiben.

Ein Bild wäre auch super.

Danke
Jörg

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln