Autor Thema: Bewässerungssteuerung - Vorstellung und Ideensammlung  (Gelesen 5501 mal)

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Bewässerungssteuerung - Vorstellung und Ideensammlung
« am: 29 Oktober 2016, 22:22:41 »
Da ich schon mit einigen Leuten zu meiner Umsetzung einer Bewässerungssteuerung gesprochen habe und diese immer auf reges Interesse stieß, möchte ich die Lösung hier vorstellen. Ich habe mal drüber nachgedacht das ganze in ein Modul zu "gießen", hierfür fehlen mir jedoch weiterführende Perl-Kenntnisse und die nötige Zeit. Für Anregungen, Fragen, neue Ideen und auch Kritik bin ich offen.

Allgemeines, Voraussetzungen und Anforderungen:

  • Steuerung der Bewässerung anhand der vergangenen/aktuellen Wetterlage, keine Berücksichtigung der Vorhersage (nach meiner Erfahrung zu unzuverlässig) -> Info vor nächster Bewässerung ermöglicht manuelles Eingreifen
  • Wetterdaten von eigener Wetterstation oder (wie in meinem Fall) aus online verfügbaren Wetterdiensten, die Wetterstation welche über wunderground.com verfügbar ist liegt ca. 300m von mir entfernt
  • innerhalb eines frei einstellbaren Zeitraums muss eine Mindestmenge an Niederschlag gemessen/kummuliert werden, ansonsten startet der Bewässerungsvorgang, ggf. mit verringerter Intensität
  • Bewässerungsautomatik lässt sich zentral (de-)aktivieren -> laufender Bewässerungsvorgang wird beim Deaktivieren unterbrochen
  • die Intensität/Dauer der Bewässerung kann manuell verändert werden, hängt im Automatikmodus jedoch vom gemessenen Niederschlag ab
  • einzelne Bewässerungskreise können unterschiedliche Durchflussmengen haben und daher unterschiedliche Bewässerungsdauern erfordern
  • der Startzeitpunkt der automatischen Bewässerung lässt sich frei einstellen
  • es ist Nachvollziehbar welcher Bewässerungskreis im Automatikmodus grad aktiv ist
  • ein einzelner Bewässerungskreis lässt sich manuell aktivieren inkl. Auswahl der Intensität
  • Aktoren zum Schalten der Magnetventile können beliebige Schalter sein, set-extensions erleichtern erheblich die Arbeit da on-for-timer für die Bewässerungsdauer genutzt werden kann
  • einzelne Aktivitäten werden als Info per Pushover versendet


noch nicht umgesetzte Ideen:

  • einsetzender Niederschlag unterbricht einen laufenden Bewässerungsvorgang sofort
  • ein kompletter Bewässerungszyklus lässt sich per Knopfdruck sofort mit wählbarer Intensität starten
  • einzelne Bewässerungskreise lassen sich deaktivieren und werden im Automatikmodus "übersprungen"
  • automatische Erkennung aller definierten Bewässerungskreise/-aktoren z.B. anhand von userreadings inkl. einfacher Vorgabe der Einschaltreihenfolge
  • das Ganze in ein Modul implementieren

Im Folgenden möchte ich die einzelnen Teile etwas genauer erläutern und meinen Quellcode zur Verfügung stellen...
« Letzte Änderung: 30 Oktober 2016, 13:20:28 von funclass »
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #1 am: 29 Oktober 2016, 22:57:29 »
"Hauptschalter"

Zentrales (de-)aktivieren der Bewässerungsautomatik.

define Beregnung dummy
attr Beregnung alias Bewässerung
attr Beregnung devStateIcon on:10px-kreis-gruen off:10px-kreis-rot
attr Beregnung eventMap on:on off:off
attr Beregnung group Bewässerung
attr Beregnung icon humidity
attr Beregnung room Außen
attr Beregnung sortby 0
attr Beregnung userReadings Automatik_Aktiv,Aktiver_Regner,Tage,Menge
attr Beregnung webCmd on:off

Die Userreadings haben folgende Bedeutung:
Automatik_Aktiv: automatischer Bewässerungszyklus läuft gerade
Aktiver_Regner: gibt an, welcher Bewässerungskreis gerade aktiv ist -> beim manuellen Setzen außerhalb des Automatikzykluses wird der einzelne, gewählte Bewässerungskreis mit der eingestellten Intensität gestartet
Tage: Anzahl der Tage seit der letzten Bewässerung bzw. seit Erreichen der gewünschten Niederschlagsmenge
Menge: Niederschlagsmenge im Zeitraum der o.g. Tage

Ich habe für meinen Anwendungsfall festgelegt, dass 10 Liter/qm die optimale Bewässerungsmenge ist. Das heißt, jeder Kreis soll bei voller Intensität (100%) diese Menge ausbringen. Sofern innerhalb von 5 Tagen mind. 10 Liter/qm an Niederschlag gemessen werden, so wird nicht bewässert sondern beide Zähler zurückgesetzt. Ist die Menge nach 5 Tagen geringer, so wird die Intensität gewählt um 10 Liter/qm zu "komplettieren" und der Bewässerungszyklus gestartet. Die minimale Intensität beträgt jedoch 35%. Nach erfolgreicher Bewässerung wird die Bewässerte Menge auf den aktuellen Wert im Reading Menge aufaddiert. Hierdurch wird der Tageszähler am Ende des Tages zurückgesetzt. Voraussetzung für das Starten der Bewässerung ist natürlich immer der aktivierte "Hauptschalter".

Beispiele:
  • Tage = 2
    Menge = 3
    Bewässerungszyklus startet nicht, da der vorgegebene Zeitraum von 5 Tagen noch nicht abgelaufen ist.
  • Tage = 6
    Menge = 0
    Bewässerungszyklus startet zur gewünschten Zeit mit 100%
  • Tage = 6
    Menge = 3
    Bewässerungszyklus startet zur gewünschten Zeit mit 70%
  • Tage = 6
    Menge = 9
    Bewässerungszyklus startet zur gewünschten Zeit mit 35% ->Mindestintensität
  • Tage = 6
    Menge = 12
    Bewässerungszyklus startet nicht, da gewünschte Niederschlagsmenge bereits erreicht (z.B. bei starkem Regen in den frühen Morgenstunden). Beide Zähler werden am Ende des Tages zurückgesetzt.

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #2 am: 29 Oktober 2016, 23:02:01 »
Intensität

Zur Einstellung der Bewässerungsmenge (Intensität) wird ein Dummy genutzt welcher sich einfach per Slider im Bereich zwischen 0 und 100% verstellen lässt.

define Beregnungsmenge dummy
attr Beregnungsmenge alias Intensität
attr Beregnungsmenge group Bewässerung
attr Beregnungsmenge icon weather_rain_gauge
attr Beregnungsmenge room Außen
attr Beregnungsmenge setList state:slider,0,1,100
attr Beregnungsmenge sortby 1
attr Beregnungsmenge stateFormat state%</br>GR: Getrieberegner min</br>SR: Spruehregner min
attr Beregnungsmenge userReadings Getrieberegner {60/100*ReadingsVal("Beregnungsmenge","state",100)}, Spruehregner {20/100*ReadingsVal("Beregnungsmenge","state",100)}, Last
attr Beregnungsmenge webCmd state

Die Userreadings haben folgende Bedeutung:
Getrieberegner: Dauer für Beregnungskreise mit Getrieberegnern (GR) um die gewünschte Menge auszubringen
Last: Merker für manuelle Einstellung der Intensität
Spruehregner: Dauer für Beregnungskreise mit Sprühregnern (SR) um die gewünschte Menge auszubringen

Im Hintergrund berechnet der Dummy die jeweilige Bewässerungsdauer für einzelne Bewässerungskreise. In meinem Fall gibt es 2 unterschiedliche Varianten:
  • Bewässerungskreise mit Getrieberegnern benötigen 60min um die gewünschte Menge (bei mir 10L/qm) auszubringen
  • Bewässerungskreise mit Sprühregnern benötigen 20min um die gewünschte Menge auszubringen

