2021年度IoT研修用ラズパイの設定
1.目的
M5StackシリーズのATOM LiteとInfluxDB、Node-RED、Grafanaが稼働するサーバとでIoTシステムを構築するセミナーを開催するために、ラズパイを設定する。
設定にあたり、Qiitaの@dzonesasakiさんのページを参考にしました。
2.準備
(1)Raspberry Pi Imagerで、Raspberry Pi OS(32bit)版を32GBのマイクロSDメモリカードに焼きます。
(2)ラズパイにSDを入れて起動し、 設定を行います。
- 国を日本に (言語は日本語、タイムゾーンは東京)
- Enter new password, Confirm new password 同じパスフレーズを入力
- ディスプレイ表示に余白がある場合は、this screen shows a black border...にチェック
- Wi-Fiを接続
ethernetでインターネット接続している場合は、あえてWi-Fiに接続させる必要はないのでスキップする。
- アップデート
- 再起動
3.研修に必要なソフトウェアのインストール
ターミナルを利用して必要なアプリをインストール。次のコマンドをコピーして、ターミナルにペーストして実行する。
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered) && sudo systemctl enable nodered.service && cd ~/.node-red/ && npm install node-red-dashboard node-red-contrib-dht-sensor node-red-contrib-ds18b20-sensor node-red-contrib-influxdb node-red-contrib-aedes node-red-contrib-calc && sudo systemctl restart nodered.service && sudo apt install -y influxdb influxdb-client && influx -execute="create database IoTSeminar" && cd ~/Downloads && wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - && echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list && sudo apt update && sudo apt install -y grafana && sudo /bin/systemctl daemon-reload && sudo /bin/systemctl enable grafana-server && sudo /bin/systemctl start grafana-server && sudo grafana-cli plugins install aceiot-svg-panel && sudo grafana-cli plugins install ae3e-plotly-panel && sudo grafana-cli plugins install agenty-flowcharting-panel && sudo grafana-cli plugins install bessler-pictureit-panel && sudo grafana-cli plugins install briangann-datatable-panel && sudo grafana-cli plugins install farski-blendstat-panel && sudo grafana-cli plugins install flant-statusmap-panel && sudo grafana-cli plugins install grafana-clock-panel && sudo grafana-cli plugins install grafana-googlesheets-datasource && sudo grafana-cli plugins install grafana-piechart-panel && sudo grafana-cli plugins install grafana-polystat-panel && sudo grafana-cli plugins install isaozler-paretochart-panel && sudo grafana-cli plugins install jdbranham-diagram-panel && sudo grafana-cli plugins install larona-epict-panel && sudo grafana-cli plugins install macropower-analytics-panel && sudo grafana-cli plugins install marcusolsson-csv-datasource && sudo grafana-cli plugins install marcusolsson-hourly-heatmap-panel && sudo grafana-cli plugins install michaeldmoore-annunciator-panel && sudo grafana-cli plugins install michaeldmoore-multistat-panel && sudo grafana-cli plugins install mtanda-google-calendar-datasource && sudo grafana-cli plugins install mtanda-histogram-panel && sudo grafana-cli plugins install mxswat-separator-panel && sudo grafana-cli plugins install natel-plotly-panel && sudo grafana-cli plugins install neocat-cal-heatmap-panel && sudo grafana-cli plugins install novatec-sdg-panel && sudo grafana-cli plugins install petrslavotinek-carpetplot-panel && sudo grafana-cli plugins install pierosavi-imageit-panel && sudo grafana-cli plugins install savantly-heatmap-panel && sudo grafana-cli plugins install scadavis-synoptic-panel && sudo grafana-cli plugins install snuids-radar-panel && sudo grafana-cli plugins install snuids-trafficlights-panel && sudo grafana-cli plugins install speakyourcode-button-panel && sudo chown -R grafana:grafana /var/lib/grafana/plugins/ && sudo systemctl restart grafana-server.service && sudo apt install -y jfbterm fonts-takao
Node-REDのインストール中に以下の質問があるので、両方ともyを入力する。 Are you really sure you want to do this ? [y/N] ? y Would you like to install the Pi-specific nodes ? [y/N] ? y
上記で実行している内容を以下で説明する。
3.1 ソフトウェアのアップデート
$ sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
3.2 Node-REDのインストール
Node-REDのインストール及びノードの追加設定
$ bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered) && sudo systemctl enable nodered.service && cd ~/.node-red/ && npm install node-red-dashboard node-red-contrib-dht-sensor node-red-contrib-ds18b20-sensor node-red-contrib-influxdb node-red-contrib-aedes node-red-contrib-calc && sudo systemctl restart nodered.service
3.3 InfluxDBのインストール
InfluxDB、及びクライアントInfluxのインストール。データベースIoTSeminarを追加設定。
$ sudo apt install -y influxdb influxdb-client && influx -execute="create database IoTSeminar"
3.4 Grafanaのインストール
Grafanaのインストール及び自動起動の設定。また、プラグインを32個インストールし、プラグインのユーザとグループ名をgrafanaに変更する。
$ cd ~/Downloads && wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - && echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list && sudo apt update && sudo apt install -y grafana && sudo /bin/systemctl daemon-reload && sudo /bin/systemctl enable grafana-server && sudo /bin/systemctl start grafana-server && sudo grafana-cli plugins install aceiot-svg-panel && sudo grafana-cli plugins install ae3e-plotly-panel && sudo grafana-cli plugins install agenty-flowcharting-panel && sudo grafana-cli plugins install bessler-pictureit-panel && sudo grafana-cli plugins install briangann-datatable-panel && sudo grafana-cli plugins install farski-blendstat-panel && sudo grafana-cli plugins install flant-statusmap-panel && sudo grafana-cli plugins install grafana-clock-panel && sudo grafana-cli plugins install grafana-googlesheets-datasource && sudo grafana-cli plugins install grafana-piechart-panel && sudo grafana-cli plugins install grafana-polystat-panel && sudo grafana-cli plugins install isaozler-paretochart-panel && sudo grafana-cli plugins install jdbranham-diagram-panel && sudo grafana-cli plugins install larona-epict-panel && sudo grafana-cli plugins install macropower-analytics-panel && sudo grafana-cli plugins install marcusolsson-csv-datasource && sudo grafana-cli plugins install marcusolsson-hourly-heatmap-panel && sudo grafana-cli plugins install michaeldmoore-annunciator-panel && sudo grafana-cli plugins install michaeldmoore-multistat-panel && sudo grafana-cli plugins install mtanda-google-calendar-datasource && sudo grafana-cli plugins install mtanda-histogram-panel && sudo grafana-cli plugins install mxswat-separator-panel && sudo grafana-cli plugins install natel-plotly-panel && sudo grafana-cli plugins install neocat-cal-heatmap-panel && sudo grafana-cli plugins install novatec-sdg-panel && sudo grafana-cli plugins install petrslavotinek-carpetplot-panel && sudo grafana-cli plugins install pierosavi-imageit-panel && sudo grafana-cli plugins install savantly-heatmap-panel && sudo grafana-cli plugins install scadavis-synoptic-panel && sudo grafana-cli plugins install snuids-radar-panel && sudo grafana-cli plugins install snuids-trafficlights-panel && sudo grafana-cli plugins install speakyourcode-button-panel && sudo chown -R grafana:grafana /var/lib/grafana/plugins/ && sudo systemctl restart grafana-server.service
3.5 日本語ターミナル及び日本語フォントのインストール
研修では必要ないが、raspiを再設定する時に必要となるのでインストールしておく。
$ sudo apt install -y jfbterm fonts-takao
4.ネットワークの設定
- ラズパイを無線のアクセスポイントとして機能させることで、ATOM Lite、PCと通信できるようにする。
- アクセスポイント化にはhostapdを利用し、DHCPサーバはdnsmasqを利用する。
4.1 ソフトウェアのインストール
hostapd、dnsmasq、及びiptables-persistentをインストールする。
iptables-persistentインストール時、「現在の IPv4 ルールを保存しますか?」「現在の IPv6 ルールを保存しますか?」と聞かれるので、両方とも「はい」を選択する。現在のフィルタリングルールが/etc/iptable/rule.v4 および /etc/iptables/rule.v6に保存される。
sudo apt install -y hostapd dnsmasq iptables-persistent
dnsmasqとhostapdのサービスを一旦終了させる。
sudo systemctl stop dnsmasq
sudo systemctl stop hostapd
4.2 dhcpcd.confの変更
- Raspi-OSのネットワーク関連の設定は、dhcpcd.confに記述する。
- ネットワーク接続は、DHCPによるアドレス取得が基本。
- dhcpcd.conf には、固定アドレスのみ記述する。
- 今回は、Wifiのwlan0を固定アドレス192.168.2.1に設定する記述をする。
sudo nano /etc/dhcpcd.conf
最後尾に3行追記
interface wlan0
static ip_address=192.168.2.1/24
nohook wpa_supplicant
4.3 dnsmasqの設定
DHCPで配布するIPアドレスのレンジを192.168.2.2~192.168.2.20とする。
今回は、DNSに関する部分はデフォルトのままとするので、インストールされているdnsmasq.confを退避させ、新たにDHCPだけ記述したdnsmasq.confファイルを作成する。
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.org
sudo nano /etc/dnsmasq.conf
以下の2行を追加する。
interface=wlan0
dhcp-range=192.168.2.2,192.168.2.20,255.255.255.0,24h
4.4 無線LANのアクセスポイント化
4.4.1 hostapdのデフォルト動作ファイルの編集
hostapdのデフォルト動作ファイルを編集し、hostapd.confの場所を指定する。
sudo nano /etc/default/hostapd
hostapd.confの場所は、/etc/hostapd/の配下とする。
#DAEMON_CONF=""
DAEMON_CONF="/etc/hostapd/hostapd.conf"
4.2.3 hostapd.confファイルの作成
- 無線周波数帯はIEEE 802.11g
- 周波数チャンネルは1
- WPAは、バージョン2
sudo nano /etc/hostapd/hostapd.conf
以下の内容をコピー&ペーストして、SSIDのYOUR_SSIDとパスフレーズのYOUR_PASSPHRASEを適宜変更すること。
# 接続するインタフェース
interface=wlan0
# デバイスドライバ
driver=nl80211
# 利用する周波数帯IEEE 802.11g
hw_mode=g
# 使用するチャンネル
channel=1
# MACアドレスによるフィルタリングはオフ
macaddr_acl=0
# 認証アルゴリズムはWPAのみ
auth_algs=1
# SSIDのステルスはオフ
ignore_broadcast_ssid=0
# EEE 802.11acは無効
ieee80211ac=0
# WMM(QoS制御)有効
wmm_enabled=1
# 日本を指定
country_code=JP
# IEEE 802.11dとIEEE 802.11hは有効
ieee80211d=1
ieee80211h=1
# 無線LANの出力
local_pwr_constraint=3
# スペクトラム制御
spectrum_mgmt_required=1
# WPAのバージョンは2
wpa=2
# 共有鍵認証の方式
wpa_key_mgmt=WPA-PSK
# 暗号化方式
wpa_pairwise=CCMP
# 暗号化方式
rsn_pairwise=CCMP
# SSID
ssid=YOUR_SSID
# パスフレーズ
wpa_passphrase=YOUR_PASSPHRASE
hostapdのマスク解除、自動起動の設定
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
4.3 IPの転送
ipV4のポートフォワードをコメントアウトする。
sudo nano /etc/sysctl.conf
#net.ipv4.ip_forward=1
net.ipv4.ip_forward=1
4.4 IPマスカレード
4.4.1 iptablesによるIPマスカレードの設定
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
4.4.2 IPマスカレード設定ファイルの保存
上記のiptablesによるIPマスカレードの設定は、保存されないため、再起動すると再び上記コマンドを実行する必要がある。
netfilter-persistentコマンドで設定を保存する。
保存先は、iptables-persistentインストール時に作成された/etc/iptables/rules.v4、及びrules.v6となる。
sudo netfilter-persistent save
インストール時、「Save current IPv4 rules?」「Save current IPv6 rules?」と聞かれるので、両方とも「
はい」と答える。
/etc/iptable/rule.v4 および /etc/iptables/rule.v6に現在の設定状態が保存される。
5.最後の仕上げ
5.1 Lチカによるラズパイの稼働状況確認
ラズパイには、電源ラインのPWR LED(赤色)とSDカードへのアクセスを知らせるACT LED(緑色)がある。
これらを1秒間隔でONOFFするheartbeat設定することができる。
これを利用して稼働状況を確認できるようにする。
/boot配下にあるconfig.txtを編集して、最後尾に追記する。
sudo nano /boot/config.txt
今回は、視認性からPWR LEDをheartbeat化する。
PWR LEDの行頭をコメントアウトする。
# ACT LED(Green): heartbeat
#dtparam=act_led_trigger=heartbeat
# PWR LED(red): heartbeat
dtparam=pwr_led_trigger=heartbeat
5.2 Node-REDを利用したシャットダウン
Raspi OSはGPIO3をGNDに接続することでシャットダウンできる。
通常は、スイッチ等を介してハード的にGNDに接続するが、今回はNode-REDを利用してソフト的にシャットダウンできるようにする。
ここで、GPIO3はI2Cのクロック信号SCLと共有する作りになっているので、「RaspberryPiの設定」でI2Cが無効になっていることを確認する必要がある。
5.2.1 /boot/config.txtの編集
sudo nano /boot/config.txt
最後尾に以下の2行を追加する。
# shutdown botton GPIO3 -> GND
dtoverlay=gpio-shutdown,gpio_pin=3
5.2.2 Node-REDによるシャットダウンプログラム
Node-Redにアクセスし、Node-RED上にGPIO3をLowにするプログラムを作成し、デプロイする。
タイムスタンプを実行することで、シャットダウンできる。
また、上記プログラムは、Node-REDのDashboardでもSHUTDOWNボタンを押すことでシャットダウンできる。
5.3 コマンドラインブート
研修では、ラズパイのデスクトップ上で作業する項目はないので、ラズパイの負荷低減のためデスクトップを停止し、コマンドラインで起動するように変更する。
また、リモートで設定変更などをするために、SSHを有効にする。
5.4 再起動
以上で、研修用のラズパイが完成したので、再起動(Reboot)する。
Author And Source
この問題について(2021年度IoT研修用ラズパイの設定), 我々は、より多くの情報をここで見つけました https://qiita.com/makushibiki/items/4cb18597005ac9894a78著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .