Google Home/Alexa/IFTTTで使えて千円台で買えるスマートコンセント

ネコの寝床を温めるペットヒーターを時間で制御していたプログラムタイマーを今年も使おうとしたら壊れてました。どうも内部電池が完全に放電してしまうとダメになるらしい。

節電エコタイマーET55D

節電エコタイマーET55D

2,000円(12/18 20:15時点)
Amazonの情報を掲載しています

そこでどうせ買い直すならとスマートフォン/スマートスピーカーなどから制御できるスマートコンセントにしようと物色。なんと単価でいえば上のタイマーとたいして変わらない値段でありました。

それがこれ。2つセットの値段(1つでも買えます)。全く同じ見た目の類似商品がAmazonだけでも山ほど出てきますが、とりあえずIFTTT対応が明記されていたのでこれにしてみました。どのみちON/OFFしかない機器なので、IFTTTにさえ対応していれば最悪単純な制御はGoogle Homeからでもできるし、時間による制御もIFTTTからすればプログラムタイマーの代替になるはず、と踏んだからです。

ただし残念ながら日本で使うにはちょっとした追加投資が必要になります。その理由がこれorz。

3ピン仕様なのです。だから3ピン型のタップや壁コンでない限り、変換アダプタやシャトルコードが別途必要になる上、壁から浮き上がって邪魔&格好悪いことになりますね。そしてアダプタは別売りです。私はAmazonにオススメされるまま変換アダプタを買ってしまいましたが、ショートコードにして見えないところに転がしておく方が良いかも知れません。

サンワサプライ 3P→2P変換アダプタ TAP-AD1BKN

サンワサプライ 3P→2P変換アダプタ TAP-AD1BKN

307円(12/18 20:15時点)
Amazonの情報を掲載しています
ELECOM 電源ケーブル 延長コード 0.1m ホワイト T-ADR1WH

ELECOM 電源ケーブル 延長コード 0.1m ホワイト T-ADR1WH

416円(12/18 09:55時点)
Amazonの情報を掲載しています

その他、ハードウェアの仕様としての注意点は11ooWまでの対応であること(暖房器具などでは注意)と、Wi-Fiが2.4GHzオンリーな点くらいです。

アプリはSmart Likeというものを使います。タイマーもこれ単体で設定できました。曜日別設定もできるのでプログラムタイマーとしては下手はハード製品より操作が楽で良いです。また試してないですが天気や気温、湿度、空気品質、日の出日の入り時間、そして他の同機種デバイスのON/OFFに連動して自動制御することもできるようです。IFTTTまかせでなく自社アプリ内で色々できるようにしているところがなかなかに立派。

←こんな感じの画面です。

 

せっかく2台セットで買ったので、他にコンセント制御できる家電としてコタツを見つけ、コタツをIoT化してみましたw。朝布団から出る前にあらかじめコタツを温めておけるとか素敵じゃないですか?

そしてGoogle Homeアプリで直接認識して音声制御もできます。個人的にはタイマー動作と音声制御ができればとりあえず満足なので標準アプリとGoogle Homeで事足りました。IFTTTはレシピが出せることだけ確認して設定はしてません。

 

■Google Homeで上手く制御する為のTips

ちょっとだけ手こずったのでいくつかコツをまとめておきます。

標準アプリ側で「こたつ」とか名前をつけてGoogle Homeアプリで認識はしてもすぐには「こたつをオン」で認識するようにはなりませんでした。Google Homeアプリ上では名前がありません。一覧では「こたつ」と出てますが、「デバイス情報」を開くとそれは「Smart Lifeからの名前」であり、ニックネーム欄が空になってる状態です。一応ニックネームを同じ内容ですが書いてやったら動いた気がします。

ただこれでも「こたつをオン」ではワードが短いので、誤認識されまくります。もっと長くてレアな名前にしてやればいいんでしょうけど、「こたつ」は「こたつ」にしておきたい。そこで「部屋」を割り当てます。ここでは「リビングダイニング」をアサインしました。これで「リビングダイニングのコタツをオン」が制御ワードになります。たぶん単体で長い名前にするよりも、部屋名スタートにすることでスマートホームデバイスの操作だと気付かれやすくなるんじゃないかなという期待もあり。

