mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-03 16:56:54 +00:00
Initial Version
git-svn-id: https://svn.fhem.de/fhem/trunk@74 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
f47b06bd3d
commit
7d92e2c50e
112
fhem/examples/07_sunset_windowed
Executable file
112
fhem/examples/07_sunset_windowed
Executable file
@ -0,0 +1,112 @@
|
||||
###########################################################################
|
||||
# Beispiel: Steuerung nach Sonnenzyklus mit Zeitfenster
|
||||
#
|
||||
# Aufgabenstellung: Ein Rolladen soll eine Stunde nach Sonnenuntergang
|
||||
# schliessen, aber fruehestens um 20:00 und spaetestens um 22:00
|
||||
#
|
||||
# Loesungsansatz: Es werden zwei at-Jobs zu festen Zeiten eingeplant, um
|
||||
# 20:00 und um 22:00, zusaetzlich existiert ein at-Job, der mit der
|
||||
# variablen Zeit "sunset_rel(3600)" eingeplant ist. Die einzelnen Jobs
|
||||
# verwenden ein benutzerdefiniertes Attribut "freigabe", um untereinander
|
||||
# Informationen auszutauschen.
|
||||
#
|
||||
# Funktionsweise: Der erste ablaufende Job prueft den Zustand des Attributs
|
||||
# "freigabe". Wenn es existiert, wird der Rolladen geschlossen und das
|
||||
# Attribut geloescht. Wenn nicht, wird das Attribut gesetzt, der Rolladen
|
||||
# aber nicht geschlossen. Der naechste Job findet dann ein gesetztes Attribut
|
||||
# vor, schliesst den Rolladen und loescht das Atribut. Der 22:00-Job, der
|
||||
# das Ende des Zeitfensters darstellt, loescht das Attribut und schliesst
|
||||
# den Rolladen, falls noch nicht geschehen.
|
||||
#
|
||||
# Sonnenuntergang um 18:30:
|
||||
# um 19:30 laeuft der variable Job und setzt das Attribut
|
||||
# um 20:00 laeuft der fixe Job 1 und schliesst den Rolladen
|
||||
# um 22:00 laeuft der fixe Job 2 (und veraendert nichts)
|
||||
# Sonnenuntergang um 20:30:
|
||||
# um 20:00 laeuft der fixe Job 1 und setzt das Attribut
|
||||
# um 21:30 laeuft der variable Job und schliesst den Rolladen
|
||||
# um 22:00 laeuft der fixe Job 2 (und veraendert nichts)
|
||||
# Sonnenuntergang um 22:30:
|
||||
# um 20:00 laeuft der fixe Job 1 und setzt das Attribut
|
||||
# um 22:00 laeuft der fixe Job 2 und schliesst den Rolladen
|
||||
# um 23:30 laeuft der variable Job (und veraendert nichts)
|
||||
###########################################################################
|
||||
# example: sunset-dependent action within fixed-time boundaries
|
||||
#
|
||||
# task: A shutter is to be closed one hour past sunset, but not before
|
||||
# 20:00 and at 22:00 at the latest.
|
||||
#
|
||||
# solution: Two fixed-time jobs at 20:00 and 22:00, respectively, mark the
|
||||
# desired "window of opportunity". A time-variable job is scheduled for one
|
||||
# hour past sunset ("sunset_rel(3600)"). The jobs use a user defined attribute
|
||||
# named "freigabe" ("permission" in german) to exchange information.
|
||||
|
||||
# How it works: The first job checks the status of the attribute. If it's set,
|
||||
# the shutter is closed and the attribute is deleted. If the attribute doesn't
|
||||
# exist, it is set but the shutter will not be closed. The next job running
|
||||
# then finds the attribute set and therefore closes the shutter and deletes
|
||||
# the attribute. The job running at 22:00 unconditionally deletes the attribute
|
||||
# and closes the shutter, if it's still open.
|
||||
#
|
||||
# sunset at 18:30:
|
||||
# at 19:30 the time-variable job runs and sets the attribute
|
||||
# at 20:00 fixed job 1 runs and closes the shutter
|
||||
# at 22:00 fixed job 2 runs (and changes nothing)
|
||||
# sunset at 20:30:
|
||||
# at 20:00 fixed job 1 runs and sets the attribute
|
||||
# at 21:30 the time-variable job runs and closes the shutter
|
||||
# at 22:00 fixed job 2 runs (and changes nothing)
|
||||
# sunset at 22:30:
|
||||
# at 20:00 fixed job 1 runs and sets the attribute
|
||||
# at 22:00 fixed job 2 runs and closes the shutter
|
||||
# at 23:30 the time-variable job runs (and changes nothing)
|
||||
###########################################################################
|
||||
|
||||
# Globale Einstellungen
|
||||
# global settings
|
||||
|
||||
attr global logfile /var/log/fhem/fhem.log
|
||||
attr global statefile /var/cache/fhem/fhem.save
|
||||
attr global pidfilename /var/run/fhem.pid
|
||||
attr global verbose 3
|
||||
attr global port 7072
|
||||
attr global modpath /usr/local/lib
|
||||
|
||||
# Die Definition des Attributs "freigabe"
|
||||
# definition of attribute "freigabe"
|
||||
|
||||
attr global userattr freigabe
|
||||
|
||||
define FHZ FHZ /dev/ttyUSB0
|
||||
|
||||
{ sunrise_coord("10.000", "53.550", "Europe/Berlin") }
|
||||
|
||||
# devices
|
||||
|
||||
define roll_eg_wz1 FS20 fb02 0c fg f2 lm 8f
|
||||
|
||||
##########################################################################
|
||||
# Timing-Funktionen
|
||||
# timed jobs
|
||||
##########################################################################
|
||||
|
||||
define roll_wz1_off1 at *20:00:00 { if( $value{roll_eg_wz1} ne "off" ) { \
|
||||
if( $attr{roll_eg_wz1}{freigabe} ) { \
|
||||
fhem("set roll_eg_wz1 off");; \
|
||||
fhem("delattr roll_eg_wz1 freigabe") \
|
||||
} else { \
|
||||
fhem("attr roll_eg_wz1 freigabe") \
|
||||
} \
|
||||
} }
|
||||
|
||||
define roll_wz1_off2 at +*{sunset_rel(+3600)} { if( $value{roll_eg_wz1} ne "off" ) { \
|
||||
if( $attr{roll_eg_wz1}{freigabe} ) { \
|
||||
fhem("set roll_eg_wz1 off");; \
|
||||
fhem("delattr roll_eg_wz1 freigabe") \
|
||||
} else { \
|
||||
fhem("attr roll_eg_wz1 freigabe") \
|
||||
} \
|
||||
} }
|
||||
|
||||
define roll_wz1_off3 at *22:00:00 { fhem("set roll_eg_wz1 off") if($value{roll_eg_wz1} ne "off");; \
|
||||
fhem("delattr roll_eg_wz1 freigabe") }
|
Loading…
x
Reference in New Issue
Block a user