自動おかえりシステムの試験運用中に2件の不具合を検出した。
以下に修正案を示す。
不具合1
概要
自宅を出て10分ほどで帰宅したのに、おかえりと言われた。
期待する動作
部屋から出て15分経っていなければ、おかえりと言わない。
実際の動作
部屋から出て15分経っていないのにおかえりと言う
再現性
1回のみ
原因
アルゴリズムの誤り
不具合2
概要
帰宅したのに「おかえり」と言わない
期待する動作
帰宅して1分以内に「おかえり」と言わない
実際の動作
帰宅して2分経っても「おかえり」と言わない
再現性
2/5回
原因
「hcitool lescan」コマンド実行時に「Set scan parameters failed: Input/output error」が発生している。
対応
とりあえず、エラーが出たらリセットしてみる。
#ついでにエラーログを残す。
修正版スクリプト
#!/bin/sh DEVICE_MACADDR="XX:XX:XX:XX:XX:XX" WELCOME_BACK="おかえり" WAIT_TIME=10 DETECT_THRESH=5 NO_HOME_THRESH=15 JTALK_SCRIPT=/home/hoge/jtalk.sh DETECT_COUNT=\ `sudo timeout --signal=SIGINT ${WAIT_TIME} \ hcitool lescan | grep -c ${DEVICE_MACADDR}` if [ $? -ne 0 ]; then echo "reset bluetooth : " >> error_date.log date >> error_date.log sudo hciconfig hci0 down && sudo hciconfig hci0 up fi if [ ${DETECT_COUNT} -ge ${DETECT_THRESH} ]; then if [ `cat not_detect` -ge ${NO_HOME_THRESH} ]; then echo ${WELCOME_BACK} | sh ${JTALK_SCRIPT} fi echo "0" > not_detect else expr `cat not_detect` + 1 > not_detect fi