で、これを毎回言うのは面倒くさいので、「ショートカット」で再び「コタツをオン」とか「コタツを入れて」といった制御ワードを登録します。ショートカットは最も優先して認識されるはずなので、結局一回りして最初と同じじゃん!と言われそうですが実際これで認識率が上がりました。「たね(ネコの名前)ヒーター)」も「亀ヒーター」になってオススメの爬虫類飼育ヒーターを紹介されたりしまくってましたが、まともに認識するようになりました。

ちなみに前にも書きましたがこれらの調整は「Google アシスタント」アプリ上で試行錯誤すると、相手方がなんと認識した上で反応してるか見てとれますし、こちらもテキスト入力で正確なワードを入れてそれでちゃんと反応するかどうか試せるので捗りますよ。

 

Google Home + IFTTTでAndroid BRAVIAを操作するWebhookの準備

Google HomeとIFTTTで家電を操作する場合、HTTPでどこかのURLを叩く受け口(Webhook)を用意するのが早道、というか必要です。前回、PioneerのAVアンプはネットワーク操作可能なもののtelnetの受け口しかなかったのでPHPスクリプトを使って橋渡しをしました。BRAVIAの場合はHTTPでXML形式のファイルを送りつけてやるといけるという記事が散見されるのですが、その記事で紹介されているcurl(テキストWebクライアント)を使った方法では成功しませんでした。

結局上手く言ったのは、こちらの記事を参考に、GitHubにあるalanreid氏のNode.jsプロジェクトを使った方法でした。

Node.jsは不慣れなのでいつものmacOS Server機ではなくCentOS仮想サーバーを使用。ちょっと昔すぎて手順は憶えてないですがNode.jsなどはyum installでサクっと入ると思います。

まずAndroid BRAVIA側でIP操作を受け付ける許可とPSK(暗証番号)の設定をします。

  • ホーム -> 通信設定 -> ホームネットワーク-> モバイル機器/レンダラー機能を「入」に
  • ホーム -> 通信設定 -> ホームネットワーク-> IP コントロール -> 認証 を「Normal and Pre-Shared Key」に
  • ホーム -> 通信設定 -> ホームネットワーク-> IP コントロール -> Pre-Shared Keyで4桁の暗証番号を設定
  • ホーム -> 通信設定 -> ホームネットワーク-> IP コントロール -> 簡易IPコントロール を「入」に

またルーターもしくはBRAVIA自体の設定を変更し、固定IPアドレスになるようにしておくと良いでしょう。

次に適当なフォルダにalanreid氏のプロジェクトをクローンします。

そのフォルダに、demo.jsやhttp-bravia-echo.jsなどがあると思います。

demo.jsで動作チェック

???をBARVIAのIPアドレスに変更。xxxxをBRAVIA上で設定した暗証番号に変更します。

これでコマンドラインから、

とすると、画面には利用できるコマンド一覧が表示され(condole.log(list);の結果)、続いてテレビの電源が入ってNetflix画面になる(cluent.exex(‘Netflix’);の結果)はずです。demo.jsはこの2つのコマンドを連続で実行する、まさしくデモ用のファイルです。コマンドライン用の実行ファイルを作るのであれば、これをコピーし、前半のList available commandsのセクションを削除し、Netflixコマンドを他のものに書き換えるだけで良いでしょう。

ブラウザからの操作を受け付ける

本来Node.jsは.jsスクリプトをサーバーとして待ち受けさせて、ブラウザからアクセスがあった時に所定の動作を行わせるためのものです。その為の基本動作を組み込んだのがhttp-bravia-echo.jsです。こちらも自分の環境にあわせてちょっとだけ修正します。

portはブラウザからアクセスする時に必要になります。Webサーバーといえば80番が標準的ですが、セキュリティの問題とか色々あるので避けた方が無難です。特に他とぶつかったりしてなければ標準の5006で良いでしょう。いくつにしたかだけ憶えておきます。???とxxxxは先ほどと同じ、BRAVIAのIPアドレスと暗証番号です。

します。最後に「&」をつけておくことで、ユーザがコンソールからログアウトしても裏で動き続けるようになります。動作テストの間はつけない方が良いかも知れません。またOSを再起動すると止まってしまいまた同じ様に起動する必要があります。OS起動時に自動起動する方法は別途ググってください。

さて、エラーもなく正常に起動したら、ブラウザから呼んでみます。

のようにします。ここでは暗証番号は使わないので注意してください。WakeUpがコマンドになります。電源オンはPowerOnではなくWakeUpでいけるようです。成功するとWebページとしては「OK」とだけ出ます。注意したいのはその操作(ボタン)を受け付ける状態になっていないとOKが返った場合でもなにも起きないということです。例えば「Num1」はテンキーの1ボタンですが、ホーム画面やNetflixアプリを起動している状態ではなにも置きます。先に「Tv」にしておいてから「Num1」にするとチャンネルが切り替わる、という具合です。「OK Google、NHKを映して」みたいなことをしたい場合、IFTTT側ではマクロ操作できないので、スクリプト側でWakeUp->Tv->Num1のように連続的にコマンドを送る必要がありそうです。音量についても1回に1目盛り上げ下げしても仕方ないので、数回繰り返すような処理が必要でしょう。JavaScriptが得意な人はこのhttp-bravia-echo.jpを直接改造すると良いと思います。σ(^^)はPHPの方が得意なので、別にApacheサーバーでホストしたスクリプトから連続で呼び出すようにしようかと思案中です。

IFTTT(インターネットから)呼び出す

IFTTTのサーバーは当然ながら自宅のイントラネット(LAN)の外にあります。なので、IFTTTアプリのWebhookアドレスとして上記の「192.168.x.x」といったアドレスを入力しても到達できません。ルーターのポート開放設定が必要だったり、利便性として固定IPアドレスやダイナミックDNSアドレスなども欲しくなるでしょう。

Netatomo + IFTTT + FHCでエアコン自動制御

SONY MESHを使ったDIYに続き、連休IoT第二弾。暑さに弱いフェレットのケージ温度見守りにチャレンジ。

前記事に書いたように、MESHは長期安定運用には厳しいという結論が出たので、今回は既設のNetatmo Weather Stationに追加の室内モジュールを購入しました。

すでにIoTまみれの我が家ではスマホで室温が確認できるガジェットはありました。iRemocon Wi-FiやFutrue Home Controllerなど。また富士通ゼネラルのエアコンにもスマホコントローラーを追加してあり、アプリから室温をチェックできます(運転中のみ)。ただこれらはその時々の温度はわかるものの、継続的にログをとってくれないので、例えばエアコン切って出かけている間にどれくらい温度上昇しているか、というのを振り返ることができません。

そこでログがとれるNetatomoです。もちろん本体単体でも可能なのですが、それはそれで別の部屋で使いたかったので、オプションの屋内用追加モジュールとあいなったわけです。また屋内用追加モジュールは乾電池式なので配線をかじられたりといった心配も不要だったのもあります。

本体との通信はWi-Fiではない(Bluetooth?)ので、通信距離的に不安がありましたが、とりあえずきちんとログがとれてるぽいので一安心。

さて、Netatmoは専用アプリでログを確認できるのはもちろんですが、IFTTTやYahooのmyThingsといった連携サービスとつながることも特徴です。これらのサービスで数値を監視し、閾値を超えたらメールするとか他の機器(例えばエアコン)を操作するといったことが可能です。これらはオンラインサービスなのでMESHと違い、その場にスマホなどがないと動作しないといったことはなく、一度設定してしまえば単体で動作し続けます。

以前からmyThingsでiRemocon Wi-Fiと連携させて、温度が上がったらエアコンを入れる、下がりすぎたら切るといったレシピを設定していたのですが、やたら不安定でエラーが返るのと、iRemocon Wi-Fiの外からの制御に月額有料プランの登録が必要などがあり、今回IFTTT(イフト)に乗り換えることにしました。

設定してみると、myThingsでは室温と騒音しかトリガにできなかったのが、IFTTTではさらに湿度、CO2濃度、気圧、雨(要屋外雨量モジュール)、風量(要屋外風量モジュール)と、Netatmo Weather Stationが計測できるあらゆる数値をトリガにできることが判明。Netatmo使うならIFTTTが断然オススメです。ただしiRemocon Wi-Fiを操作できるのはmyThingsのみなので、こちらを(外出先からの利用が無料なレンタルプランで)ご利用の方はmyThingsを検討してもいいかも知れません。myThingsならiRemocon Wi-Fiの温度情報も利用できるのでNetatmo自体不要という話も。IFTTTからGmailかなにかのWebサービスを経由してmyThingsを叩いてもいいかも知れません。

