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.
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)
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.
Hast Du noch einen hinweis / Beispiel, wie ich diese notify definieren muss?
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)
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.
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
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
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)
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)
Hallo,
if und IF kannst du nicht mischen.
Entweder oder - du musst dich entscheiden.
Grüße
Was klappt denn nicht
?
Probier es mal so
define Luftfeuchte notify Wetter.humidity:.* if ([Wetter:humidity]<50) fhem(set Beregnung off)
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
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)
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?
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)
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
Hallo,
Ich habe was sehr ähnliches vor.
Fragst du mit dem code das Wetter (Regen, Schauer) von gestern oder den momentanen Status ab?