#
# fhem.pl configfile
# 
# The challenge: We have 2 rollades (which are connected via the FS20MS).
# Button 3 on the FS20S20 should activate both rollades. There are three
# solutions:
# 1. Builtin commands
# 2. Perl expression
# 3. Shell script (realized via external script at the end of this file)


# Common part
attr global logfile /tmp/fhem-%Y-%m.log
attr global statefile /tmp/fhem.save    # where to save the state of the devices
attr global verbose 3                   # "normal" verbosity
attr global port 7072                   # our TCP/IP port (localhost only)
attr global modpath .                   # where our FHEM directory is

define FHZ FHZ /dev/tts/USB0 # the serial port of an FHZ 1000 PC

define roll1 FS20 7777 02   # type FS20, transmitter code 7777, button 3
define roll2 FS20 7777 03   # type FS20, transmitter code 7777, button 4
define btn3  FS20 8765 03   # define a button from the FS20S20
setstate roll1 off          # initial state is closed

# Note: Only one of the methods should be used

# Method 1a: builtin commands. Note the double ;
define n_1a notify btn3 set roll1 %;; set roll2 %

# Method 1b: shorter:
define n_1b notify btn3 set roll1,roll2 %

# Method 2a: the same in perl. Everything between {} is evaluated as perl code
define n_2a notify btn3 { fhem "set roll1,roll2 %" }

# Method 2b: perl. open the rollades only to a certain amount if they are
# closed. Else do the required command.
define n_2b notify btn3 {\
  if("%" eq "on" && $value{roll1} eq "off") {\
    fhem "set roll1 on-for-timer 10";;\
    fhem "set roll2 on-for-timer 16";;\
  } else { \
    fhem "set roll1,roll2 %"\
  } \
}

# Method 3: shell. Everything between "" is evaluated as a shell command.  The
# script follows after "quit". Dont forget to chmod u+x it.
define n_3 notify btn3 "/usr/local/bin/roll.sh %"

quit                        # Ignore the rest of this file

#!/bin/sh
#
# roll1 needs 10 sec to open to a certain level, roll2 16 sec. The following
# shell script opens both of them when called woth "on", and closes both of
# them else. We rely on the fact, that the FS20MS switches off after ca 60s.
#
# Note that for greater time values the FS20 timer gets inaccurate, you
# can use something like 
#    $fhem 7072 "set roll1 on; at +00:00:21 set roll1 on"
# instead.
#

fhem=/usr/bin/fhem.pl

if test $1 = "on"; then
  $fhem 7072 "set roll1 on-for-timer 10"
  $fhem 7072 "set roll2 on-for-timer 16"
else
  $fhem 7072 "set roll1,roll2 off"
fi