Hallo Forum,
ich baue gerade eine Bewässerungssteuerung via Raspberry Pi, einer 8er Relais Karte und Hunter MagentVentilen.
Ich habe das Modul RPI_GPIO verwendet, und kann nun auch die Relais schalten.
Ich habe allerdings zwei Themen wo ich gerade nicht so recht weiter komme.
VorwortIch habe 2 Wasserquellen. a) Regentonne mit Pume und b) Hauswasseranschluss
Ich habe bereis zwei "Bereiche" definiert, wo ich dann eine "structure" gebildet habe.
Also z.B.
define Pu.Rasen structure Pumpe Pin11,Pin16
Damit schlate ich das Ventil Pumpe ein und das Ventil für den Rasensprenger
Das ganze habe ich nun mehrfach. Nämlich
- #Pumpe+MicroDirp
- #Pumpe+Rasen
- #Pumpe+Teich
- #Pumpe+Schlauch
- #Hauswasser+MicroDirp
- #Hauswasser+Rasen
- #Hauswasser+Teich
- #Hauswasser+Schlauch
Nun zum Problem 1)Wie muss ich die Config anpassen, damit ich die Schaltzustände auf
off setze wenn ich eine andere Quelle einschalte?
Also wenn z.B. Pumpe und Microdrip an ist, und ich jetzt aber Hauswasser und Schlauch einschalte, soll Pumpe und Microdrip ausgehen.
Ich will unbedingt vermeiden dass beide Quellen gleichzeitig an sind.Und hier Problem 2)Ich möchte zwei Taster verbauen.
Einer soll Pumpe+Schlauch für 20 Minuten einschalten, der andere Hauswasser-Schlauch für 20 Minuten
Nach den 20 Minuten soll auf den vorherigen Zustand geschaltet werden der war bevor der Taster gedrückt wurde.
Also quasi ein "Interupt-current-setting-for-20-minutes-and-force-status-pumpe-schlauch" bzw. "...Hauswasser-schlauch"
So schaut meine derzeitiger IST-Zustand aus:
### GPIO ###
define Pin11 RPI_GPIO 17
attr Pin11 Pumpe Pu.Schlauch
attr Pin11 active_low yes
attr Pin11 debounce_in_ms 50
attr Pin11 direction output
attr Pin11 room Garten.Wasser
#
define Pin13 RPI_GPIO 27
attr Pin13 Hausanschluss Ha.Schlauch
attr Pin13 active_low yes
attr Pin13 debounce_in_ms 50
attr Pin13 direction output
attr Pin13 room Garten.Wasser
#
define Pin15 RPI_GPIO 22
attr Pin15 Hausanschluss Ha.Micro
attr Pin15 Pumpe Pu.Micro
attr Pin15 active_low yes
attr Pin15 debounce_in_ms 50
attr Pin15 direction output
attr Pin15 room Garten.Wasser
#
define Pin16 RPI_GPIO 23
attr Pin16 Hausanschluss Ha.Rasen
attr Pin16 Pumpe Pu.Rasen
attr Pin16 active_low yes
attr Pin16 debounce_in_ms 50
attr Pin16 direction output
attr Pin16 room Garten.Wasser
#
define Pin18 RPI_GPIO 24
attr Pin18 Hausanschluss Ha.Teich
attr Pin18 Pumpe Pu.Teich
attr Pin18 active_low yes
attr Pin18 debounce_in_ms 50
attr Pin18 direction output
attr Pin18 room Garten.Wasser
#
define Pin22 RPI_GPIO 25
attr Pin22 Hausanschluss Ha.Schlauch
attr Pin22 Pumpe Pu.Schlauch
attr Pin22 active_low yes
attr Pin22 debounce_in_ms 50
attr Pin22 direction output
attr Pin22 room Garten.Wasser
#
define Pin24 RPI_GPIO 8
attr Pin24 active_low yes
attr Pin24 debounce_in_ms 50
attr Pin24 direction output
attr Pin24 room Garten.Wasser
#
define Pin26 RPI_GPIO 7
attr Pin26 active_low yes
attr Pin26 debounce_in_ms 50
attr Pin26 direction output
attr Pin26 room Garten.Wasser
############
## STRUCTURE ##
############
# Pumpe #
#+++++++++++#
#Pumpe+MicroDrip
define Pu.Micro structure Pumpe Pin11,Pin15
attr Pu.Micro room Garten.Wasser
#Pumpe+Rasen
define Pu.Rasen structure Pumpe Pin11,Pin16
attr Pu.Rasen room Garten.Wasser
#Pumpe+Teich
define Pu.Teich structure Pumpe Pin11,Pin18
attr Pu.Teich room Garten.Wasser
#Pumpe+Schlauch
define Pu.Schlauch structure Pumpe Pin11,Pin22
attr Pu.Schlauch room Garten.Wasser
############
# Hausanschluss #
############
#Haus+MicroDirp
define Ha.Micro structure Hausanschluss Pin13,Pin15
attr Ha.Micro room Garten.Wasser
#Haus+Rasen
define Ha.Rasen structure Hausanschluss Pin13,Pin16
attr Ha.Rasen room Garten.Wasser
#Haus+Teich
define Ha.Teich structure Hausanschluss Pin13,Pin18
attr Ha.Teich room Garten.Wasser
#Haus+Schlauch
define Ha.Schlauch structure Hausanschluss Pin13,Pin22
attr Ha.Schlauch room Garten.Wasser
#########################################################
define Taster1 RPI_GPIO 18
attr Taster1 active_low yes
attr Taster1 debounce_in_ms 50
attr Taster1 direction input
attr Taster1 room Garten.Wasser
Für Tips wäre ich dankbar.
ach ja...
ich habe http://forum.fhem.de/index.php/topic,16519.0.html (http://forum.fhem.de/index.php/topic,16519.0.html) Thread schon gesehen, aber kapiert habe ich es nicht.
Gruß
der Merlin.
vergiss structure schau dir LightScene an
Guss Markus
mit structure kannst du alle
devices gleichzeitig in den gleichen zustand schalten. sonst nichts.
mit LightScene kannst du gruppen von devices auf einmal in vorher festgelegte zustände schalten, die den aktuellen zustand mehrerer devices speichern und wieder herstellen.
gruss
andre
Hallo,
Ich habe ein sehr ähnliches Setup.
Der Titel "RasPi + GPIO + Bewässerung + Manueller Eingriff per Taster + Read GPIO" trifft bei mir auch zu 100%
Ich denke das Thema:" Hauswasser und Pumpe" planst du nur da eventuell deine Regentonne leer ist und du dann mit Frischwasser wässern möchtest.
Das würde ich generell anders machen:
Ein gemeinsamer Anschluss von Regenwasser an Frischwasser würde ich nicht empfehlen (wenn es nicht sogar verboten ist).
Ich löse das Problem damit, dass ich bei leerer Zisterne diese mit Frischwasser fülle und dann wieder aus der Zisterne bewässere.
Im nächsten Schritt möchte ich dies automatisch machen (Füllstandsmessung). Habe ich aber noch nicht umgesetzt.
Nebenbei vereinfacht dies auch deine Steuerung aus unterschiedlichen Wasserquellen.
So nun etwas Code mit meinen Umsetzungen (die ich mit viel Hilfe aus dem Forum realisiert habe).
1. Einstellbare Bewässerungszeit:
define Bewaesserung_Minuten dummy
attr Bewaesserung_Minuten room Bewässerung_DOIF
attr Bewaesserung_Minuten setList state:2,4,6,8,10,12,14,16,18,20
attr Bewaesserung_Minuten webCmd state
attr Bewaesserung_Minuten group 0_Start
2. Bsp. Definition von GPIO Ausgängen (für Relaiskarte --> Ventile)
######## Bew_Eiche
define 1_Bew._Eiche RPI_GPIO 17
attr 1_Bew._Eiche devStateIcon aus:rain-icon_off an:rain-icon_on
attr 1_Bew._Eiche direction output
attr 1_Bew._Eiche eventMap on:an off:aus
attr 1_Bew._Eiche room Bewässerung_DOIF
attr 1_Bew._Eiche webCmd an:aus
attr 1_Bew._Eiche group 01_Output-Bewaesserung
attr 1_Bew._Eiche active_low yes
3. Bsp. Definition von GPIO Eingängen (Tasterabfrage)
######## Input 4 -Beregnung
define In4_Beregnung RPI_GPIO 10
attr In4_Beregnung active_low no
attr In4_Beregnung debounce_in_ms 50
attr In4_Beregnung longpressinterval 3
attr In4_Beregnung devStateIcon aus:round-button-off-grey-48x48.png an:round-button-red-48x48.png
attr In4_Beregnung direction input
attr In4_Beregnung eventMap on:an off:aus
attr In4_Beregnung group 1_Input
attr In4_Beregnung interrupt both
attr In4_Beregnung pud_resistor down
attr In4_Beregnung room Bewässerung_DOIF
attr In4_Beregnung webCmd an:aus
######## Input 1 -Licht terasse
define In1_Licht_T RPI_GPIO 7
attr In1_Licht_T active_low no
attr In1_Licht_T debounce_in_ms 50
attr In1_Licht_T devStateIcon aus:round-button-off-grey-48x48.png an:round-button-red-48x48.png
attr In1_Licht_T direction input
attr In1_Licht_T eventMap on:an off:aus
attr In1_Licht_T group 1_Input
attr In1_Licht_T interrupt both
attr In1_Licht_T pud_resistor down
attr In1_Licht_T room Bewässerung_DOIF
attr In1_Licht_T webCmd an:aus
4. dtoggle Definition : toggeln von dummys
define CMD_dtoggle cmdalias dtoggle .* AS IF (Value("$EVTPART0") eq "an")(set $EVTPART0 aus) ELSE (set $EVTPART0 an)
5. Beispiel für das Zeitgesteuerte schalten eines Bewässerungskreises
Ist nicht toll programmiert, werde ich auch noch mal schöner machen;-) Es musste aber noch vor dem Urlaub fertig werden.
Und wenn es erstmal läuft ........;-)
######## Manuelles Einschalten der Bewässerung Eiche
define 1_Bew._Eiche_man dummy
attr 1_Bew._Eiche_man devStateIcon aus:Bwaesserung_black_off_48_E_T an:Bwaesserung_gruen_on_48_E_T
attr 1_Bew._Eiche_man eventMap on:an off:aus
attr 1_Bew._Eiche_man room Bewässerung_DOIF
attr 1_Bew._Eiche_man webCmd an:aus
######## Einschalten
define 1_Bew._Eiche_man_on notify 1_Bew._Eiche_man:on {\
my $Bew_time =Value("Bewaesserung_Minuten")*60;;\
fhem( "set 3_Bew._Spg on");;\
fhem( "define Bew_P_Eiche at +00:00:02 set 4_Bew._Pumpe on");;\
fhem( "define Bew_Eiche_man at +00:00:04 set 1_Bew._Eiche on-for-timer ".$Bew_time );;}
attr 1_Bew._Eiche_man_on room Bewässerung_DOIF
######## Notify wenn Zeit für Bew_Eiche abgelaufen ist
define 1_Bew._Eiche_off_notify notify 1_Bew._Eiche:off {\
fhem( "define Bew_P_Eiche_man_off at +00:00:05 set 4_Bew._Pumpe off");;\
fhem( "define 3_Bew._Spg_Eiche_man_off at +00:00:10 set 3_Bew._Spg off" );;\
fhem( "define 1_Bew._Eiche_man_off at +00:00:05 set 1_Bew._Eiche_man off");;}
attr 1_Bew._Eiche_off_notify room Bewässerung_DOIF
######## Log-File Eiche
define FileLog_1_Bew._Eiche FileLog ./log/1_Bew._Eiche-%Y.log 1_Bew._Eiche
attr FileLog_1_Bew._Eiche logtype text
attr FileLog_1_Bew._Eiche room Bewässerung_DOIF
6. Da ich 2 Wasserkreise habe, diese sowohl einzelnd (manuell) aber auch zusammen (automatisch) ansteuerung möchte habe ich noch ein "Automatik dummy" eingeführt
############################################################
## Automatik Bewässerung :
############################################################
define 3_Automatik dummy
attr 3_Automatik devStateIcon aus:Bwaesserung_black_off_48_T an:Bwaesserung_gruen_on_48_T
attr 3_Automatik eventMap on:an off:aus
attr 3_Automatik room Bewässerung_DOIF
attr 3_Automatik toggleDevice true
attr 3_Automatik webCmd an:aus
attr 3_Automatik group 0_Start
######## Notify Automatik_on
define 3_Automatik_on_notify_1 notify 3_Automatik:on {\
my $Bew_time =Value("Bewaesserung_Minuten")*60;;\
fhem( "set 3_Bew._Spg on");;\
fhem( "define Bew_P at +00:00:02 set 4_Bew._Pumpe on");;\
fhem( "define Bew_Eiche at +00:00:04 set 1_Bew._Eiche on-for-timer ".$Bew_time);;\
fhem( "define Bew_Baumhaus at +00:00:06 set 2_Bew._Baumhaus on-for-timer ".$Bew_time);;\
fhem( "define Bew_Auto_off at +00:00:10 set 3_Automatik off");;}
attr 3_Automatik_on_notify_1 room Bewässerung_DOIF
Dieses wird dann durch ein DOIF täglich getriggert
7. Tägl_Automatik Bewässerung :
define taegl_auto_Bew DOIF ([AUTO_Bewaesserung] eq "an" and [21:45]) (set 3_Automatik on)
attr taegl_auto_Bew do always
Über einen Longpress auf einen Taster kann ich diese Automatik aus/einschalten
define n_In4_Beregnung_long DOIF ([In4_Beregnung] eq "an") (dtoggle AUTO_Bewaesserung)
attr n_In4_Beregnung_long wait 3
So das wars erstmal.
Ist wohl schwer verdaubar und wahrscheinlich nicht optimal gelöst.
Der Fokus liegt/lag erstmal auf der Funktion vor den Sommerferien ;-)
Verbesserungswünsche sind gerne willkommen.
Danke Leute!
Ich war gerade dabei auf Markus Beitrag zu antworten. Da kam die Meldung, dass während ich schrieb 2 neue Antworten kamen.
Ich habe inzwischen schon mal mit LightScene gespielt.
Aber ganz bin ihc noch nicht durchgestiegen.
Das habe ich bisher gemacht und das wollte ich schreiben:
Zitat
Hi Markus,
danke für den Tipp,
ich habe mal in die EN Commadref geschaut, und eine LightScene definiert.
Aber ich bin noch nicht so ganz firm darin wie ich das dann bediene bzw. Scenen mir da jetzt helfen.
Ich steh grad auf dem Schlauch.
Wie würdest Du anhand der Pin11,Pin16 beispielsweise eine Scene machen, und welche Attribute dazu?
Wo schreibt LightScene denn überhaupt die Scenen die man anlegt hin?
Ich schaue mir immer die fhem.cfg an um es besser zu verstehen. Aber ich finde die Scenen nicht die ich gerade angelegt hatte.
Mein Plan war...
a) einen "virtuellen" Schalter anlegen.
define Taster1 dummy
b) den Taster1 in den Garten verfrachten
attr Taster1 room Garten.Wasser
c) Ein LightScene "device" anlegen.
define Pu2.Rasen LightScene Pin11,Pin16
d) in den Garten verfrachten
attr Pu2.Rasen room Garten.Wasser
e) zwei Scenen erstellen und editieren
set Pu2.Rasen save PumpeRasen_ein
DEVICE COMMAND = Pin11 set on > Saveline
DEVICE COMMAND = Pin16 set on > Saveline
set Pu2.Rasen save PumpeRasen_aus
DEVICE COMMAND = Pin11 set off > Saveline
DEVICE COMMAND = Pin16 set off > Saveline
f) Jetzt den Taster1 (dummy) nutzen um die Scene zu schalten.
define Taster1 dummy
attr Taster1 room Garten.Wasser
attr Taster1 setList state:on,off
<<<UND jetzt beisst es aus wie ich hier auf die Scenen komme>>>
ich habe es mit
attr Taster1 setList state:PumpeRasen_aus,PumpeRasen_an
...probiert, und wenn ich jetzt ein
set Taster1 state PumpeRasen_an
...versuche passiert nichts.
Bin grad etwas ratlos.
Jetzt schau ich mir aber auch nochmal das von Hoeness an.
Das war dann doch etwas mehr, und da ich noch anfänger bin, und monate lang nichts gemacht habe fange ich also grad von vorne an
Zitat
Ein gemeinsamer Anschluss von Regenwasser an Frischwasser würde ich nicht empfehlen (wenn es nicht sogar verboten ist).
Das kann sein, aber deswegen will ich ja unbedingt vermeiden, dass zwei bestimmte magnetventile gleichzeitig offen sind.
Vom Prinzip ist es ganz einfach bei mir...
Vent1=Hauswasser
Vent2=Regenfasspumpe
Vent3=normaler Gartenschlauch
Vent4=Microdrip System
Vent5=Zulauf Teichwasser
Vent6=Rasensprenger
(Reihenfolge kann von meiner Config aus dem ersten Post abweichen)
Es muss/soll unbedingt vermieden werden, dass Vent1 und Vent2 gleichzeitig offen sind.Und da ein Regenfass und auch eine Zisterne ja durch das Fallrohr der Regenrinne befüllt werden, möchte ich jetzt nicht das kostbare Leitungswasser in das Fass pumpen.
Um den evtl. Zulauf IN DAS Hauswasser zu vermeiden, kann man auch noch ein Rückschlagventil verbauen. Also wie eine DIODE für Wasser :-)
Oder auch ein Rückschlagventil zum Regenfass damit man nicht das Fass voll macht.
@Andre alias Justme1968
... Kannst Du mich schnell auf Spur mit dem dummy Taster und der Scene bringen?
>>> Oder auch jeder andere! :-)
Danke und Gruß
der merlin (Holger)
um light LightScene zu verwenden brauchst du erst mal 'normale' fhem devices die du mit set... schalten kannst. diese devices kannst du dann in einer LightScene verwenden. so weit bist du schon.
als nächstes kannst du entscheiden ob du die LightScene in der steuerung verwenden möchtest um devices zusammen zu fassen. also z.b. szene1: pumpe1 und ventil1, szene2: pumpe1 und ventil2 und ventil3, szene 3:pumpe2 und ventul4. diese szenen kannst du entweder 'anlernen' in dem du die devices entsprechend schaltest und dann save <szenen name> verwendest (das geht auch interaktiv in der detail ansicht der szene) oder du editierst die einzelnen szenen von hand. beides ist im einsteiger pdf beschrieben.
oder du verwendest die LightScene nur um beim taster druck den aktuellen stand mit save zwischen zu speichern und dann nach den 20 minuten wieder zu aktivieren.
oder beides.
du kannst mit dem dummy und set list nicht direkt ein anderes device steuern. mit setList und webCmd steuerst du immer nur den dummy selber. daran hängst du dann ein notify und im notify steuerst du die anderen devices.
du kannst übrigens die LightScene direkt mit einem webCmd scene versehen und über diese im frontend schalten. den dummy brauchst du dann eventuell gar nicht.
ansonsten schau dir mal das bewässerungs modul von tobias an. siehe wiki.
und lese das einsteiger pdf durch. dann wird sicher einiges klarer.
gruss
andre