zeitschaltung zum xten mal - verständnisfrage (gelöst)

Begonnen von RomanP, 18 Mai 2015, 07:17:28

Vorheriges Thema - Nächstes Thema

RomanP

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



rudolfkoenig

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.

duke-f

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.
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

Muschelpuster

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

fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

RomanP

#4
danke rudolf!

für mich absolut nachvollziehbar und wieder was gelernt!

duke-f

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.
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF