Raspberry Pi 5がやって来たのでRaspi5を母艦にすべく初期の設定後にJetson nanoからInfluxDBを移動させてIPアドレスも変更してそれぞれ固定する。
Raspberry Pi 5 8GBを使った感想は、「ものすごく安定していて速い」の一言。負荷をかけても安定しているしGUIでもサクサク動いて、ラズパイ5でオフィスの作業くらいはできそうな気がします。
センシングデータを集める母艦のコンピューターとしては十分すぎる。
Raspi5に変わってJetson nano 2GBはそろそろ引退です。

Raspberry pi 5 設定
まずはMicroSDにイメージを焼く。次世代のラズパイはMicroSDではなくて大容量なSSDに変わってきそうですね。
Raspberry Pi Imager 1.8.4
ここからRaspberry Pi ImagerをダウンロードしてPCでMicroSDにOSをインストールしていきます。

次の項目でWifiやホスト名など設定可能。


以下の5項目を予め設定しておけます。
- ホスト名
- ユーザー・パスワード
- Wifi SSID・パスワード
- ロケール
- SSHを有効化
Raspberry Pi ImagerでSSHログインするとことまでインストール・設定できますので、ラズパイ5を起動したらそのままPCなどでPuttyで接続できるのが便利なところ。(IPアドレスは固定されていない場合、WifiルーターでIPアドレスを調べる必要がある。)
Linux バージョン確認
インストールしたRaspberry pi 5のDebianバージョンをチェックする。
sudo apt install lsb-release
lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
No LSB modulesと出るがは特に必要ないみたい。
rootパスワード設定
ラズパイはrootパスワード設定されていないので設定する。
$ sudo passwd root
New password:
Retype new password:
passwd: password updated successfully
suでrootになれる。
su
Password:
root@Raspi5:/home/go#
Jetson nanoでInflux1のデータをバックアップ・コピー
この項目は旧母艦のJetson nanoでの作業。
InfluxDB1 バックアップ
Back up and restore data in InfluxDB v1.8 | InfluxDB OSS v1 Documentation (influxdata.com)
/home/go/influxにバックアップする。
influxd backup -portable /home/go/influxdb
バックアップできたらRaspberry pi 5にコピーする。
今のところ↓以下のIPアドレスになっている。後ほどRaspberry Pi 5が母艦になるので192.168.31.53に変更する。
- Jetson nano:192.168.31.53
- Raspberry pi 5:192.168.31.224
SCPでバックアップデータをJetson nanoからRaspberry pi 5にコピー
Raspberry pi 5からSCPにJetson nanoにアクセスしてコピーする。
scp -r go@192.168.31.53:~/influxdb /home/go
-rはディレクトリごとコピーする。
途中でJetson nanoがWifiを切断して止まった・・・↓コピーしたファイル数を表示させる。
find . -type f | wc -l
66
全然コピーできてない(泣)Jetson nanoはWifiが調子悪いのでもう使う気にならない。
find . -type f | wc -l
355
途中でコピーが終わったファイルを削除と思ったが、SCPをやめてrsyncでやるので削除しなくていい。
Jetson nanoのWifiが調子悪く途切れるので途中からrsyncでコピー
Jetson nanoのWifiが途中でブツブツ切れるのでrsyncで続きからコピー(いままでコピーしたものはそのままで途中からコピーしてくれる。)Raspi5から↓の場合
rsync --ignore-existing 192.168.31.53:/home/go/influxdb /home/go/influx/influxdb
Jetson nanoから↓のコマンド
rsync --ignore-existing //home/go/influxdb/* 192.168.31.224:/home/go/influxdb
t=新しい日付順、r=リバース↓順調にコピーしている。
ls -tlr
-rw------- 1 go go 1752900 Jan 5 16:40 20240105T031411Z.s3154.tar.gz
-rw------- 1 go go 639707 Jan 5 16:40 20240105T031411Z.s3155.tar.gz
-rw------- 1 go go 526697 Jan 5 16:40 20240105T031411Z.s3163.tar.gz
-rw------- 1 go go 215969 Jan 5 16:40 20240105T031411Z.s3164.tar.gz
-rw------- 1 go go 4938210 Jan 5 16:41 20240105T031411Z.s3168.tar.gz
-rw------- 1 go go 52867 Jan 5 16:41 20240105T031411Z.s3170.tar.gz
順調にコピー完了した、けど33GBもある・・・
sudo du -sb /var/lib/influxdb
33076331932 /var/lib/influxdb
Raspi5 Influxdb2系 インストール
InfluxDB1でデータをリストアしてInfluxDB1を削除したら、InfluxDB2をインストールする。
と思ったが、Influxdb2ではうまく今までのデータを取り扱えなかったために、InfluxDB1系を続行して使うことにした。
それと、InfluxDB Cloudも無料枠があるので試してみましたが、データは30日間しか保存されないので使えない。やはりこのまま自宅サーバーでInfluxDBを運用するしかない。
この項目はラズパイ5でのInfluxdb2のインストール手順で、実際にはInfluxdb2はアンインストールして使ってない。メモとしてとっておきます。
ダウンロード
そのままaptでインストールすると、InfluxDB1.6.7をインストールしてしまうのでちょっと変更してからインストールする。
$ sudo apt show influxdb
Package: influxdb
Version: 1.6.7~rc0-1+b13
InfluxDB2のインストール方法は以下を参照。

