目的と用意するもの
目的:
raspberry piにNode-REDをインストールして、RM Mini3からPython-broadlinkで、Amazon ECHOから、家電を操作したり、外付けHDDをNAS化します。
不注意によりクラッシュさせてしまうことがあるので、俺環用の手順書を作りました。
声による家電の操作は快適です。ゴロゴロしながらエアコンやテレビのオンオフ。一度楽を覚え、堕落した生活に慣れると後戻りできません。
あとは、私と同じようによくわかんないけど、Amazon Echoがあるし、なんちゃってIoT化をしてみたいと興味がある方の微力ながらの助けになれば。
適宜読み替えて頂ければ、ある部分では汎用的な手順書として使え...るかなぁ。
主な読み替え箇所
- ユーザー名:hoge
- IPアドレス:192.168.11.nnn
用意するもの:
- raspberry pi 2B(プラスだったかな)
- microSDカード(お好みの容量)
- USB外付けHDD(セルフパワーのものが良いでしょう)
- コンソールにするPC(今回はMacを使用)
- raspbianのイメージ(その時点での最新版のliteをダウンロード)
- SDアソシエーションのフォーマッタ(Windowsなら不要?)
以前SSHで接続している場合
$ ~/.ssh/known_hosts
の中身を削除しないとIPアドレスが変更されたときにSSH接続できないので削除しちゃいます。
本当にこの対応でいいのだろうか...
SDカードをFAT32でフォーマット
terminalから挿入前後の$ df
の結果を比較してmicsroSDカードを特定。
俺環では/dev/disk2
でした。
$ diskutil unmountDisk /dev/disk2
$ sudo dd if=2018-06-27-raspbian-stretch-lite.img of=/dev/rdisk2 bs=4m
先人の記事によるとdisk2
をrdisk2
と書くと何倍だったか速いそうです。
ブロックサイズ4Mが有効かは検証していませんが、速く書き込めているようです。
初めからSSHで接続できるようにする
microSDカードを挿入しなおして、SSH
という中身なしのファイルを作ります。
注意するところは拡張子が無いこと。
$ cd /Volumes/boot
$ touch ssh
$ sync
DHCPからstaticに変更
SDカードを取り外し、raspiに取り付け、LANを接続し起動。
iOSappのfingかなにかでraspverry piのIPアドレスを確認。
詳しい方は ping
とかarp -a
とかで検索するんでしょうか。
初めからstaticで起動する方法をご存知の方、教えてください。
$ ssh pi@{raspberry piのアドレス}
でSSH接続します。
ユーザーpi
のpasswdはrspberry
だそうです。
$ sudo vi /boot/cmdline.txt
に
net.ifnames=0
を追記してインターフェイスの名前をMAC addressからいつものeth0にします。
$ sudo sudo shutdown -r now
再起動したら再びSSH。
$ ssh pi@{raspberry piのアドレス}
DHCPからstaticに変更します。
$ sudo vi /etc/dhcpcd.conf
に
interface eth0
static ip_address=192.168.11.22/24
static routers=192.168.11.254
static domain_name_servers=192.168.11.254 8.8.8.8
を追記します。
raspi-configで設定
$ sudo raspi-config
それっぽいメニューから
容量の最大化
piのパスワードの変更
hostnameの変更
などを実施します。
作業用ユーザーの追加
作業用ユーザーを追加します。
$ adduser hoge
追加したらsudoers
に追加します。
$ sudo vi /etc/sudoers
あれ?こっちだっけ?
$ sudo visudo
にhoge ALL=(ALL:ALL) ALL
を追記します。
$ sudo shutdown -r now
起動したら
$ ssh hoge@{raspberry piのアドレス}
でSSH接続して
$ vi .bashrc
にお好みのalias
を追記します。
alias la='ls -aF'
alias ll='ls -alF'
alias df='df -h'
alias pu='pushd'
alias cf='pushd'
alias po='popd'
alias cs='popd'
インストール済みの更新
apt
で更新します。
$ sudo apt update
$ sudo apt dist-upgrade -y
$ sudo apt autoclean
Node-Redのインストール
すでにNode-Redがインストールされていると聞きましたが...
$ node-red-start
をしてみて、無ければ以下でインストール。
無いんじゃん。
$ sudo apt install nodered -y
$ sudo update-nodejs-and-nodered
$ sudo systemctl enable nodered.service
pythonとかをインストール
黒豆こと、RM MINI3を使えるように諸々インストールします。
$ sudo apt install python python-pip -y
$ sudo pip install broadlink
$ sudo apt install git
$ git clone https://github.com/mjg59/python-broadlink.git
でインストールできたら
$ cd python-broadlink/cli
$ ./broadlink_discovery > ROOM.device
$ vi ROOM.device
IPアドレスの行だけ残して他は削除し、保存して終了。
準備ができたら、いよいよリモコンのコードを学習させます。
$ ./broadlink_cli --device @ROOM.device --learnfile ファイル名
必要なボタンの学習が完了したら
$ ./broadlink_cli --device @ROOM.device —send @ファイル名
で送信テストをしてみます。
正常に送出できたら、長いのでシェルスクリプトを作ります。
$ cd
$ vi room.sh
に
#!/bin/sh
cd /home/hoge/python-broadlink/cli
./broadlink_cli --device @ROOM.device --send @$1
を書いて、保存して終了。
$ ./room.sh ファイル名
で動作確認します。
NAS化
NTFSを読み書きできるようにする
$ sudo apt install ntfs-3g -y
USB HDDを接続して
$ sudo dmesg | grep sd
で接続したHDDを確認します。
今回は/dev/sda2
として認識されました。
マウントポイントを作ってマウントします。
$ sudo mkdir /media/storage
$ sudo mount /dev/sda2 /media/storage
で正常にマウント出来たらHDDのUUIDを確認します。
$ sudo blkid
$ sudo vi /etc/fstab
確認したUUIDを/etc/fstab
に追記します。
UUID=xxxxxxxxxxxxxxxx /media/storage ntfs defaults,notime 0 0
これでいいのかはわんないけど、それっぽい感じで動いています。
sambaをインストール。
$ sudo apt install samba -y
$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.org
$ sudo rm /etc/samba/smb.conf
$ sudo vi /etc/samba/smb.conf
に
[global]
workgroup = WORKGROUP
interfaces = 192.168.11. 127.0.0.0/8 eth0
bind interfaces only = yes
hosts allow = 192.168.11.
max log size = 100
security = user
unix charset = UTF-8
dos charset = CP932
read only = no
create msk = 0644
directory mask = 0755
[nas]
comment = nas
path = /media/storage/NAS
public = yes
read only = no
browsable = yes
force user = hoge
を追記します。
$ sudo smbpasswd -a hoge
でsambaユーザー、パスワードを設定します。
シンボリックリンクを作成
長いPathを叩くのは面倒なのでシンボリックリンクを作成します。
$ ln -s /media/storage hdd
$ ln -s /home/hoge/python-broadlink/cli rmmini3
以前作成したリモコンのコードを復元
退避している赤外線のあれこれを復元したり。
$ cp -r hdd/rmmini3/* rmmini3/
まとめ
ここまででおおよそ1.5~2hくらいで完成。
こまめにイメージを抜いておきましょう...
後悔する前に...
参考にさせていただいた先人達の記事は後ほど。
Amazon Echoで遊ぼう
前提環境
大凡1.5hで構築するraspberry pi + node-red + samba
Amazon Echoから家電を制御シリーズ
Amazon Echoから家電を制御 0 ~RMmini3 + python-broadlinkで学習~
Amazon Echoから家電を制御 1 ~node-red-contrib-alexa-local~
Amazon Echoから家電を制御 2 ~テレビを我が手中に収めてやった 基本操作編~
Amazon Echoから家電を制御 3 ~テレビを我が手中に収めてやった ch操作編~