Raspberry Pi Advent Calendar 2020の24日目です。クリスマスですね。特に関係ない話題で行きます。
秋に買ったGPSモジュールでたまに遊んでいましたが、このカレンダーではまだ扱っていなかったので(ああでも1日目にちょっと書いてたか)、今日明日はこの話題でフィニッシュになるかしらん。
ちょっと作り込む
人力で読み取るのは面倒なので、11月末くらいにはPythonスクリプトにWebサーバーを仕込んでHTMLにGoogle MapsのリンクやLCDに出していた情報も出すようにしていました。
チャリ散歩で使おうとするとこんな感じになり、わりと不審者!
OSMを埋め込む
ファイル保存周りを書くのが面倒で脱線が続き、OSMで現在位置を表示したり、画面表示中に取得した値を10秒ごとに点で打つなどの昨日をつけて遊んでました。ただし、記録していないのでリロードすると点は消えます。これも11月末くらいの話。
ファイル保存を作る
ここからが今日の話。やはりファイル保存できないと色々進まないので、作っていきます。
ファイル保存の開始と終了をWebサーバーのAPIとして実装して、GETで特定のURLが叩かれたら開始・終了できるようにしました。WebUIには開始と終了のボタンを用意して、APIをたたけるようにします。
WebUIでは毎秒GPSの座標を取得するようにしていますが、ここに現在記録中のファイル名を含めることにして、ファイル名があれば記録中、0が入ってたら記録していない、という判定ができるようにしました。Pythonスクリプト側でも記録中かどうかは同じような判定ができます。便利
Python側のファイル保存は、APIが呼ばれた時点でCSVファイル名前ぎめ(日付と時刻)とヘッダーを書き込みをして、それ以降は記録用スレッドが10秒ごとにファイルに追記していくようにしました。
で、説明だけじゃわからんと思うので今日までのスクリプトを一旦ぶんなげました。
実際に記録してみる
今日はクリスマスだというのに渋谷に出社する用事があったので、渋谷でテスト。と思ったらテザリングの調子が非常に悪く、Web操作が何もできなくなるアクシデントが発生。2.4GHz帯が混雑しているところでの操作は要改善です。LCDがあるのでボタンで操作とかですかね……。
とりあえずつながっている間のスクショ。
ログファイルはスタートしてしまえばテザリングが切れてしまっても続くので、ちゃんとデータが取れています。
ただ、座標だけ見せられても正直わからんので、CSVを読み取ってOSMに点を打つ機能がほしいところです。
あと、途中の鷺沼でLCDを写した様子。電車内はGPS拾えませんでした。シビア。