はじめに
RaspberryPiの中でパフォーマンスと、省エネ性、コストが一番ベストと思われる
Raspberry Pi Zero W(H)を使いこなすうえで少し、困惑したので備忘録的に記載します。
以前 8/29に投稿した記事で、私はRaspberry Pi OS(Legacy)でDesktopに対応しているものをインストールしました。2022年10月現在クリーンインストールした状態では、下記の通りのバージョンです。
Linuxのバージョン
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 5.10.103+ #1529 Tue Mar 8 12:19:18 GMT 2022 armv6l GNU/Linux
pi@raspberrypi:~ $
Raspbian OSのバージョン
pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster
PインストールされているPython
pi@raspberrypi:~ $ python -V
Python 2.7.16
pi@raspberrypi:~ $ python --version
Python 2.7.16
pi@raspberrypi:~ $ python3 -V
Python 3.7.3
pi@raspberrypi:~ $ python3 --version
Python 3.7.3
pi@raspberrypi:~ $
ターミナルでのデフォルトは Python 2.7.16
Thonny Python IDEではPython 3.7.3
となっており
Python 2.7.16
Pythoon 3.7.3 の、2つのバージョンがインストールされています。
その結果、Pythonで実行したいプログラムを、参考にしたWEBからの情報をもとに実行しようとするも動いたり、動かなかっり ごちゃごちゃ状態に。。。
単に私が、バージョンを気にしていなかったからという話もありますが。
(Pythonのバージョンによって書式やライブラリが異なるためです。)
〈ご参考情報〉
https://www.acrovision.jp/career/?p=3146
https://and-engineer.com/articles/YKUFOxQAACgAq_Z-
Python3のみ実行できる環境に変更
方法は下記WEBを参考にさせていただきました。
https://www.ingenious.jp/articles/howto/raspberry-pi-howto/python-3-change/
インストール直後を調べると、python 2.7とpython 3.7の両方のバージョンがインストールされています。
pi@raspberrypi:/usr/bin $ ls -l | grep python
lrwxrwxrwx 1 root root 34 3月 5 2019 arm-linux-gnueabihf-python-config -> arm-linux-gnueabihf-python2-config
lrwxrwxrwx 1 root root 36 3月 5 2019 arm-linux-gnueabihf-python2-config -> arm-linux-gnueabihf-python2.7-config
-rwxr-xr-x 1 root root 2974 10月 11 2019 arm-linux-gnueabihf-python2.7-config
lrwxrwxrwx 1 root root 36 3月 26 2019 arm-linux-gnueabihf-python3-config -> arm-linux-gnueabihf-python3.7-config
lrwxrwxrwx 1 root root 37 1月 23 2021 arm-linux-gnueabihf-python3.7-config -> arm-linux-gnueabihf-python3.7m-config
-rwxr-xr-x 1 root root 3297 1月 23 2021 arm-linux-gnueabihf-python3.7m-config
lrwxrwxrwx 1 root root 37 3月 26 2019 arm-linux-gnueabihf-python3m-config -> arm-linux-gnueabihf-python3.7m-config
lrwxrwxrwx 1 root root 26 3月 8 2019 dh_pypy -> ../share/dh-python/dh_pypy
-rwxr-xr-x 1 root root 1056 3月 5 2019 dh_python2
lrwxrwxrwx 1 root root 29 3月 8 2019 dh_python3 -> ../share/dh-python/dh_python3
lrwxrwxrwx 1 root root 23 10月 11 2019 pdb2.7 -> ../lib/python2.7/pdb.py
lrwxrwxrwx 1 root root 23 1月 23 2021 pdb3.7 -> ../lib/python3.7/pdb.py
lrwxrwxrwx 1 root root 31 3月 26 2019 py3versions -> ../share/python3/py3versions.py
lrwxrwxrwx 1 root root 26 3月 8 2019 pybuild -> ../share/dh-python/pybuild
lrwxrwxrwx 1 root root 7 3月 5 2019 python -> python2
lrwxrwxrwx 1 root root 14 3月 5 2019 python-config -> python2-config
lrwxrwxrwx 1 root root 9 3月 5 2019 python2 -> python2.7
lrwxrwxrwx 1 root root 16 3月 5 2019 python2-config -> python2.7-config
-rwxr-xr-x 1 root root 154 12月 30 2018 python2-pbr
-rwxr-xr-x 1 root root 2984816 10月 11 2019 python2.7
lrwxrwxrwx 1 root root 36 10月 11 2019 python2.7-config -> arm-linux-gnueabihf-python2.7-config
lrwxrwxrwx 1 root root 9 3月 26 2019 python3 -> python3.7
lrwxrwxrwx 1 root root 16 3月 26 2019 python3-config -> python3.7-config
-rwxr-xr-x 2 root root 4275580 1月 23 2021 python3.7
lrwxrwxrwx 1 root root 36 1月 23 2021 python3.7-config -> arm-linux-gnueabihf-python3.7-config
-rwxr-xr-x 2 root root 4275580 1月 23 2021 python3.7m
lrwxrwxrwx 1 root root 37 1月 23 2021 python3.7m-config -> arm-linux-gnueabihf-python3.7m-config
lrwxrwxrwx 1 root root 10 3月 26 2019 python3m -> python3.7m
lrwxrwxrwx 1 root root 17 3月 26 2019 python3m-config -> python3.7m-config
lrwxrwxrwx 1 root root 29 3月 5 2019 pyversions -> ../share/python/pyversions.py
上記の実行結果からデフォルトで使用されるPythonは、Python 2.7へのシンボリックリンク(ショートカットのようなもの)になっています。
デフォルトで使用するPythonをPython 3.7に切り替えるには、このシンボリックリンクをPython 3.7へのシンボリックリンクに変更すればよいとのこと。
以下のコマンドを実行し、現在のPythonのシンボリックを削除します。
pi@raspberrypi:/usr/bin $ sudo unlink python
pi@raspberrypi:/usr/bin $ python -V
bash: /usr/bin/python: そのようなファイルやディレクトリはありません
以下のコマンドを実行し、Python3.7へのシンボリックリンクを作成します。
pi@raspberrypi:/usr/bin $ sudo ln -s python3 python
pi@raspberrypi:/usr/bin $
Python 3.7へのシンボリックリンクが作成されていることを確認します。
pi@raspberrypi:/usr/bin $ ls -l | grep python
lrwxrwxrwx 1 root root 34 3月 5 2019 arm-linux-gnueabihf-python-config -> arm-linux-gnueabihf-python2-config
lrwxrwxrwx 1 root root 36 3月 5 2019 arm-linux-gnueabihf-python2-config -> arm-linux-gnueabihf-python2.7-config
-rwxr-xr-x 1 root root 2974 10月 11 2019 arm-linux-gnueabihf-python2.7-config
lrwxrwxrwx 1 root root 36 3月 26 2019 arm-linux-gnueabihf-python3-config -> arm-linux-gnueabihf-python3.7-config
lrwxrwxrwx 1 root root 37 1月 23 2021 arm-linux-gnueabihf-python3.7-config -> arm-linux-gnueabihf-python3.7m-config
-rwxr-xr-x 1 root root 3297 1月 23 2021 arm-linux-gnueabihf-python3.7m-config
lrwxrwxrwx 1 root root 37 3月 26 2019 arm-linux-gnueabihf-python3m-config -> arm-linux-gnueabihf-python3.7m-config
lrwxrwxrwx 1 root root 26 3月 8 2019 dh_pypy -> ../share/dh-python/dh_pypy
-rwxr-xr-x 1 root root 1056 3月 5 2019 dh_python2
lrwxrwxrwx 1 root root 29 3月 8 2019 dh_python3 -> ../share/dh-python/dh_python3
lrwxrwxrwx 1 root root 23 10月 11 2019 pdb2.7 -> ../lib/python2.7/pdb.py
lrwxrwxrwx 1 root root 23 1月 23 2021 pdb3.7 -> ../lib/python3.7/pdb.py
lrwxrwxrwx 1 root root 31 3月 26 2019 py3versions -> ../share/python3/py3versions.py
lrwxrwxrwx 1 root root 26 3月 8 2019 pybuild -> ../share/dh-python/pybuild
lrwxrwxrwx 1 root root 7 10月 24 12:50 python -> python3
lrwxrwxrwx 1 root root 14 3月 5 2019 python-config -> python2-config
lrwxrwxrwx 1 root root 9 3月 5 2019 python2 -> python2.7
lrwxrwxrwx 1 root root 16 3月 5 2019 python2-config -> python2.7-config
-rwxr-xr-x 1 root root 154 12月 30 2018 python2-pbr
-rwxr-xr-x 1 root root 2984816 10月 11 2019 python2.7
lrwxrwxrwx 1 root root 36 10月 11 2019 python2.7-config -> arm-linux-gnueabihf-python2.7-config
lrwxrwxrwx 1 root root 9 3月 26 2019 python3 -> python3.7
lrwxrwxrwx 1 root root 16 3月 26 2019 python3-config -> python3.7-config
-rwxr-xr-x 2 root root 4275580 1月 23 2021 python3.7
lrwxrwxrwx 1 root root 36 1月 23 2021 python3.7-config -> arm-linux-gnueabihf-python3.7-config
-rwxr-xr-x 2 root root 4275580 1月 23 2021 python3.7m
lrwxrwxrwx 1 root root 37 1月 23 2021 python3.7m-config -> arm-linux-gnueabihf-python3.7m-config
lrwxrwxrwx 1 root root 10 3月 26 2019 python3m -> python3.7m
lrwxrwxrwx 1 root root 17 3月 26 2019 python3m-config -> python3.7m-config
lrwxrwxrwx 1 root root 29 3月 5 2019 pyversions -> ../share/python/pyversions.py
pi@raspberrypi:/usr/bin $
デフォルトで使用されるPythonのバージョンがPython 3.7に変更されていることの確認。
pi@raspberrypi:/usr/bin $ python --version
Python 3.7.3
pi@raspberrypi:/usr/bin $ python -V
Python 3.7.3
pi@raspberrypi:/usr/bin $
これでPythonのバージョンは3に統一できました。
こうすることでPython のプログラム書式やライブラリがPython3で統一され、
ごちゃごちゃしていたものが、すっきり ターミナルでもThonny Python IDEでも安定して動作するようになりました。
Node redのインストール
https://nodered.jp/docs/getting-started/raspberrypi
を参考にインストールを実行しました。
pi@raspberrypi:~ $ bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
インストール中の画面は下記のような画面となります。
ターミナル上の文字を取ろうと CTL+Cを押したらインストールが止まってしまったので画面キャプチャにて。(笑)
インストール終了すると下記画面となります。
デスクトップ上では プログラミングにNode-REDが追加されました。
メニューオプションMenu -> Programming -> Node-REDを選択することによって、 Raspbian DesktopでNode-REDサービスを起動するターミナルが開きバックグラウンドで、Node-REDが動作します。
この後、Node-REDはブラウザで操作しますので
デスクトップでブラウザをクリックして起動します。
(Raspberry Pi Zero W(H) 上では起動しません。)
インストールされてないようですのでchromeをインストールします。
pi@raspberrypi:~ $ sudo apt-get install chromium-browser
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
chromium-common chromium-sandbox libjsoncpp1 libminizip1 libre2-5
libu2f-udev
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
chromium-browser-l10n chromium-codecs-ffmpeg-extra
提案パッケージ:
webaccounts-chromium-extension unity-chromium-extension adobe-flashplugin
以下のパッケージは「削除」されます:
chromium
以下のパッケージが新たにインストールされます:
chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg-extra
アップグレード: 0 個、新規インストール: 3 個、削除: 1 個、保留: 0 個。
124 MB のアーカイブを取得する必要があります。
この操作後に追加で 275 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://archive.raspberrypi.org/debian buster/main armhf chromium-codecs-ffmpeg-extra armhf 92.0.4515.98~buster-rpt2 [1,589 kB]
取得:2 http://archive.raspberrypi.org/debian buster/main armhf chromium-browser armhf 92.0.4515.98~buster-rpt2 [118 MB]
取得:3 http://archive.raspberrypi.org/debian buster/main armhf chromium-browser-l10n all 92.0.4515.98~buster-rpt2 [4,073 kB]
124 MB を 2分 3秒 で取得しました (1,008 kB/s)
(データベースを読み込んでいます ... 現在 98956 個のファイルとディレクトリがインストールされています。)
chromium (90.0.4430.212-1~deb10u1) を削除しています ...
update-alternatives: /usr/bin/x-www-browser (x-www-browser) を提供するために自動モードで /usr/bin/dillo を使います
以前に未選択のパッケージ chromium-codecs-ffmpeg-extra を選択しています。
(データベースを読み込んでいます ... 現在 98925 個のファイルとディレクトリがインストールされています。)
.../chromium-codecs-ffmpeg-extra_92.0.4515.98~buster-rpt2_armhf.deb を展開する準備をしています ...
chromium-codecs-ffmpeg-extra (92.0.4515.98~buster-rpt2) を展開しています...
以前に未選択のパッケージ chromium-browser を選択しています。
.../chromium-browser_92.0.4515.98~buster-rpt2_armhf.deb を展開する準備をしています ...
chromium-browser (92.0.4515.98~buster-rpt2) を展開しています...
以前に未選択のパッケージ chromium-browser-l10n を選択しています。
.../chromium-browser-l10n_92.0.4515.98~buster-rpt2_all.deb を展開する準備をしています ...
chromium-browser-l10n (92.0.4515.98~buster-rpt2) を展開しています...
chromium-codecs-ffmpeg-extra (92.0.4515.98~buster-rpt2) を設定しています ...
chromium-browser (92.0.4515.98~buster-rpt2) を設定しています ...
update-alternatives: /usr/bin/x-www-browser (x-www-browser) を提供するために自動モードで /usr/bin/chromium-browser を使います
update-alternatives: /usr/bin/gnome-www-browser (gnome-www-browser) を提供するために自動モードで /usr/bin/chromium-browser を使います
chromium-browser-l10n (92.0.4515.98~buster-rpt2) を設定しています ...
mime-support (3.62) のトリガを処理しています ...
hicolor-icon-theme (0.17-2) のトリガを処理しています ...
gnome-menus (3.31.4-3) のトリガを処理しています ...
libc-bin (2.28-10+rpt2+rpi1+deb10u1) のトリガを処理しています ...
man-db (2.8.5-2) のトリガを処理しています ...
desktop-file-utils (0.23-4) のトリガを処理しています ...
デスクトップから インターネット ウェブブラウザを選択
または、デスクトップのインターネットをクリックします。
待ちます 待ちます、何秒かかるの。。。分単位だな。。
起動したらアクセス先として
http://localhost:1880 を入力してアクセス。
と Raspberry Pi Zero W(H)では、パフォーマンス的に厳しいので、Raspberry Piデスクトップのブラウザは使ってはいけません。
(CPU使用率を見ると100% はりつきでした。全く仕事になりません。)
他のマシンからブラウジングしましょう。
Raspberry Pi Zero W(H)のIPアドレスを入力します。
http://(ip-address):1880
下記は、パソコンからラズパイへアクセスした、Node-RED画面です。
Node-REDのエディタ画面が表示されスムースに編集作業できることが確認できます。
ちなみに
Raspberry Pi Zero W(H)の制限されたメモリ容量のため、 基盤となるNode.jsプロセスに未使用のメモリを早く解放するよう 追加引数とともにNode-REDを起動するのがよいらしく、ターミナル上で下記コマンドで実行するほうが良いとのこと。
node-red-pi --max-old-space-size=256
pi@raspberrypi:~ $ node-red-pi --max-old-space-size=256
24 Oct 15:37:14 - [info]
Welcome to Node-RED
===================
24 Oct 15:37:14 - [info] Node-RED バージョン: v3.0.2
24 Oct 15:37:14 - [info] Node.js バージョン: v16.18.0
24 Oct 15:37:15 - [info] Linux 5.10.103+ arm LE
24 Oct 15:37:43 - [info] パレットノードのロード
24 Oct 15:38:23 - [info] 設定ファイル: /home/pi/.node-red/settings.js
24 Oct 15:38:23 - [info] コンテキストストア : 'default' [module=memory]
24 Oct 15:38:23 - [info] ユーザディレクトリ : /home/pi/.node-red
24 Oct 15:38:23 - [warn] プロジェクトは無効化されています : editorTheme.projects.enabled=false
24 Oct 15:38:23 - [info] フローファイル : /home/pi/.node-red/flows.json
24 Oct 15:38:25 - [info] サーバは http://127.0.0.1:1880/ で実行中です
24 Oct 15:38:25 - [warn]
---------------------------------------------------------------------
フローのクレデンシャルファイルはシステム生成キーで暗号化されています。
システム生成キーを何らかの理由で失った場合、クレデンシャルファイルを
復元することはできません。その場合、ファイルを削除してクレデンシャルを
再入力しなければなりません。
設定ファイル内で 'credentialSecret' オプションを使って独自キーを設定
します。変更を次にデプロイする際、Node-REDは選択したキーを用いてクレ
デンシャルを再暗号化します。
---------------------------------------------------------------------
24 Oct 15:38:25 - [info] フローを開始します
24 Oct 15:38:25 - [info] フローを開始しました
まとめ
Rasp berry Pi Zero W(H)を ハードのパフォーマンスと、省エネ性、コストを考え選択したが、ソフトの使いこなしには、結構ノウハウが必要です。
・インストールされているPythonのバージョンが複数あるので注意
・GUI系は非常にプア(CPU貧弱、メモリも少ない)、OSが軽い分しゃあないか。
・Node-RED使えますが、Raspberry Piデスクトップのブラウザをは使ってはいけない。
他のマシンからブラウジングしましょう。
以上 お役に立つかどうかわかりませんが、備忘まで。