Zeitverknüpfung von Geräden - einer nach dem anderen für X Minuten

Begonnen von Alex76, 10 Mai 2016, 08:14:17

Vorheriges Thema - Nächstes Thema

Alex76

Hallo,

ich bin gerade auf der Suche nach einer Zeitverknüpfung. Über die Suche bin ich hier noch nicht ganz fündig geworden.

Ich stelle mir das so vor, dass ich ein Dummy Gerät habe, nennen wir es Rasenbewässerung.

Sobald ich dieses einschalte soll jeder Ausgang/Gerät (4 an der Zahl) für eine gewisse Zeit (1-3 5 Minuten, 4 10 Minuten) laufen.

Ich kann zwar mit diversen Events abfragen ob ein Status auf off geht, aber ich will ja nicht das Programm bei der händischen Betätigung starten, sondern nur, wenn ich das Dummy Device Rasenbewässerung einschalte bzw. beim Ausschalten natürlich alles wieder deaktiviere.

Hat hier jemand eine Idee wie man das  am einfachsten hin bekommt?

Wie oben geschrieben, soll der händische Betrieb trotzdem noch funktionieren.

lg

Alex


Alex76

Eigentlich geht's um die Punkte dahinter da ich nicht weiß wie man das Devise anlegt, dann auf einen fertigen Job wartet und dann den nächsten rein startet bzw beim unterbrachen das ganze Programme stoppt.

viegener

Ich bin jetzt nicht der DOIF-Held, aber es geht ja um folgendes:

Beim schalten des dummys (Annahme: bewaesserung) würde ein Event entstehen, der verwendet werden könnte um einen DOIF zu aktivieren:


define bewaesserungOnNotify notify bewaesserung:on set bewaesserungOnDOIF initialize


und der DOIF schaltet im Zeitraster weiter:



define bewaesserungOnDOIF DOIF ([:00])
  ( set bewaesserung1 on )
DOELSEIF ([:05])
  ( set bewaesserung1 off, set bewaesserung2 on )

...

DOELSEIF ([:10])
  ( set bewaesserung4 off,  set bewaesserungOnDOIF disable)



Vermutlich kann das noch einfacher gestaltet werden, aber vielleicht hilft das ja erstmal weiter?
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Damian

Zitat von: Alex76 am 10 Mai 2016, 08:14:17
Hallo,

ich bin gerade auf der Suche nach einer Zeitverknüpfung. Über die Suche bin ich hier noch nicht ganz fündig geworden.

Ich stelle mir das so vor, dass ich ein Dummy Gerät habe, nennen wir es Rasenbewässerung.

Sobald ich dieses einschalte soll jeder Ausgang/Gerät (4 an der Zahl) für eine gewisse Zeit (1-3 5 Minuten, 4 10 Minuten) laufen.

Ich kann zwar mit diversen Events abfragen ob ein Status auf off geht, aber ich will ja nicht das Programm bei der händischen Betätigung starten, sondern nur, wenn ich das Dummy Device Rasenbewässerung einschalte bzw. beim Ausschalten natürlich alles wieder deaktiviere.

Hat hier jemand eine Idee wie man das  am einfachsten hin bekommt?

Wie oben geschrieben, soll der händische Betrieb trotzdem noch funktionieren.

lg

Alex

di_Regenb DOIF ([Regenbewaesserung] eq "on") ((set dev1,dev2,dev3,dev4 on))((set dev1,dev2,dev3 off))(set dev4 off)

attr di_Regenb wait 0,300,300
attr di_Regenb do always


Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Alex76

Zitat von: Damian am 10 Mai 2016, 20:35:24
di_Regenb DOIF ([Regenbewaesserung] eq "on") ((set dev1,dev2,dev3,dev4 on))((set dev1,dev2,dev3 off))(set dev4 off)

attr di_Regenb wait 0,300,300
attr di_Regenb do always


Gruß

Damian

Hi Damian,

ich habs mal mit deiner Lösung probiert, aber sobald ich auf on drücke sind alle Ventile gleichzeitig offen.

Eigentlich soll ja eines geöffnet werden, dann geschlossen, nach 5min das zweite, dann geschlossen usw... bis alle 4 durch sind.

Glaub ich hab da noch irgendwo den Hund drinnen. Hast Du hier noch eine Idee?

define BewaesserungsPumpeOn notify Bewaesserungskreis1:on|Bewaesserungskreis2:on|Bewaesserungskreis3:on|Tankbefuellung:on|Tropfschlauch:on set Bewaesserungspumpe on
define di_Pumpe_aus DOIF ([Bewaesserungskreis1] eq "off" and [Bewaesserungskreis2] eq "off" and [Bewaesserungskreis3] eq "off" and [Tankbefuellung] eq "off" and [Tropfschlauch:state] eq "off") (set Bewaesserungspumpe off)
define RegenbDoIF DOIF ([Regenbewaesserung] eq "on") ((set Bewaesserungskreis1,Bewaesserungskreis2,Bewaesserungskreis3,Tropfschlauch on))((set Bewaesserungskreis1,Bewaesserungskreis2,Bewaesserungskreis3 off))(set Tropfschlauch off)
attr RegenbDoIF do always
attr RegenbDoIF room Garten
attr RegenbDoIF wait wait 0,300,300
define Regenbewaesserung dummy
attr Regenbewaesserung room Garten
attr Regenbewaesserung webCmd on:off

