FHEM Forum

FHEM => Automatisierung => Thema gestartet von: qwert4u am 01 Juli 2014, 11:55:30

Titel: Bewässerung
Beitrag von: qwert4u am 01 Juli 2014, 11:55:30
Hallo,

ich habe 3 Magnetventile die ich mittels Homamatich relay steuere.
händisch funktioniert das öffnen und manuelle schließen der Ventile über die Fhem Web-Oberfläche.

nun möchte ich einen Knopf / Schalter haben, der dann folgendes realisiert:
wenn gedrückt, dann öffne das erste Ventil für 20 min danach dass zweite Ventil für 20 min und danach das dritte Ventil für ebenfalls 20 min.

ich habe schon viel gelesen, bin jedoch mit der Programmierung nicht vertraut.
hat jemand einen fertigen Code Schnipsel für mich?

ich danke schon mal im voraus.
Titel: Antw:Bewässerung
Beitrag von: Bennemannc am 01 Juli 2014, 12:25:47
Hallo,

grob beschrieben:
1) Notify - der überwacht, ob der Schalter gedrückt wurde.
2) Notify löst geschachtelte at aus
define t1 at +00:00 set Ventil 1 on-for-timer 1200 (= unverzögert ein für 1200 sec)
define t2 at +00:21 set Ventil 2 on-for-timer 1200 (= time+21 min ein für 1200 sec)
define t3 at +00:42 set Ventil 3 on-for-timer 1200 (= time+42 min ein für 1200 sec)
3) Notify auf Ventil 3 (Ausschaltung) - löschen t1,t2,t3 ... obwohl - ich habe irgendwo gelesen das einmalige Timer automatisch gelöscht werden. Musst Du einfach mal testen.

on-for-timer schaltet automatisch wieder ab, 1 min Pause zwischen den Ventilen (kann man auch weglassen)
Titel: Antw:Bewässerung
Beitrag von: peterchen89 am 01 Juli 2014, 12:29:11
Vielleicht passt das Modul von Tobias (http://forum.fhem.de/index.php/topic,22142.0.html) auf deinen Anwendungsfall ? Das unterstützt schon dass nur X Ventile parallel geöffnet sein dürfen.
Titel: Antw:Bewässerung
Beitrag von: qwert4u am 03 Juli 2014, 14:33:24
Hast Du noch einen hinweis / Beispiel, wie ich diese notify definieren muss?
Titel: Antw:Bewässerung
Beitrag von: qwert4u am 17 Juli 2014, 12:27:50
es funktioniert nicht... und ich finde das Problem nicht, da ich nicht so bewandert mit dem programmieren bin. habe schon viel gelesen. es wäre schön, wenn mir jemand behilflich ist.
mit Wetter.humidity:.*  kann fhem nichts anfangen... muss ich dazu noch was laden?

also meine Aufgabenstellung war folgende:
einen dummy schalter schaffen, der wenn gedrückt ist die Beregnung nacheinander in der nacht abarbeitet. wenn ich ihn tagsüber ausschalte soll dann die Beregnung in der kommenden Nacht nicht laufen.
schön wäre, wenn man die Luftfeuchte auch noch mit einbezieht  (also höher 70 % beträgt (also regenwahrscheinlichkeit) der schalter ebenfalls deaktiviert wird bei unter 70% dann wieder aktiviert wird.

define Beregnung dummy
attr Beregnung alias Bewässerung
attr Beregnung eventMap on:on off:off
attr Beregnung fm_type smarttogglebutton
attr Beregnung room Garten
attr Beregnung webCmd on:off
define Bewaesserung_1 at +02:00 {if (Value("Beregnung") eq "on") {fhem ("set CUL_HM_HM_LC_SW4_WM_25115F_Sw_01 on-for-timer 1200)}}
define Bewaesserung_2 at +02:30 {if (Value("Beregnung") eq "on") {fhem ("set CUL_HM_HM_LC_SW4_WM_25115F_Sw_02 on-for-timer 1200)}}
define Bewaesserung_3 at +03:00 {if (Value("Beregnung") eq "on") {fhem ("set CUL_HM_HM_LC_SW4_WM_25115F_Sw_03 on-for-timer 1200)}}
Wetter.humidity:.* IF ([Wetter:humidity] => 70)(set Beregnung off)
Wetter.humidity:.* IF ([Wetter:humidity] => 30)(set Beregnung on)
Titel: Antw:Bewässerung
Beitrag von: Rince am 17 Juli 2014, 19:32:12
Nicht so ganz.

Das if kannst du dir schenken. Das ist quasi dein Notify!
Schau mal in der commandref die Beispiele zum Notify an. Statt einem Licht einzuschalten, definierst du dann diese 3 at mit dem Einschaltbefehl.
Titel: Antw:Bewässerung
Beitrag von: Paul am 17 Juli 2014, 19:54:06
Das könntest du zusammenfassen

*06:00  { if ( Value ("Regen") eq "an") {fhem ("set Regner1 on-for-timer 960; define R2 at +00:17 set Regner2 on-for-timer 960; define R3 at +00:34 set Regner3 on-for-timer 960")}}

und vorher ein at wo du dein dummy (bei mir Regen) auf on oder off stellst
Titel: Antw:Bewässerung
Beitrag von: Puschel74 am 17 Juli 2014, 19:56:29
Hallo,

Zitatmit Wetter.humidity:.*  kann fhem nichts anfangen... muss ich dazu noch was laden?
keine Ahnung - mit der "Meldung" kann ich auch nichts anfangen.
Hast du Wetter irgendwie definiert?

Wobei
Wetter.humidity:.* IF ([Wetter:humidity] => 70)(set Beregnung off)
Wetter.humidity:.* IF ([Wetter:humidity] => 30)(set Beregnung on)

alles was => 70 ist wird auch =>30 sein - wobei ich den Syntax jetzt nicht in mein Versuchssystem eingebaut habe.
Aber IF (also das FHEM-IF und nicht das PERL-if) ist ja ein anderes Modul  ::)

Grüße
Titel: Antw:Bewässerung
Beitrag von: qwert4u am 18 Juli 2014, 13:34:57
 der schalter (Bewässerung) funktioniert jetzt nur die Wetter "Schaltung" nicht was mache ich falsch? aktuell beträgt die Luftfeuchte 74 nur der schalter ist immer noch an.



define Beregnung dummy
attr Beregnung alias Bewässerung
attr Beregnung eventMap on:on off:off
attr Beregnung fm_type smarttogglebutton
attr Beregnung room Garten
attr Beregnung webCmd on:off
define Bewaesserung_1 at *02:00 {if (Value("Beregnung") eq "on") {fhem ("set CUL_HM_HM_LC_SW4_WM_25115F_Sw_01 on-for-timer 1200")}}
define Bewaesserung_2 at *02:20 {if (Value("Beregnung") eq "on") {fhem ("set CUL_HM_HM_LC_SW4_WM_25115F_Sw_02 on-for-timer 1200")}}
define Bewaesserung_3 at *02:40 {if (Value("Beregnung") eq "on") {fhem ("set CUL_HM_HM_LC_SW4_WM_25115F_Sw_03 on-for-timer 1200")}}


define Wetter Weather 689779 1800
attr Wetter event-on-update-reading humidity
attr Wetter room Wettervorhersage
define FileLog_Wetter FileLog ./log/meinwetter-%Y-%m.log Wetter
attr FileLog_Wetter logtype text
attr FileLog_Wetter room Wettervorhersage
define weblink_wetter weblink htmlCode {WeatherAsHtml("Wetter")}
attr weblink_wetter room Wettervorhersage
define Luftfeuchte notify Wetter.humidity:.* if ([Wetter:humidity]<50)(set Beregnung off)
Titel: Antw:Bewässerung
Beitrag von: qwert4u am 18 Juli 2014, 14:02:27
schöner wäre natürlich, wenn mann das wetter so auswerten könnte, wenn da "regen" steht, das dann die bewässerung aus geschaltet wird.
hat einer eine Idee?

define Luftfeuchte notify Wetter.humidity:.* if ([Wetter:humidity]<50)(set Beregnung off)
Titel: Antw:Bewässerung
Beitrag von: Puschel74 am 18 Juli 2014, 14:40:22
Hallo,

if und IF kannst du nicht mischen.
Entweder oder - du musst dich entscheiden.

Grüße
Titel: Antw:Bewässerung
Beitrag von: Paul am 18 Juli 2014, 15:01:14
Was klappt denn nicht
?

Probier es mal so

define Luftfeuchte notify Wetter.humidity:.* if ([Wetter:humidity]<50) fhem(set Beregnung off)
Titel: Antw:Bewässerung
Beitrag von: Puschel74 am 18 Juli 2014, 15:17:54
Hallo,

hab ich nicht grad 20 Minuten vorher geschrieben das sich if und IF nicht mischen lässt  :o

@Paul
Auch du mischt if und IF (oder kopierst einfach nur ab).

Das ist if
if (ReadingsVal("Wetter","humidity",0) < 50 ) ....
und das wäre IF
IF ([Wetter:humidity]<50)...

Man sei so nett und beachte die GROSS geschriebenen Buchstaben sonst werden Eure Codes NIE funktionieren.

Wobei mich das Event etwas wundert.
Sollte vielleicht eher so
ZitatWetter:humidity.*
aussehen.
Aber das lässt sich durch einen einfach Blick in den EventMonitor kontrollieren.

Grüße
Titel: Antw:Bewässerung
Beitrag von: qwert4u am 21 Juli 2014, 12:05:52
code sieht jetzt so aus: also nur klein geschriebene if

es geht nicht. keine Fehlermeldung beim speichern der fhem.cfg. Aber keine Ereignisse im Event Monitor. Schalter immer noch on obwohl der aktuelle wert ein schalten auf OFF bewirken sollte.
noch schöner wäre wie gesagt die Auswertung ob schauer / regen usw. für den aktuellen tag angekündigt sind...


define Beregnung dummy
attr Beregnung alias Bewässerung
attr Beregnung eventMap on:on off:off
attr Beregnung fm_type smarttogglebutton
attr Beregnung room Garten
attr Beregnung webCmd on:off
define Bewaesserung_1 at *02:00 {if (Value("Beregnung") eq "on") {fhem ("set CUL_HM_HM_LC_SW4_WM_25115F_Sw_01 on-for-timer 1200")}}
define Bewaesserung_2 at *02:20 {if (Value("Beregnung") eq "on") {fhem ("set CUL_HM_HM_LC_SW4_WM_25115F_Sw_02 on-for-timer 1200")}}
define Bewaesserung_3 at *02:40 {if (Value("Beregnung") eq "on") {fhem ("set CUL_HM_HM_LC_SW4_WM_25115F_Sw_03 on-for-timer 1200")}}


define Wetter Weather 689779 1800 de
attr Wetter event-on-update-reading humidity
attr Wetter room Wettervorhersage
define FileLog_Wetter FileLog ./log/meinwetter-%Y-%m.log Wetter
attr FileLog_Wetter logtype text
attr FileLog_Wetter room Wettervorhersage
define weblink_wetter weblink htmlCode {WeatherAsHtml("Wetter")}
attr weblink_wetter room Wettervorhersage
define Luftfeuchte notify Wetter:humidity:.* if ([Wetter:humidity]<50)(set Beregnung off)
Titel: Antw:Bewässerung
Beitrag von: qwert4u am 21 Juli 2014, 12:43:36
sorry... das geht jetzt doch mit Auswertung der Luffeuchte... aber besser wäre ja die Auswertung nach schauer, regen oder ähnlichen begriffen in der Vorhersage zum aktuellen tag... wie kann ich das realisieren?
Titel: Antw:Bewässerung
Beitrag von: Puschel74 am 21 Juli 2014, 12:44:21
Hallo,

Zitatkeine Fehlermeldung beim speichern der fhem.cfg
Kleiner Tipp am Rande: Finger weg von der fhem.cfg

Zitatalso nur klein geschriebene if
Das mag ja sein aber das
([Wetter:humidity]<50)
ist eindeutig IF und NICHT if

Versuch dich doch auch mal bitte an den Tags oben - danke.

Grüsse

Edith:
Zitatdas geht jetzt doch mit Auswertung der Luffeuchte.
Aber nicht mit diesem Code
define Luftfeuchte notify Wetter:humidity:.* if ([Wetter:humidity]<50)(set Beregnung off)
Titel: Antw:Bewässerung
Beitrag von: qwert4u am 22 Juli 2014, 13:58:24
falls noch jemand das gleiche vor hat, hier der funktionierende code:

define BeregnungAus at *01:00 {if (ReadingsVal("Wetter","condition",99) eq "regen") or {if (ReadingsVal("Wetter","condition",99) eq "Schauer") {fhem ("set Beregnung off")}}
define BeregnungAn at *10:00 set Beregnung on
Titel: Antw:Bewässerung
Beitrag von: Hoeness am 22 Juli 2014, 15:30:28
Hallo,

Ich habe was sehr ähnliches vor.

Fragst du mit dem code das Wetter (Regen, Schauer) von gestern oder den momentanen Status ab?