2019年03月31日

【ガジェット】なんちゃってスマートホーム

こんにちは。

スマートプラグ購入をきっかけに自宅(単身者向けワンルームマンション)をスマートホーム化することに最近ハマってます。 当ブログのコンセプトに相応しく、にわか興味です。
現在の構成などをつらつらと書いていきますが、それぞれの詳細を割愛したざっくり説明のみに留めます。
当記事で挙げるメソッドのほぼ全ては、先達のみなさんがネット上に公開してくれているものをパクっただけですので、詳細は適当にググってみてください。

    
  
   

スマートデバイス

我が家には気の利いたスマート家電は1つもありません。
なので既存の家電をスマート化するために以下のデバイスを購入しました。
ちなみに何をもって「スマート」なのかは私自身よく分かってませんが、たぶんネットワークに繋がってる、つまり巷で噂の「IoT」なものを指すんだろうと解釈しています。

  • スマートプラグ
    2台購入してそれぞれ電気ストーブと加湿器を接続しています。
    スマートプラグ自体は壁のコンセントの通電をON/OFFするだけですが、遠隔操作・タイマ操作を既存の家電にプラスできるのでとっても便利です。
    製品:Meross Smart Plug Type B(Type Bは日本の一般的なコンセントで使える仕様らしいです)

  • スマートロック
    玄関の内側に取り付けて鍵(サムターン)を回して開閉してくれるロボットのようなものです。
    こちらも遠隔操作やオートロック機能も付加できて、スマホ1つあれば従来の物理鍵は不要となります。
    製品:CANDY HOUSE Sesame mini (クラウドファンディングMakuakeで出資しました)

  • スマートリモコン
    学習リモコンは昔からありますが、これをインターネットに接続したものとお考えください。
    リモコンがスマート化することで、やはり遠隔操作が可能になります。
    タイマではなく外出先から任意のタイミングでエアコンをON/OFF出来たら便利そうでしょ?
    製品:Nature Remo Gen2(他社製もお試しで使ってみましたが一番分かりやすし使いやすかったです)



    WEBサービス

    さて、ネットに繋がった家電の何が便利になるかと言えば、代表格はスマホを使った外出先からの遠隔操作ということになるでしょう。  それだけなら各スマートデバイスがスマホアプリを用意してくれているので簡単に出来ます。  
    しかしそれぞれのスマホアプリでバラバラに操作するのも面倒です。
    例えば外出時にすべての家電をOFFにする操作をボタン1つにまとめるためWEBサービスを利用してみました。

    前提として、各スマートデバイスが遠隔操作を受け付ける方法を把握しておく必要があります。
    中には残念ながらその方法を非公開にし、専用スマホアプリからしか受け付けないよ!というスマートデバイスも存在するようですが、私が購入したスマートデバイスはすべてIFTTTトリガ/アクションもしくはWebAPIとして公開してくれていました。

    以下、試行錯誤を重ねてほぼ使用しなくなったサービスですが、試行錯誤の遍歴も兼ねて挙げていきます。

    • IFTTT
      さまざまな企業が扱うWEBサービスを中継してくれるWEBサービスです。
      A社のWEBサービスで何かしたら(トリガ)→B社のWEBサービスで何かする(アクション)という自動連携を簡単に実現できます。 両者間でデータの引き継ぎも出来ます。
      当初はiPhoneの「ショートカット」アプリから順次httpリクエストを送信し、IFTTTでそれを受けて(トリガ)、各スマートデバイスのIFTTTアクションを実行させる単純なフローを作りました。
      しかしIFTTTは非常に人気のあるサービスですのでサーバ負荷も高いと想像され、レスポンス速度に若干の難があるのがネックです。
      私もこのレスポンスの悪さが気になってきてしまい、今では限定的な用途でしか使っていません。

    • Integromat
      IFTTTの大幅な強化版とも言えるサービスです。
      IFTTTも「IFTTT Platform」という上位サービスを利用すれば通常より複雑な処理が出来るのですが、それでもいろいろと制約がつきまといます。
      IntegromatはこのIFTTT Platformの制約をほぼ無視できます。    
      各スマートデバイスのWebAPIを(IFTTTに頼らずに)直接呼び出すことで、レスポンスもかなり改善されました。
      ※私が購入したスマートプラグだけはWebAPI非公開でIFTTTアクションのみ公開されていましたので、ここは相変わらずIFTTT依存です。
      しかしIntegromatは無制限に使えるわけではありません。 無料枠で使える使用回数に制限があります。
      後述しますが私は単純に家電操作するだけでなく、ちょっと凝った仕組みを盛り込みたかったので、Integromatの無料枠を超えてしまうことが分かり、やはりこちらも今では使用していません。




    Amazon Echo

    スマートデバイスの多くがAmazon EchoやGoogle Homeといったスマートスピーカーに対応しています。
    はじめ私はスマートスピーカーに懐疑的でした。 天気予報と音楽流すくらいじゃねーの?と。
    しかしスマートデバイスを使用するようになると、なかなか無視出来ない存在になります。
    スマホを持って→スリープ解除し→「ショートカット」のボタンをタップするという一連の動作を、声掛けひとつで置き換えられます。
    いや、人によってはたったそんだけの手間惜しむのかよwwwと思うのでしょうけど、スマートスピーカが気になりだした矢先にちょうどAmazon Echo各モデルを半額で購入できるキャンペーンがあったので、「これはもう買えって言われてるようなもんでしょうw」ということで購入しちゃいました。 画面付きのAmazon Echo Spotです。
    というわけで、iPhone「ショートカット」アプリに作成したボタンのほぼすべてをAmazon Echo に置き換えました。
    置き換えましたと言っても、Amazon Echoにスマートデバイスを検出してもらって登録するだけです。 「ショートカット」アプチでチマチマとボタンを自作してた時間が何だったのかと思うくらい簡単です。
    Amazon Echoは、より正確にはAmazon Echoに搭載された音声アシスタントのAlexaは、マクロ機能にも対応していますので、たとえば「いってきます」の声掛けひとつで、すべての家電OFF+スマートロック解錠をまとめて実行できます。
    ・・・が、上述したとおり私はここにちょっと凝った仕組みを盛り込みたいと考えました。 そのおかげでまた少し出費が重なるのですが。


     

    トグル操作問題への対応

    ご自宅のエアコンのリモコンを確認してみてください。 電源ボタンは何個ですか?
    1つに決まってんだろ!と思われるかもしれませんが、スマートホーム化においてはこれがわりと悩みのタネになります。
    電源ボタンが1つということは、ONの時もOFFの時もリモコンからは同じ信号を送信していることになります。
    ON用ボタン・OFF用ボタンなどのように分かれていません。    
    付属リモコンをスマートリモコンに学習させたあとでもそれは同じで、スマホアプリ・Alexaアプリ上でもエアコンの電源ボタンは1つだけです。 
       
    ご自宅でペットを飼っていて、気温が高くなってきたのでワンちゃんの熱中症を防止するために、外出先からエアコンをONにしたい場合、運転状況を目視出来ない状況でどうすればいいでしょうか?
    もしすでにONで運転中だとしたら、外出先からONにするつもりでスマホアプリをポチることで、エアコンが止まってしまいワンちゃんは熱中症に・・・なんてことも。

    と、分かりやすい例えとしてエアコンを挙げましたが、実は最近のエアコンはON/OFFの信号がそれぞれ異なるので、この問題は発生し得ません(なんやねん!)
    ただしこれはエアコンが特別だからであって、例えばTVはどうでしょう。
    TVのON/OFFを取り違えたところでペットは死にませんが、OFFのつもりでずっと点けっぱなしになってしまったら電気代がもったいないですよね。

    そこで私は、独自にON/OFF状態を管理する仕組みを盛り込みました。
    エアコンのような動きは他の家電に期待できませんので、あくまで「さっき操作したのはON/OFFどっちだったか」を保存しておき、同じ操作が続けてリクエストされたら無視するという仕組みです。
    あくまで独立した記憶域に保存するので、家電の実際の運転状況と完璧に同期がとれるわけではありません。 なんらかの理由で同期がズレてしまえば元の木阿弥。 とはいえちゃんと機能してくれればとても便利な仕組みです。
    外出してから「あれ?テレビ消したっけ?」と悩まなくても、とりあえず「テレビをOFFにする」という意思さえ伝えれば、実際の運転状況がどうであれ、よしなにOFF状態にしてくれます。

    そしてこれをIntegromatで実現すると、いやすごく簡単にしかも分かりやすく出来てしまうのですが、上述したように処理過程が増加するほどに無料枠を圧迫していき、課金しない限りいずれすべての家電を巻き込んで使えなくなってしまいます。 この使えなくなるタイミングが、ある猛暑日のエアコンをONにしたい時だったら・・・ワンちゃーーーーーーん!



    Raspberry Pi

    Amazon Echoはマクロ機能が使えますがトグル問題に対応出来ません。
    Amazon EchoからIntegromatへ処理を遷移させるのは一筋縄ではいなかいうえに(IFTTT経由で簡単に遷移する方法もあるのですが、Amazon Echoへの声掛けが不自然なフレーズなる)、トグル問題に対応すると無料枠を超えてしまう可能性があります。
    そこで、Amazon Echoのリクエストを受け入れることが出来て、家電のON/OFF状況を保存できて、無制限に使えるIntegromatの代替WEBサービスを探してみました。
    ・・・が、ありませんでした。 私のなんちゃってスマートホーム化計画が本当になんちゃってで終わってしまいそうな予感。

    困ったときのGoogle先生。 さっそくアドバイスをもらいました。
    Node-REDというフロー作成ソフトウェアを使うとこれらすべてが一気に解決できることが分かりました。 
    Integromatのような処理を自宅環境で実現できます。
    Node-REDはNode.jsが動く環境ならどこでも使えるので、既に使っているWindowsマシンにもインスール可能です。
    ですが私の作りたいフローは常時待機が必須です。 Windowsマシンも大した用途に使ってるわけではないのですが、Windows10が走っているそこそこしっかりしたベアボーンパソコンなので、電気代を考えると常時起動は避けたいところ。

    そこで省電力なシングルボードコンピュータRaspberry Piの出番です。
    以前から存在は気になっていたものの、しっかりした用途をイメージできないと購入しようとは思いません。
    今回、はっきりと明確な用途がありますので、躊躇せずに購入しました。
    本来はプログラミング学習用に普及させることを目的としているため、低スペックで安価です。
    私が購入したのはRaspberry Pi Zero Wという特に非力なモデルで、さすがに動画をバリバリ再生させるなどの使い方は厳しいですが、今回のような(コンピュータにとっては)簡単なフローを動かす程度なら十分すぎます。 さらに省電力性にも優れ、試算してみましたが1ヶ月間起動させっぱなしでも電気代は20円未満です。
    電源・microSDカード・SDカードリーダ・miniHDMI変換アダプタ・ケースなどの周辺機器も含め、総額で5000円いってません。 安っすい。 そしてなにより小さい・・・すっげー小さい。
    私の購入した Zero というモデルは非力なだけでなくサイズも小さいモデルです。 フリスクのケースに入れて運用している方もいらっしゃるようです。 そんなちっこいコンピュータですが、Linuxが動きWi-FiやBluetoothも使えます。
     

    Node-RED

    ここを掘り下げると話が長くなりそうなのでそれは別の機会に譲るとして、Node-RED導入にあたりさらに追加したWEBサービスを挙げるだけに留めます。

    • Node-RED Alexa Home Skill Bridge
      Amazon EchoとNode-REDを結びつけるためのブリッジです。
      仮想的なスマートデバイスを定義してAmazon Echoに認識させることで、Node-REDまでパラメータ付きで処理を到達させることが出来ます。
      定義できる仮想スマートデバイスはそもそもAlexaが認識できるタイプの家電に限定されますが、ここでは照明として定義しました。 パラメータとして照明の明るさをパーセンテージ指定できるので、つまり0%〜100%まで100通りのパラメータをNode-REDに渡せるからです。

    • BeeBotte
      さて、いまのところNode-REDに処理遷移させる手段がAmazon Echoしかありません。
      スマホのAlexaアプリがあれば外出先からでも声掛けと同じことが出来るのですが、Amazon Echoに依存しなくても良いケースでわざわざ同じルートに乗せるのも如何なものかと。
      たとえば、帰宅してスマートロックを解錠したら自動で照明をONにするという流れにAmazon Echoは不要です。
      操作の開始が声掛けに依らずとも私自身の何らかの行動で置き換えられるケースでは、MQTTというプロトコルを利用することにしました。 小さな小さなデータを効率よく配信するためのプロトコルです。
      BeeBotteはこのMQTTという枠組みの中で「ブローカ」という役割を担ってくれるWEBサービスです。
      せっかく買ったRaspberry Piをインターネットに公開すれば、わざわざこうした仲介サービスを使う必要はないのですが、セキュリティ方面に疎い私はRaspberry Piの公開に二の足を踏んでいます。



    SwitchBot

    賃貸マンションをスマートホーム化する場合に「鬼門」として挙げられることが多い問題に、エントランスの解錠をどう自動化するか?というのがあります。
    せっかくスマートロックで玄関の物理鍵が不要となってもエントランスでは相変わらず必要で、夢の「鍵持たず生活」が実現しないのです。 まさか私の都合だけで共用設備であるエントランスのドアを改造するわけにもいきません。

    しかしこの問題も先達のみなさんは見事に解決しています。
    SwitchBotは信号を受信するとアームが動いて壁の照明スイッチなどを物理的に押してくれる小さなロボットです。
    インターホンには来客や宅配業者を部屋に通すためにエントランスの解錠ボタンが付いているので、これを遠隔操作でSwitchBotに押させることで私自身を通すことが出来るというわけです。
    いまのところiPhone「ショートカット」アプリのウィジット→BeeBotte→Node-RED→LinuxコマンドでBluetoothシグナル発信→Swithbotという流れになっています。
    「物理鍵を取り出して解錠する」行為と「スマホを取り出してタップする」行為ではまだ前者のほうがスマートです。
    物理鍵を持ち歩かなくて良いというメリットはあるかもしれませんが、電池切れなどでいつ何時この流れが使えなくなるか分からず、怖くて結局は物理鍵を持ち歩いてる始末・・・。 家電操作が出来なくなったりペットが死ぬのならまだしも(オイ!)、自宅に入れなくなるというのはかなり深刻な問題ですからね。

    なので「鍵は持っているけどそれを使うよりはスマートな方法」でエントランスをパスしたいと、現在いろいろ模索中です。
    候補としては、インターホンのモニタに映る私の顔を認識して解錠という仕組み。
    カメラも無いですし、おそらくRaspberry Piで顔認識させることになりますがその具体的な方法もまだ調べきれてません。


    さいごに

    ざっくりと我が家のスマートホームの構成やらメソッドをご紹介してまりましたが、書きたいことはまだ山ほどあるので、しばらく当ブログはスマートホーム絡みのネタばっかりになると思います・・・。
    興味を持つと一点集中でそればっかりになり、そしてわりと簡単に飽きる・・・そろそろこの熱しやすく冷めやすい性格なんとかしたいです。







    .





       


    posted by Huwy at 23:48 | Comment(0) | ガジェット | このブログの読者になる | 更新情報をチェックする
    この記事へのコメント
    コメントを書く
    お名前: [必須入力]

    メールアドレス:

    ホームページアドレス:

    コメント: [必須入力]
    2013/11/12現在、スパムコメント対策のため「コピー」という単語をブロックしています。

    認証コード: [必須入力]


    ※画像の中の文字を半角で入力してください。
    ×

    この広告は180日以上新しい記事の投稿がないブログに表示されております。