環境センサー(WxBeacon2/Omron 2JCIE-BL01)編
(注:一度公開しましたが、UIの設定、特にカスタイマイズ(Customize)の扱いなどが古いやり方だったので、新版に差し替えました)
さらにInfluxDBを独立させたり、最新のUIで設定したりと、改訂版が下記。 maky-ba.hatenablog.com
前回はRaspberry Pi上に環境センサー(WxBeacon2/Omron 2JCIE-BL01)からデータを収集する仕組みを構築しました。 influxDBに蓄積されたデータをHome Assistantからアクセス・表示できるようにしましょう。
- 前編:収集サーバとなるRaspberry Pi Zero Wをセットアップ
- 中編:環境センサー(OMRON)からデータを収集
- 後編:Home Assistantでのセンサーセットアップ(この記事)
1. 前提
下記のバージョンを前提とした手順です。 (最新版では動かないこともあるかもしれませんが、私が使っている限り、備忘録を兼ねて最新化してゆきたいとは思っています)
- ホームオートメーションサーバ(ソフト): Home Assistant 0.99.3
(環境センサーの設定を詰めている間に0.95.xから0.99.xまでバージョンが進みました。画面デザインは少し変わりましたが同じように使えます) - ホームオートメーションサーバ(ハード): Raspberry Pi 3 Model B+
2. 観測データをHome Assistantで利用する設定
以前設定した時とは少し異なりますが、Home AssistantでUIを使うには、「Configuration.yamlの記述」(この章の下のYAML, Basic Information, Setting up devicesあたり)、次に「エンティティのカスタマイズ」(このあたりかな)、そして「UIの設定(GUIでの設定)」が必要です。
2.1.Configuration.yamlの記述
まずは呪文です。この宣言文は、Home AssistantのDBとしてinfluxDBにデータを「書き込む」ためのもので、環境センサーの蓄積されているinfluxDBから「読み込む」場合には本来不要なものです。 しかしながら、どうやらinfluxdbのコンポーネントにはBugがあり、これを書いておかないと再起動時に「influxDBのConfigurationが間違っています」って言われて正常に作動しません。
(前略) # influxdb influxdb: host: !secret influxdb_host (後略)
influxdbサーバのIPアドレスをconfigurationファイルから隠蔽したり、APIキーやユーザ・パスワードを隠ぺいしたりする簡単な機構(それほどセキュリティレベルがあがるわけではない…)があります。 configuration.yamlに!Secretと書いて、その実態をsecrets.yamlに記述するのです。例えば、上記の様にinfluxDBのサーバのIPをconfigファイルに直書きしない場合には、下記の様にSecrets.yamlファイルを記述します。
# Use this file to store secrets like usernames and passwords. # Learn more at # https://home-assistant.io/docs/configuration/secrets/ # influxdb influxdb_host: 192.168.xx.xx
次に、influxDBに蓄積されたデータをHome Assistantからアクセスできるように設定します。 Home Assistantから見れば「Sensor」扱いなので、Sensor: ブロックの中に追記します。 下記は、屋外に設置したWxBeacon2のデータをlast_value_outside_xxxxxとして読み込む設定です*1。
(前略) # Sensor sensor: # Server (Raspberry Pi 3+) info (以前設定したもの(CPU温度)) - platform: command_line (中略) # Envsensor(OMRON 2JCIE-BL01 / WxBeacon2) data in influxDB - platform: influxdb host: !secret influxdb_host queries: # Envsensor - Outside - name: last value of outside temp unit_of_measurement: ℃ value_template: '{{ value | round(1) }}' where: '"bt_address" = ''DExxxxxxxxxx'' and time > now() - 5m' measurement: 'wxbeacon2' field: temperature database: weather - name: last value of outside light unit_of_measurement: lux value_template: '{{ value | round(1)}}' where: '"bt_address" = ''DExxxxxxxxxx'' and time > now() - 5m' measurement: 'wxbeacon2' field: light database: weather - name: last value of outside pressure unit_of_measurement: hPa value_template: '{{ value | round(1)}}' where: '"bt_address" = ''DExxxxxxxxxx'' and time > now() - 5m' measurement: 'wxbeacon2' field: pressure database: weather - name: last value of outside humidity unit_of_measurement: '%' value_template: '{{ value | round(1)}}' where: '"bt_address" = ''DExxxxxxxxxx'' and time > now() - 5m' measurement: 'wxbeacon2' field: humidity database: weather - name: last value of outside noise unit_of_measurement: 'db' value_template: '{{ value | round(1)}}' where: '"bt_address" = ''DExxxxxxxxxx'' and time > now() - 5m' measurement: 'wxbeacon2' field: noise database: weather - name: last value of outside battery unit_of_measurement: V value_template: '{{ value | round(1)/1000}}' where: '"bt_address" = ''DExxxxxxxxxx'' and time > now() - 5m' measurement: 'wxbeacon2' field: battery database: weather (後略)
configuration.yamlファイルを編集したら、左のサイドバーから[設定]を選び、[Server Control] --> [Configuration Validation]の[CHECK CONFIG]ボタンを押して設定ファイルの書式のチェックをします。
2.2. エンティティのカスタマイズ
このままだと表示されるのはエンティティの名前が英語名(例:last value of outside battery)のままであったり、アイコンがすべてセンサーアイコン(目のやつ)になったりするので編集が必要です。 サイドバーから[設定] --> [カスタマイズ] と進み、エンティティのカスタマイズ画面を出します。
上記の設定内容は下記のとおりです。
- Entity: 編集したいエンティティをドロップダウンリストから選ぶ
(ex: last value of outside battery (sensor)) - Name: UI上の表示名。エンティティ名自体の変更では無く、多分friendly_nameの設定だと思います
(ex: 電圧(屋内)) - Pick an attribute to override: 他の属性(アイコンとか)を変更できます。
(ex: attriburte = icon, value = mdi:battery)
繰り返し、設定してゆきます。設定結果は/config/customize.yaml
に設定されます。
sensor.last_value_of_inside_pressure: friendly_name: 気圧(屋内) icon: mdi:altimeter sensor.last_value_of_outside_pressure: friendly_name: 気圧(屋外) icon: mdi:altimeter sensor.last_value_of_inside_temp: friendly_name: 気温(屋内) icon: mdi:thermometer sensor.last_value_of_outside_temp: friendly_name: 気温(屋外) icon: mdi:thermometer sensor.last_value_of_inside_humidity: friendly_name: 湿度(屋内) icon: mdi:water-percent sensor.last_value_of_outside_humidity: friendly_name: 湿度(屋外) icon: mdi:water-percent sensor.last_value_of_inside_light: friendly_name: 照度(屋内) icon: mdi:lightbulb sensor.last_value_of_outside_light: friendly_name: 照度(屋外) icon: mdi:lightbulb sensor.last_value_of_inside_battery: friendly_name: 電圧(屋内) icon: mdi:battery sensor.last_value_of_outside_battery: friendly_name: 電圧(屋外) icon: mdi:battery sensor.last_value_of_inside_noise: friendly_name: 騒音(屋内) icon: mdi:volume-high sensor.last_value_of_outside_noise: friendly_name: 騒音(屋外) icon: mdi:volume-high
念のため、左のサイドバーから[設定]を選び、[Server Control] --> [Configuration Validation]の[CHECK CONFIG]ボタンを押して設定ファイルの書式のチェックをします。 書式上の問題が無ければ、同じページ[Server Control] --> [Server Management]の[RESTART]リンクをクリックし、Home Assistantを再起動させます。
2.3. UIの設定
左のメニュー(サイドバー)から[状態]を選び、その中の右端のベルマークの右の縦三つ点から[Configure UI]をクリック。
編集画面の右下のオレンジプラスマークからCard ConfigureでカードタイプEntitiesを選んで編集します。
上のconfiguration.yamlで設定したlast_value_of_outside_xxxxxx (configuration.yamlでスペースだったところは、_(アンダースコア)になってます)をエンティティに登録してゆきます。
これでHome Assistantに取り込まれたデータを表示できるようになります。
右側のプレビュー画面のように、カスタマイズで設定した表示名、アイコンが反映されています。
ちなみに編集画面の下の方にある「{}」をクリックすると、エディタ形式での編集画面になります。 icon: やname:といった編集を追加して記述すると、表示名やアイコンをカスタマイズしたものから更に上書き設定できます。
4. 家のセンサー配置図
今、2台あるWxBeacon2の配置は下記の様になっています。
- S1: 屋外用のWxBeacon2:防水とは言え雨ざらしはまずいと思うので、電気メータ―の格納箱の空きスペース*2によろい戸(?)なども百均の部材で作って百葉箱的に仕上げました。
- S2: 屋内用WxBeacon2:ダイニングの壁に設置。
- R1: 環境センサーサーバ:外のセンサーとの交信が弱いので、電気メータ―に近い洗面所にサーバを置くことに。洗面台の鏡の裏側のコンセントを使ってRaspberry Pi Zero Wサーバを設置。
屋内外のセンサーを追加するとUIは下のようになります。
5. おわりに
スマートホームはロボットのようなものだと思っています。 センサーを使って周囲の「情報を把握」し、情報を基に「判断」し、何らかの手段で「外界に働きかける」というのがロボット的ですね。 まず第一段階の状況を把握(と言っても気温、とかですが…)ができるようになりました。 次の段階は「外界に働きかける」を準備し、最終的に「情報の把握」と「外界への働きかけ」を繋げる「判断」を導入しましょう。 外界の働きかけの一例として、汎用赤外線リモコンでシーリングライトをオンオフしてみましょう。
【Home Assistant(Hass.io)でホームオートメーション】
- RaspberryPiにHome Assistant導入
- Home Assistant初期設定
- 環境センサー(Omron)を接続
- 環境センサー(Omron)を接続 - 前編
- 環境センサー(Omron)を接続 - 中編
- 環境センサー(Omron)を接続 - 後編《今回》
- 汎用赤外線リモコンを接続《次回》
- スマートプラグを接続
- UIを改善