スマートスピーカーの普及で、すっかり一般家庭に定着した自宅家電のオートメーション化なのですが、今回は学習リモコンと連携したホームコンピュータを立ち上げていきます。
今回は仕事部屋天井にあるシーリングファン&ライトをコントロールするのが目的。DCモーターが無音過ぎて電源が入っていても全く音がしなく切るのを忘れることがあったり、暑すぎ・寒すぎの時に自動で回って室温を調節してほしいので、この自動化がゴール。まずは接続できるところまで進めます。
過去にも構築した「Home Assistant」というのを利用します。
■(過去記事)Google Home で、さらにその先へ。家電のオートメーション化でなんかすごい SF チックな自宅に
RaspberryPi が2個あり1個余っていたので、そちらにインストールしていきます。
インストール手順は公式がとても詳しく、書いてある通りにやるだけ
■Installing Hass.io(英語)
https://www.home-assistant.io/hassio/installation/
イメージからSDカードに焼いてしまえば、あっという間に構築できます。
ただ、Home Assistant 専用機になってしまうため、今回は Raspbbery Pi 上の Docker に Home Assistant を構築し両方の環境を使用できるようにします。
普通に ラズパイを構築し、手動でインストールします。
■Installation on Docker(英語)
https://www.home-assistant.io/docs/installation/docker/
sudo apt-get install -y bash socat dbus apparmor-utils avahi-daemon apt-transport-https ca-certificates curl dbus jq network software-properties-common
curl -sSL https://get.docker.com | sh
curl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install | bash -s — -m raspberrypi3
「[Info] Run Hass.io」表示を確認
docker ps コマンドで動作しているかも確認
ブラウザにRaspberrPi の IPとポート 8123 でアクセス。
約30分ほどでログイン画面が開き、そこで初期設定ができる。アクセスできなかったらそのまま放っておくと、いつのまにか画面が開いている。インストールここまで。
シーリングライトのコントロールは付属の IRリモコンの信号を学習ネットワークリモコンに記憶させて行います。
まずは RaspberryPi から telnet で接続して疎通しているか確認。
・・・動いてない。bash のインストールに失敗してるっぽい。
Docker にアクセス
sudo docker exec -it homeassistant /bin/bash
apk update; apk add busybox-extras
で busybox を試してみたところ、動作した。
sudo apt-get install busybox
再起動して、bash が走りコントロールできることを確認。
これがシーリングファン&ライトに付属するリモコン。7個ボタンがあるので、それぞれのボタンを押したときに発信される赤外線信号をキャプチャし、ネットワークリモコンに学習させていきます。
今回は、iRemocon を使用します。新型も持っているのですが、旧型が転がったまま使っていないので。
iRemocon には UI を自分の環境に合わせて自由にカスタマイズできる「UI デザイナー」が提供されており、これが他の競合製品にはないポイントになっています。自分専用のリモコンを作っても操作画面がカスタマイズできなくては使い勝手悪いですからね・・・。外出先からのアクセスや音声操作が有料サービス化されているので正直にいうとそこまで魅力的な製品ではないのですが、だがしかし VPN やネットワーク、それにスマートスピーカーの知識がある人は無料のままフルに機能を使いこなすという寛容さがあります。メーカーさんありがとう。
公式サイトからログインし、カスタマイズします。
http://i-remocon.com/select-uidesigner/
7個のボタンを配置します。タブレットやスマホから、この画面を使って操作できるのですが、最終的にはスマートスピーカーから音声操作するので適当に作ります。
この UI を作る意味は正直無いのですが、これを作ることでリモコン番号がはっきりと把握できて、スクリプトが書きやすくなります。
具体的にはこの並びでリモコン番号を1~7に設定しています。
これで、telnet で接続した後に「is;1」とすると、リモコン番号1に記憶した IR 信号が発信されるという仕組みです。
UI を作った後に保存します。
自分のタブレットにインストールした iRemocon アプリを起動し、設定画面から UI を反映、それぞれのボタンにリモコンの信号を学習させます。これで iRemocon 側の設定は終わり。
HomeAssistant に iRemocon と連携するための設定を組み込んでいきます。
ネットを検索すると先人たちが既に作っているので、まずはそちらを利用しカスタマイズしていきます。
■【スマートホーム】iRemocon Wi-FiでHome Assistant用に照度・温度・湿度を取得する | web net FORCE
https://webnetforce.net/iremocon-wifi-get-humditiy_temp_lux/
僕は if [ $PARAM = “temp” ]; then のところを if [[ $PARAM = “temp” ]]; then と変更したぐらいでそのまま使えます。
Linux での改行コードにしないとエラー出るので注意。テキストエディタを使ったことが無い人は、vi などで直に書き込んでいけばうまくいくのですが余計難しいか。
実は旧型には温度などの環境数値の取得機能がなかったのですが、なんで動かないんだろ・・・とか思い悩んでしまった。しょうがないのでとりあえずリビングにある新型 iRemocon Wi-Fi に接続して温度・湿度・照度を取得しています。
現時点の温度も取得しますが、過去の温度なども記録されていくので、データとしていろいろ利用できます。
グラフ表示もできます。この画像は温度を表示したもの。すごくグラフが上下しているのですが、ウチは高気密・高断熱住宅なので実は温度があまり変わりません。温度があまり変わらないのでグラフ単位が細かく、29.0℃~29.8℃ の間で 1℃ の幅もないですね。
次はリモコン信号を発射する仕組みを作ります。
こちらも同じ方が作ってくださっているので、利用させていただきます。ありがたい。
【スマートホーム】Home Assistantで電気や暖房をPC/スマホ/タブレットから操作する
https://webnetforce.net/home-assistant-iremocon-wifi/
configuration.yaml に粛々と設定を書いていくのですが、公式に充分な量のドキュメントが用意されているので分かりやすいです。
Command line Switch(公式・英語)
https://www.home-assistant.io/components/switch.command_line/
画面上部に温度などの情報や設定したスイッチが終了されたら成功。以降、この画面からリモコンの ON・OFF ができるようにまります。
つまり、この HomeAssistant から時刻になったら電源ON・OFFや、温度条件に合わせて操作できるということです。
とりあえず接続までの設定は、ここまで。
コメント