Die (Maximal-)Dauer lässt sich individuell anpassen und hängt natürlich von den eingesetzten Regnern und den örtlichen Gegebenheiten wie z.B. dem Wasserdruck ab. Es lassen sich auch noch weitere Varianten ergänzen. Im Bewässerungszyklus muss dann auf die entsprechenden Werte zurückgegriffen werden um die gewünschte Dauer zu Bewässern.
Da die Intensität im Automatikzyklus von der Niederschlagsmenge abhängt und automatisch bestimmt wird, existiert noch ein "Merker" welcher die manuell gewählte Einstellung speichert um diese nach dem Bewässerungszyklus wiederherzustellen. Um sofort die Bewässerungsdauer für die einzelnen Kreise ablesen zu können wurde das Stateformat neben der Prozentangabe um die beiden Userreadings ergänzt.
« Letzte Änderung: 30 Oktober 2016, 12:13:14 von funclass »

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #3 am: 29 Oktober 2016, 23:06:12 »
Niederschlagszähler

Täglich kurz vor Mitternacht wird die kumulierte Niederschlagsmenge des Tages auf die, der letzten Tage aufaddiert. Ist die Menge größer als der gewünschte Wert (bei mir 10L), dann wird der Zähler, als auch die Anzahl der Tage zurückgesetzt. Ein automatischer Bewässerungszyklus erhöht ebenfalls den Zähler, wodurch dieser ebenfalls am Abend wieder zurückgestellt wird. Die Niederschlagsdaten entnehme ich einer öffentlichen Wetterstation von wunderground.com, natürlich können auch andere öffentliche oder eigene Wetterstationen als Quelle dienen.

define Niederschlag_schreiben at *23:59:30 {\
my $aktuell = ReadingsVal('Beregnung', 'Menge', '0');;\
my $niederschlag = ReadingsVal('wu_conditions', 'current_observation_precip_today_metric', '0') + $aktuell;;\
my $tage = ReadingsVal('Beregnung', 'Tage', '0') + 1;;\
# wenn Niederschlagsmenge >= 10, dann Werte zurücksetzen\
{if ($niederschlag >= 10) {\
$niederschlag = 0;;\
$tage = 1;;\
}}\
fhem "setReading Beregnung Menge $niederschlag";;\
fhem "setReading Beregnung Tage $tage";;\
}
attr Niederschlag_schreiben group Bewässerung
attr Niederschlag_schreiben icon weather_rain_meter
attr Niederschlag_schreiben room Außen
« Letzte Änderung: 30 Oktober 2016, 12:22:37 von funclass »

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #4 am: 29 Oktober 2016, 23:09:30 »
Bewässerungskreissteuerung

Das Aktivieren der einzelnen Bewässerungskreise erfolgt über ein einzelnes Userreading (Aktiver_Regner) im "Hauptschalter". Damit lässt sich relativ einfach ein einzelner Kreis aktivieren oder eine individuelle Reihenfolge realisieren. Der Zugriff auf die Aktoren, welche die Magnetventile ansteuern geschieht gekapselt durch dieses Notify. In meinem Fall hängen alle Magnetventile an einem Relaisblock, welcher durch einen Arduino Nano mit FIRMATA angesteuert wird. Durch set-extensions kann ich den on-for-timer Befehl nutzen und somit muss ich mich nur ums Einschalten und die Zeitvorgabe kümmern. Einen direkten, manuellen Zugriff vermeide ich, da hierbei die Intensität und andere Mechanismen nicht berücksichtigt würden. Direktes Bedienen der Aktoren nutze ich lediglich für Testzwecke oder z.B. beim Einwintern der Bewässerungsanlage.

Wird das Reading "Aktiver_Regner" auf einen Wert zwischen 1 und 4 gesetzt, wird der entsprechende Bewässerungskreis für die eingestellte Dauer im Dummy "Intensität" eingeschaltet und eine Infomeldung per Pushover versendet. Das Setzen kann durch den Automatikzyklus oder auch manuell geschehen.

Wird das Reading "Aktiver_Regner" auf 0 gesetzt, werden alle Aktoren ausgeschaltet.
+ Sofern der Automatikzyklus aktiv ist wird dieser beendet. Sollten noch Zeitgeber vorhanden sein, so werden diese gelöscht. Außerdem wird die bewässerte Menge auf den Zähler aufaddiert und die zuletzt eingestellte Intensität wiederhergestellt.

define notify_Beregnungskreis notify Beregnung:Aktiver_Regner:.* {\
# Prüfen welcher Beregnungskreis aktiviert werden soll...\
my $beregnungskreis = ReadingsVal('Beregnung', 'Aktiver_Regner', '0');;\
{if ($beregnungskreis eq '0') {\
# alles ausschalten und ggf. Zeitgeber löschen\
fhem ("set Relais01,Relais02,Relais03,Relais04 off");;\
{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 beendet.' '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");;\
# Tageszähler zurücksetzen\
my $menge = ReadingsVal('Beregnung', 'Menge', '0') + ($menge_aktuell / 10);;\
fhem ("setReading Beregnung Menge $menge_aktuell");;\
}}\
}}\
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;;\
\
{if ($beregnungskreis eq '1') {\
fhem ("set Relais01 on-for-timer $sek_gr");;\
fhem ("set pushmsg msg 'Beregnung' 'Regner Hinten für $min_gr Minuten eingeschaltet.' 'iPhone' -1 ''");;\
}}\
{if ($beregnungskreis eq '2') {\
fhem ("set Relais02 on-for-timer $sek_gr");;\
fhem ("set pushmsg msg 'Beregnung' 'Regner Terrasse für $min_gr Minuten eingeschaltet.' 'iPhone' -1 ''");;\
}}\
{if ($beregnungskreis eq '3') {\
fhem ("set Relais03 on-for-timer $sek_sr");;\
fhem ("set pushmsg msg 'Beregnung' 'Regner Vorn für $min_sr Minuten eingeschaltet.' 'iPhone' -1 ''");;\
}}\
{if ($beregnungskreis eq '4') {\
fhem ("set Relais04 on-for-timer $sek_sr");;\
fhem ("set pushmsg msg 'Beregnung' 'Regner Seite für $min_sr Minuten eingeschaltet.' 'iPhone' -1 ''");;\
}}\
}
attr notify_Beregnungskreis group Bewässerung
attr notify_Beregnungskreis icon control_arrow_rightward
attr notify_Beregnungskreis room Außen
« Letzte Änderung: 30 Oktober 2016, 13:03:19 von funclass »

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #5 am: 29 Oktober 2016, 23:13:14 »
Bewässerung beenden / deaktivieren

Beschreibung folgt noch...

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

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

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #6 am: 29 Oktober 2016, 23:15:18 »
Hinweis für anstehende Bewässerung

Beschreibung folgt noch...

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

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #7 am: 29 Oktober 2016, 23:17:41 »
Bewässerungszyklus (automatisch) starten

Beschreibung folgt noch...

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

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.

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)

}
« Letzte Änderung: 01 April 2017, 21:58:51 von funclass »

Offline Dersch

  • Full Member
  • ***
  • Beiträge: 220
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #8 am: 01 November 2016, 14:42:10 »
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.

Offline jnewton957

  • Full Member
  • ***
  • Beiträge: 317
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #9 am: 06 November 2016, 19:56:02 »
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
FHEM5.8 auf Pi3
V 1.65 nanoCUL433 (IT)
nanoCUL JeeLink
V 1.66 nanoCUL868 (HM) (ESA2000WZ)
xELRO AB440, xDECT200, PCA301, xTFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo)

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #10 am: 06 November 2016, 20:15:18 »
Gern kann ich ein paar Fotos und ein Schaltbild posten. Muss ich die nächsten Tage mal vorbereiten.
Bewässerungsventile per Funk ohne Rückkanal schalten wäre mir zu unsicher. Genau genommen gibt FIRMATA auch eine echte Info zurück ob der Ausgang wirklich ein- bzw. ausgeschalten wurde, aber bei mir funktioniert diese Variante nach einer kleinen Modifikation seit über einem Jahr absolut zuverlässig.
Vorab schonmal kurz meine Hardware-Liste:
  • Arduino Nano per USB am Raspberry
  • 8-fach Relaisblock an den GPiOs des Nano
  • zwischen Nano und dem Relaisblock habe ich noch einen ULN2003 (Inverter IC) geschalten, da die Relais aktive-low sind. Hatte anfangs mit dem eingesetzten Sketch (Standard FIRMATA) und dem FHEM-Modul FRM viele fehlerhafte Schaltvorgänge. Mit dem IC konnte ich das Problem lösen. -> zum Thread
  • die Spannungsversorgung für die Magnetventile läuft über einen 24V Klingeltrafo
  • seit Sommer diesen Jahres ist das ganze in einem Aufputz Unterverteiler im HWR verbaut
  • auf der "Wasser-Seite" setzte ich Ventile und Regner von Rainbird ein, da Gardena mich nach dem Einbau ziemlich schnell enttäuscht hat (hab ich mittlerweile alles durch Rainbird ersetzt)
« Letzte Änderung: 06 November 2016, 20:31:04 von funclass »

Offline jnewton957

  • Full Member
  • ***
  • Beiträge: 317
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #11 am: 08 November 2016, 17:39:33 »
Gern kann ich ein paar Fotos und ein Schaltbild posten. Muss ich die nächsten Tage mal vorbereiten.


Ja  das wäre schon wichti. Insbesondere sollte man auch sehen, wie der ULN2003 verkabelt ist.

Habe tatsächlich bis auf den IC alle Teile da und würde das gerne nachbauen.
Eigentlich kann ich das ja dann auch mit einem 1-er Relais auch für die Pumpe verwenden, die ja eben vorher Strom braucht.
Oder ich muss die über eine Funksteckdose schalten - mal sehen-

Danke für die Mühen.

Jörg

FHEM5.8 auf Pi3
V 1.65 nanoCUL433 (IT)
nanoCUL JeeLink
V 1.66 nanoCUL868 (HM) (ESA2000WZ)
xELRO AB440, xDECT200, PCA301, xTFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo)