今回は本体買い切りしてしまい、WANからの利用は有料プランが必要になる我が家ではiRemoconの利用を諦め、Maker Webhooksという指定URLを叩いてくれるモジュールを使って、iRkitやFuture Home Controllerを制御することにしました。Future Home ControllerのWeb APIを叩く設定はこんな感じ。Future Home Controllerの設定画面から目的のデバイスで目的の信号を発するためのURLを取得することができるので、これをコピーしてきます(IFTTTが外から呼び出すので、remote webapi経由のURLアドレスを使用します)。例えばこんな感じ。

https://fhc.rti-giken.jp/api/elec/action?webapi_apikey=(APIキー)&user=(メールアドレス)&elec=リビングエアコン&action=冷房普通

で、下がMaker Webhooksの設定画面ですが、「Surround any text with “<<<” and “>>>” to escape the content」と注意書きがあるので、とりあえず日本語部分を<<< >>>で囲ってこんな感じにしてからペースト。

https://fhc.rti-giken.jp/api/elec/action?webapi_apikey=(APIキー)&user=(メールアドレス)&elec=<<<リビングエアコン>>>&action=<<<冷房普通>>>

あとは写真の通りに、MethodとContent Typeを指定。Bodyは空でOKです。

■エアコン自動運転でよくね?という方へ

ここまで読んで、「エアコンで希望の温度設定にして付けっぱなしにしとけばよくね?」と思われた方もいらっしゃるかも知れません。まぁ確かにその通りなんですが、居室、寝室など人が住む部屋だとやはり主観で寒いなと思えば弱めたり切ったりしてしまいますし、そのまま出かけてしまうこともあります。むしろ付けっぱなしの覚悟ができる真夏より、「今日は涼しいからエアコンいれとかなくて大丈夫かな」と思って出かけると急激に暑くなるような今時分の季節が危ない。そんな時に保険として、人がどんな設定をしたり切ったりしていったも、一定温度を超えたら強制的に冷やしてくれる存在が欲しいのです。実は富士通ゼネラルのエアコンには「みまもり機能」というのがあり、高齢者の熱中症防止に室温が30度を超えたら自動的に冷房が入る設定があります。リモコンで電源を切っていても発動します。ので今回は自分で取り付けた部屋は全部富士通ゼネラルにしました。惜しいのは30℃固定なので人間にはよくてもより暑さに弱いフェレットにはまだ不安です。是非ユーザが温度を選べるようにしてほしかったですね。

 

SONY MESHで試す便利IoT(?)システム

連休中、諸般の事情であまり出かけられなかったので、IoT DIYにチャレンジ。

第一弾はSONYのMESHを使ったもの。MESHは、タグと呼ばれる小さなブロック状の製品群で、それぞれ光センサ、加速度センサ、温度湿度センサをもつ入力系や、LED点灯、GPIO(モーターなどの外部制御)などの出力系など機能をもっていて、それをスマホアプリでプログラミングして所定の動作を行わせるというものです。例えば、温度センサタグが所定の室温上昇を検知したら、LEDタグを光らせる、みたいな感じ。

今回は、加速度センサのついたMoveタグ、照度センサのBrightnessタグ、人の動きを検知するMotionタグを購入しました。

ソニー Sony MESH 動きタグ(Move) MESH-100AC

ソニー Sony MESH 動きタグ(Move) MESH-100AC

5,273円(12/18 20:15時点)
Amazonの情報を掲載しています
ソニー Sony(ソニー) MESH 明るさタグ(Brightness) MESH-100PA

ソニー Sony(ソニー) MESH 明るさタグ(Brightness) MESH-100PA

6,182円(12/18 20:15時点)
Amazonの情報を掲載しています
ソニー Sony(ソニー) MESH 人感タグ(Motion) MESH-100MD