Debian ARM64-bitのほうがいいのかな?どちらを選んでも↑この表示なので同じなのだろう。
(Raspberry Pi Imager 1.8.4でインストールしたRaspberry Pi OS(64-bit)で操作しています。)
mkdir influx
cd influx
wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
sudo apt-get update && sudo apt-get install influxdb2
インストールできた。
$ sudo apt show influxdb2
Package: influxdb2
Version: 2.7.4-1
Priority: optional
Section: default
Maintainer: support@influxdb.com
Installed-Size: 99.3 MB
Depends: curl
Recommends: influxdb2-cli
Conflicts: influxdb
Homepage: https://influxdata.com
License: MIT
Vendor: InfluxData
Download-Size: 43.9 MB
APT-Manual-Installed: yes
APT-Sources: https://repos.influxdata.com/debian stable/main arm64 Packages
Description: Distributed time-series database.
N: There are 9 additional records. Please use the '-a' switch to see them.
InfluxDB バージョン
InfluxDBのバージョン
influxd version
InfluxDB v2.7.4 (git: 19e5c0e1b7) build_date: 2023-11-08T17:07:27Z
クライアント↓
influx version
Influx CLI dev (git: none) build_date: 2023-04-28T14:24:22Z
InfluxDB スタート・ステータス・ストップ
sudo systemctl start influxdb
sudo service influxdb status
● influxdb.service - InfluxDB is an open-source, distributed, time series datab>
Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; preset: ena>
Active: active (running) since Fri 2024-01-05 15:25:13 JST; 6s ago
Docs: https://docs.influxdata.com/influxdb/
Process: 2485 ExecStart=/usr/lib/influxdb/scripts/influxd-systemd-start.sh >
Main PID: 2486 (influxd)
Tasks: 9 (limit: 9255)
CPU: 497ms
CGroup: /system.slice/influxdb.service
└─2486 /usr/bin/influxd
sudo systemctl stop influxdb
influxdb upgrade
データをInfluxDB2で使えるようにUpgradeします。
sudo influxd upgrade
#設定を間違えたら↓これで削除
sudo rm -r /root/.influxdbv2
- Username:InfluxDB 2.xは決められる。InfluxDB 1.xのユーザー管理概念に対応、rootにした。
- Organization:InfluxDB 2.xでは、組織(Organization)によって管理される。組織はInfluxDB 1.xのデータベースにあたります。
- Bucket:InfluxDB 2.xでは、各組織は複数のバケット(Bucket)を持つことができます。バケットはInfluxDB 1.xの測定(Measurement)に対応。
- Retention Period:InfluxDB 2.xでは、各バケットは保持期間(Retention Period)を持つことができ。これはInfluxDB 1.xの保持ポリシー(Retention Policy)に対応。
Username: root
Organization: sensor
Bucket: cpu
Retention Period: infinite
? Proceeding will copy all V1 data to "/root/.influxdbv2"
Space available: 75 GB
Space required: 33 GB
Influxdb2と1とでは概念がだいぶ変わって1を使っていて引き続き使う場合は少し勉強しないといけない。
ブラウザからアクセス