Offline Dersch

  • Full Member
  • ***
  • Beiträge: 220
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #12 am: 08 November 2016, 18:54:24 »
Warum hast du den Relaisblock nicht direkt an den GPIO des PI? Ich verstehe den Grund dafür nicht so richtig. Mit Ardunio habe ich mich noch gar nicht befasst. Aber ich verstehe es grob so, dass ich einen PI nehme wenn ich auch direkt ein Linux mit Anwendungen fahren möchte und einen Ardunio wenn ich nur einen günstigen Mikrocontroller für eine vordefinierte Aufgabe brauche. Aber einen Ardunio an einem Pi verstehe ich nicht ganz :D

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #13 am: 08 November 2016, 22:11:03 »
Grundsätzlich kann man den Relaisblock auch direkt an die GPIOs des Raspberry anklemmen. Eine triftige Begründung für meinen Nano habe ich nicht wirklich. Hatte mal überlegt diesen irgendwo "in der Ferne" zu platzieren und die GPIOs über 1wire anzusteuern. Hierfür fehlt mir jedoch bis heute die Muße. Ich nutze jedoch noch einen Pin des Nano um 1wire-Temperatursensoren auszulesen.
Kurz gesagt, ich fand´s irgendwie eleganter als direkt an den Pi anzuklemmen.

Offline jnewton957

  • Full Member
  • ***
  • Beiträge: 317
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #14 am: 14 November 2016, 07:32:51 »
Warum hast du den Relaisblock nicht direkt an den GPIO des PI? Ich verstehe den Grund dafür nicht so richtig. Mit Ardunio habe ich mich noch gar nicht befasst. Aber ich verstehe es grob so, dass ich einen PI nehme wenn ich auch direkt ein Linux mit Anwendungen fahren möchte und einen Ardunio wenn ich nur einen günstigen Mikrocontroller für eine vordefinierte Aufgabe brauche. Aber einen Ardunio an einem Pi verstehe ich nicht ganz :D

Ich nehme die Arduinos letztlich aus Gründen der "Dezentralisierung". Da müssen Antennen (433,868,JeeLink,MySensors etc) für die ganzen Steckdosen und andere IoT Dinge her.

Im Falle der Bewässerungssteuerung brauche ich den Adruino, da ich die Steuerung in der Garage (wgen Verkabelung des Gartens) brauche. Also wird  auch hier wieder ein nano mit Funklösung benötigt.

@funclass: Bin gespannt audf den Schaltplan und Bilder. Gerade nochmals versucht zu googeln, wie man den ULN2003 an den Arduino anbringen könnte - nichts gefunden.
Ich hoffe daher auf ein paar mehr Details - DANKE

Jörg.
FHEM5.8 auf Pi3
V 1.65 nanoCUL433 (IT)
nanoCUL JeeLink
V 1.66 nanoCUL868 (HM) (ESA2000WZ)
xELRO AB440, xDECT200, PCA301, xTFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo)

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #15 am: 21 November 2016, 22:11:59 »
Sorry erstmal für die fehlende Reaktion in den letzten Tagen. Hab aktuell noch einige Bauprojekte zu laufen, und da der Winter naht ist Bewässerungssteuerung derzeit nicht Priorität A Thema.
Ich habe mal 2 Fotos von meiner "FHEM-Unterverteilung" gemacht und mal nen allgemeines Bild zur Nutzung des ULN im Netz rausgesucht (ist zwar nicht der ULN2003 abgebildet aber Funktionsweise ist identisch). Ist im Grunde ziemlich simpel, 5V an Pin 9 und Masse an 10. Ausgang des Nanos (oder Raspis) an Pin 1, 2, 3 ... oder 7 und gegenüberliegenden Pin an das Relais. Da ich in Summe 16 Relais zur Verfügung habe, habe ich 3 ICs verbaut.
Um flexibel zu sein und problemlos Änderungen vornehmen zu können habe ich nicht gelötet sondern auf Breadboardverkabelung gesetzt. Nun kurz ne grobe Beschreibung, ausführlich muss ich später noch werden.

Die ersten 4 Relais oben links steuern die Bewässerungsventile. Die angeklemmten Relais des rechten Blocks sind für meine Hoftürklingel. Unten rechts der Trafo für die Ventile. Gezeichnetes Schaltbild reiche ich noch nach.

Offline jnewton957

  • Full Member
  • ***
  • Beiträge: 317
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #16 am: 26 November 2016, 10:02:38 »
Gezeichnetes Schaltbild reiche ich noch nach.

Schon mal ganz herzlichen Dank für die Bilder und Beschreibung.
Es macht es etwas klarer und ist schon mal hilfreich.

Auf das gezeichnete Schaltbild freuen wir uns - damit dürften dann insbesondere auch "Unklarheiten" auf der linken Seite des Entwicklungsboards ausgeräumt werden.

Danke für die Mühe.

Jörg
P.S. wäre mal interessant an welchen "Großprojekten" du sonst noch arbeitest - die Bewässerungssteuerung ist auf jeden Fall für mich der Hammer und "mein" Großprojekt über die Weihnachtstage.
Parallel arbeite ich noch an MySensors Sensoren für die Bewässerungsnotwendigkeit von Pflanzen in outdoor Blumenkübeln und einer Wasseruhrablesevorrichtung (auch mysensors)

FHEM5.8 auf Pi3
V 1.65 nanoCUL433 (IT)
nanoCUL JeeLink
V 1.66 nanoCUL868 (HM) (ESA2000WZ)
xELRO AB440, xDECT200, PCA301, xTFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo)

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #17 am: 12 Dezember 2016, 22:40:14 »
Hallo zusammen,

anbei mal ein schematischer Schaltplan beschränkt auf 7 Relais. Für weitere 7 wird ein 2. ULN2003 benötigt. Ich habe neben der Bewässerungssteuerung auch meine Hoftürklingel über 2 Relais laufen, daher gibt es noch ein paar Zusatzbauteile auf dem Breadboard. Außerdem hängt noch ein 1Wire-Temperatursensor am Arduino, für die Bewässerungslogik ist das aber alles irrelevant.
Die Elektronik wird komplett über die USB-Versorgung des Arduino gespeist. Dieser hängt am gleichen Netzteil wie mein Raspberry (hat 2 USB-Ports mit jeweils 2A).
Auf dem Arduino läuft der Sketch ConfigurableFirmata v2.06 ohne weitere Anpassungen. Standard würde hierfür auch vollkommen ausreichen, da ich 1 Wire brauche habe ich damals aber CF verwendet.

Derzeit beginne ich mit dem Ausbau meines Dachgeschosses. Deshalb wir hier FHEM noch ein wenig mehr zu tun bekommen (Rollläden der Dachfenster, schaltbare Steckdosen, Beleuchtung etc.). Außerdem wird je nach Wetterlage auch noch an der Garage gebaut, daher die sporadische Pflege von Infos zu diesem Projekt hier.
« Letzte Änderung: 12 Dezember 2016, 22:44:03 von funclass »

Offline jnewton957

  • Full Member
  • ***
  • Beiträge: 317
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #18 am: 16 Dezember 2016, 19:39:26 »
Hallo zusammen,

anbei mal ein schematischer Schaltplan beschränkt auf 7 Relais.

DANKE DANKE DANKE

Schönen 4. Advent

Jörg
FHEM5.8 auf Pi3
V 1.65 nanoCUL433 (IT)
nanoCUL JeeLink
V 1.66 nanoCUL868 (HM) (ESA2000WZ)
xELRO AB440, xDECT200, PCA301, xTFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo)

Online tante ju

  • Full Member
  • ***
  • Beiträge: 376
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #19 am: 05 Januar 2017, 23:12:43 »
Ich habe diesen Sommer die Bewässerung im Garten auch automatisiert. Hatte auch erst mit den fertigen Relais-Platinen experimentiert, war da aber nicht so glücklich mit.

Letztlich habe ich ein Steuergerät auf MySensor-Basis gebaut. Leider habe ich keine Fotos vor dem Zusammenbau, wollte das aber noch mal bauen und Fotos machen, da ich da ein paar Dinge eingebaut habe, die vielleicht für viele interessant sind.

Die Basisplatine enthält Sicherung und Schaltwandler von 220V auf 5V zur Versorgung der Elektronik. NRF Modul, ATmega, ATSHA, ULN und 7 Relais sind auch noch untergebracht. Eine zweite Platine, die oben im Hutschienengehäuse eingebaut wird, enthält 7 Taster, 7 LEDs, 2 PCF8574, ein OLED und einen LM75. Die beiden Platinen sind über I2C verbunden.

Warum ich dieses gewählt habe?

Ich wollte alles in einer normalen Unterverteilung einbauen und Kleinspannung und Niederspannung trennen und da keine nackten Kontakte. Da auch die Pumpe gesteuert werden soll, muß noch ein Koppelrelais dahinter, die es auch für Hutschiene gibt.

Dann sollte alles auch autonom laufen. Also über die Tasten Pumpe an/aus und auch die Ventile zu betätigen, automatische maximale Laufzeiten, damit bei Fehlfunktionen keine Sumpflandschaft entsteht, und der LM75 als Temperatursensor, damit automatisch bei unter 10 Grad die Pumpe abgeschaltet bleibt. Ein automatisches Belüftungsprogramm für den Winter muß ich noch einbauen.

Die LEDs zeigen an, ob ein Relais eingeschaltet ist und evtl. ob ein Timer läuft. Das OLED ist eigentlich überflüssig, zeigt aber ein paar Statusinfos, wie Temperatur an.

Das ganze läuft über MySensors und der ATSHA ist drin, damit nicht irgendwer Kontrolle über das Wasser übernimmt.

Bei Bedarf kann ich gerne mal Schaltpläne und Layouts bereitstellen.

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #20 am: 06 Januar 2017, 09:17:50 »
Das klingt auch sehr interessant. Über weiterführende Infos würde ich mich natürlich freuen.

Offline jnewton957

  • Full Member
  • ***
  • Beiträge: 317
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #21 am: 17 Februar 2017, 20:16:17 »


Bei Bedarf kann ich gerne mal Schaltpläne und Layouts bereitstellen.

Hallo,

ich hätte Bedarf und würde mich über mehr Infos (und Bilder) sehr freuen.

Danke
Jörg
FHEM5.8 auf Pi3
V 1.65 nanoCUL433 (IT)
nanoCUL JeeLink
V 1.66 nanoCUL868 (HM) (ESA2000WZ)
xELRO AB440, xDECT200, PCA301, xTFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo)

Online tante ju

  • Full Member
  • ***
  • Beiträge: 376
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #22 am: 27 März 2017, 20:55:27 »
So,

hier ein paar mehr Infos zu meiner Bewässerungssteuerung.
Die Anbindung an FHEM erfolgt mittels MySensor. Dafür habe ich eine Modul für die Hutschiene gebaut, welches:
  • An 220V betrieben wird
  • 7 Relais steuert
  • Einen Temperatursensor enthält
  • Tasten für direkte Steuerung enthält
  • Kontroll-LEDs und Display enthält
  • Eingeschränkt autark laufen kann

Schaltpläne und Layouts habe ich angehängt.
Wenn man sich das 19" Hutschienengehäuse anschaut, dann kann man da mehrere Platinen unterbringen, bzw. muß man sogar. Deswegen sind es zwei Platinen: Einmal die Basisplatine, auf welcher auch die Schraubklemmen für die Anschlüsse sitzen und einmal die Front-Platine mit den LEDs und Tastern.
Das Modul läuft auch nur mit der Basisplatine. Dann kann man halt vor Ort nichts sehen oder steuern. Die Anbindung mit der Frontplatine läuft über I2C, womit sich die Verkabelung in Grenzen hält. Die Platinenmaße sind exakt so, daß es in ein Hutschienengehäuse passt. (Details müsste ich nachschauen).

Wichtig ist hierbei, daß man ein wenig an der Arduino-Library basteln muß. Es werden ALLE I/O-Pins des ATmega verwendet, also auch die beiden, an denen normalerweise der Quarz hängt. Diese sind aber in der normalen Header-Datei nicht definiert, weswegen man die beiden Einträge hinzufügen muß. Ebenso muß man manuell per avrdude die Fuses richtig setzen, damit die beiden I/Os verfügbar werden. Im Laufe der Entwicklung hatten sich ein paar Änderungen ergeben, weswegen drei analoge Pins nun wieder frei sind, und man das auch anders machen könnte.
An jedem Relais ist ein Jumper, durch welchen man einstellen kann, ob die beiden nach Außen geführten Kontakte ein Öffner oder Schließer sind. Nur beim mittleren Relais muß man das mit Drahtbrücke festlegen, da dort ein Steg vom Gehäuse im Weg ist.

Die Display-Platine enthält eine LED und einen Taster für jeden Kanal, welche über I2C I/O angesprochen werden. Ich habe da noch ei OLED eingebaut, weil ich es hatte und ein paar Zusatzinfos anzeigen wollte. Das ist aber nicht so wirklich nötig und das kann man sich sparen. Der Temperatursensor sitzt auch auf der Displayplatine, um nicht durch Stauwärme im Gehäuse beeinträchtigt zu werden.

Die Funktion ist folgende:
Für jeden Kanal kann man einstellen (per MySensor), ob es einen Timer gibt. Mit Timer wird dann ab der Aktivierung (per Taster oder MySensor Befehl) die Zeit runtergezählt und anschließend das Relais wieder deaktiviert. Der Temperaturfühler ist zur Sicherung der Pumpe da und schaltet die Pumpe unterhalb von 10 Grad ab. 10 Grad, weil das ganze in einem Unterverteiler sitzt, der immer ein wenig über Außentemperatur ist.

Die Relais steuern direkt die 24V für die Magnetventile, wobei ein Relais de gemeinsamen Kontakt aller Magnetventile steuert. So kann ich die Ventilbox komplett potentialfrei schalten. Ist nicht unbedingt notwendig, aber das ist für mich noch die Rückversicherung bei abgeschalteter Anlage, daß nicht ein einzelner Tastendruck irgendwo Wasser einschaltet :-)

Die Pumpe und andere 220V Verbraucher schalte ich über Finder Koppelrelais. Also das Relais schaltet das Koppelrelais, welches dann erst die 220V schaltet. Eigentlich könnten auch die eingebauten Relais 220V schalten, aber man sollte Niederspannung von Kleinspannung immer soweit wie möglich trennen, deswegen wollte ich an der Anschlußleiste keine 220V haben.

Noch ein paar Warnhinweise:
Auf der Platine ist ein Netzteil, somit liegen da auch 220V an. Das ganze gehört in ein entsprechendes Gehäuse mit Schutzklasse je nach Aufstellungsort. Die ganze 220V Verkabelung sollte nur Fachkräfte machen. 220V kann nicht nur tödlich sein, Fehler können auch Brände auslösen und Fehler können auch zur Zerstörung von Geräten führen.
Da sich Kondenswasser bilden kann, sollte die Platine (Kupferseite) auch entsprechend beschichtet sein, um Leckströme zu verhindern.

Ich übernehme keine Garantien und werde diese Platinen auch nicht produzieren oder verkaufen.

Bei Bedarf kann ich auch noch die anderen, wasserberührenden, Bauteile raussuchen, die ich verwendet habe.
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline pnewman

  • Full Member
  • ***
  • Beiträge: 149
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #23 am: 29 März 2017, 21:34:05 »
Hallo,

danke für diese wunderbare Steuerung.

Da Ich wunderground nicht nutze, muss Ich den Niederschlagszähler auslassen und die Beregnung auf die Frage "Regnet es Heute oder Morgen?" mit Proplanta umstellen.

Hat das schon jemand?


Gruß
Ralf
Raspberry Pi 2 / COC V 1.62 CSM868 - MAX!=Heizung, HM-Lan - Rollo+Licht, JeeLink-Clone 868 - LaCrosse, JeeLink-Clone 868 - PCA301, CUL 434 - IT-Steckdosen+Fernbedienung

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #24 am: 29 März 2017, 21:37:03 »
Wie sehen die readings bei Proplanta hierfür aus?

Offline pnewman

  • Full Member
  • ***
  • Beiträge: 149
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #25 am: 29 März 2017, 21:51:38 »
Hallo,

für Heute ist es "fc0_rain"
für morgen ist es "fc1_rain"

Danke für deine Hilfe.


Edit:
Übrigens benutze ich einen Homematic 8fach Empfänger und eine 8fach Relaisplatine für Arduino.
« Letzte Änderung: 29 März 2017, 21:53:15 von pnewman »
Raspberry Pi 2 / COC V 1.62 CSM868 - MAX!=Heizung, HM-Lan - Rollo+Licht, JeeLink-Clone 868 - LaCrosse, JeeLink-Clone 868 - PCA301, CUL 434 - IT-Steckdosen+Fernbedienung

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #26 am: 29 März 2017, 22:11:00 »
Ich würde dafür lediglich den automatischen Start des Beregnungszyklus um die Prüfung der beiden Readings erweitern und die tägliche Kumulation der Niederschlagsmenge deaktivieren (es sei denn Proplanta liefert auch irgendwie den Tageswert für Niederschlag). Vorteil ist dann, dass der Zyklus der Beregnung weiterhin über den Tageszähler gewählt werden kann und sonst keine weiteren Anpassungen nötig wären.