ソニー Sony(ソニー) MESH 人感タグ(Motion) MESH-100MD

6,182円(12/18 20:15時点)
Amazonの情報を掲載しています

■Moveタグで猫のトイレログ

我が家の猫用トイレはシステムトイレで、つり下げ式のドアがついています。ここにMoveタグをとりつけ、猫が出入りしてドアが揺れたことを検知し、IFTTTを経由してGoogle Drive上のファイルにタイムスタンプを書き込むようにしました。それだけでは意味はないんですが、追々は入った時刻と出た時刻の差分をとって、滞留時間を算出することで、大きいのか小さいのかを判別できたらなと思っています。大きいのならすぐに回収した方が部屋が匂わないんですが、さぁ寝るぞと部屋を暗くした途端にトイレにいく習性があるので、いつももういちど電気つけてメガネしてトイレまでチェックしに行くべきか悩ましいんですよね…だからこれで大小が判別できる仕組みが作れればなと。現在は分析用のログを収集中。ただ砂かけの代わりか、このドアをガリガリ叩く癖があるので、そういう細かい振動は排除するとか、飼い主が掃除のために開け閉めしたのも除外しなきゃとか、そもそもどのタイミングが大だったのか小だったのかというデータをあわせてとらないと分析しようがないので、色々めんどくさくなってきたw。

現状のMESHラインナップでは無理ですが、ラズパイとかでカメラ映像をとって差分で茶色い物体を検出するとかした方がいいのかも。

■Brightnessタグで来客検知

我が家のドアホンは録画機能などがあるのはいいんですが、肝心のベル音量がリビング以外の部屋で聞こえづらく、宅急便などに気付けないで持ち帰られてあいまうことが多々あります。

しょうがないのでこの音センサでワイヤレスチャイムを鳴らす製品を買ったんですが、やはり音をトリガにすると誤反応が多い…

サウンドモニター セット X870

サウンドモニター セット X870

7,980円(12/18 20:15時点)
Amazonの情報を掲載しています

そこで、Brightnessタグを写真のように貼り付けて(黒い側にセンサがあります)、ドアホンが鳴らされて液晶が点灯した明るさを検知するようにしてみました。

人感センサータグは色々応用が利きそうだと思って買ったんですが、まだ具体的になにかの用途には使っていません。一応廊下などに置いておくと人や猫が通った時に反応するところまでは確認しました。精度はまずまずです。

■MESHまとめ

MESHはBluetoothでスマホと通信し、スマホアプリを介して連携をするので、厳密にはIoTとは言えないかも知れません。実用上は以下のような弱点があります。

  1. プログラムをしたMESHアプリが入っているスマホ/タブレットがその場にないと動作しない
  2. バックグラウンド動作は一応できるが、1台のスマホで1度に1つのプログラムしか動かせない
  3. Bluetoothでペアリングして使用するので、1台のスマホ/タブレットからしか使えない
  4. バッテリーが2,3日〜数日程度しかもたない(タグの種類によってまちまち)

など。来客モニタは自分も在宅なことが前提なので別にいいんですが、猫トイレログなんかは留守中も動作して欲しいわけなので、持ち歩くスマホではなく家に置きっ放しのiPadで設定する必要がありました。ので、ちょっと設定をかえたいな、と思ってもスマホからはできずiPadを探しに行かねばならなかったり。MESHのプログラムはあくまでアプリ上で動くもので、その結果の動作をクラウドに連携させることはできますが、あらゆる端末からクラウドを介してプログラム自体を管理するようなものではないのです。

これらを鑑みると、MESHはあくまでプログラム学習ツールであって、その場で動かして「わーい」って言うにはとて簡単で良いのですが、実用的、継続的な機能をもたせるIoTデバイスとしてはちょっと厳しいかなという感想です。どうせならAPIを公開して、Raspberry Piなどからでも利用できるとかなれば、あとは電源だけ常時給電してやればなんとかなるんでしょうけど(ちなみに充電端子はmicroUSBなので、モバイルバッテリーなどでも充電可能です)。

 

スマホのいらないスマートロック RemoteLOCKレビュー(クラウド管理編)

前記事でローカルの動作確認をしたRemoteLOCK[製品サイト]の、クラウド管理サービスLockState Connectを試します。

