Shelly+Sonoff+Doif -> sleep Gartenbewässerung

Begonnen von Starsurfer, 04 April 2019, 19:59:46

Vorheriges Thema - Nächstes Thema

Damian

set Garten_Pumpe on-for-timer {[...

und

set Sonoff_Hunter_Ventil1 on-for-timer {([...

fällt dir was auf?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Starsurfer

Hm habe gestern wohl zuviel probiert  :o
Ich werde das nachher mal testen
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

Starsurfer

#17
Ok so scheint es jetzt zu funktionieren:


([05:50] && [Beregnungsautomatik:state] eq "An" && [RegenwarscheinlickeitProTag:state] > 50) (
set Garten_Pumpe on-for-timer {([Dauer_Gewaechshaus:state])*60};
set Sonoff_Hunter_Ventil1 on-for-timer {([Dauer_Gewaechshaus:state])*60};
)
DOELSEIF([05:50] && [Beregnungsautomatik:state] eq "An" && [RegenwarscheinlickeitProTag:state] < 51) (
set Garten_Pumpe on-for-timer {([Dauer_Gewaechshaus:state]+[Dauer_Hochbeet:state]+[Dauer_Gemuese:state]+[Dauer_FeWo_Einfahrt:state]*60)};
set Sonoff_Hunter_Ventil1 on-for-timer {([Dauer_Gewaechshaus:state])*60};
set Sonoff_Hunter_Ventil2 on-for-timer {([Dauer_Hochbeet:state])*60};
set Sonoff_Hunter_Ventil3 on-for-timer {([Dauer_Gemuese:state])*60};
set Sonoff_Hunter_Ventil4 on-for-timer {([Dauer_FeWo_Einfahrt:state])*60};
)DOELSE (
set Sonoff_Hunter_Ventil1 OFF;
set Sonoff_Hunter_Ventil2 OFF;
set Sonoff_Hunter_Ventil3 OFF;
set Sonoff_Hunter_Ventil4 OFF;
set Garten_Pumpe off;
)


Ich habe aber noch ein Problem mit dem Wait, das funktioniert noch nicht richtig. Beim cmd_2 Event schaltet er die Pumpe an und dann laufen die Ventile 1-3 einmal schnell durch nur Ventil 4 bleibt die angegebene Zeit an. Der Sonoff 4CH PRo kann nur einen Kanal gleichzeitig, deshalb sollen die nacheinander die gewünschte Zeit angehen.
cmd_1 funktioniert so wie es soll.
0,1:0,1,[Dauer_Gewaechshaus:state]*60,[Dauer_Gewaechshaus:state]+[Dauer_Hochbeet:state]*60,[Dauer_Gewaechshaus:state]+[Dauer_Hochbeet:state]+[Dauer_Gemuese:state]*60,[Dauer_Gewaechshaus:state]+[Dauer_Hochbeet:state]+[Dauer_Gemuese:state]+[Dauer_FeWo_Einfahrt:state]*60

List:
Internals:
   DEF        ([05:50] && [Beregnungsautomatik:state] eq "An" && [RegenwarscheinlickeitProTag:state] > 50) (
set Garten_Pumpe on-for-timer {([Dauer_Gewaechshaus:state])*60};
set Sonoff_Hunter_Ventil1 on-for-timer {([Dauer_Gewaechshaus:state])*60};
)
DOELSEIF([05:50] && [Beregnungsautomatik:state] eq "An" && [RegenwarscheinlickeitProTag:state] < 51) (
set Garten_Pumpe on-for-timer {([Dauer_Gewaechshaus:state]+[Dauer_Hochbeet:state]+[Dauer_Gemuese:state]+[Dauer_FeWo_Einfahrt:state]*60)};
set Sonoff_Hunter_Ventil1 on-for-timer {([Dauer_Gewaechshaus:state])*60};
set Sonoff_Hunter_Ventil2 on-for-timer {([Dauer_Hochbeet:state])*60};
set Sonoff_Hunter_Ventil3 on-for-timer {([Dauer_Gemuese:state])*60};
set Sonoff_Hunter_Ventil4 on-for-timer {([Dauer_FeWo_Einfahrt:state])*60};
)DOELSE (
set Sonoff_Hunter_Ventil1 OFF;
set Sonoff_Hunter_Ventil2 OFF;
set Sonoff_Hunter_Ventil3 OFF;
set Sonoff_Hunter_Ventil4 OFF;
set Garten_Pumpe off;
)
   FUUID      5ca51125-f33f-f054-804b-7798348fef637871
   MODEL      FHEM
   NAME       do_Bewaesserung
   NR         350
   NTFY_ORDER 50-do_Bewaesserung
   STATE      cmd_3
   TYPE       DOIF
   VERSION    18890 2019-03-13 18:56:41
   READINGS:
     2019-05-09 18:38:55   cmd             3
     2019-05-09 18:38:55   cmd_event       do_Bewaesserung
     2019-05-09 18:38:55   cmd_nr          3
     2019-05-09 18:32:18   mode            enabled
     2019-05-09 18:38:55   state           cmd_3
     2019-05-09 18:32:18   timer_01_c01    10.05.2019 05:50:00
     2019-05-09 18:32:18   timer_02_c02    10.05.2019 05:50:00
   Regex:
     accu:
   attr:
     cmdState:
     wait:
       0:
         0
         1
       1:
         0
         1
         [Dauer_Gewaechshaus:state]*60
         [Dauer_Gewaechshaus:state]+[Dauer_Hochbeet:state]*60
         [Dauer_Gewaechshaus:state]+[Dauer_Hochbeet:state]+[Dauer_Gemuese:state]*60
         [Dauer_Gewaechshaus:state]+[Dauer_Hochbeet:state]+[Dauer_Gemuese:state]+[Dauer_FeWo_Einfahrt:state]*60
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday) && ::ReadingValDoIf($hash,'Beregnungsautomatik','state') eq "An" && ::ReadingValDoIf($hash,'RegenwarscheinlickeitProTag','state') > 50
     1          ::DOIF_time_once($hash,1,$wday) && ::ReadingValDoIf($hash,'Beregnungsautomatik','state') eq "An" && ::ReadingValDoIf($hash,'RegenwarscheinlickeitProTag','state') < 51
   days:
   devices:
     0           Beregnungsautomatik RegenwarscheinlickeitProTag
     1           Beregnungsautomatik RegenwarscheinlickeitProTag
     all         Beregnungsautomatik RegenwarscheinlickeitProTag
   do:
     0:
       0           set Garten_Pumpe on-for-timer {([Dauer_Gewaechshaus:state])*60};  set Sonoff_Hunter_Ventil1 on-for-timer {([Dauer_Gewaechshaus:state])*60};
     1:
       0           set Garten_Pumpe on-for-timer {([Dauer_Gewaechshaus:state]+[Dauer_Hochbeet:state]+[Dauer_Gemuese:state]+[Dauer_FeWo_Einfahrt:state]*60)}; set Sonoff_Hunter_Ventil1 on-for-timer {([Dauer_Gewaechshaus:state])*60}; set Sonoff_Hunter_Ventil2 on-for-timer {([Dauer_Hochbeet:state])*60}; set Sonoff_Hunter_Ventil3 on-for-timer {([Dauer_Gemuese:state])*60}; set Sonoff_Hunter_Ventil4 on-for-timer {([Dauer_FeWo_Einfahrt:state])*60};
     2:
       0           set Sonoff_Hunter_Ventil1 OFF; set Sonoff_Hunter_Ventil2 OFF; set Sonoff_Hunter_Ventil3 OFF; set Sonoff_Hunter_Ventil4 OFF; set Garten_Pumpe off;
   helper:
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev   
     timerevent
     timerevents
     timereventsState
     triggerDev
     DOIF_eventas:
       cmd_nr: 3
       cmd: 3
       cmd_event: do_Bewaesserung
       state: cmd_3
   internals:
   intervalfunc:
   itimer:
   localtime:
     0          1557460200
     1          1557460200
   readings:
     0           Beregnungsautomatik:state RegenwarscheinlickeitProTag:state
     1           Beregnungsautomatik:state RegenwarscheinlickeitProTag:state
     all         Beregnungsautomatik:state RegenwarscheinlickeitProTag:state
   realtime:
     0          05:50:00
     1          05:50:00
   time:
     0          05:50:00
     1          05:50:00
   timeCond:
     0          0
     1          1
   timer:
     0          0
     1          0
   timers:
     0           0
     1           1
   triggertime:
     1557460200:
       localtime  1557460200
       hash:
   uiState:
   uiTable:
Attributes:
   DbLogExclude .*
   cmdIcon    cmd_1:audio_play
   group      Bewässerung
   icon       control_arrow_turn_right
   room       Garten
   verbose    5
   wait       0,1:0,1,[Dauer_Gewaechshaus:state]*60,[Dauer_Gewaechshaus:state]+[Dauer_Hochbeet:state]*60,[Dauer_Gewaechshaus:state]+[Dauer_Hochbeet:state]+[Dauer_Gemuese:state]*60,[Dauer_Gewaechshaus:state]+[Dauer_Hochbeet:state]+[Dauer_Gemuese:state]+[Dauer_FeWo_Einfahrt:state]*60
   webCmd     cmd_1

FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

smile7779

Hallo Starsurfer,

ich bin auf diesen sehr interessanten Beitrag gestoßen. Ich bin bei weitem nicht so ein Profi um folgende Aufgabe zu lösen. Vielleicht kannst Du mir ein paar Tipps geben.
Ich habe ein Sonoff 4CH pro zur Steuerung der 4 Hunterventile. Außerdem habe ich ein Sonoff switch um einfach die Stromversorgung sicherzustellen, was in Deinem Fall die Gartenpumpe ist. (soll bei mir später auch noch integriert werden) Der Wunsch ist es ein DOIF zu kreieren und in einer bestimmten Reihenfolge zu einer bestimmten Zeit, besser noch in Abhängigkeit von Wetterdaten (eben bei Regen nicht) die 4 Hunter Ventile 2 gleichzeitig für 10 Minuten, danach das 3. für 10 Minuten und dann das 4. am Schluss für 10 Minuten anzusteuern.
Vielleicht kannst Du mir Deine Definitionszeile senden, damit ich diese auf meine Gegebenheiten anpassen kann.

Vielen Dank im Voraus ;-)

Starsurfer

Moin,
beim Sonoff 4ch pro kann bei 24V nur ein Kanal gleichzeitig an sein, 2 Kreise zur gleichen Zeit geht nicht.

Ich versuche das mal raus zu suchen.
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

Starsurfer

#20
So hier mal ein paar Details, aber gleich vorweg, es gibt da bestimmt noch Verbesserungsbedarf und teile davon sind hier im Forum zusammen gesammelt.
Der Dummy Beregnungsautomatik:
Hier wird die Automatik an und aus geschaltet.

defmod Beregnungsautomatik dummy
attr Beregnungsautomatik DbLogExclude .*
attr Beregnungsautomatik devStateIcon An:rc_GREEN:Aus Aus:rc_RED:An
attr Beregnungsautomatik eventMap An:An Aus:Aus
attr Beregnungsautomatik group Bewässerung
attr Beregnungsautomatik icon humidity
attr Beregnungsautomatik room Garten
attr Beregnungsautomatik sortby 1
attr Beregnungsautomatik userReadings Automatik_Aktiv,Aktiver_Regner
attr Beregnungsautomatik webCmd An:Aus


Regenmenge Gestern, Daten von Proplanta:
defmod RegenMengeGestern dummy
attr RegenMengeGestern DbLogExclude .*
attr RegenMengeGestern group Bewässerung
attr RegenMengeGestern room Garten
attr RegenMengeGestern stateFormat state mm


Regenmenge gestern:
defmod RegenMengeHeute dummy
attr RegenMengeHeute DbLogExclude .*
attr RegenMengeHeute group Bewässerung
attr RegenMengeHeute room Garten
attr RegenMengeHeute stateFormat state mm


Regenwarscheinlichkeit:
defmod RegenwarscheinlickeitProTag dummy
attr RegenwarscheinlickeitProTag DbLogExclude .*
attr RegenwarscheinlickeitProTag DbLogInclude state
attr RegenwarscheinlickeitProTag group Bewässerung
attr RegenwarscheinlickeitProTag room Garten
attr RegenwarscheinlickeitProTag stateFormat state %


at um die Regendummys zu füllen:
defmod Regendummy at *01:00:00 {myWeatherData()}
attr Regendummy DbLogExclude .*
attr Regendummy group Bewässerung
attr Regendummy room Garten


99_myUtils.pm:

#Wetterdaten generieren und auslesen
#myWeatherData();

sub myWeatherData(){
  my $faktor;

  my $RegenMengeGestern = (ReadingsVal("RegenMengeHeute", "state", 0));
  fhem("set RegenMengeGestern $RegenMengeGestern");

  my $RegenMengeHeute = (ReadingsVal("WetterProplanta","fc0_rain",0));
  fhem("set RegenMengeHeute $RegenMengeHeute");

  my $w1 = ReadingsVal("WetterProplanta","fc0_weather00",0);
  my $w2 = ReadingsVal("WetterProplanta","fc0_weather03",0);
  my $w3 = ReadingsVal("WetterProplanta","fc0_weather06",0);
  my $w4 = ReadingsVal("WetterProplanta","fc0_weather09",0);
  my $w5 = ReadingsVal("WetterProplanta","fc0_weather12",0);
  my $w6 = ReadingsVal("WetterProplanta","fc0_weather15",0);
  my $w7 = ReadingsVal("WetterProplanta","fc0_weather18",0);
  my $w8 = ReadingsVal("WetterProplanta","fc0_weather20",0); 
 
  $faktor += ($w1 =~ m/leichter Reg/i)? 20: 0;
  $faktor += ($w2 =~ m/leichter Reg/i)? 20: 0;
  $faktor += ($w3 =~ m/leichter Reg/i)? 20: 0;
  $faktor += ($w4 =~ m/leichter Reg/i)? 20: 0;
  $faktor += ($w5 =~ m/leichter Reg/i)? 20: 0;
  $faktor += ($w6 =~ m/leichter Reg/i)? 20: 0;
  $faktor += ($w7 =~ m/leichter Reg/i)? 20: 0;
  $faktor += ($w8 =~ m/leichter Reg/i)? 20: 0;


  my $regenwarscheinlichkeit = ($faktor > 0)? ((ReadingsVal("WetterProplanta","fc0_chOfRainDay",0)) /100) * $faktor : (ReadingsVal("WetterProplanta","fc0_chOfRainDay",0));

  fhem("set RegenwarscheinlickeitProTag $regenwarscheinlichkeit");

return $regenwarscheinlichkeit;
}


Und die Dauer der einzelnen Kreise einstellbar, hier nur ein Kreis als Beispiel:
defmod Dauer_Gewaechshaus dummy
attr Dauer_Gewaechshaus DbLogExclude .*
attr Dauer_Gewaechshaus group Bewässerungsdauer Kreise
attr Dauer_Gewaechshaus icon hourglass
attr Dauer_Gewaechshaus readingList state
attr Dauer_Gewaechshaus room Garten
attr Dauer_Gewaechshaus setList state:0,1,5,7,10,12,14,16,18,20,25,30,35,40,45,50,55,60
attr Dauer_Gewaechshaus sortby 1
attr Dauer_Gewaechshaus webCmd state


Das DOIF für die Bewässerung (Optimierungsbedürftig -> sleep -> wait)
defmod do_Bewaesserung DOIF ([05:50] and [Beregnungsautomatik:state] eq "An" and (([RegenMengeGestern:state]+[RegenMengeHeute:state]) > 10) and ([RegenwarscheinlickeitProTag:state] >= 40)) \
(set Telegram msg Gewächshaus Bewasserung wird gestartet;; \
set Garten_Pumpe on-for-timer {([Dauer_Gewaechshaus:state])*60};;\
set Sonoff_Hunter_Ventil1 on-for-timer {([Dauer_Gewaechshaus:state])*60};; sleep {([Dauer_Gewaechshaus:state])*60};;\
set $SELF cmd_3;;\
)\
DOELSEIF\
([05:50] and [Beregnungsautomatik:state] eq "An" and (([RegenMengeGestern:state]+[RegenMengeHeute:state]) < 10) and ([RegenwarscheinlickeitProTag:state] < 40)) \
(set Telegram msg Außen Bewasserung wird gestartet;;\
set Garten_Pumpe on-for-timer {([Dauer_Gewaechshaus:state]+[Dauer_Hochbeet:state]+[Dauer_Gemuese:state]+[Dauer_FeWo_Einfahrt:state])*60};;\
set Sonoff_Hunter_Ventil1 on-for-timer {([Dauer_Gewaechshaus:state]*60)};; sleep {([Dauer_Gewaechshaus:state])*60};;\
set Sonoff_Hunter_Ventil2 on-for-timer {([Dauer_Hochbeet:state])*60};; sleep {([Dauer_Hochbeet:state])*60};;\
set Sonoff_Hunter_Ventil3 on-for-timer {([Dauer_Gemuese:state])*60};; sleep {([Dauer_Gemuese:state])*60};;\
set Sonoff_Hunter_Ventil4 on-for-timer {([Dauer_FeWo_Einfahrt:state])*60};; sleep {([Dauer_FeWo_Einfahrt:state])*60};;\
set $SELF cmd_3;;\
)\
DOELSE \
(\
set Sonoff_Hunter_Ventil1 OFF;;\
set Sonoff_Hunter_Ventil2 OFF;;\
set Sonoff_Hunter_Ventil3 OFF;;\
set Sonoff_Hunter_Ventil4 OFF;;\
set Garten_Pumpe off;;\
)
attr do_Bewaesserung DbLogExclude .*
attr do_Bewaesserung cmdIcon cmd_1:audio_play
attr do_Bewaesserung do always
attr do_Bewaesserung group Bewässerung
attr do_Bewaesserung icon control_arrow_turn_right
attr do_Bewaesserung room Garten
attr do_Bewaesserung verbose 5
attr do_Bewaesserung webCmd cmd_1


Sollte am Ende dann ungefähr, wie auf dem Screenshot aussehen.
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

baerm

Hi Starsurfer,
Deine Implementierung gefällt mir!
Ich habe mir Deine myUtil installiert und auch in Betrieb genommen. Ich würde einen Teil davon verwenden, vorallem die Proplanta Integration fehlt bei mir komplett und könnte ich leicht dazubauen.
Ich habe aber eine Frage zu: 
$faktor += ($w1 =~ m/leichter Reg/i)? 20: 0;
Wenn ich das richtig verstehe, ignorierst Du damit "Regen" und "Regenschauer" oder was macht dieser Code? Hat das einen bestimmten Grund?
lg,
Matthias

smile7779

Vielen Dank Starsurfer für die vielen Informationen. Dann werde ich mich da mal heranwagen.

Beste Grüße  :)

Starsurfer

#23
Zitat von: baerm am 30 April 2020, 22:43:13
Hi Starsurfer,
Deine Implementierung gefällt mir!
Ich habe mir Deine myUtil installiert und auch in Betrieb genommen. Ich würde einen Teil davon verwenden, vorallem die Proplanta Integration fehlt bei mir komplett und könnte ich leicht dazubauen.
Ich habe aber eine Frage zu: 
$faktor += ($w1 =~ m/leichter Reg/i)? 20: 0;
Wenn ich das richtig verstehe, ignorierst Du damit "Regen" und "Regenschauer" oder was macht dieser Code? Hat das einen bestimmten Grund?
lg,
Matthias

Der Code stammt hier irgendwo aus dem Forum, ich kann dir gar nicht sagen, ob das so richtig ist.

Hier der orignal Code: https://blog.moneybag.de/fhem-automatische-gartenbewaesserung-mit-fhem-und-gardena-laufendes-projekt-gastbeitrag/
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

baerm

Danke. Irgenwann war ich auch schon auf der Seite, habe aber den Code nie betrachtet. Laut der Beschreibung kann ich nicht ganz nachvollziehen, warum das so gemacht wurde. Ich denke ich werde das hernehmen und entsprechend umbauen.

Ich möchte eigentlich die Regenwahrscheinlichkeit und Regenmenge zur Berechnung der Bewässerungsdauer verwenden. Aktuell noch manuell gesteuert. bereits gefallene Regenmenge nehme ich von der Netatmo Seite (ist noch einzubauen). Hier mein aktueller Code:

defmod Intensitaet dummy
attr Intensitaet alias Bewässerungs Intensität
attr Intensitaet group Bewässerung
attr Intensitaet icon weather_rain_gauge
attr Intensitaet setList state:slider,0,1,100
attr Intensitaet sortby 1
attr Intensitaet stateFormat state%</br>Kreis 1: Kreis1 min</br>Kreis 2: Kreis2 min</br>Kreis 3: Kreis3 min</br>Kreis 4: Kreis4 min
attr Intensitaet userReadings Kreis1 {sprintf("%1.f",(60/100*ReadingsVal("Intensitaet","state",100)))}, Kreis2 {sprintf("%1.f",(120/100*ReadingsVal("Intensitaet","state",100)))}, Kreis3 {sprintf("%1.f",(180/100*ReadingsVal("Intensitaet","state",100)))}, Kreis4 {sprintf("%1.f",(240/100*ReadingsVal("Intensitaet","state",100)))}, Last
attr Intensitaet webCmd state


defmod di_Bewaesserung_Test DOIF ([([Startzeit_BW2])] and [Bewaesserung2] eq "an" and [Temperatur:WERT] > 10 and [RegenwahrscheinlichkeitProTag:state] < 80) (set MessageTxt Bewaesserung_Test Start ) \
DOELSEIF ([([Startzeit_BW2] + ReadingsVal("Intensitaet","Kreis1",100))] and [Bewaesserung2] eq "an" ) (set MessageTxt Bewaesserung_Test) \
DOELSEIF ([([Startzeit_BW2] + ReadingsVal("Intensitaet","Kreis2",100))] and [Bewaesserung2] eq "an" ) (set MessageTxt Bewaesserung_Test) \
DOELSEIF ([([Startzeit_BW2] + ReadingsVal("Intensitaet","Kreis3",100))] and [Bewaesserung2] eq "an" ) (set MessageTxt Bewaesserung_Test) \
DOELSEIF ([([Startzeit_BW2] + ReadingsVal("Intensitaet","Kreis4",100))] and [Bewaesserung2] eq "an" ) (set MessageTxt Bewaesserung_Test Ende )
attr di_Bewaesserung_Test cmdIcon cmd_1:audio_play
attr di_Bewaesserung_Test group Bewässerung
attr di_Bewaesserung_Test icon control_arrow_turn_right
attr di_Bewaesserung_Test room AUSSEN,KG->Maschinenraum
attr di_Bewaesserung_Test webCmd cmd_1


smile7779

Hallo Starsurfer,
ich habe jetzt mal versucht den DOIF auf meine Geräte anzupassen, aber irgendwie sind da wohl Fehler drin. Ich kann den DOIF nicht in Fhem integrieren. Vielleicht kann Du mal ein Auge darauf werfen wo der Fehler ist. Ich muss natürlich noch etwas umbauen, weil Bewaesserung_vorn_1 und Bewaesserung_vorn_3 mit einem kurzen wait zur gleichen Zeit auf Timer laufen sollen. Vielen Dank

defmod do_Bewaesserung DOIF ([05:50] and [Beregnungsautomatik:state] eq "An" and (([RegenMengeGestern:state]+[RegenMengeHeute:state]) > 10) and ([RegenwarscheinlickeitProTag:state] >= 40)) \
(set Telegram msg Bewasserung wird gestartet;; \
set Gartenwasser on-for-timer {([Dauer_Gartenwasser_an :state])*60};;\
set Bewaesserung_vorn_1 on-for-timer {([Dauer_Bewaesserung_vorn_1:state])*60};; sleep {([Dauer_Bewaesserung_vorn_1:state])*60};;\
set $SELF cmd_3;;\
)\
DOELSEIF\
([05:50] and [Beregnungsautomatik:state] eq "An" and (([RegenMengeGestern:state]+[RegenMengeHeute:state]) < 10) and ([RegenwarscheinlickeitProTag:state] < 40)) \
(set Telegram msg Außen Bewasserung wird gestartet;;\
set Gartenwasser on-for-timer {([Dauer_Gartenwasser_an :state]+[ Dauer_Bewaesserung_vorn_1:state]+[ Dauer_Bewaesserung_vorn_2:state]+[ Dauer_Bewaesserung_vorn_3:state])*60};;\
set Bewaesserung_vorn_1 on-for-timer {([ Dauer_Bewaesserung_vorn_1:state]*60)};; sleep {([Dauer_Bewaesserung_vorn_1:state])*60};;\
set Bewaesserung_vorn_2 on-for-timer {([ Dauer_Bewaesserung_vorn_1:state])*60};; sleep {([Dauer_Bewaesserung_vorn_1:state])*60};;\
set Bewaesserung_vorn_3 on-for-timer {([ Dauer_Bewaesserung_vorn_2:state])*60};; sleep {([Dauer_Bewaesserung_vorn_2:state])*60};;\
set Bewaesserung_vorn_4 on-for-timer {([ Dauer_Bewaesserung_vorn_3:state])*60};; sleep {([Dauer_Bewaesserung_vorn_3:state])*60};;\
set $SELF cmd_3;;\
)\
DOELSE\
(\
set Bewaesserung_vorn_1 OFF;;\
set Bewaesserung_vorn_2 OFF;;\
set Bewaesserung_vorn_3 OFF;;\
set Bewaesserung_vorn_4 OFF;;\
set Gartenwasser off;;\
)
attr do_Bewaesserung DbLogExclude .*
attr do_Bewaesserung cmdIcon cmd_1:audio_play
attr do_Bewaesserung do always
attr do_Bewaesserung group Bewässerung
attr do_Bewaesserung icon control_arrow_turn_right
attr do_Bewaesserung room Garten
attr do_Bewaesserung verbose 5
attr do_Bewaesserung webCmd cmd_1

Starsurfer

Da sind meiner Meinung nach Leerzeichen, wo keine sein sollten.
Z.b. ([Dauer_Gartenwasser_an   :state]
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com