環境センサー(WxBeacon2/Omron 2JCIE-BL01)編
1. まえがき
前回でスマートホームの核となるホームオートメーションサーバHome Assistantの導入はできました。 maky-ba.hatenablog.com
次は家の状況を把握するセンサーを設定します。 いろいろなセンサーがありますが、今回はOMRONの環境センサーを使います。 複数の環境センサーと接続して情報を一元的に記録したいので、センサーデータを受け取るセンサーデータ収集サーバをHome Assistantとは独立して構築します。
まずは収集サーバとなるRaspberry Pi Zero Wをセットアップします。既に設定済みのRaspberry Piがあるなら不要です。
- 前編:収集サーバとなるRaspberry Pi Zero Wをセットアップ(この記事)
- 中編:環境センサー(OMRON)からデータを収集
- 後編:Home Assistantでのセンサーセットアップ
→改訂版あります。
- 環境センサー(WxBeacon2/Omron 2JCIE-BL01)編
- 1. まえがき
- 2. 準備
- 3. センサーデータ収集サーバのセットアップ
- 4. つづく
2. 準備
種類 | 品名 | 入手先 |
---|---|---|
環境センサー | weathernews WxBeacon2 | ウェザーニューズで購入。中身はオムロン 2JCIE-BL01 |
サーバ(ハード) | Raspberry Pi Zero W | サイズを重視して今回はPi Zeroを購入。私はマルツで購入しましたが、あっちこっちで買えます |
サーバ(ソフト) | Raspbian Buster*1 Lite | https://www.raspberrypi.org/downloads/raspbian/ |
ACアダプタ | 2.0A USB Micro-Bコネクタ出力 | Raspberry Pi Zero Wは、Pi3 model B+ほど電流を必要としません。 |
SDカード | microSD 32GB | FAT32でフォーマットされている必要あり |
3. センサーデータ収集サーバのセットアップ
3.1. ディスプレイ/キーボード/有線LAN無しでRaspberry Pi Zero Wを使う準備
- Raspbian image (Raspbian Buster Lite) をサイトからダウンロード。Home Assistantの導入でも使ったEtcherでmicroSDにRaspbian imageを書き込み。
- そのmicroSDをもう一度PCに刺し直して、そのルートディレクトリ(ドライブ名:boot)にsshという空ファイルを作る(Windowsならエクスプローラで右ボタンでtextファイルを作り、拡張子txtを削除。Linuxならtouchコマンドかな)。これで再起動時にsshで接続できるようになる。
- 無線LANを使えるように、microSDのルートディレクトリ(ドライブ名:boot)にwpa_supplicant.confを作成。
country=JP ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="<接続する無線LANのSSID>" psk="<暗号化キー>" }
3.2. WSL(Windows Subsystem for Linux)を設定
Windows10からssh接続をするためにWSL*2を設定する。 設定済み、もしくはterminalソフトからssh接続する場合には読み飛ばしてOK。
1) WSL機能を有効にする:
「コントロールパネル」→「プログラムと機能」→「Windowsの機能の有効化または無効化」→「Windows Subsystem for Linux」にチェックを入れ有効化する。
2) Microsoft StoreからWSLパッケージをインストール:
WSLとしてはUbuntuが情報が多くメジャーだが、他のDebian等のLinuxディストリビューションもあるので、慣れているものがあればそれを使うべし。私はUbuntuを入れました。
3) WSL初期設定:
Windows左下の検索窓からbashを検索し(以前に古いubuntuを入れているとBash on Ubuntu on Windows(デスクトップアプリ)が検索結果にでるかも)、それをクリックし起動。初回は初期設定で少し待たされる。UNIX usernameとUNIX passwordの設定を要求されるので、自分の好きなように設定する。
... Enter new UNIX username: hass01 Enter new UNIX password: hoge Enter new UNIX password: hoge passwd: password updated successfully ...
3.3. Raspberry Pi Zero W起動後の初期設定
1) Raspberry Pi Zero Wの起動
- microSDをRaspberry Pi Zero Wに挿入し電源(micro USB)をつなぐ。
- LEDの点滅が落ち着くのを待ってから、IPアドレスをFing(1. RaspberryPiにHome Assistant導入を参照)で確認する。
2) ssh接続
$ ssh pi@<Raspberry Pi Zero WのIPアドレス>
パスワードを聞かれたら、raspberryと入力のこと。上手くいけば下記の様にRaspberry Pi Zero Wにログインできるはず。
pi@raspberrypi:~ $
もしCredentialがうんたらかんたら言われたら、表示された説明にあるようにssh-keygenで削除しておくこと。初回接続では出ないはず。
3) Raspbian (Buster) Liteの初期設定
ログインしたらRaspbianの初期設定をしておく。
$ sudo raspi-config
- 1. Change User Password:
- 新しいパスワードを入力
- 2. Network Option:
- "N2 Wi-fi"で、SSIDとPassPhrase(Wifiの暗号化キー)を入力
- 4. Localization Option:
- "I1 Change Locale"で、en_US.UTF-8 と ja_JP.UTF-8 を選択(en_GB.UTF-8は外しておこうか)。選択はスペースバーで。Default localeには、jp_JP.UTF-8を指定
- 4 Localization Option:
- "I2 Change Timezone"で Asia/Tokyoを選択。
- 4 Localization Option:(キーボードを繋いだ時には)
- "I3 Change Keyboard Layout": Generic 105 (intel) PCを選択
- 5 Interfacing Options:
- “P2 SSH” でonにする
raspi-configを< FINISH >で終了したら、まずは/etc/wpa_supplicant/wpa_supplicant.conf の設定を確認するために、nanoエディタを起動。 (Ctrl-O:ファイル書き込み、Ctrl-X:エディタ終了)
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
wpa_supplicant.confの中身は下記の通りになっているはず。
country=JP ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="<接続する無線LANのSSID>" psk="<暗号化キー>" }
一応、無線LANインタフェースも設定しておく
$ sudo nano /etc/network/interfaces.d/wlan0
wlan0の中身は下記の通り
allow-hotplug wlan0 iface wlan0 inet manual wireless-power off wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
4) WiFiの自動再接続
電波の状況やルータの状況により、ルータとのWiFi接続が切れたときに、Raspberry Piがルータに再接続出来ないことがある。 (時々勝手に回線切断される症状が出たときは、これで改善された)
$ sudo nano ~pi/reconnect.sh
#! /etc/bash router_address="<ルーターのIPアドレス>" ping -c 1 $router_address > /dev/null 2>&1 if [ $? -ne 0 ]; then sudo ifconfig wlan0 down sudo ifconfig wlan0 up fi
定期的(毎分)に上記スクリプトを起動して、Wifi接続状況を確認し、切断されていたら再接続するようする。cronの機能でこれを実現する。
$ sudo crontab –e
立ち上がったcrontab編集画面(初回に使用するエディタを選択する。nanoが推奨)でcronetabで定期起動を設定。『#』でコメントアウトされている行を下に見て行って、最後の空白行に、下記の一行(毎分(毎時 毎日 毎月 毎曜日)にreconnect.hを起動する設定)を追記。
* * * * * bash ~pi/reconnect.sh
5) Raspberry Piの固定IP化
『1. RaspberryPiにHome Assistant導入』と同じように、Fingを使ってRaspberry Pi Zero WのIPアドレス/MACアドレスを探し、ルーターの機能で手動割当(固定IP化)する。
6) 再起動
変更を有効にするために再起動
$ sudo shutdown –r now
もしくは
$ sudo reboot
3.4. ソフトの最新化・インストール
1) Raspbianの最新化
再度Raspberry Pi Zero Wにssh接続して、忘れないうちにRaspberry Pi Zero Wに入れたRaspbianを最新のものにする。しばらく待たされるので気長に。
$ sudo apt-get update ... $ sudo apt-get upgrade ... (途中で確認プロンプトが出るが[y]とする)
2) Git cloneを使えるようにする
OMRONのPythonコードはGitに公開されているので、Git Hub上の公開リポジトリをダウンロードできるようにする。
$ sudo apt-get install -y git
3) pipのインストール
Pythonをメイン言語としてセットアップしてゆきたいのだが、pip(Pythonパッケージのインストーラ)がRaspbianにインストールされていない。 ちなみに下記のようにpipを確認すると、
$ python -m pip -V /usr/bin/python: No module named pip
そんなモジュールない、って言われる。入れましょう。
$ sudo apt-get install -y python-dev $ sudo apt-get install -y python-pip $ sudo pip install --upgrade pip
4. つづく
これで環境センサーデータ収集サーバの土台はできました。つぎは、OMRONのサンプルスクリプトを流用して、データ収集サーバをつくります。
【Home Assistant(Hass.io)でホームオートメーション】
- RaspberryPiにHome Assistant導入
- Home Assistant初期設定
- 環境センサー(Omron)を接続
- 環境センサー(Omron)を接続 - 前編《今回》
- 環境センサー(Omron)を接続 - 中編《次回》
- 環境センサー(Omron)を接続 - 後編
- 汎用赤外線リモコンを接続
- スマートプラグを接続
- UIを改善