今までのクエリーはなくなって、データベースも手動で操作できないレベルで全く変わってしまった。
面倒だからInfluxDB1系を使う
Raspi5 InfluxDB 1系をインストール
Influxdb2系をインストールして使おうとしたが、InfluxDB1系のクエリーをそのままつかえず、リストアしたらデータベースの中身がおかしくなってしまったので、諦めてInfluxDB1系を使うことにする。
ここからはJetson nanoは引退でRaspberry Pi 5だけの作業になります。
InfluxDB1 インストール
まずはInfluxDB2をインストールしてしまった場合は削除して普通にaptからInfluxDB1系をインストール
sudo apt remove influxdb2
sudo apt --fix-broken install
sudo apt autoremove
sudo apt install influxdb
バージョン確認。
influxd version
InfluxDB v1.8.10 (git: 1.8 688e697c51fd)
ちゃんと動作していることを確認。
sudo systemctl start influxdb
sudo service influxdb status
● influxdb.service - InfluxDB is an open-source, distributed, time series datab>
Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; preset: ena>
Active: active (running) since Sat 2024-01-06 10:51:14 JST; 15s ago
Docs: https://docs.influxdata.com/influxdb/
Process: 5598 ExecStart=/usr/lib/influxdb/scripts/influxd-systemd-start.sh >
Main PID: 5599 (influxd)
Tasks: 15 (limit: 9255)
CPU: 206ms
CGroup: /system.slice/influxdb.service
└─5599 /usr/bin/influxd -config /etc/influxdb/influxdb.conf
Jan 06 10:51:13 Raspi5 influxd-systemd-start.sh[5599]: ts=2024-01-06T01:51:13.9>
Jan 06 10:51:13 Raspi5 influxd-systemd-start.sh[5599]: ts=2024-01-06T01:51:13.9>
バックアップデータ リストア
データがすでにある場合は↓データを削除してからリストアする。
sudo rm -r /var/lib/influxdb/*
InfluxDB 1のやり方でRaspberry pi 5にコピーしたデータをリストアする。
sudo systemctl start influxdb
influxd restore -portable /home/go/influxdb
33GBあったのですが、10分くらいで終わり。
リストア完了したらInfluxDB1を削除(Influxdb2にする場合)
sudo systemctl stop influxdb
sudo apt remove influxdb
データを丸められない?(うまくいかなかった)
過去のデータは詳細には要らないので1時間ごとに間引きしたいけど、どうもうまくいかなかった。
新たに作った空のデータベースsensorsにsensor(既存のDB)のair,cpu,ph,power,voltのmeasurementをそれぞれ1時間ごとに丸めて間引きsensorsのmeasurementとして挿入するクエリー
CREATE DATABASE "sensors"
CREATE CONTINUOUS QUERY "cq_1h_air" ON "sensors" BEGIN SELECT mean(*) INTO "air" FROM "sensor"."autogen"."air" GROUP BY time(1h), * END
CREATE CONTINUOUS QUERY "cq_1h_cpu" ON "sensors" BEGIN SELECT mean(*) INTO "cpu" FROM "sensor"."autogen"."cpu" GROUP BY time(1h), * END
CREATE CONTINUOUS QUERY "cq_1h_ph" ON "sensors" BEGIN SELECT mean(*) INTO "ph" FROM "sensor"."autogen"."ph" GROUP BY time(1h), * END
CREATE CONTINUOUS QUERY "cq_1h_power" ON "sensors" BEGIN SELECT mean(*) INTO "power" FROM "sensor"."autogen"."power" GROUP BY time(1h), * END
CREATE CONTINUOUS QUERY "cq_1h_volt" ON "sensors" BEGIN SELECT mean(*) INTO "volt" FROM "sensor"."autogen"."volt" GROUP BY time(1h), * END
データベースが表示されない。うまくいってない?
Influx CLIインストール
CLIが無いとInfluxDB2系からInflux1系のデータを操作できない?
influx – InfluxDB command line interface | InfluxDB OSS v2 Documentation (influxdata.com)
wget https://dl.influxdata.com/influxdb/releases/influxdb2-client-2.7.3-linux-arm64.tar.gz
tar xvzf influxdb2-client-2.7.3-linux-arm64.tar.gz
sudo cp influx /usr/local/bin/
Grafanaインストール
センシングしたデータをきれいにグラフにしてくれるツールです。
インストール

ちょっとaptを変更
sudo apt-get install -y apt-transport-https software-properties-common wget
sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
あとは普通にインストールする。
sudo apt-get update
sudo apt-get install grafana
sudo apt-get install grafana-enterprise
Grafanaサーバー 起動

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl status grafana-server
● grafana-server.service - Grafana instance
Loaded: loaded (/lib/systemd/system/grafana-server.service; disabled; pres>
Active: active (running) since Sat 2024-01-06 16:33:34 JST; 3s ago
Docs: http://docs.grafana.org
Main PID: 8676 (grafana)
Tasks: 8 (limit: 9255)
CPU: 719ms
CGroup: /system.slice/grafana-server.service
└─8676 /usr/share/grafana/bin/grafana server --config=/etc/grafana>
Jan 06 16:33:37 Raspi5 grafana[8676]: logger=migrator t=2024-01-06T16:33:37.454>
ブラウザでアクセス
初期時のIPアドレス
途中でIPアドレス変えた場合は、Connections > Data sources >該当のDBを選んでHTTPのURLの部分を変更する。

常時起動しておく。
sudo systemctl enable grafana-server.service
Telegraf
Raspberry PiなどのLinuxのCPUやメモリ・ストレージの状態を主にInfluxDBに保存してくれるツール。
sudo apt-get update && sudo apt-get install telegraf
設定ファイル↓「[[outputs.influxdb]] 」この部分の先頭の「#」を削除する。
sudo vim /etc/telegraf/telegraf.conf
[[outputs.influxdb]] #この部分をコメントアウト外す
エラー↓telegraf.confの[[outputs.influxdb]]の部分をコメントアウト外さないとOutputsがなくてエラーになる。
sudo service telegraf start
Job for telegraf.service failed because the control process exited with error code.
See "systemctl status telegraf.service" and "journalctl -xeu telegraf.service" for details.
Telegraphを停止する方法。
sudo systemctl disable telegraf
PythonでRaspi5のCPU温度取得
CPU温度を取得してInfluxDBに投げる。
Pythonバージョン
python -V
Python 3.11.2
Raspi5の温度取得
温度チェック
cat /sys/class/thermal/thermal_zone0/temp
44100
ファンスピード
Raspi5専用のヒートシンク付きファンを接続したのでcooling_device0の項目がある。
ls /sys/class/thermal/cooling_device0/
cur_state max_state power subsystem type uevent
ls /sys/class/thermal/cooling_device0/power
autosuspend_delay_ms runtime_active_time runtime_suspended_time
control runtime_status
ls /sys/class/thermal/cooling_device0/subsystem
cooling_device0 thermal_zone0
pwm-fan
こちらは↓変更しないほうが良い。Raspi5のほうで自動で変更するみたい。
cat /sys/class/thermal/cooling_device0/cur_state
0
cat /sys/class/thermal/cooling_device0/max_state
4
冬だからファンはほとんど回らない。再起動時などファンが回ると『ブオーン』とけっこうな音が出る。
PythonのInfluxDBライブラリ インストール
sudo apt install pip #デフォルトでインストールしてあった。
sudo pip install influxdb
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
For more information visit http://rptl.io/venv
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
仮想環境を作らないといけないみたい。
python -m venv /home/go/script/venv
source /home/go/script/venv/bin/activate #仮想環境をアクティブにする。
仮想環境だと仮なのでやっぱりシステム全体にインストールできるようにする。
EXTERNALLY-MANAGEDを削除するか、–break-system-packagesをつけてインストールする。
sudo mv /usr/lib/python3.11/EXTERNALLY-MANAGED /usr/lib/python3.11/EXTERNALLY-MANAGED.back
その後、pipでインストールする。
pip install influxdb
CPUの温度取得してInfluxDBに投げる
Raspi3時代から使ってたPythonスクリプトをそのまま適当にHostだけ変えて使う。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
import subprocess
import sys
from influxdb import InfluxDBClient
client = InfluxDBClient(host='192.168.31.53', port=8086, username='root', password='Pass', database='sensor')
measurement = 'cpu'
tags = {'host': 'Raspi5'}
def GetTmp(Cmd):
result = subprocess.Popen(Cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
Rstdout ,Rstderr = result.communicate()
return Rstdout
def GetCpuFreq():#arm
Cmd = 'vcgencmd measure_clock arm'
CpuFreq = GetTmp(Cmd).split('=')
return int(CpuFreq[1])
def GetCpuTemp():#cpu temp
Cmd = 'vcgencmd measure_temp'
CpuTemp = GetTmp(Cmd).split()
CpuTemp_zero=CpuTemp[0].replace("temp=",'').replace("'C",'')
return CpuTemp_zero
def GetCpuVolts():#cpu V
Cmd = 'vcgencmd measure_volts'
CpuVolts = GetTmp(Cmd).split('=')
CpuVoltsone =CpuVolts[1].replace("V\n",'')
return CpuVoltsone
def GetVoltsThro():#電圧の状態
Cmd = 'vcgencmd get_throttled'
VoltsThro = GetTmp(Cmd).split('=')
VT = VoltsThro[1].replace("\n",'')
throarr = {'0xd0000':0,'0x0':1, '0x50000':2, '0x50005':3, '0x80000':4, '0x80008':5}
#0:0xd0000 ????
#1:0x0 正常
#2:0x50000 過去に低電圧状態になった。今は正常
#3:0x50005 低電圧!
#4:0x80000 熱でクロックダウン
#5:0x80008 今現在熱でクロックダウン
if VT in throarr:
val = throarr[VT]
return val
if __name__=='__main__':
CpuTemp = GetCpuTemp()
CpuVolts = GetCpuVolts()
VoltsThro = GetVoltsThro()
#print CpuVolts
CpuFreq = int(GetCpuFreq()/1000000)
FieldArr = {'arm': float(CpuFreq) , 'cpu_temp': float(CpuTemp) , 'cpu_volt': float(CpuVolts)}
if VoltsThro is not None:
FieldArr['throttled'] = VoltsThro
json_body = [
{
'measurement': measurement,
'tags': tags,
'fields': FieldArr
}
]
print(json_body)
client.write_points(json_body)
あとは定期的に実行しておく。
crontab -e
*/3 * * * * /usr/bin/python /home/go/script/cpu.py
センシング表示完了
Raspberry Pi 5のセンシング
InfluxDB+Grafana+Telegraf+自作のCPU温度で以下のようなグラフができた。

自宅 温湿度・大気などのセンシングデータ
Xiaomiのセンサーなどだいぶ処分したので↓センサー少なめ。
電力はUSBドングルが壊れたのか?なぜかデータを取得できなくなった。そのうち調査してみます。

以上、Raspberry Pi 5を母艦にして初期の設定でした。

最後にIPアドレスを自分の家は母艦用のIP192.168.31.53に変更して完了。
IPアドレスの変更はWifiルーターで固定IPを変更する。Jetson nanoが192.168.31.53を使用してたのでなかなか固定IPを変更できずWifiルーターの電源オフ・電源オンして変更した。
今後はRaspberry Pi 5にInfluxDBにセンシングデータが投げられてくる。
コメント