RaspberryPi ZeroのSDカードが壊れた
Git 2.26.1にアップデートするに書いたようにgitに脆弱性が見つかったのでアップデートを行った。
RaspberryPi Zeroを2台同時にソースからコンパイルしてインストールしようとしたところ、片方のZeroだけコンパイルが全く終わらなくて、いつの間にかエラーで停止していた。
その後、再実行してみたがエラーが出続けてしまうので再起動してみたところ起動できなくなってしまった。
SDカードをmacに差し込んでも認識せず…ついに壊れてしまった模様。
BME280のセンサー値を毎分送信していたので、rootfsを読み込み専用にして使っていたけど、gitのアップデートのために一時的に書き込みモードにしてコンパイルしたら寿命を迎えてしまったみたい。
どうしようもないので気を取り直して、別のSDカードで再セットアップした。
RaspberryPiがいつ壊れていいようにコードはリポジトリ管理していたものの、AWS IoTの使い方をすっかり忘れていたり、証明書ごと消えてしまったので新規作成する必要があったりでなんだかんだ時間がかかってしまった。
過去にブログにまとめていたおかげで助かった。
無事復旧したついでに、↓のCO2センサの値もCloudWatchに送信するように対応した。
最初はシンプルに↓のようにしてaws cliを使ってCloudWatchに送信するようにしていたが、put-metric-data実行時にCPU負荷が90%超えになってデータの欠損が発生することがあったので別案を検討。
# co2_to_cloudwatch.sh
CO2=`sudo python3 -m mh_z19 | jq ".co2"`
/usr/local/bin/aws cloudwatch put-metric-data --namespace "Home" --metric-name ${METRIC_NAME} --unit None --value ${CO2}
AWS IoTにデータ送信するスクリプトにオプションを追加してco2センサの値も一緒に送信するようにして対応した。
あとはIoT CoreのACT => Ruleを作成でco2センサの値をCloudWatchメトリクスに投稿するようにして完了。