6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

qnoteAdvent Calendar 2020

Day 11

脱クラウドスマートリモコンを作ってみた。

Last updated at Posted at 2020-12-10

背景

最近、AWS障害が起きたため、スマートホームを提供するサービスを含め、様々なサービスに影響がありました。

外出先でも操作可能なようにクラウドに頼るのはいいですが、
サーバ障害が原因で在宅でも操作できない状態には少し疑問がありますね。
万一サービス終了でサーバが止まり、スマートデバイスが文鎮化するのも嫌です。
そこで、特定のクラウドサーバに頼らないスマートホームを作ってみました。

Tasmota

脱クラウドスマートリモコンを作るには、Tasmota という Arduino ESP8266 デバイス向けのIoTファームウエアを使います。Tasmotaを入れると、Wifi経由でデバイスの操作が可能になります。

ハードウエアを用意

Tasmota はカスタムファームウエアであるため、デバイスの購入がし辛いです。
そこで、既存のデバイスのファームウエアを上書きするか、パーツを購入して自分で組み立てるかの2択しかないです。

既存デバイスのファームウエアを書き換える

一部中国メーカのスマートデバイスは、Tasmota ファームウエアに書き換えることができます。
ポイントは、「Smart Life」または 「TUYA」というアプリで操作するデバイスが対象です。
Amazon または AliExpress で「スマートリモコン tuya」を検索すればすぐ出るので、探してみてください。

2000円弱で買えるし、見た目はDIYより全然綺麗なので、こちらの方がオススメです。
ただ、TUYAの新しいパッチが適用されていると、デバイスの書き換えができなくなるため注意が必要です。

ちなみに、こちらのスマートリモコンをAliExpressで買いました。
https://www.aliexpress.com/item/32986913713.html
B1B8C47E-84D5-42F7-88C5-904DD4F8E867.png

Tasmota に書き換えるために tuya-convert を使います。
書き換えるデバイスリストはこちらをご参照ください。

DIY

ESP8266 Node MCU と 赤外線受発信モジュールで実現できます。
パーツの詳細、作り方に関しては Tasmota のドキュメンテーションを参照してください。

Tasmota を設定

Wifi 設定

初めに、デバイスをAPにしてWifiの設定が必要です。
Wifiメニューで「tasmota-XXXX」のネットワークに接続してください。
image.png

ブラウザは自動で開きますが、そうになっていない場合は http://192.168.4.1 を開けば以下のようなフォームが出てきます。
image.png

自分のWifiのSSIDとパスワードを入れます。
少なくても AP1 SSIdAP1 Password を入力してください。
※ 2.4GHz Wifi にしか接続できないのでご注意。

保存して、デバイスを再起動させます。
Wifiに接続できたらWifiメニューから「tasmota-XXXX」の項目が消えます。

テンプレートを設定

テンプレートはハードウエアの構成を定義する物です。
設定するには、まずIPアドレスでデバイスにアクセスします。
IPアドレスは、ルーターから調べるか、Advanced IP ScannerFingなどで特定すればいいです。
Screen Shot 2020-12-09 at 18.png

「Configuration」>「Configure Other」で設定をします。
スマートリモコンは、おそらく以下のテンプレートで行けると思います。

{"NAME":"IR Smart Remote","GPIO":[255,255,255,255,56,51,0,0,0,17,8,0,0],"FLAG":0,"BASE":62}

保存して、デバイスを再起動させます。

赤外線を受信

6F68198E-7BA4-4ECB-B290-512499EE9410.png
メインメニューが表示されたら、「Console」を開いて、試しに赤外線を放ちます。
リモコンをスマートリモコンに向けてボタンを押したら、こういうメッセージが出ます。
Screen Shot 2020-12-09 at 18-2.png

00:00:56 MQT: tele/IR_Bridge/RESULT = {"IrReceived":{"Protocol":"NEC","Bits":32,"Data":"0x41B6659A","DataLSB":"0x826DA659","Repeat":0}}

