FHEM Forum

FHEM => fhem-users => Thema gestartet von: Guest am 28 August 2011, 18:26:07

Titel: Funktion einer Zeitschaltuhr
Beitrag von: Guest am 28 August 2011, 18:26:07
Originally posted by: <email address deleted>

Hallo,
ich möchte gerne eine Umwälzpumpe, die an einem FS20 Schalter hängt,
zu bestimmten Zeiten regelmässig für 5 Minuten einschalten. Und das
mit unterschiedlichen Zeiträumen je nach Wochentag. Die 5 Minuten
sollten mit einem on-for-timer kein Problem sein.

Aber mir fehlt noch ein Ansatz, wie ich den Rest mit dem "at"
innerhalb von fhem Befehl gestalte. Mit cron im Unix könnte ich ja
einen Zeitraum angeben und dann jeweils z.B. zu den Minuten 0,15,30
und 45 den Befehl starten. So etwa in der crontab:

# Mo-Fr
0,15,30,45  7-8  *  1-5  fhem_pumpe.sh
# Sa + So
0,15,30,45  7-16  *  6-7  fhem_pumpe.sh
# jeden Tag
0,15,30,45  17-23  *  *  fhem_pumpe.sh

Also Wochentags von 7:00-8:45 und 17:00-23:45 und am Wochenende von
7:00-23:45 durchgehend jeweils alle 15 Minuten. Das aufgerufene Shell-
Script würden dann den on-for-timer enthalten.

Ich würde das aber gerne innerhalb der fhem.cfg mit fhem-Befehlen
lösen. Hat da jemand eine Idee?

Gruß

Tom


--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Funktion einer Zeitschaltuhr
Beitrag von: Guest am 28 August 2011, 20:19:44
Originally posted by: <email address deleted>

Hi,
hier mal ein Lösungsansatz:
Siehe commandref http://fhem.de/commandref.html#at unter '# relative
ones' letztes Beispiel:
define a7 at +*{3}00:00:02 set lamp on-for-timer 1  # Blink 3 times

Die Laufzeit des jeweiligen Zeitraums kannst Du über die Anzahl der
Wiederholungen angeben, also zB für 2 Stunden macht das 8
Wiederholungen alle 15 Minuten, sprich
define a7 at +*{8}00:15:00 set Umwaelzpumpe on-for-timer 5

Analog für 9 Stunden -> 36 Wiederholungen bei 7-16 Uhr,
           6 Stunden -> 24 Wiederholungen bei 17-23 Uhr.

Und diese Wiederholungen startest Du zur gewünschten Zeit.

Die Abfrage des Wochenendes kannst Du über die Variable $we
(Wochenende) erreichen. Wenn Du dann noch holiday2we nutzt, kannst Du
damit auch Feiertage und Ferien berücksichtigen.

Wenn Du das wiederum verbindest mit http://fhemwiki.de/index.php/Wakeuplight
käme ungefähr sowas raus (nicht getestet!)


> # jeden Tag
> 0,15,30,45  17-23  *  *  fhem_pumpe.sh

define PumpeAbendsStart at *17:00:00 {\
   { fhem("define PumpeAbends at +*{24}00:15:00 set Umwaelzpumpe on-
for-timer 5") }\
}



> # Mo-Fr
> 0,15,30,45  7-8  *  1-5  fhem_pumpe.sh
> # Sa + So
> 0,15,30,45  7-16  *  6-7  fhem_pumpe.sh

define PumpeMorgensStart at *07:00:00 {\
   if (!$we) {\
      { fhem("define PumpeMorgens at +*{8}00:15:00 set Umwaelzpumpe on-
for-timer 5") }\
   }\
   else {\
      { fhem("define PumpeMorgens at +*{36}00:15:00 set Umwaelzpumpe
on-for-timer 5") }\
   }\
}

Vielleicht hilft Dir das, den geeigneten Weg zu finden.
Grüßle, Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Funktion einer Zeitschaltuhr
Beitrag von: rudolfkoenig am 28 August 2011, 20:34:21
                                                   

> Ich würde das aber gerne innerhalb der fhem.cfg mit fhem-Befehlen
> lösen. Hat da jemand eine Idee?

Wenn das so schoen mit cron zu loesen ist, wieso das Ganze nochmal in fhem?

Wenn es unbedingt sein muss:
 
> 0,15,30,45  7-8  *  1-5  fhem_pumpe.sh

define pumpe_wd78 at +*00:15 { system("fhem_pumpe.sh") if(!$we && $hour>=7 && $hour<9) }

usw.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Funktion einer Zeitschaltuhr
Beitrag von: Guest am 29 August 2011, 18:51:47
Originally posted by: <email address deleted>

Hallo Uli und Rudolf,

vielen Dank für eure Unterstützung. Ich habe aus beiden Beiträgen
einiges über die notwendige Denkweise gelernt.

Verwendet habe ich dann die Version von Rudolf, funktioniert prima.
Regelmässig ein at zu starten und dann erst zu schauen, ob etwas zu
tun ist lag mir erst einmal fern, ist aber eine gute Idee. Ich habe
dann noch das Shell-Kommando durch ein fhem-Kommando ausgetauscht,
jetzt ist alles schön in der fhem.cfg.

> Wenn das so schoen mit cron zu loesen ist, wieso das Ganze nochmal in fhem?

Ich habe gerne die ganze Konfiguration an einem Ort. Wenn ich jetzt
einen Teil in fhem definiere und anderes im cron, dann verliere ich
irgendwann den Überblick und wundere mich später, warum sich denn nun
zu einem bestimmten Zeit irgendetwas einschaltet. ;-)

Danke noch mal und Gruß

Tom

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Funktion einer Zeitschaltuhr
Beitrag von: Guest am 30 August 2011, 09:36:01
Originally posted by: <email address deleted>

Hi Tom,
ja fein. Postest Du hier Deine Lösung, damit zukünftige fhem-
Einsteiger nachlesen können?
Gruß, Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Funktion einer Zeitschaltuhr
Beitrag von: Guest am 01 September 2011, 08:49:28
Originally posted by: <email address deleted>

Hi Rudi,
schick - und dann zB ein case in den perl-Code, um die
unterschiedlichen Fälle zu differenzieren.
Macht das systemlastmäßig einen Unterschied: mehrere at, oder ein at
das häufiger läuft?
Gruß, Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Re: Funktion einer Zeitschaltuhr
Beitrag von: rudolfkoenig am 01 September 2011, 09:28:40
                                                   

> schick - und dann zB ein case in den perl-Code, um die
> unterschiedlichen Fälle zu differenzieren.

Naja, auf Deine Loesung bin ich wiederum nicht gekommen, falls jemand auf
genaue Uhrzeiten besteht, dann ist meine Loesung unbrauchbar.


> Macht das systemlastmäßig einen Unterschied: mehrere at, oder ein at
> das häufiger läuft?

fhem berechnet das naechste anstehende Event, und legt sich solange schlafen.
Wenn die Zeit gekommen ist, dann werden alle "at" Definitionen geprueft, und
falls noetig das dazugehoerige Programm ausgefuehrt.

Nach eine kurze Messung schaetze ich, dass auf dem FB ein Timeout von 10ms zu
einem Systemlast im einstelligen Prozentbereich fuehren wuerde. Daher ist die
Differenz zw. einem Timeout von 15Min und 2Stunden theoretischer Natur.

Btw.: fhem wird (unter Linux/OSX) sofort geweckt, falls das USB oder Netzwerk
Geraet was zu sagen hat. Unter Windows pollt fhem mit 0.1 Sekunden.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Funktion einer Zeitschaltuhr
Beitrag von: Guest am 02 September 2011, 16:13:02
Originally posted by: <email address deleted>

Hi,
Wiki erstellt:
http://fhemwiki.de/index.php/Zeitschaltuhr
Gruß, Uli

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Funktion einer Zeitschaltuhr
Beitrag von: Guest am 03 September 2011, 15:26:55
Originally posted by: <email address deleted>

On 30 Aug., 09:36, UliM wrote:
> Hi Tom,
> ja fein. Postest Du hier Deine Lösung, damit zukünftige fhem-

Ja gerne. Leider war ich ein paar Tage unterwegs und Rudolf ist mir
mit seinem Wiki-Eintrag zuvor gekommen. Aber der Vollständigkeit
halber: So sieht das aus (mit etwas anderen Zeiten als von mir oben
genannt, aber das ist wohl selbsterklärend)


define pumpe_wt_morgens at +*00:15:00 { fhem("set hw_Umwaelzpumpe on-
for-timer 300") if(!$we && $hour>=5 && $hour<8) }

define pumpe_we_morgens at +*00:15:01 { fhem("set hw_Umwaelzpumpe on-
for-timer 300") if($we && $hour>=8 && $hour<10) }

define pumpe_abends at +*00:15:02 { fhem("set hw_Umwaelzpumpe on-for-
timer 300") if($hour>=17 && $hour<23) }


Ich habe die Frequenz noch etwas unterschiedlich gemacht, damit die 3
at-Befehle auseinanderdriften und nicht immer zur selben Sekunde
zünden. Ich dachte, das wäre ganz hilfreich, um die Last auf die FB
ein wenig zu verteilen und das System immer reaktionsfreudig zu
halten. Das sollte man aber natürlich nur machen, wenn einem die
genauen Ausführungszeiten egal sind.

Gruß

Tom

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com