72 lines
1.5 KiB
Bash
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
|
|
|
|
}
|
|
|
|
|