【スマートホーム】Home Assistantで電気や暖房をPC/スマホ/タブレットから操作する

2018年7月8日Home AssistantHome Assistant, スマートホーム, iremocon, IoT

スマートリモコン(スマートフォンやPCから操作することが出来る万能リモコン)はいくつか発表されているが、私は昔から「iRemocon Wi-Fi」を使用している。今は「nature remo」などが有名であるが、私がこの商品を選択したときにはこの全身である「IRkit」が売り切れており、かつ「iRemocon WiFi」はゼロスタートプランというレンタルサービスを行っていたからである。
iRemocon Wi-Fiは、Amazon Echoへの対応も発表しており、比較的安定して動作している。

今回はそんなiRemocon Wifiを、Home Assistantと連携させてあげよう。もちろん、IR KitやNature Remoでも同じことができるはず。

Glamo iRemocon WiFi (アイリモコンワイファイ) IRM-03WLA

Glamo iRemocon WiFi (アイリモコンワイファイ) IRM-03WLA

22,400円(11/09 06:44時点)
Amazonの情報を掲載しています

iRemocon Wifiをコマンドで操作する

iRemocon Wifiはtelnetで接続するとコマンドを受け付ける仕様となっている。今回は、Home Assistantで「ボタンをおすたびにtelnetでiRemocon Wi-Fiに接続し、コマンドを送信してtelnetを終了する」を実装する。

なお、telnetでの操作方法は下記を参考としていただきたい。

iRemocon Wi-FiにWindowsのコマンドプロンプトから接続して操作する方法
iRemocon Wi-Fiを「IRM-03WLAコマンド仕様書」に従って、Windowsのターミナルからコマンド操作する方法です。

シェルスクリプトを配置する

動作を簡単にするために、「ボタン番号を受け付けたら、その番号をiRemocon Wi-Fiに渡す」という簡単なシェルスクリプトを作成しよう。配置する場所は/config/配下など、どこでも構わない。

上述の参考記事の通り、telnetでiRemocon WiFiの51013ポートに入ったあと、

is;[リモコン番号]

を打てば問題ない(リモコン番号はUIデザイナーから取得することが出来る)。なので、シェルスクリプトに書き起こすと次のようになる。

#!/bin/bash
command=$1
(echo is\;${command}) | telnet [iRemoconのIPアドレス] 51013 >/dev/null 2>&1
exit 0

非常に単純だが、このシェルスクリプトに対してリモコン番号を引数としてあげると、そのリモコン番号がiRemoconに渡され、実行される。

Home Assistantに設定する

Home Assistantからは、このシェルスクリプトを「Command Line Switch」として扱う。

Command line Switch
Instructions on how to have switches call command line commands.

この仕様に従ってconfiguration.yamlを書いていこう。なお、今回は「Hass.io」を用いてHome Assistantを構成していることを前提として記載するが、スタンドアロンなHome Assistantを導入していても同じ手順で実装可能。

configuration.yamlの書き方

テンプレートを書いてしまうと、つぎのような形になる。

switch:
 platform: command_line
 switches:
  [名前1]:
    command_on: "コマンド"
    command_off: "コマンド"
    friendly_name: "分かりやすい名前"
  [名前2]:
    command_on: "コマンド"
    command_off: "コマンド"
    friendly_name: "分かりやすい名前"

先ほどのシェルスクリプトが「/config/iremocon.sh」という名前で配置されていたら、次のような書き方となる。

switch:
  platform: command_lin
  switches:
    mainlight:
      command_on: "bash /config/iremocon.sh 350"
      command_off: "bash /config/iremocon.sh 351"
      friendly_name: 電気
    tv:
      command_on: "bash /config/iremocon.sh 1"
      command_off: "bash /config/iremocon.sh 1"
      friendly_name: テレビ
    hot:
      command_on: "bash /config/iremocon.sh 304"
      command_off: "bash /config/iremocon.sh 313"
      friendly_name: 暖房
    cold:
      command_on: "bash /config/iremocon.sh 302"
      command_off: "bash /config/iremocon.sh 313"
      friendly_name: 冷房
    nohum:
      command_on: "bash /share/remocon.sh 308"
      command_off: "bash /share/remocon.sh 313"
      friendly_name: 除湿
    audioamp:
      command_on: "bash /config/iremocon.sh 60"
      command_off: "bash /config/iremocon.sh 60"
      friendly_name: オーディオ

オンとオフが同じボタンで行われるものは、同じ番号を設定している。
上記の内容で保存し、Home Assistantを再起動すれば良い。

hassio homeassistant restart

動作

グループの設定やカスタマイズの設定をしているので下記と全く同じようにはならないと思うが、Home Assistantの画面に登場しているのが分かるだろう。

これで、Home Assistantの画面上から操作するとiremocon Wifiにコマンドが送信され、自由自在に家電を操れるようになる。

※Home Assistant特集はこちらから。

執筆者紹介

Thir

最新のガジェットを購入してはレビューする、を繰り返しています。このブログでは、ガジェットの紹介のほか、各種サーバーやスマートホームの構築などを提供しています。最近はYouTubeでもレビュー動画やVlogをあげています。(プロフィール