これで赤外線の受信ができています。

赤外線を発信

コンソール下部の入力欄にコマンドを打ちます。
赤外線を発信するために IRSend というコマンドを使います。
先程受信した赤外線を発信するためには、以下のコマンドを入力します。

IRSend {"Protocol":"NEC","Bits":32,"Data":"0x41B6659A"}

家電が近くにあれば反応します。
これでTasmotaの設定完了です。

綺麗なUIを導入

毎回手動で赤外線のコードを入力するのはとても不便なので、
その間に入る Home Assistant というスマートホーム管理アプリを入れます。

Home Assistantを入れる

入れる手順はいくつかあるので、自分に合う方法で入れてください。
自宅サーバはすでにdockerをつかっているため、docker版(Home Assistant Container)を入れました。
Raspberry Piを持っている方は、Home Assistant OS が一番簡単だと思います。

MQTTサーバを入れる

Home Assistant と Tasmota デバイス間で通信するためのメッセージキューシステムです。
Home Assistant OS を使っている場合は拡張機能で簡単に入れられます。
Docker イメージも用意されています。

Docker Compose を使っている方は、以下のYAMLで Home Assistant と、 Mosquitto という MQTTブローカーを立ち上げます。

docker-compose.yml
version: “2”
services:
  mosquitto:
    image: eclipse-mosquitto:1.6
    container_name: mosquitto
    volumes:
      - ~/appdata/mosquitto:/mosquitto
    ports:
      - 1883:1883
    restart: unless-stopped

  homeassistant:
    image: homeassistant/home-assistant:stable
    container_name: homeassistant
    network_mode: host
    env_file: common.env
    volumes:
      - ~/appdata/homeassistant:/config
    ports:
      - 8123:8123
    restart: unless-stopped

Tasmota の MQTT コンフィグを設定

スマートリモコンのメインメニューから「Configuration」> 「Configure MQTT」に遷移し、MQTTブローカーのIPアドレスを Host として設定します。
ブローカーにユーザーとパスワードを定義したらこちらにも入力が必要です。
PNG image 2.png

Home Assistant コンフィグを設定

Home Assistant のYAMLファイルに、例として照明を追加します。

configuration.yaml
light:
   - platform: mqtt
     # 自分に分かりやすい名前をつける
     name: Room Light
     # トピックは必ずTasmotaに設定したトピックと一致する
     command_topic: cmnd/IR_Bridge/IRSEND
     # 照明を付ける赤外線コード
     payload_on: '{"Protocol":"NEC","Bits":32,"Data":"0x41B645BA"}'
     # 照明を消す赤外線コード
     payload_off: '{"Protocol":"NEC","Bits":32,"Data":"0x41B67D82"}'
     # デバイスから返事を待たずにUIに反映するかどうか。
     # 赤外線は返事が来ないので基本的 true
     optimistic: true

必要に応じ項目を定義して、Home Assistant のダッシュボードをカスタマイズするとこういう感じのUIが実現できます。
PNG image 4.png

出来上がり

Home Assistant は、1700以上のインテグレーションが対応しており、Philips Hue など既存のスマート家電を導入することができます。
全てHome Assistantにまとめると、一つのアプリで全てのスマートデバイスを操作できるようになります。
PNG image 3.png

おまけ

HomeKit と連携

HomeKit インテグレーションにより Home Assistant で定義したデバイスを HomeKit に追加できます。
9042C1C4-32B1-4593-A582-64256F1E5E8C 2.png

毎晩ベッドで横になってから「Hey Siri、電気全部消して」という発言をして、幸せを感じています。

最近 HomePod mini も買ったので、外出しても操作可能になり、位置ベースのオートメーションも動かせるようになりました。 

既にTasmotaが入っているデバイスが買えるかも?

最近 Tasmota が既に入っているデバイスが売っている通販サイトができました。
現時点スマートリコンはまだないですが、スマートライト、スマートコンセントは持っているようです。

6
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?