FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Groej am 07 Mai 2016, 21:19:00

Titel: Fenster zur vollen Stunde öffnen und zur halben Stunde schließen
Beitrag von: Groej am 07 Mai 2016, 21:19:00
Juten Abend an alle,

ich habe eine Taupunktsteuerung für meine Garage. Funktioniert auch soweit alles. Ich möchte allerdings das zu jeder vollen Stunde das Fenster und der Lüfter eingeschaltet wird und zu jeder halben Stunde wieder ausgeschaltet wird.

Nun zu meinen Problem. Ab und zu kommt es vor das beide Aktoren geschaltet und danach gleich wieder abgeschaltet werden. Vor FHEM haben ich mit linknx gearbeitet. Dort ging das so ähnlich wie hier bei FHEM. Kann es sein das FHEM bei jeder vollen Stunde auch die halbe Stunde rechnet und nicht nur die Minuten 00:30 oder mach ich bei dem Programm was falsch?

define garage_lueften_ein at +*01:00 {\
my $tpa1 = Value("taupunkt_auto");;\
my $tpa2 = ReadingsVal("fhem_tp_garage",'state',0) - 5;;\
my $tpa3 = ReadingsVal("wh_tp_aussen",'state',0);;\
if ($tpa1 eq "on" && $tpa3 <= $tpa2) {\
fhem "set EIB_1000 auf ;; set EIB_1100 on"\
}\
}
attr garage_lueften_ein alignTime 00:00

define garage_lueften_aus at +*00:30 {\
my $tpaa1 = Value("taupunkt_auto");;\
my $tpaa2 = Value("EIB_1000");;\
my $tpaa3 = Value("EIB_1100");;\
if ($tpaa1 eq "on" && $tpaa2 eq "auf" && $tpaa3 eq "on") {\
fhem "set EIB_1000 zu ;; set EIB_1100 off"\
}\
}
attr garage_lueften_aus alignTime 00:00


DANKE

Gruß

Jörg
Titel: Antw:Fenster zur vollen Stunde öffnen und zur halben Stunde schließen
Beitrag von: igami am 07 Mai 2016, 21:27:26
Du könntest das auch einfacher mit einem DOIF lösen. In der Commandref findest du entsprechende Beispiele.

Grüße
igami
Titel: Antw:Fenster zur vollen Stunde öffnen und zur halben Stunde schließen
Beitrag von: Groej am 07 Mai 2016, 21:45:27
Hallo igami,

ok danke für den Tipp. Komm gerade nicht dahinter was Du genau meist. Meinst Du nach einschalten zur vollen Stunde für 30 Minuten einen wait auszuführen?

Gruß

Jörg
Titel: Antw:Fenster zur vollen Stunde öffnen und zur halben Stunde schließen
Beitrag von: igami am 08 Mai 2016, 08:19:37
Zitat
Zeitangaben nach Zeitraster ausgerichtet   back

Das Format lautet: [:MM] MM sind Minutenangaben zwischen 00 und 59.

Anwendungsbeispiel: Viertelstunden-Gong

define di_gong DOIF ([:00])
    ({system ("mplayer /opt/fhem/Sound/BigBen_00.mp3 -volume 90 −really−quiet &")})
DOELSEIF ([:15])
    ({system ("mplayer /opt/fhem/Sound/BigBen_15.mp3 -volume 90 −really−quiet &")})
DOELSEIF ([:30])
    ({system ("mplayer /opt/fhem/Sound/BigBen_30.mp3 -volume 90 −really−quiet &")})
DOELSEIF ([:45])
    ({system ("mplayer /opt/fhem/Sound/BigBen_45.mp3 -volume 90 −really−quiet &")})
Daraus ergibt sich dann

define garage_lueften DOIF
([:00] and <Taupunktabfrage>)(
  set <lüften>
)
DOELSEIF
([:30] and <Taupunktabfrage>)(
  set <nicht mehr lüften>
)


Grüße
igami
Titel: Antw:Fenster zur vollen Stunde öffnen und zur halben Stunde schließen
Beitrag von: RadioJames am 08 Mai 2016, 08:21:21
Hallo Groej!

Das erste at wird jede Stunde aufgerufen, das zweite jede halbe Stunde, also auch zur vollen Stunde.
Das bedeutet, es hängt von der Aufrufreihenfolge seitens FHEM ab, was passiert.

Nehmen wir einmal an, "garage_lueften_ein" passiert zuerst und die Bedingungen sind erfüllt, dann würden deine beiden Aktoren eingeschaltet.
Würde dann danach gleich "garage_lueften_aus" ausgeführt, würden deine beiden Aktoren auf sofort wieder ausgeschaltet.

Wenn du deinen Code in dieser Weise beibehalten willst, musst du noch einen Mechanismus implementieren, der dieses Verhalten beim Ausschalten berücksichtigt. Allerdings bleibt die Unsicherheit, welches at von FHEM zuerst abgearbeitet wird.
Daher ist der von igami vorgeschlagene Ansatz wohl der bessere. Informiere dich über die DOIF Funktionalität. Das ist sicherlich nicht ganz so einfach, wird sich aber auszahlen, da DOIF sehr mächtig ist. Dazu kann ich aber nicht viel sagen, da ich meine fhem.cfg eintarge minimal halte und lieber in Perl Module auslagere

Ich kann dir noch erzählen, welchen Weg ich einschlagen würde:
Ich würde das zweite at dynamisch programmieren und zwar erst in dem Codeteil von "garage_lueften_ein", bei dem beide Aktoren geschaltet werden. Dann natürlich nicht periodisch, sondern einmalig.

Grüße
James
Titel: Antw:Fenster zur vollen Stunde öffnen und zur halben Stunde schließen
Beitrag von: Groej am 08 Mai 2016, 08:26:42
Moin,

danke für eure Tipps. Ich werd das die Tage mal ausprobieren ob ich das hin bekomme. Heute wird erstmal das Rad bewegt bei dem Wetter :).

Schönen Sonntag

Jörg
Titel: Antw:Fenster zur vollen Stunde öffnen und zur halben Stunde schließen
Beitrag von: rudolfkoenig am 08 Mai 2016, 08:48:44
ZitatKann es sein das FHEM bei jeder vollen Stunde auch die halbe Stunde rechnet und nicht nur die Minuten 00:30 oder mach ich bei dem Programm was falsch?
Ich tippe auf einen Denkfehler beim zweiten at: der sollte mAn mit +*01:00 definiert sein, mit aligntime 00:30.
Titel: Antw:Fenster zur vollen Stunde öffnen und zur halben Stunde schließen
Beitrag von: Groej am 08 Mai 2016, 08:51:40
Moin Rudolf,

das probier ich mal schnell. Werd ja dann sehen heute Abend was passiert ist. Danke.

Gruß

Jörg
Titel: Antw:Fenster zur vollen Stunde öffnen und zur halben Stunde schließen
Beitrag von: RadioJames am 08 Mai 2016, 09:19:30
ZitatIch tippe auf einen Denkfehler beim zweiten at: der sollte mAn mit +*01:00 definiert sein, mit aligntime 00:30.
Interessant, wieder etwas gelernt, kannte dieses Attribut bislang nicht.

Allerdings denke ich, dass es auch für das erste at gesetzt werden muss und zwar auf die volle Stunde: aligntime 00:00.
Titel: Antw:Fenster zur vollen Stunde öffnen und zur halben Stunde schließen
Beitrag von: CoolTux am 08 Mai 2016, 10:12:21
Was es wohl ist, wenn ich korrekt geschaut habe.
Titel: Antw:Fenster zur vollen Stunde öffnen und zur halben Stunde schließen
Beitrag von: RadioJames am 08 Mai 2016, 14:36:00
Stimmt, hab ich übersehen.
Titel: Antw:Fenster zur vollen Stunde öffnen und zur halben Stunde schließen
Beitrag von: Groej am 08 Mai 2016, 20:35:45
Nabend,

ich hab Rudolfs Tipp als erstes ausprobiert weil es auch am einfachsten war. Bis jetzt hatte ich heute kein an- und sofortiges ausschalten der Aktoren.
Ich schließe das Thema erstmal und beobachte die nächsten Tage weiter.

Danke noch mal an alle.

Gruß

Jörg