view contrib/dashboardctl @ 36:1e084c23d101

Add --start/--stop commands
author Gernot Schulz <gernot@intevation.de>
date Mon, 19 Oct 2015 13:34:29 +0200
parents 295e3253bb49
children 58ca5b1d33a5
line wrap: on
line source
#!/usr/bin/env sh

export DISPLAY=":0.0"

OLDDB=/home/pi/incoming_dbs/tech_intern.db
NEWDB=/home/pi/incoming_dbs/tech_intern.db.new

BOTTLEDASH_PID="$HOME/bottledash.pid"
BOTTLEDASH_LOG="$HOME/bottledash.log"
CHROMIUM_PID="$HOME/chromium.pid"
CHROMIUM_LOG="$HOME/chromium.log"

usage () {
cat << EOF
Usage: $0 [COMMAND]

Commands:
  --start            Start Bottledash and the dashboard/browser
  --stop             Stop Bottledash and the dashboard/browser
  --reload           Restart Bottledash and reload the dashboard/browser
  --smart-reload     If a new DB is available, restart Bottledash and reload
                     the dashboard/browser
  --restart-bd       Restart Bottledash
  --reload-browser   Reload dashboard/browser
  --check-db         Check if a new DB is available
  -h, --help         This help
EOF
}

start_bottledash () {
        # taken from start-bottledash-hohup
        nohup python3 /home/pi/bottledash/dash.py 2>&1 > $BOTTLEDASH_LOG &
        echo $! > $BOTTLEDASH_PID
	sleep 10
}

stop_bottledash () {
        kill $(cat $BOTTLEDASH_PID)
}

start_chromium () {
        # taken from show-dashboard
        rm -R $HOME/.cache/chromium/Default/Cache/
	DISPLAY=:0.0 nohup chromium --new --noerrdialogs --kiosk \
		http://localhost:8080 2>&1 > $CHROMIUM_LOG &
        echo $! > $CHROMIUM_PID
}


stop_chromium () {
        kill $(cat $CHROMIUM_PID)
}

xdo_reload_chromium () {
	# Start Chromium if necessary
	if [ -f "$BOTTLEDASH_PID" ] && [ -d /proc/$(cat "$CHROMIUM_PID") ]; then
		# Send F5 to Chromium
		WID=$(xdotool search --onlyvisible --class chromium | head -1)
		xdotool windowactivate ${WID}
		xdotool key F5
	else
		start_chromium
	fi	
}

check_new_db () {
        if [ ! -f "$NEWDB"  ]; then
                echo 0 ; return
        fi
        OLDSIZE=$(md5sum $OLDDB | awk '{print $1}')
        NEWSIZE=$(md5sum $NEWDB | awk '{print $1}')
        if [ "$OLDSIZE" != "$NEWSIZE" ]; then
                echo 1
        else
                echo 0
        fi
}

update_db () {
        if [ $(check_new_db) -eq 1 ]; then
                mv "$NEWDB" "$OLDDB"
        fi
}

case $1 in
	'--start')
		start_bottledash
		start_chromium
		;;
	'--stop')
		stop_bottledash
		stop_chromium
		;;
        '--restart-bd')
                stop_bottledash
                start_bottledash
                ;;
        '--reload-browser')
                xdo_reload_chromium
                ;;
        '--reload')
                stop_bottledash
                start_bottledash
                xdo_reload_chromium
                ;;
        '--check-db')
                check_new_db
                ;;
        '--smart-reload')
                if [ $(check_new_db) -eq 1 ]; then
                        update_db
                        stop_bottledash
                        start_bottledash
                        sleep 10
                        xdo_reload_chromium
                fi
                ;;
        '-h'|'--help')
                usage
                exit 0
                ;;
        *)
                echo "ERROR: unknown command: $1" >&2
                usage
                exit 2
                ;;
esac

# vim: set ft=sh :
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)