Negipoyoc

はじめに

本記事は、おうちハック Advent Calendar 2017 の 17日目の記事です。

2015年にRaspberryPi2 ModelBを手に入れてからおうちハックに興味が出てきて趣味でいろいろなものを作ってきました。

おうちハックあるあるだと思いますが、「作ってみたけど後から面倒になって使わなくなった…」って事や、逆に、「めっちゃ捗った!!」って事ありますよね。

例に漏れず自分もそうだったので、今回はAdvent Calendarという機会を使って、今までやってきたことについて点数をつけつつ良かった点と反省点を書いていこうかなと思います!

やってきたこと

  • Raspiで自宅の監視カメラ作成。
  • Raspiで温度計を作る。
  • Raspi+IRKitで家電を動かす。
  • スマートホームエージェント on AndroidTablet
  • スマートホームエージェント on Raspi(Windows10 IoT)
  • GoogleHomeで家電を動かす。
  • スマートホームエージェント on AndroidPhone with GoogleAssistant
  • SWITCHBOTを使って物理ボタンを押す

では以下より書いていきます。  

Raspiで自宅の監視カメラ作成 / 2015年

20/100点

初めてのおうちハック。この頃はDeNAで2ヶ月ほどバイトしていたのですが、サービスに携わらずiOSアプリ作る練習してていい(もちろんバイト代はもらえる)という(ほんとにいいの…?)みたいな状況でインターンしていた時に作ったものです。

やっていること

サーバ側   :RaspiでDDNSとApacheで外部から接続できるサーバを立てておく。
        Raspiにカメラを接続し、mjpeg-streamerを使ってストリーミングを垂れ流す。

クライアント側:iPhoneアプリでそのサーバにアクセスして、ストリーミングを取得しアプリ上でそれを表示する。

評価

サーバの構築やらSwift自体は非常に学びがあった。(20点)

ただ、家に誰も居ないし生き物も飼っていない状況で監視カメラを置いといても面白くないです。何も動かないし。(0点)
というわけで次第に見なくなりました。

たぶん水槽だったりペットの檻だったりがいいのかな。あとはmjpeg-streamerって動体検知機能もあったはずなので、玄関に監視カメラを置いて訪問者がいたらスクショと共に自分のスマホに通知とか良さそうですよね。

まぁよくやったと思います。ちなみにBasic認証とはいえセキュリティをかけるなどもしていました。

備考(作成ログ)


Raspiで温度計を作る。 / 2015年

40/100点

余っていたブレッドボードとケーブルがあったので、センサを買ってRaspi上に室温サーバーを作ったやつです。

やっていること

サーバ側   :RaspiでDDNSとApacheで外部から接続できるサーバを立てておく。
        ブレッドボードとワイヤを使って温度センサをRaspiから扱えるようにして温度を取得してAPIを立てる

クライアント側:iPhoneアプリでそのサーバにアクセスして、取得した情報を表示して、温度計の針として表示する。

評価

センサの扱いを覚えたので、温度だけではなく照度や湿度なども取得できるようになった。応用が効くので非常に学びがあった。(40点)

ただ、室温がわかっても嬉しいことが(当時は)特に無かった。ですw 当時はIRKitなど持ってなかったので、意味なかった。(0点)
というわけで面白かったというだけで終わった感じですね。もったいない。

5分毎に室温を取得して、閾値を超えたらエアコンを自動でつける。くらいは今の俺なら簡単にできるので、時間があまったらちゃんとやりたいなーと思ってます。

あとセンサの扱いを覚えたといいましたが、たまに原因不明で取得失敗ということがあって非常にゲンナリするということも同時に覚えましたね…。

備考(作成ログ)

((初心者向けiOSアプリ開発)ってタイトルにするとストック数が他の記事に比べて多くもらえるという知見があります。)


この後の話に出てくるスマートホームエージェントについて

IoTの操作がシステム的な感じで味気ないなぁと思っており、おうちハックの技術にキャラクターが絡められたら。

つまり、キャラクターが勝手に判断して家電を操作してくれたら…それはつまり一緒に住んでいるってことでは!?という気持ちを元に始まりました。

もともとこういうことを大学時代にやってたので、組み合わせですね。

この記事を書いている2017年12月でも、継続して趣味でちまちまやっているので軌跡を御覧ください。


スマートホームエージェント on AndroidTablet / 2016年

60/100点

おうちにNexus7が転がってたので、机の上に常に電源ONで常駐させてみました。

やっていること

  • ボタンを押すとIRKitに赤外線信号を送信して家電を操作する(備考参照)
  • お天気表示
  • Live2dのキャラクターがたまに反応を返してくれる。

評価

まぁまぁ便利。テレビ、エアコン、照明のリモコンを統合できたところはGood。逆に言うとそれしかない。

ただし、常に電源に繋いでないといけないので持ち運びができないという問題が発生した。
寝る時に、いちいち机のところまで行ってボタンを押して照明を消して―という無理に使っている感が出てきてしまってモニョモニョした

備考(技術メモ)


GoogleHomeで家電を動かす。

100/100点

やっていること

以下の図の通り

  • GoogleHomeでトリガーとなる音声(おやすみ)を認識
  • IFTTTでトリガーを検出して、FirebaseRealtimeDBに照明の状態値を変更するようにWebリクエストを投げています。
  • SmartHomeAgentでこの状態値の変更は即座に検出できるので、それをトリガーにAgentからIRKitに信号を送信
  • IRKitから赤外線信号を発して照明を消す。

ということをしています。

評価

凄く便利。これ作って以後は、リモコンを使うことがなくなりました。 いちいちリモコンを探す、使ったら元の位置に戻す、というのがストレスかつ時間の無駄だったんだなってのがよくわかりました!

