it:camswitch
Különbségek
A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
| Következő változat | Előző változat | ||
| it:camswitch [2017/03/22 13:12] – létrehozva rblst | it:camswitch [2017/03/22 23:06] (aktuális) – rblst | ||
|---|---|---|---|
| Sor 1: | Sor 1: | ||
| + | <code bash> | ||
| + | # | ||
| + | |||
| + | LOG_FILE=/ | ||
| + | AWAY_THRESHOLD=3 | ||
| + | CHECK_INTERVAL=50 | ||
| + | CHECK_DURATION=7 | ||
| + | CAMERA_IP=192.168.100.7 | ||
| + | PROGRAM_NAME=$(basename $0) | ||
| + | function log { | ||
| + | time=$(date " | ||
| + | echo " | ||
| + | } | ||
| + | |||
| + | function check_presence { | ||
| + | chipolo_id=C18002ABD9578 | ||
| + | check_result=$(timeout --preserve-status --signal=SIGINT --foreground ${CHECK_DURATION}s | ||
| + | if [ $? -ne 0 ]; then | ||
| + | log " | ||
| + | systemctl restart hciuart.service | ||
| + | sleep $CHECK_INTERVAL | ||
| + | continue | ||
| + | fi | ||
| + | if [ $(echo " | ||
| + | | ||
| + | else | ||
| + | | ||
| + | fi | ||
| + | |||
| + | log " | ||
| + | #log "away count: $away_count" | ||
| + | #log "last status: $last_presence_status" | ||
| + | } | ||
| + | |||
| + | function switch_camera_off { | ||
| + | log " | ||
| + | echo -en ' | ||
| + | sleep 3 | ||
| + | echo -en ' | ||
| + | } | ||
| + | |||
| + | function switch_camera_on { | ||
| + | log " | ||
| + | echo -en ' | ||
| + | sleep 3 | ||
| + | echo -en ' | ||
| + | } | ||
| + | |||
| + | function check_camera { | ||
| + | ping -c3 -q $CAMERA_IP | ||
| + | if [ $? -eq 0 ]; then | ||
| + | camera_status=" | ||
| + | else | ||
| + | camera_status=" | ||
| + | fi | ||
| + | log " | ||
| + | } | ||
| + | |||
| + | away_count=0 | ||
| + | last_presence_status=present | ||
| + | |||
| + | |||
| + | ######################### | ||
| + | |||
| + | log " | ||
| + | |||
| + | trap 'log " | ||
| + | while true; do | ||
| + | |||
| + | check_presence | ||
| + | | ||
| + | if [ " | ||
| + | if [ $away_count -ne $AWAY_THRESHOLD ]; then | ||
| + | away_count=$((away_count+1)) | ||
| + | else | ||
| + | check_camera | ||
| + | if [ " | ||
| + | switch_camera_on | ||
| + | fi | ||
| + | fi | ||
| + | fi | ||
| + | |||
| + | if [ " | ||
| + | #if [ $away_count -ge $AWAY_THRESHOLD ]; then | ||
| + | check_camera | ||
| + | if [ " | ||
| + | switch_camera_off | ||
| + | sleep 3 | ||
| + | check_camera | ||
| + | fi | ||
| + | if [ " | ||
| + | away_count=0 | ||
| + | fi | ||
| + | #fi | ||
| + | fi | ||
| + | |||
| + | sleep $CHECK_INTERVAL | ||
| + | last_presence_status=$presence_status | ||
| + | done | ||
| + | </ | ||