z.B.:
## Zyklus starten
...
my $heute = ReadingsVal('Proplanta', 'fc0_rain', '0');;\
my $morgen = ReadingsVal('Proplanta', 'fc1_rain', '0');;\
## prüfen ob Niederschlag der letzten x Tage kleiner als x Liter\
{if (($tage > $tage_max) && ($niederschlag < $liter_soll) && ($heute < x) && (morgen < x)) {\
...

-> x muss natürlich gegen einen gewünschten Mindestwert ersetzt werden oder du prüfst ob heute und morgen = 0 ist

und

define Niederschlag_schreiben at *23:59:30 {\
my $aktuell = ReadingsVal('Beregnung', 'Menge', '0');;\
my $niederschlag = $aktuell;;\
...
« Letzte Änderung: 29 März 2017, 22:13:55 von funclass »

Offline jensweber

  • Full Member
  • ***
  • Beiträge: 174
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #27 am: 30 März 2017, 09:11:51 »
So,

hier ein paar mehr Infos zu meiner Bewässerungssteuerung.

Hallo tante ju,

kannst Du vielleicht noch ein paar Bilder Deiner Anlage posten ? Würde mich schon sehr interessieren. :-)

Jens

Offline pnewman

  • Full Member
  • ***
  • Beiträge: 149
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #28 am: 30 März 2017, 17:01:15 »
Hallo funclass,

heißen deine Getrieberegner "Getrieberegner"?

Ich schreibe gerade den Code für mich um und bin darüber gestolpert.
Gestern hatte ich alles nur grob überflogen und mich über wunderground informiert.


Edit:

damke habe es schon gefunden, du steuerst Relais01 - Relais04!

Gruß
Ralf
« Letzte Änderung: 30 März 2017, 17:05:27 von pnewman »
Raspberry Pi 2 / COC V 1.62 CSM868 - MAX!=Heizung, HM-Lan - Rollo+Licht, JeeLink-Clone 868 - LaCrosse, JeeLink-Clone 868 - PCA301, CUL 434 - IT-Steckdosen+Fernbedienung

Offline pnewman

  • Full Member
  • ***
  • Beiträge: 149
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #29 am: 30 März 2017, 18:02:06 »
Hallo funclass,

ich habe "Niederschlag_schreiben" mal auf 17:54:00 gestellt und folgendes Log erhalten:
2017.03.30 17:54:00 3: setReading Beregnung Menge 0 : Please define Beregnung first
2017.03.30 17:54:00 3: setReading Beregnung Tage 1 : Please define Beregnung first
2017.03.30 17:54:00 3: Niederschlag_schreiben: Please define Beregnung first
Wenn ich Beregnung nicht definiert habe ist dies schon klar.

Nur habe ich nichts dergleichen gefunden.

Wenn ich auf den Pfeil von "bewaesserung_starten" klicke passiert auch nichts.



Edit:

Zu Dumm zum Lesen! Entschuldigung!
Ich sollte auch den Anfang mitlesen  "Hauptschalter"
Gruß
Ralf
« Letzte Änderung: 30 März 2017, 18:05:31 von pnewman »
Raspberry Pi 2 / COC V 1.62 CSM868 - MAX!=Heizung, HM-Lan - Rollo+Licht, JeeLink-Clone 868 - LaCrosse, JeeLink-Clone 868 - PCA301, CUL 434 - IT-Steckdosen+Fernbedienung

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #30 am: 30 März 2017, 20:38:41 »
Hallo Ralf,

auch wenn du die Fragen schon selbst klären konntest, von mir noch ein paar Hinweise.

Ja, meine Ventile für die Regner werden von Relais01 bis Relais04 geschaltet (bald kommen noch 4 Weitere hinzu). Die Unterscheidung in Getriebe- und Sprühregner mache ich nur, da die Wassermenge unterschiedlich ist und ich somit unterschiedliche Einschaltdauern für die Kreise brauche.

Die Readings für den Tages- und Niederschlagszähler habe ich damals der Einfachheit halber am "Hauptschalter" angedockt. Diese könnten theoretisch auch irgendwo anders stehen.

Das manuelle Starten des Bewässerungszyklus über den "Pfeilbutton" funktioniert derzeit noch nicht, da auch dort die Logikabfrage für Tage und Niederschlagsmenge greift. Das muss ich noch umbauen. Da ich meine Bewässerung grade erweitere, werde ich das nach den Bauarbeiten gleich mal mit angehen.

Bisher habe ich leider noch keinen gefunden, der mich bei der Entwicklung eines Moduls für die Steuerungslogik unterstützt. Mir fehlen hierfür einfach weitergehende Perl-Kenntnisse. Damit könnte man die Einrichtung und Erweiterung nochmal ein ganzes Stück vereinfachen.

Bei weiteren Fragen einfach schreiben. Zu großen Dokumentationen komme ich derzeit nicht, aber neue Beiträge schaue ich mir immer zeitnah an und kann darauf auch reagieren.

Gruß Christian

Online tante ju

  • Full Member
  • ***
  • Beiträge: 376
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #31 am: 30 März 2017, 20:49:12 »
Hallo tante ju,

kannst Du vielleicht noch ein paar Bilder Deiner Anlage posten ? Würde mich schon sehr interessieren. :-)

Muß nächste Tage mal Fotos machen. Hab leider keine Fotos vom Aufbau gemacht. Reicht das? Sind aber nicht spannend. Eine UVT mit Sicherung, dem Steuermodul, 24V Netzteil für die Ventile und 3 Koppelrelais.

Offline pnewman

  • Full Member
  • ***
  • Beiträge: 149
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #32 am: 31 März 2017, 22:14:53 »
Hallo Christian,

da ich erhebliche schwierigkeiten mit deiner steuerung hatte, da ich sie noch nicht ganz verstanden habe, habe ich diese wieder deinstalliert und erstmal etwas einfacheres installiert.

##Bewässerungssteuerung##
define Bewaesserung_DI DOIF ([Beregnung] eq "An")(set B_Garten_Pumpe on, set B_Garten_Rasen on)(set B_Garten_Rasen off)(set B_Garten_Beete on)(set B_Garten_Pumpe off, set B_Garten_Beete off)\
DOELSEIF ([[$SELF:mybegin,"00:00"]] and [Beregnung] eq "Automatik") (set B_Garten_Pumpe on, set B_Garten_Rasen on)(set B_Garten_Rasen off)(set B_Garten_Beete on)(set B_Garten_Pumpe off, set B_Garten_Beete off)\
DOELSEIF ([Beregnung] eq "Aus")(set B_Garten_Pumpe off, set B_Garten_Rasen off)(set B_Garten_Beete off)
attr Bewaesserung_DI cmdState Rasen,Kein,Beete,Ende|AutoRasen,Kein,AutoBeete,Autoende|Ausgeschaltet,Ausgeschaltet
attr Bewaesserung_DI do resetwait
attr Bewaesserung_DI group Bewässerung
attr Bewaesserung_DI icon humidity
attr Bewaesserung_DI readingList mybegin
attr Bewaesserung_DI room Garten
attr Bewaesserung_DI setList mybegin:time
attr Bewaesserung_DI sortby 1
attr Bewaesserung_DI wait 0,300,0,300:0,300,0,300
attr Bewaesserung_DI webCmd mybegin

##Hauptschalter##
define Beregnung dummy
attr Beregnung alias Bewässerung
attr Beregnung devStateIcon An:10px-kreis-gruen Aus:10px-kreis-rot
attr Beregnung eventMap on:An off:Aus
attr Beregnung group Bewässerung
attr Beregnung icon control_arrow_turn_right
attr Beregnung room Garten
attr Beregnung sortby 0
attr Beregnung webCmd on:off:Automatik

Mein Wasser kommt aus einem Brunnen mittels Pumpe (B_Garten_Pumpe)
Die Getrieberegner (B_Garten_Rasen)
Die Sprayer (B_Garten_Beete)


Jetzt habe ich etwas geforscht und gesehen das mein AgroWeather(Proplanta) über fc0_rain die Niederschlagsmenge für Heute angibt (Niederschlagsmenge (1 mm ~ 1 l/qm))
fc1_rain für Morgen usw.

Sobald Ich wieder mehr Zeit habe gehe Ich das Thema wieder an.
Ich muss noch eine Leitung für die 2. Sprayer (B_Garten_Beet_Rasen) legen.

Vielen Dank für deine Hilfe.

Gruß
Ralf
Raspberry Pi 2 / COC V 1.62 CSM868 - MAX!=Heizung, HM-Lan - Rollo+Licht, JeeLink-Clone 868 - LaCrosse, JeeLink-Clone 868 - PCA301, CUL 434 - IT-Steckdosen+Fernbedienung

Offline pnewman

  • Full Member
  • ***
  • Beiträge: 149
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #33 am: 31 März 2017, 23:22:17 »
Hallo Christian,

Es ließ mir keine Ruhe, hier mal der abgeänderte Code:
"Hauptschalter"
define Beregnung dummy
attr Beregnung alias Bewässerung
attr Beregnung devStateIcon on:10px-kreis-gruen off:10px-kreis-rot
attr Beregnung eventMap on:on off:off
attr Beregnung group Bewässerung
attr Beregnung icon humidity
attr Beregnung room Garten
attr Beregnung sortby 0
attr Beregnung userReadings Automatik_Aktiv,Aktiver_Regner,Tage,Menge
attr Beregnung webCmd on:off

"Intensität"
define Beregnungsmenge dummy
attr Beregnungsmenge alias Intensität
attr Beregnungsmenge group Bewässerung
attr Beregnungsmenge icon weather_rain_gauge
attr Beregnungsmenge room Garten
attr Beregnungsmenge setList state:slider,0,1,100
attr Beregnungsmenge sortby 1
attr Beregnungsmenge stateFormat state%</br>GR: Getrieberegner min</br>SR: Spruehregner min
attr Beregnungsmenge userReadings Getrieberegner {60/100*ReadingsVal("Beregnungsmenge","state",100)}, Spruehregner {20/100*ReadingsVal("Beregnungsmenge","state",100)}, Last
attr Beregnungsmenge webCmd state

"Niederschlagszähler"
define Niederschlag_schreiben at *23:59:30 {\
my $aktuell = ReadingsVal('Beregnung', 'Menge', '0');;\
my $niederschlag = ReadingsVal('AgroWeather', 'fc0_rain', '0') + $aktuell;;\
my $tage = ReadingsVal('Beregnung', 'Tage', '0') + 1;;\
# wenn Niederschlagsmenge >= 10, dann Werte zurücksetzen\
{if ($niederschlag >= 10) {\
$niederschlag = 0;;\
$tage = 1;;\
}}\
fhem "setReading Beregnung Menge $niederschlag";;\
fhem "setReading Beregnung Tage $tage";;\
}
attr Niederschlag_schreiben group Bewässerung
attr Niederschlag_schreiben icon weather_rain_meter
attr Niederschlag_schreiben room Garten

"Bewässerungskreissteuerung"
define notify_Beregnungskreis notify Beregnung:Aktiver_Regner:.* {\
# Prüfen welcher Beregnungskreis aktiviert werden soll...\
my $beregnungskreis = ReadingsVal('Beregnung', 'Aktiver_Regner', '0');;\
{if ($beregnungskreis eq '0') {\
# alles ausschalten und ggf. Zeitgeber löschen\
fhem ("set B_Garten_Pumpe,B_Garten_Rasen,B_Garten_Beete,B_Garten_Beet_Rasen off");;\
{if (ReadingsVal('Beregnung', 'Automatik_Aktiv', '0') eq 'ja') {\
fhem ("setReading Beregnung Automatik_Aktiv nein");;\
fhem ("delete autoRegner.*");;\
fhem ("set Pushover_Client msg 'Beregnung' 'Automatikprogramm Rasenbewässerung beendet.' -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");;\
# Tageszähler zurücksetzen\
my $menge = ReadingsVal('Beregnung', 'Menge', '0') + ($menge_aktuell / 10);;\
fhem ("setReading Beregnung Menge $menge_aktuell");;\
}}\
}}\
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;;\
\
{if ($beregnungskreis eq '1') {\
fhem ("set B_Garten_Pumpe,B_Garten_Rasen on-for-timer $sek_gr");;\
fhem ("set Pushover_Client msg 'Beregnung' 'Regner Rasen für $min_gr Minuten eingeschaltet.' -1 ''");;\
}}\
{if ($beregnungskreis eq '2') {\
fhem ("set B_Garten_Pumpe,B_Garten_Beete on-for-timer $sek_sr");;\
fhem ("set Pushover_Client msg 'Beregnung' 'Regner Beete für $min_sr Minuten eingeschaltet.' -1 ''");;\
}}\
{if ($beregnungskreis eq '3') {\
fhem ("set B_Garten_Pumpe,B_Garten_Beet_Rasen on-for-timer $sek_sr");;\
fhem ("set Pushover_Client msg 'Beregnung' 'Regner Beete+Rasen für $min_sr Minuten eingeschaltet.' -1 ''");;\
}}\
}
attr notify_Beregnungskreis group Bewässerung
attr notify_Beregnungskreis icon control_arrow_rightward
attr notify_Beregnungskreis room Garten

"Bewässerung beenden / deaktivieren"
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 Pushover_Client msg 'Beregnung' 'Automatikprogramm Rasenbewässerung unterbrochen.' -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 Garten

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 Garten

"Hinweis für anstehende Bewässerung"
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 Pushover_Client msg 'Beregnung' 'Morgen wird voraussichtlich der Rasen bewässert.'");;\
}}\
}}
attr BeregnungsHinweis icon message_attention
attr BeregnungsHinweis room Aktionen

"Bewässerungszyklus (automatisch) starten"
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 Pushover_Client msg 'Beregnung' 'Automatikprogramm Rasenbewässerung startet in einer Minute mit $menge%.' 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 Garten;; 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 Garten
attr bewaesserung_starten sortby 2
attr bewaesserung_starten webCmd execNow

Gestern hatte ich im Log folgende Fehler:
2017.03.30 18:36:00 1: ERROR evaluating {if (Value("Beregnung") eq "on") {
## wenn Bewässerungsautomatik aktiviert
my $liter_soll = 10;;
my $tage_max = 2;;
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 Garten;; attr autoRegner.* group Bewässerung;;");;
}}
}}: Undefined subroutine &main::myOffset called at (eval 363225) line 24.

