1
3

More than 5 years have passed since last update.

大凡1.5hで構築するraspberry pi + node-red + samba

Last updated at Posted at 2018-07-28

目的と用意するもの

目的:
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

先人の記事によるとdisk2rdisk2と書くと何倍だったか速いそうです。
ブロックサイズ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操作編~

1
3
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
1
3