FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: RomanP am 18 Mai 2015, 07:17:28

Titel: zeitschaltung zum xten mal - verständnisfrage (gelöst)
Beitrag von: RomanP am 18 Mai 2015, 07:17:28
guten morgen zusammen,

gleich vorweg, ich hab mir hier schon einen puckel gesucht zum thema "Zeitschaltung", "Zeitschaltuhr" und "Zeitsteuerung" viele Beispiele, viele Links aber für meine anforderung UND mein  wissen konnte ich keine lösung finden.

für die trockenkammer in der firma würde ich gerne:

von 19:00 bis 07:00 Uhr die Absaugung alle 20 Minuten für 10 Minuten einschalten, von 07:00 bis 19:00 jedoch nur alle 60 Minuten für 10 Minuten

Tag:
Zitatdefine tAbsaugung_Tag at +*01:00:00 DOIF ($hour >= 07 && $hour < 19) set FS20_ST2_Absaugung on-for-timer 600
Nacht:
Zitatdefine tAbsaugung_Nacht at +*00:20:00 DOIF ($hour <= 07 && $hour > 19) set FS20_ST2_Umluft on-for-timer 600

leider schaltet die nachtsteuerung auch am tag und umgekehrt - hab ich hier einen logischen fehler drinnen?

roman


Titel: Antw:zeitschaltung zum xten mal - verständnisfrage
Beitrag von: rudolfkoenig am 18 Mai 2015, 07:50:06
Vermutlich kann das DOIF auch selbst irgendwie, ohne gehts es aber auch:
define tAbsaugung_Tag at +*01:00:00 set FS20_ST2_Absaugung on-for-timer 600
attr tAbsaugung_Tag disabledForIntervals 00:00-06:59 19:00-23:59
oder mit Perl:
define tAbsaugung_Tag at +*01:00:00 { if($hour >= 7 && $hour < 19) { fhem("set FS20_ST2_Absaugung on-for-timer 600" } }


Und ich wuerde noch ein "attr tAbsaugung_Tag alignTime 00:00" spendieren.
Titel: Antw:zeitschaltung zum xten mal - verständnisfrage
Beitrag von: duke-f am 18 Mai 2015, 08:07:37
Ich habe gerade die Doku zu DOIF überflogen, hab' aber diese Form der Zeitangabe nicht gesehen. Ich sehe da sinngemäß nur

define name DOIF ([startzeit-endzeit])(.....

Vielleicht hab' ich auch was übersehen. Dann würde mich die Bedingung wundern:
$hour <= 07 && $hour > 19

Es kann eigentlich nicht gleichzeitig die Stunde größer 19 und kleiner 7 sein.
Titel: Antw:zeitschaltung zum xten mal - verständnisfrage
Beitrag von: Muschelpuster am 18 Mai 2015, 08:29:42
Zitat von: duke-f am 18 Mai 2015, 08:07:37Vielleicht hab' ich auch was übersehen. Dann würde mich die Bedingung wundern:
$hour <= 07 && $hour > 19

Es kann eigentlich nicht gleichzeitig die Stunde größer 19 und kleiner 7 sein.
Das ist wohl wahr, ein 'Oder' wäre hier angebrachter - das definiert ja auch exakt den Zeitrahmen.
Rudolf's Lösung ist aber wohl die Eleganteste. Ich habe ähnliches mit DOIF versucht, wobei ich noch eine weitere Bedingung eingebaut habe. Jedoch habe ich mit DOIF eine AT-Definition mit begrenzter Anzahl an Ausführungen erzeugt (welches sich am Ende ja selber wieder löscht): http://forum.fhem.de/index.php/topic,37253.msg295237.html
Ich werde mal sehen, ob ich Rudolf's Ansatz auch bei mir verwursten kann.

parasitäre Grüße
Niels

Titel: Antw:zeitschaltung zum xten mal - verständnisfrage
Beitrag von: RomanP am 18 Mai 2015, 08:48:04
danke rudolf!

für mich absolut nachvollziehbar und wieder was gelernt!
Titel: Antw:zeitschaltung zum xten mal - verständnisfrage
Beitrag von: duke-f am 18 Mai 2015, 09:07:35
Zitat von: Muschelpuster am 18 Mai 2015, 08:29:42
Ich werde mal sehen, ob ich Rudolf's Ansatz auch bei mir verwursten kann.
Niels
Dem schließe ich mich an - scheint mir für einige meiner Fälle deutlich vereinfachend zu sein.
Titel: Antw:zeitschaltung zum xten mal - verständnisfrage
Beitrag von: Damian am 18 Mai 2015, 09:21:35
Zitat von: Muschelpuster am 18 Mai 2015, 08:29:42
Das ist wohl wahr, ein 'Oder' wäre hier angebrachter - das definiert ja auch exakt den Zeitrahmen.
Rudolf's Lösung ist aber wohl die Eleganteste. Ich habe ähnliches mit DOIF versucht, wobei ich noch eine weitere Bedingung eingebaut habe. Jedoch habe ich mit DOIF eine AT-Definition mit begrenzter Anzahl an Ausführungen erzeugt (welches sich am Ende ja selber wieder löscht): http://forum.fhem.de/index.php/topic,37253.msg295237.html
Ich werde mal sehen, ob ich Rudolf's Ansatz auch bei mir verwursten kann.

parasitäre Grüße
Niels

nur mal zur Info:

define tAbsaugung_Tag at +*01:00:00 set FS20_ST2_Absaugung on-for-timer 600
attr tAbsaugung_Tag disabledForIntervals 00:00-06:59 19:00-23:59


ist aber nichts anderes als:

define tAbsaugung_Tag DOIF ([+01:00] and [?07:00-19:00]) (set FS20_ST2_Absaugung on-for-timer 600)
attr tAbsaugung_Tag do always


Gruß

Damian