メインコンテンツまでスキップ

「node-red」タグの記事が1件件あります

全てのタグを見る

· 約6分
moritalous
お知らせ

過去にQiitaに投稿した内容のアーカイブです。

スマートホーム楽しいですね。

  1. Echo Dot購入
  2. 「天気が聞ける目覚まし」だともったいない
  3. 家電を操作したい
  4. できた!感動!!
  5. さらにスマホのAlexaアプリで外からも操作できる!!!
  6. でもAlexaアプリが使いにくい⤵⤵⤵
  7. Googleアシスタントでもできるようにしよう!!!!

ここまで来ました。

Echoからの家電操作

Echoからの家電操作は以下の投稿が参考になると思います。 Node-REDがキモです。初代Raspberry Piでも問題なく動作します。

Raspberry Pi での Node-RED 利用 https://qiita.com/minatomirai21/items/184e04bab76bee70470e

ラズベリー・パイ専用 学習リモコン基板 ADRSIRを動かす(AlexaやNode-REDも使って) https://qiita.com/michan06/items/08514e8e67960e45ff69

Amazon Echoで「○○をつけて」と言って家電を操作する https://qiita.com/machu/items/122c8403b35748bd5f4c

Amazon Echoとラズパイで、音声で照明をon/offする https://qiita.com/kikuzo/items/753b5065dde9633bda18

irMagician + Node-RED + Amazon Echo (互換機) - 設定編 https://qiita.com/ooo_6502/items/da30035e41b3dbe5391b

Googleアシスタントからの家電操作

さて、Googleアシスタントを使った家電操作について調べたところ、大きく2つの方法が見つかりました。

  • Raspberry PiをWebサーバーにしてDDNSで公開
  • Beebotteというサービスを使う

Google HomeでRaspberry Piを経由してリモコンをコントロールする https://qiita.com/from_Unknown/items/5cf452cbf0ca74c4248a

IFTTT から Raspberry Pi に指示を出す https://qiita.com/minatomirai21/items/4c4e777b43ede1e42900

LINEをトリガーに家のGoogleHomeを喋らせる https://qiita.com/ktetsuo/items/5cd3cc72f18fa885affd

ポートの開放することなく、Respberry Piに外からアクセスすると投稿している以上、ポートを開放しない縛りでいきたいのと、単純に模倣するだけでは面白くないのでBeebotteを使わずTwitterを使うことにしました。

仕組み

スマートホーム (2).png

No説明番号
1Googleアシスタントに「テレビつけて」と言う
2Googleアシスタントで「テレビつけて」を受けたら、Twitterに「テレビつけて」とツイートする②③
3Node-REDでTwitterを監視。自分のアカウントが「テレビをつけて」とつぶやいたら家電操作④⑤

簡単!ノンプログラミング!サーバーレス!マイクロサービス!

IFTTTの設定

トリガーにGoogleアシスタント、アクションにTwitterを設定したのですが、一つ問題が発生しました。 Twitterの制限で同じ内容のツイートは1回しか呟けないようです。 そこで末尾にタイムスタンプをつけて回避します。

トリガーがGoogleアシスタントのときには{{CreatedAt}}というパラメーターを付与できるのですが上手くいかなかったので以下のようにして回避しました。

Noトリガーアクション
1Googleアシスタントに「テレビつけて」Webリクエストで次のNo.2を呼ぶ
2WebhookでNo.1のリクエストを受けるTwitterに「テレビつけて{{OccurredAt}}」とツイート

Node-REDの設定

Twitter in ノードを使うことで、特定のユーザーのツイートを監視することができます。ツイートをトリガーにして、フローを作っていきます。

スクリーンショット (288).png

スクリーンショット (289).png

switchで「テレビつけて」が含まれるものだけにフィルターをかけ、execノードでテレビを付けるスクリプトを実行します。

スクリーンショット (290).png

スクリプトだけは自力で作りました。 スクリプト実行後は、「つけました」と呟くもいいですし、更にIFTTTのWebhookにリクエストするなど、もう、なんでもできます。

終わりに

ポートの開放もないですし、各サービスのアカウントを乗っ取られない限り、 比較的セキュリティも確保できるのではないでしょうか?

注意点としてはTwitterのアカウントを専用に用意しツイートを非公開にすることをオススメします。そうしないと「テレビ消します」=外出中がバレてしまいますので。

ちょっとタイムラグはありますが、実用的です。

番外編

私の朝食は食パンですが、よく買い忘れます。 上で紹介した仕組みを改良して、食パンがないときにスマホに通知が来るようにしました。 もうスマートホームではありません。スマート食パンです。

Noトリガー&アクションサービス
1家の近くのコンビニに近づいたら、Twitterに「食パンある?」と呟くIFTTT + Android Location
2Twitterの「食パンある?」つぶやきを監視し、HC-SR04(超音波距離センサー)で食パンとの距離を計測。30cm以上だったら「食パンなし」とするRaspberry Pi + HC-SR04
3食パンがないときは、Webhookを呼ぶIFTTT + Webhook
4Webhookを受けたらLINE Notifyで「食パンないよ」と通知IFTTT + LINE Notify
5食パン買い忘れない!!

スクリーンショット (292).png

次は冷蔵庫の中監視したいな。。