FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Alex76 am 10 Mai 2016, 08:14:17

Titel: Zeitverknüpfung von Geräden - einer nach dem anderen für X Minuten
Beitrag 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
Titel: Antw:Zeitverknüpfung von Geräden - einer nach dem anderen für X Minuten
Beitrag von: automatisierer am 10 Mai 2016, 10:06:04
DOIF...
Titel: Antw:Zeitverknüpfung von Geräden - einer nach dem anderen für X Minuten
Beitrag von: Alex76 am 10 Mai 2016, 15:53:04
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.
Titel: Antw:Zeitverknüpfung von Geräden - einer nach dem anderen für X Minuten
Beitrag von: viegener am 10 Mai 2016, 16:45:38
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?
Titel: Antw:Zeitverknüpfung von Geräden - einer nach dem anderen für X Minuten
Beitrag von: Damian am 10 Mai 2016, 20:35:24
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
Titel: Antw:Zeitverknüpfung von Geräden - einer nach dem anderen für X Minuten
Beitrag von: Alex76 am 11 Mai 2016, 20:39:39
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
Titel: Antw:Zeitverknüpfung von Geräden - einer nach dem anderen für X Minuten
Beitrag von: viegener am 11 Mai 2016, 20:44:07
Ich denke mal das Attribut wait ist so nicht richtig gesetzt (ein wait zu viel bei der Definition)?

Titel: Antw:Zeitverknüpfung von Geräden - einer nach dem anderen für X Minuten
Beitrag von: Damian am 11 Mai 2016, 21:05:52
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
Titel: Antw:Zeitverknüpfung von Geräden - einer nach dem anderen für X Minuten
Beitrag von: Alex76 am 11 Mai 2016, 21:37:56
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
Titel: Antw:Zeitverknüpfung von Geräden - einer nach dem anderen für X Minuten
Beitrag von: Alex76 am 11 Mai 2016, 21:48:07
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?
Titel: Antw:Zeitverknüpfung von Geräden - einer nach dem anderen für X Minuten
Beitrag von: Damian am 11 Mai 2016, 22:11:30
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
Titel: Antw:Zeitverknüpfung von Geräden - einer nach dem anderen für X Minuten
Beitrag von: automatisierer am 14 Mai 2016, 13:28:14
Die Bewässerung sieht sehr Kompliziert aus, ist doch wohl nicht für ne Hanfplantage  :o