会社からVPN使ってRX-7搭載Raspberry Pi zero 2 W(以下ラズパイ)へログインして、状態を確認していた所、GPSからデータが一切流れて来ていない。
alarm_monito.sh をKILLして、スクリプト弄ってたら、通信途絶した。
帰宅してWiFi経由でログインしても、別に異常は無いし、何が原因かよく分からん。
とりあえず、GPSがハングアップした時の為に、timeout を入れるのと、応答を良くする為に、gpspipe のパラメータを弄った。
1 2 3 |
#!/bin/sh timeout 1 /usr/bin/gpspipe -w -n 4| /bin/grep TPV | /bin/sed -r 's/.*"lat":([^"]*),"lon":([^"]*),.*/\1,\2/' | /usr/bin/head -1 |
gpspipe は -n 4 指定で、TPVの行が出て、終了するので、多分、これが一番速い。
GPSがハングアップしてても、1秒でタイムアウトなので、警戒監視スクリプトでデッドロックする事もあるまい。
あと、motion が二重起動してる事があって、何でだろうと考えたが、motion -n &でバックグラウンド起動してるので、process IDを出力する前に、ループで二週目の呼び出しで二重起動になってるんだろう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
motion_start(){ if [ ! -e ${MOTION_PID} ]; then touch ${MOTION_PID} motion -n & echo $! >${MOTION_PID} fi if [ ! -e ${GPS_BASE} ]; then GPS_NOW=`gpslatlon.sh` if [ "${GPS_NOW}" != "" ]; then echo "${GPS_NOW}" > ${GPS_BASE} fi fi } |
という事で、process IDが出力する前に、touch でファイルを作成しておき、二重呼び出しにならないようにした。
それと、GPSハングアップに備えて、GPSのデータ参照してる所は、空白データの時に処理しないFail safeを入れた。
まあ、GPSドングルが壊れてる可能性もあるので、TOPGNSSの11.11セールで売ってたものをポチっておいた。
情報源: Topgnss usb gps glonass受信機アンテナモジュールusb出力プロトコル、互換交換BU353S4|GPS レシーバー & アンテナ| – AliExpress
前に買った奴が結構いいので、再び購入したが、前が1,500円位だったのに、今はセールで2,200円になっとるから、円安は海外通販には痛いのう。