lg

Alex

viegener

Ich denke mal das Attribut wait ist so nicht richtig gesetzt (ein wait zu viel bei der Definition)?

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Damian

Wenn ich lese:

ZitatSobald ich dieses einschalte soll jeder Ausgang/Gerät (4 an der Zahl) für eine gewisse Zeit (1-3 5 Minuten, 4 10 Minuten) laufen.

dann kann ich nicht erkennen, dass die drei nacheinander geschaltet werden sollen. Nacheinander wäre dann:

(set dev1 on) (set dev1 off, set dev2 on) (set dev2 off, set dev3 on) (...

wait 0,300,300...

Beispiele zu wait findest du wie immer in der Commandref.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Alex76

Hi,

danke für die schnelle Antwort, war wohl ein Missverständnis.

Ich hab es somit so probiert, nur irgendwie passiert nichts, wenn ich nun einschalte. Glaub da ist noch irgendwo der Hund drinnen.

define BewaesserungsPumpeOn notify Bewaesserungskreis1:on|Bewaesserungskreis2:on|Bewaesserungskreis3:on|Tankbefuellung:on|Tropfschlauch:on set Bewaesserungspumpe on
define di_Pumpe_aus DOIF ([Bewaesserungskreis1] eq "off" and [Bewaesserungskreis2] eq "off" and [Bewaesserungskreis3] eq "off" and [Tankbefuellung] eq "off" and [Tropfschlauch:state] eq "off") (set Bewaesserungspumpe off)
define RegenbDoIF DOIF ([Regenbewaesserung] eq "on") ((set Bewaesserungskreis1 on,set Bewaesserungskreis2,Bewaesserungskreis3,Tropfschlauch off))((set Bewaesserungskreis2 on,set Bewaesserungskreis1,Bewaesserungskreis3,Tropfschlauch off))((set Bewaesserungskreis3 on,set Bewaesserungskreis1,Bewaesserungskreis2,Tropfschlauch off))((set Tropfschlauch on,set Bewaesserungskreis1,Bewaesserungskreis2,Bewaesserungskreis3 off))(set Tropfschlauch,Regenbewaesserung off)
attr RegenbDoIF do always
attr RegenbDoIF room Garten
attr RegenbDoIF wait 0,300,300,300,600
define Regenbewaesserung dummy
attr Regenbewaesserung room Garten
attr Regenbewaesserung webCmd on:off


Im Prinzip müsste ja das wait für jede Klammer einen Ausdruck haben. Warum die Klammern doppelt sind, hab ich nicht verstanden, habs aber mal nach gleichem Muster nachgebaut.

lg

Alex

Alex76

Ich glaub ich habs nun hin bekommen, muss das nun beobachten ob das richtig läuft:

define BewaesserungsPumpeOn notify Bewaesserungskreis1:on|Bewaesserungskreis2:on|Bewaesserungskreis3:on|Tankbefuellung:on|Tropfschlauch:on set Bewaesserungspumpe on
define di_Pumpe_aus DOIF ([Bewaesserungskreis1] eq "off" and [Bewaesserungskreis2] eq "off" and [Bewaesserungskreis3] eq "off" and [Tankbefuellung] eq "off" and [Tropfschlauch:state] eq "off") (set Bewaesserungspumpe off)
define RegenbDoIF DOIF ([Regenbewaesserung] eq "on") (set Bewaesserungskreis1 on,set Bewaesserungskreis2 off,set Bewaesserungskreis3 off,set Tropfschlauch off) (set Bewaesserungskreis1 off,set Bewaesserungskreis2 on,set Bewaesserungskreis3 off,set Tropfschlauch off) (set Bewaesserungskreis1 off,set Bewaesserungskreis2 off,set Bewaesserungskreis3 on,set Tropfschlauch off) (set Bewaesserungskreis1 off,set Bewaesserungskreis2 off,set Bewaesserungskreis3 off,set Tropfschlauch on) (set Tropfschlauch off, set Regenbewaesserung off)
attr RegenbDoIF do always
attr RegenbDoIF room Garten
attr RegenbDoIF wait 0,300,300,300,600
define Regenbewaesserung dummy
attr Regenbewaesserung room Garten
attr Regenbewaesserung webCmd on:off


Kann man irgendwie einen Timer neben dem Dummy Device anzeigen lassen oder hinter den einzelnen Ventilen?

Damian

ZitatWarum die Klammern doppelt sind, hab ich nicht verstanden, habs aber mal nach gleichem Muster nachgebaut

Die Klammern müssen nicht doppelt sein. Noch mal zum Verständins

(set bla1 on, set bla2 on) ist ok, DOIF gibt zwei Befehle weiter set bla1 on und set bla2 on.


(set bla1, bla2 on) ist nicht ok, da für DOIF Komma ein Trenner ist, daher würde DOIF daraus zwei Befehle machen set bla1 und bla2 on und das würde nicht funktionieren. Da dieses Komma nicht als Trenner für DOIF gedacht ist, sondern für den set Befehl, muss in diesem Falle dieser Ausdruck doppelt geklammert werden, damit der Ausdruck komplett so an set übergeben wird, hier also:
((set bla1, bla2 on)). Damit gibt DOIF set bla1, bla2 on als einen Befehl an set weiter.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

automatisierer

Die Bewässerung sieht sehr Kompliziert aus, ist doch wohl nicht für ne Hanfplantage  :o