2017.03.30 18:36:00 3: bewaesserung_starten: Undefined subroutine &main::myOffset called at (eval 363225) line 24.

Womit hat er denn da ein Problem? Mit "myOffset" ?
Wie bekomme ich das bereinigt?

Gruß
Ralf
Raspberry Pi 2 / COC V 1.62 CSM868 - MAX!=Heizung, HM-Lan - Rollo+Licht, JeeLink-Clone 868 - LaCrosse, JeeLink-Clone 868 - PCA301, CUL 434 - IT-Steckdosen+Fernbedienung

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #34 am: 01 April 2017, 21:56:41 »
Hi,

sorry, da fällt mir auf, dass ich euch doch glatt die Funktion zur Berechnung der Einschaltzeitpunkte für die Beregnungskreise unterschlagen habe. Ich habe mir den ganzen code nicht angesehen, aber wenn du die folgende Funktion in 99_myUtils.pm ergänzt, dann sollte die Fehlermeldung verschwinden.

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)

}

Offline thorschtn

  • Jr. Member
  • **
  • Beiträge: 71
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #35 am: 03 April 2017, 07:38:34 »
Hallo funclass,

steuerst Du die Beregnungsmenge tatsächlich ausschliesslich anhand der Voreinstellung und des Niederschlages der vergangenen Tage? Macht es, wenn es besispielsweise vorgestern ausreichend geregnet hat, nicht einen wesentlichen Unterschied ob seit dem letzten Regen 16° oder 36° sind, bei bewölktem Himmel oder bei praller Sonne? Ich hätte gemutmasst, dass entweder das aktuelle Wetter (Verdunstung) oder die Bodenfeuchte mit in die Steuerung einbezogen werden müssten. Wie sind Deine Erfahrungen?

Danke & viele Grüße

thorschtn
RPi 2 - FHEM 5.8 - Smartvisu 2.9
NanoCUL Homematic, 433MHz, AB440, 1-Wire Bewässerung, Jarolift, Thinkingcleaner Roomba, yowsup, Denon AVR, LG WebOS, AmazonEcho
RPi 3 - Twonky - AVS-Alexa (in Arbeit: Umbau des Mediaservers auf Kodi mit Alexa-Steuerung)

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #36 am: 03 April 2017, 08:01:43 »
Moin thorschtn,

ja, aktuell sind die Niederschlagsmenge und vergangenen Tage die einzigen Einschaltbedingungen. Natürlich macht es einen Unterschied ob brühende Hitze oder nur kühle Frühlingstage sind. Mit meinen 5 Tagen bin ich bisher ganz gut gefahren. Ich könnte mir eine Art Faktor vorstellen, der temperaturabhängig ist. Vielleicht fällt dir ja was gutes ein. Ich will es nur nicht unendlich kompliziert machen (aus Pflanzenbewässerung lässt sich schnell ne Wissenschaft machen).
Verbesserungen integriere ich gern.

Gruß Christian

Offline Tom71

  • Full Member
  • ***
  • Beiträge: 171
    • Tom71blog
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #37 am: 15 Mai 2017, 15:48:35 »
Hallo,
ich habe auch gerade eine Regnersteuerung aufgebaut mit 4 Relais, die ich paarweise schalten möchte. Ich habe deine Commandos alle eingefügt und auch das WetterReading. Ich bekomme aber beim schreiben des Nierderschlags:
2017.05.15 15:30:30 3: Niederschlag_schreiben: Usage: setreadingdesc <devspec> <readingspec> [noCheck] <key>=[<value>|?]
where <devspec> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.
<readingspec> can be a single reading name, a list separated by comma (,) or a regexp.

2017.05.15 15:33:30 5: exec at command Niederschlag_schreiben
2017.05.15 15:33:30 3: Niederschlag_schreiben: Usage: setreadingdesc <devspec> <readingspec> [noCheck] <key>=[<value>|?]
where <devspec> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.
<readingspec> can be a single reading name, a list separated by comma (,) or a regexp.
2017.05.15 15:33:30 5: redefine at command Niederschlag_schreiben as *15:33:30 {
my $aktuell = ReadingsVal('Beregnung', 'Menge', '0');
my $niederschlag = ReadingsVal('wu_conditions', 'current_observation_precip_today_metric', '0') + $aktuell;
my $tage = ReadingsVal('Beregnung', 'Tage', '0') + 1;
# wenn Niederschlagsmenge >= 10, dann Werte zurücksetzen
{if ($niederschlag >= 10) {
    $niederschlag = 0;
    $tage = 1;
}}
fhem "setReading Beregnung Menge $niederschlag";
fhem "setReading Beregnung Tage $tage";
}
Raspberry Pi 3 | MySensors SerialGateway auf nanoCUL V2.2 | JeeLinkClone | nanoCul V1.1 | Homematic | RaspberryMatic

Offline funclass

  • Jr. Member
  • **
  • Beiträge: 97
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #38 am: 15 Mai 2017, 21:59:09 »
Hi,

ändere den letzten Teil mal bitte in...

fhem "setreading Beregnung Menge $niederschlag";
fhem "setreading Beregnung Tage $tage";
}

Hab grad nochmal in die CommandRef geschaut und gesehen, dass setreading komplett klein geschrieben werden muss. Im letzten Sommer hat es bei mir noch problemlos mit der Ursprungsvariante geklappt, in der aktuellen Version scheint FHEM da etwas genauer "hinzuschauen". Hab's bei mir auch gleich mal geändert. Hab in dieser Saison die Bewässerung noch nicht in Betrieb genommen. Gerade läuft noch das "Ansaat-Programm" (ausgewählte Kreise für 1...3 min alle 2h), da ich etwas nachgesät habe.

Offline carlos

  • Full Member
  • ***
  • Beiträge: 145
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #39 am: 31 Mai 2017, 09:31:46 »
Hallo,
Dann will ich euch mal zeigen, wie ich das gemacht habe.
Wie ihr an dem Bild seht sind es 2 Bewässerungskreise, einer für die Beete(mit Perlschlauch) einer für den Rasen.
Verwendet habe ich folgende Komponenten:


Dazu habe ich noch einen 3. Bewäserungskreis der genau so aufgebaut ist für die andere Seite des Hauses auch mit Beet und Rasen(mit Beregner) zusammen. Der wird aber auch noch aufgeteilt in 2 Kreise.
Funktioniert seit ca. 2 Wochen bestens mit einem doif in FHEM jeweils Abends mit on-for-timer.

Gruß

Carlos


1 UDOO, 3 Raspberry Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, FHEM V5.7, nanoCUL V 1.21.00 a-culfw, signalduino, div. Homematic Komponenten, toom Baumarkt Funksteckdosen
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline jensweber

  • Full Member
  • ***
  • Beiträge: 174
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #40 am: 31 Mai 2017, 12:37:58 »
Hallo,
Dann will ich euch mal zeigen, wie ich das gemacht habe.