これと同じく、いちいちアプリを開いてボタンを押して消すというのも結構面倒ですよね。スマホを探してアプリの場所も探さなくちゃいけないので…。
とりあえず声に出せばいいっていうのはかなり良いですね。

音声認識の精度がとても良く、5,6m離れてても部屋が静かなら問題ないので、ベッドからの「OK,Google、おやすみ」で照明が消えるようになっています。超便利

これに関しては、IFTTTからローカルのIRKitに対してリクエストが送れれば良いので、GoogleHomeでおうちハックしてみたいなって人にはちょうど良い難易度では?と思います。便利だし。


スマートホームエージェント on AndroidPhone (with GoogleAssistant)/ 2016-2017年

117/100点

家に常駐させるHomeAgentアプリ、外部からそれをいじれるMobileAgentアプリ、この2つを構築してみました。

Homeの方は机の上に常に電源ONで常駐させています。
Mobileの方は、携帯しています。

基本的にHomeは「IRKitと連携して家電を操作するためのHub」としての側面が大きいです。Mobileは「Homeに対してトリガーを送信するデバイス」としての側面が大きいです。

いくつかの試行錯誤の結果、Mobile版はアプリとしてではなく背景アプリとして動いています。(評価で後述)

Agentであるところのゆかりさんにはデバイス間を移動してもらって、外でも家でもいつでも一緒という感じを出しています。

やっていること

HomeAgent:

  • FirebaseのRealTimeDBを監視し、家電の状態値が変更されれば即座にIRKitにリクエストを送る。
  • キャラクターを介したGmail、Twitter、Slackの新着通知

MobileAgent:

  • キャラクターを介したキャラクターを介したGmail、Twitter、Slackの新着通知
  • HomeAgentと連携する。

評価

Mobile版について最初はアプリとして作っていましたが、外から入力したい時にGoogleAssistantの入力の簡易さには勝てないと思いました。(いちいちアプリを開くのは超面倒。)

ただし外出時でもAgentからの通知は受け取りたいし、やっぱりイメージとしてはロックマンエグゼのPET(以下のような感じ)を目指したかった

自分のAgentといつでも一緒ならアプリを開かなくても一緒であるのが正しい姿ではないか…。

というわけで、Androidの背景アプリで作ったらいいじゃないかということになり、今に至っています。

動画を見れば、GoogleAssistantの入力で音声入力をして家電をいじっていることがわかると思います。

ちなみにFirebaseを使うことで、Mobile版は同じWifi内でなくても家電操作はできるようになりました。つまり帰宅時にエアコンをつけるとかできるようになったわけですね。

(117点なのは、アプリの基盤としてはこれ以上無いものが作れたので120点ですが、背景アプリは電池の減りが早いのでマイナス3点ということです。こればかりはしょうがないが…)

備考(技術メモ)


SwitchBotを使って物理ボタンを押す / 2017年

100/100点

ちょうどこの記事を書く3日前に届きました。Switch Botさん。 動画のように物理ボタンをIoT化できるすぐれものです。

やっていること

電源を入れてボタンを貼り付けたら、あとはアプリからボタンを押すだけ。

評価

SwitchBotは1ヶ月ほど前にIndieGoGo経由で購入しました。(クラウドファンディング自体は既に成立していたけど、なぜかBackできたし物も届いた。Bot4個とLink1個で129ドルのセットを買いました。)

SwitchBotとアプリとのリンクはBluetoothなのであまり安定しない印象です。SwitchLinkも一緒に買うのが正しいと思います。

Switch Linkも買えばIFTTTが使えるようになるので、そのおかげでGoogleHomeとの連携もバッチリです。自分は「お風呂わかして」と言えばお風呂をわかすようにしました。これスーパー便利でした。

赤外線対応してない家電や、賃貸で借りた家のスイッチなど、あまり中身をいじりたくないものには効果てきめんかなと。

応用性抜群過ぎるのでかなりおすすめですね。


まとめ

自分のおうちハックの全ては、SmartHomeAgentのためです。 で、家電を操作するための基盤は作れたので、ここまでできたら後は何を載っけるかということになってくると思います。

SwitchBotをもっと有効活用できると良いですね。とても面白いデバイスだったので。

あとは家電操作の自動化とかしたいですね…。Unityの人工知能モジュールが最近できたわけですが、何か使えないかな…と思ってまだ何も調べてないです。

アプリ側で何も使えなくてもFirebaseで状態を管理してるからサーバ側で何かしてもいいと思います。

おうちハックxキャラクターというのはかなり思い入れがあって、近いところでは、エージェントゆかりさんがマスターを気遣って勝手にエアコンつけてくれる未来が作りたい。あるいはロックマンエグゼのPETみたいに、皆ひとりひとりが自分のAgent持ってたら最高じゃないですか?というのを思っています俺はロックマンエグゼ大好きなのでそういうのやりたいですね。

 

というわけで、おうちハック Advent Calendar 2017 の 17日目の記事は以上です。ありがとうございました!
明日は@tatetate55さんです。


おまけ:スマートホームエージェント on Raspi(Windows10 IoT) / 2016年

0/100点

やっていること

RaspiにWindows10 IoT Coreが来て、RaspiでUnityが使えるという情報(!)があったので俺もやるー!と思ってやり始めました。

結果、まともに動かず。スペック足りずで重いし、Live2dが動かなかったので論外という感じに。

評価

UWPビルドなので制約が多いです。”Live2dが動かなかった”というのは、そもそもビルドができなかった覚えがあるんですが詳細は忘れてしまいました。

これをやったのは1年以上前なので今はIoTCore自体はマシになっている可能性があります(!) ただ、今でもWin10 IoTCoreで何か作りましたって人をあまり見ないのですが、気のせいでしょうか…。

まぁおすすめしないですね…。