Files
PiGarden/include/events.include.sh
2017-10-26 23:56:06 +02:00

72 lines
1.5 KiB
Bash

#
# Triggered an event and executge associated scripts
# $1 event
#
function trigger_event {
# check_rain_online_after
# check_rain_online_before
# check_rain_online_change
# check_rain_sensor_after
# check_rain_sensor_before
# check_rain_sensor_change
# ev_close_after
# ev_close_before
# ev_open_after
# ev_open_before
# init_after
# init_before
local EVENT="$1"
local CAUSE="$2"
local current_event_dir="$EVENT_DIR/$EVENT"
if [ -d "$current_event_dir" ]; then
local FILES="$current_event_dir/*"
for f in $FILES
do
if [ -x "$f" ]; then
case "$EVENT" in
"ev_open_before" | "ev_open_after")
ALIAS="$2"
FORCE="$3"
$f "$EVENT" "$ALIAS" "$FORCE" `date +%s` &> /dev/null
;;
"ev_close_before" | "ev_close_after")
ALIAS="$2"
$f "$EVENT" "$ALIAS" `date +%s` &> /dev/null
;;
"check_rain_sensor_before" | "check_rain_sensor_after" | "check_rain_sensor_change")
STATE="$2"
$f "$EVENT" "$STATE" `date +%s` &> /dev/null
;;
"check_rain_online_before" | "check_rain_online_after" | "check_rain_online_change")
STATE="$2"
$f "$EVENT" "$STATE" `date +%s` &> /dev/null
;;
*)
$f "$EVENT" "$CAUSE" `date +%s` &> /dev/null
;;
esac
local ec=$?
#echo "$EVENT ec=$ec" >> /tmp/piGarden.testevent
if [ $ec -ne 0 ]; then
log_write "Stop events chain for exit code $ec in $current_event_dir/$f"
return $ec
fi
fi
done
fi
}