LockState Connectは文字通りクラウド(Webサイト)から遠隔管理ができるサービスで、

  • 機器の設定(自動ロック、確認音、電子残量やWi-Fi強度の確認など)
  • アクセスユーザ(恒常的に利用するユーザ)の管理
  • アクセスゲスト(期間限定で利用するユーザ)の管理

などが行えます。前回使用したローカルPINを使えば本サービスを利用しなくても一時暗証番号は発行できますが、ヘルプによるとこちらは10番号までしか登録できないらしく、それ以上のユーザを管理しようと思ったらやはり本サービス利用が必要になります。

■基本画面

ユーザ登録をしてロック端末の登録などを済ませた基本画面はこんな感じ。元は海外製品ですが、きちんと日本語化されています。ヘルプも含め不自然な訳もなく、最初から日本語で開発されたとも思える仕上がりです。デザインもゴチャゴチャしてなくて良いですね。↓

Wi-Fiの電波強度や電池残量の警告はデフォルトでお知らせに登録されていました。問題が起きたらメールで通知がくるようです。↓

個別のロック端末の設定画面はこんな感じです。端末操作で登録されたローカルPINも一覧でき、無効化もチェック外すだけでできるようです。オートロックのスケジュール機能で、特にユーザが操作しなくとも一定の時間になったら解錠/施錠、といったこともできちゃうみたいです。↓

「AIRBNBとの連携」というメニューが見えますが、AIRBNBを利用していないのでよくわかりません。ヘルプによると予約者に自動でPINを通知したりといったことができるようです。

■アクセスユーザ管理

アクセスユーザの登録画面はこんな感じ。各ユーザが鍵を開ける度にお知らせを受けたりもできます。気が利いているのが、PINコードの自動生成機能です。↓

アクセススケジュールを有効にすると、こんな感じで曜日時間帯別に利用許可を設定することができます。平日昼間は出入りOKだけど、夜間と週末だけはNG、とかってこともユーザ毎に決められるわけですね。↓

■アクセスゲスト管理

同じくアクセスゲストの登録画面。こちらの場合は、利用期間(開始日、終了日)を指定して登録します。↓

また、いつ誰に利用許可を与えているか一覧できるカレンダー画面も用意されています。これは貸し会議室のような場所には便利そうですね。

ゲストを登録すると、こんな感じで登録メールアドレスに設定したPINと使用方法のメールを送信してくれ、ひと手間省けます。なんかもう至れり尽くせりですね!↓

■ログ閲覧

ログ画面では、いつどんなアクセスがあったか一覧できます。間違った番号の入力まで記録されるので、「開かないよ」とクレーム来た時に「あなたの打った番号が違いますよ」って言えるし、不正侵入やイタズラでどれだけ試行されたかなんかもわかりますね。

上の方の99999と4252はそれぞれアクセスユーザとアクセスゲストを登録直後に試してエラーになったものです。クラウドで登録してからロック本体に同期されるまでにタイムラグがある、というか、電池消費を抑えるために間欠的な同期と、ロック本体を操作した時に強制同期をするのみなので、登録直後だとこういうことになりがちなようです。1回拒否した時の操作で即時強制同期が行われるので、「あれ?」っと思って2回目を入れる頃には同期完了していて、あまり問題にはならないとは思います(そもそもそんなに登録直後に操作することもないでしょうし)。

 

以上、基本的な操作をざっと画面写真で紹介しましたが、思いつく必要な機能は一通り備わっていて、なおかつ画面もスッキリしていてわかりやすいよくできたシステムだと思います。月間利用料が基本アカウント1,500円+ロック1台毎に500円かかってしまいますが(1年分は本体価格に含まれる)、貸し会議室や民泊などビジネス用途で頻繁に鍵を貸し出すようなところでは効率化とセキュリティ強化で充分価値が出るんじゃないでしょうか。そうした場面にはQrio/Akerunよりも明らかに優位性がある気がします。一方、やはり残念なのは日本のドアに適合しづらく業者による工事が必要になる点。是非日本のドアや鍵と互換性のあるモデルや、Qrio/Akerunのようなポン付けモデルを開発してほしいなと思います(あと個人向けにもうちょっとお手頃なプランも…)。