Hallo,
ist schon Ideenreich umgesetzt, aber leider auch ohne Einhaltung einer Norm. Nach VDE ist es nicht zulässig, 230V und Wasser in einem
Gehäuse zusammen unterzubringen. Es ist auch grob Fahrlässig.
Die restlichen Fehler mal ausgenommen...

Grüssle, Jens
« Letzte Änderung: 31 Mai 2017, 12:58:56 von jensweber »

Offline MegaData

  • Jr. Member
  • **
  • Beiträge: 77
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #41 am: 31 Mai 2017, 12:49:20 »
Definitiv !
Ich würde Ventile und Steuerung jeweils separat in eine wasserdichte Box packen - so wird es auch vom Profi angeboten :)

VG

Offline carlos

  • Full Member
  • ***
  • Beiträge: 145
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #42 am: 31 Mai 2017, 13:20:08 »
Hi,
Da habt ihr natürlich recht. Ich hatte mir das auch schon überlegt.
Das werde ich auf jeden Fall auch noch so machen.
Gruß

Carlos
1 UDOO, 3 Raspberry Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, FHEM V5.7, nanoCUL V 1.21.00 a-culfw, signalduino, div. Homematic Komponenten, toom Baumarkt Funksteckdosen

Online tante ju

  • Full Member
  • ***
  • Beiträge: 376
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #43 am: 16 Juni 2017, 00:16:49 »
Muß nächste Tage mal Fotos machen. Hab leider keine Fotos vom Aufbau gemacht. Reicht das? Sind aber nicht spannend. Eine UVT mit Sicherung, dem Steuermodul, 24V Netzteil für die Ventile und 3 Koppelrelais.

Ich wollte ja noch ein paar Bilder posten. Das erste ist die Unterverteilung im Gartenhaus. Man sieht in der oberen Reihe das Steuergerät, welches im nächsten Bild in Großaufnahme zu sehen ist. In der zweiten Reihe sind Koppelrelais, über die zum Beispiel die Pumpe oder Außenversorgung am Gartenhaus gesteuert wird. Daneben ist das 24V Netzteil für die Ventile. Die werden direkt vom Steuergerät geschaltet. Daneben noch die Sicherung.

Zweite Bild, wie gesagt, ist das Steuergerät in Großaufnahme. Man sieht die Struktur der Frontplatte, die ich gedruckt habe. Jeder Schaltausgang hat eine Taste, um auch bei Bedarf direkt am Gerät schalten zu können. Die LED zeigt an, ob der Ausgang eingeschaltet ist und ob eine Schaltzeit abläuft (dann blinkt die LED). Rechts das OLED zeigt nochmal die Schaltausgänge an und welche Restzeit gesteuerte Ausgänge noch haben. Es zeigt auch die MySensor Id des Gerätes und des Uplinks an, damit man sehen kann, wo sich das Gerät eingebucht hat. Da es ja mit Signatur arbeitet, kann es sich eigentlich nicht falsch einbuchen. Aber am Anfang fand ich das ganz hilfreich. Die aktuelle Zeit und die Temperatur im Gerät sind weitere Gimmicks auf dem Display. Die grüne LED zeigt an, daß das Steuergerät Funkverbindung hat und flackert mit jedem Datagram. Ich hätte da nur nicht einen extra hellen Typen nehmen sollen. Im Arbeitszimmer war das in Ordnung, aber im Gartenhaus bei Nacht sieht man jetzt immer einen grünen Lichtschein unter der Tür :)

Das nächste Bild zeigt die Ventilbox. Nix spannendes. Drei 24V Ventile. Vielleicht sollte ich erwähnen, daß über das Steuergerät die Ventilbox komplett freigeschaltet werden kann. Es sind also 4 Relais für 3 Ventile, so daß im Winter auch keinerlei Kriechstrom fließen kann. Ist zwar alles nur 24V und galvanisch getrennt, aber ich wollte galvanisieren der Klemmen soweit möglich verhindern.

Das letzte Bild habe ich noch gemacht, als ich den Druckminderer für das MicroDrip austauschen musste. Der ursprüngliche war nicht für Unterflur geeignet und hatte auch zu wenig Durchfluß. Da kann man erahnen, wie das ganze verrohrt ist.

Mittlerweile läuft das alles super. Ich suche aber nun "Wassersteckdosen" für das MicroDrip, da auch Blumen auf den Terrassen angeschlossen werden sollen. Wenn da jemand Ideen hat, immer her damit.

Offline Tom71

  • Full Member
  • ***
  • Beiträge: 171
    • Tom71blog
Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #44 am: 16 Juni 2017, 09:54:09 »
Ich benutze die Wassersteckdosen von Gardena, die im Boden eingelassen werden. Davor hab ich ein Hunter-Ventil gesetzt. An der Wassersteckdose hab ich z.Zt. einen Tropfschlauch angeschlossen. Den konnte ich mit einem Ventil am Schlauch einstellen.

Als MikroDrip hab ich mir was bei Lidl bestellt aber noch nicht eingebaut.

Gesendet von iPhone mit Tapatalk
« Letzte Änderung: 16 Juni 2017, 09:56:44 von Tom71 »
Raspberry Pi 3 | MySensors SerialGateway auf nanoCUL V2.2 | JeeLinkClone | nanoCul V1.1 | Homematic | RaspberryMatic

Offline CQuadrat

  • Sr. Member
  • ****
  • Beiträge: 502
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #45 am: 16 Juni 2017, 10:20:25 »
Was ist denn das für eine  Ventilbox?
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), KM271 (per ser2net), SONOS (div. Gimmicks), OneWire, Hue

Online tante ju

  • Full Member
  • ***
  • Beiträge: 376
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #46 am: 16 Juni 2017, 13:18:20 »
Was ist denn das für eine  Ventilbox?

Ventilbox:
https://smile.amazon.de/gp/product/B0001E3S2W

Ventile:
https://smile.amazon.de/gp/product/B001P0N3UI

Ich benutze die Wassersteckdosen von Gardena, die im Boden eingelassen werden. Davor hab ich ein Hunter-Ventil gesetzt. An der Wassersteckdose hab ich z.Zt. einen Tropfschlauch angeschlossen. Den konnte ich mit einem Ventil am Schlauch einstellen.

Als MikroDrip hab ich mir was bei Lidl bestellt aber noch nicht eingebaut.

Diese hier?
https://smile.amazon.de/Gardena-Anschlussdose-entnehmbares-Schmutzsieb-versenkbare/dp/B0035WWDAU/ref=sr_1_2?ie=UTF8&qid=1497611836&sr=8-2&keywords=wassersteckdose

Die habe ich auch, aber für Mikrodrip funktioniert das nicht. Habe ja einen zentralen Druckminderer.

Offline CQuadrat

  • Sr. Member
  • ****
  • Beiträge: 502
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #47 am: 16 Juni 2017, 18:31:32 »
Vielen Dank.
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), KM271 (per ser2net), SONOS (div. Gimmicks), OneWire, Hue

Offline leachim200

  • New Member
  • *
  • Beiträge: 30
Antw:Bewässerungssteuerung - Vorstellung und Ideensammlung
« Antwort #48 am: Heute um 13:38:45 »
Jetzt brauch ich eure hilfe
ich hab mich eingelsen und ich glaub auch alles richtig geändert aber irgendwas passt nicht.

Ich hab das define zur Niederschlag_schreiben in die DEF eingefügt. sprich zuerst definiert mit zwei {} und jetzt füg ich den restlichen programm code ein aber irgendwo hängt was

{\
my $aktuell = ReadingsVal('Beregnung', 'Menge', '0');;\
my $niederschlag = ReadingsVal('Wetter_Home', 'statRainHour24', '0') + $aktuell;;\
my $tage = ReadingsVal('Beregnung', 'Tage', '0') + 1;;\
# wenn Niederschlagsmenge >= 10, dann Werte zurücksetzen\
{if ($niederschlag >= 10) {\
$niederschlag = 0;;\
$tage = 1;;\
}}\
fhem "setreading Beregnung Menge $niederschlag";;\
fhem "setreading Beregnung Tage $tage";;\
}

Bekomme folgende Fehlermeldung
Missing right curly or square bracket at (eval 737321) line 1, at end of line
syntax error at (eval 737321) line 1, at EOF

Wo liegt mein Fehler?