Help us understand the problem. What is going on with this article?

ラズパイのCPU温度をAmbientに送ったりそれまでの環境構築など

はじめに

ゼミ室のラズパイ(Volumio)がよく落ちているのでそれの原因突き止めるためにやってみました。
みんなで開発できやすいようにと、公開もできるように環境構築もやってみたのでメモです。

今回はまず原因突き止めのためにCPU温度のAmbientに送ってログをとってます。

環境

  • ラズパイ2B+ (Volumio ver2.668)
  • (ラズパイ内)node v8.11.1
  • (ラズパイ内)npm v5.6.0

最新のvolumioでもnodeのバージョンはv8ですのでこれからあえて変えずにいきます。

実装

概要

スクリーンショット 2019-11-22 15.34.55.png

ラズパイは前述したとおりなんかよく落ちるし、起動しなくなっちゃってOS再インストールなんてこともある。
ので、ラズパイだけにソースコードがあるのがよくないでした。(落ちなかったとしても怖いですよね)
さらにアプリ導入も簡単にしたかったでした。
本来ならばdockerなど環境そのままもっていきたいのですが、dockerを入れるところで躓いたのでそれはまた今度で...

keyファイルについて

https://www.rhoboro.com/2016/06/28/environment-variables.html
これのうちの「別ファイルに書き出し、そこから読み取る」でやってみました。
環境変数は犯したくないってのは思いますよね。
また、githubのプライベートリポジトリにしてもよかったのですが、あえてパブリックにしてオープンなゼミにしようという感じです。
ちなみに自分はすでに卒業して結構経ってます...

Githubで共有しています

ということでコードはオープンにgithubにあげています。
https://github.com/amaokalab/LabpiDev

オーガナイズなアカウントっぽいのでゼミ生で共同開発できるのもいいところですね。
使い方、実行方法もいちようreadmeに書いたあります。
簡素ですがこれでゼミ生全員がラズパイ復旧できるようにできたらなと思っています。

foreverについて

実行タイミング

CPUTempLog/send2AmbiInterval.js内から一部抜粋

async function main() {
  // 0分ちょうどだけ送りたい
  let nowTime = new Date();
  if (nowTime.getMinutes() != 0) {
    return;
  }

  ...
}

// 1分に一回だけ処理
setInterval(main, 60000);

foreverを使ったものってcronと違い「1時間毎」になってしまい「00分の時」にできなかったでしたが、このようにすることで同じように「00分の時」を実現しました。
そもそもvolumioにcronは最初からは入ってないですし...

ローカルにインストール

本来は

npm i -g forever

でグローバルにインストールするのが普通ですが、グローバルを犯さないということを徹底してみました。
foreverを同じように実行するにはプロジェクトフォルダ内にて

./node_modules/forever/bin/forever list

などで実行します。
逆に面倒ですかねぇ...

追記

ptxコマンドを使うとよさそうです
https://qiita.com/lambda_funtaro/items/865f178628a035acbe5a

再起動時

https://qiita.com/karaage0703/items/ed18f318a1775b28eab4

sudo nano /etc/rc.local

ちなみにvolumioにはviも入っていないのでnanoで

cd /home/volumio/LabpiDev
npm run cpuForever

exit 0

こんな感じに書きました。
グローバルを犯しました。残念...

これで実行されるとsudoで実行したことになるので、foreverのlistを見たいときもsudoをつけます。

sudo ./node_modules/forever/bin/forever list

これも結局グローバルにインストールすべきかもなぁ...

ゼミ生はこれで使えるようになったのか

これから見ていきたいです。
肝は

  • keyファイル
  • Ambientのキー類の入力
  • 再起動時の設定

今度は、UPSやモバイルバッテリーを使ったりして対策するのが普通ですね。

tkyko13
クリエイティブコーディングや電子工作が趣味としていきたい
http://tkyk.net
protoout-studio
ProtoOut Studioは日本初のプロトタイピング専門スクールです。プログラミングとプランニング(企画)の両方のスキルを兼ね備えた人材輩出を行います。作って発信して、がんがんプロトアウトしていきましょう。
https://protoout.studio
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした