LoginSignup
9
17

More than 3 years have passed since last update.

Raspberry Pi 3 (Buster) 一括セットアップ手順: node-redでスマートホーム用

Last updated at Posted at 2018-08-03

新規インストールからの一連の設定手順です

いわゆるスマートホーム用Raspberry Piの設定。ディスプレイもキーボードもつなげずに使うこと前提です。

利用目的
- node-redでいろいろ
- Amazon Echo + eRemote mini (RM Mini3) を使った家電の音声コントロール
- LINEメッセージをGoogle Homeで読上げ
- BLE温度・湿度センサーの情報取得
- ひかり電話で相手側電話番号の情報をLINEに通知と読上げ

Raspbianのインストール

Raspbian Buster Liteをダウンロード

Raspberry Piのダウンロードページで、GUI無し版のRaspbian Buster Liteをダウンロード

SDカードをSDFormatterでフォーマット

Macでddを使って書き込み

SDカードのデバイスが/dev/disk2なのを確認。

$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage Macintosh HD            120.5 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1 (internal, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           +120.1 GB   disk1
                                 Logical Volume on disk0s2
                                 Unlocked Encrypted
/dev/disk2 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *16.0 GB    disk2
   1:             Windows_FAT_32 STRETCHLITE             16.0 GB    disk2s1

unmount

$ diskutil unmountDisk /dev/disk2s1
Unmount of all volumes on disk2 was successful

書き込み (XXXは適切なデバイス名に置き換えること)

SDカードのデバイスが/dev/disk2の場合、/dev/rdisk2のように'r'をつけて指定すると高速に書き込みできます。

$ sudo dd bs=1m if=~/Downloads/2018-06-27-raspbian-stretch-lite.img of=/dev/rdiskXXX conv=sync

いつ終わるのか気になる人は、Ctrl+tを押せば途中経過が表示される。

raspi-config

とりあえず、HDMIモニタとキーボードを繋げてデフォルトのuser:pi, password:raspberryでログインし、sudo raspi-configで以下の設定。

  • 1.Change User Password
  • 2.Network Options - Hostname (複数のRaspiがある場合要変更)
  • 2.Network Options - Wi-fi
  • 4.Localisation - Timezone
  • 5.Interfaceing Options - SSH - Enable
  • 7.Advanced Options - Memory Split - 16 (画面表示はしないのでGPUメモリを最小限に)

hostnname変更時は以下も行う (Busterでは自動で追加されてるようなので不要)

sudo sh -c 'echo 127.0.1.1 $(hostname) >> /etc/hosts'

SDカード延命措置

参考:Raspberry PiのSDカードが壊れた!寿命を延ばす方法 5+1選!

swap無効化

sudo dphys-swapfile swapoff
sudo systemctl stop dphys-swapfile
sudo systemctl disable dphys-swapfile

/tmp, /var/tmp, /var/logのtmpfs化

/etc/fstabに以下を追加。再起動するとログは消えるので注意。

tmpfs           /tmp            tmpfs   defaults,size=32m,noatime,mode=1777  0       0
tmpfs           /var/tmp        tmpfs   defaults,size=16m,noatime,mode=1777  0       0
tmpfs           /var/log        tmpfs   defaults,size=32m,noatime,mode=0755  0       0

ローテートされたログの保存数を減らす: /etc/logrotate.conf 中のrotateを修正(4 → 1)

# keep 4 weeks worth of backlogs
#rotate 4
rotate 1

SDカードへの書き出しの頻度を下げる

/etc/fstabで/(root)ファイルシステムのオプションにcommit=240を追加。※4分立たないとSDカードに書き込まれないので注意。

/dev/mmcblk0p2 / ext4 defaults,noatime,commit=240  0 1

省電力設定

それほどの効果はないと思います。全部やってるわけではないです。

/boot/config.txt (パワーLED点滅、CPUクロック下げる、WiFiのOFF)

dtparam=pwr_led_trigger=heartbeat
arm_freq_min=300
dtoverlay=pi3-disable-wifi
# dtoverlay=pi3-disable-bt

/boot/cmdline.txt (あまりおすすめしません)

maxcpus=2

HDMIをオフにする。10mA程度の節約 (おすすめしません)

sudo /opt/vc/bin/tvservice --off   (-pでon)

USBをオフにする。100mAの節約 (おすすめしません)

有線LANが無効になる。上のpi3-disable-wifiと同時に設定してはいけない。
Raspberry Pi 3においては、WiFiをオフにするより有線LAN(USB)をオフにしたほうが効果が大きい。

echo 0 | sudo tee /sys/devices/platform/soc/*.usb/buspower

必要なアプリケーションのインストール

apt-getで一括インストール

sudo apt-get -y install emacs-nox whois git bc mosh parallel iotop

gitの初期設定

git config --global user.name "My Name"
git config --global user.email "email address"

node-red

参考: Amazon Echoとラズパイで、音声で照明をon/offする

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
sudo systemctl start nodered.service
sudo systemctl enable nodered.service

あと、Raspberry PiにおけるNode-REDの活用についての「セキュリティ設定」も適用したほうがいいですね。

BlackBeam社のスマートリモコン関連

参考: 素人でもスマートスピーカーから家電を操作できた

sudo apt-get -y install python3-dev python3-pip
sudo pip3 install broadlink
mkdir ~/git
cd ~/git
git clone https://github.com/mjg59/python-broadlink.git

Bluetooth (noble)

sudo apt-get -y install bluetooth libbluetooth-dev libudev-dev

avahi (Google Homeを喋らせるのに必要)

sudo apt-get -y install avahi-daemon avahi-utils libnss-mdns libavahi-compat-libdnssd-dev

sshサービスを公開する

参考: avahi-daemonを設定してDNSサーバ運用をやめた

/etc/avahi/services/ssh.service

<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">

<service-group>
  <name replace-wildcards="yes">%h</name>

  <service>
    <type>_ssh._tcp</type>
    <port>22</port>
  </service>
</service-group>
sudo systemctl restart avahi-daemon.service

これで、ssh pi@raspberrypi.local でsshログインできるようになる(ただし、Windowsからは不可)。

Mackerelでの監視設定

Mackerelとは、はてなが提供しているサーバー監視サービスで、無料プランでも5台まで監視できるのでRaspberry Piの監視にちょうどいいです。問題発生時にメールだけでなくLINEに通知するようにもできます。

基本的な設定はこちらを参考: Raspberry Pi を Mackerel で監視する

上記設定後にこれ

baresip (ひかり電話の相手番号取得)

参考: Linux でひかり電話にかかってきた電話番号を取得する

sudo apt-get -y install baresip-core

インストール後、一度baresipを起動しCtrl+Cで終了
~/.baresip/configを編集。stdio.so, alsa.soをコメントアウト誌、cons.soを追加

#module                  stdio.so
#module                  alsa.so
module                   cons.so

~/.baresip/accounts に以下を追加

<sip:{内線番号}:{password}@{電話ルータのIPアドレス}>;auth_user={userId}

SD関連

起動時にfsckをする

shutdown -rF now

RPiのSDをバックアップして別のSDに書き込む : サイズが違う場合のパーティション操作

9
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
17