ゆるブロ

ゆる~くてちたのIT系?ブログ

Google Homeに最新の使用電力を教えてもらいたい!第二回/全二回

はじめに

タイトルの使用電力量⇒使用電力と修正します。そのうち30分電力量も知りたいけどね!

第一回では、とりあえずやりたいことを図にすることでゴールを意識づけしました。

さて、第二回ですが・・・ひとまず完成しちゃいました!

ゴールに行き着くまでの道のりは変わりましたが、ゴールがぶれなかったので何とかできました。実は今日までに使用電力を教えてもらうところまでどうにか作りたいという野望があったので、多少の妥協は仕方ないとしました。

今後は教えてもらう内容を変えたりしてブログは更新していきます。

参考文献

先日から少しだけ実現方法が変わりました。

f:id:TeTiTa:20200802233819p:plain

前回のやりたいこと図

f:id:TeTiTa:20200803224648p:plain

今回実現したやり方図

どうしてこうなったのかというと、Dialogflowから外部ネットワークに対してWebhookをするためには、「課金」が必要だったため、ひとまず今回はやめたということでした。

気が付いたタイミングとしては、Diarogflowの設定をひとしきり終えた後でした。DialogflowのWebhookの応答が以下となり、にっちもさっちもいかなくなっていました。

"webhookStatus": {
    "code": 14,
    "message": "Webhook call failed. Error: UNAVAILABLE."

 いろいろと漁った結果、同じような状況に陥っている人がいました。

stackoverflow.com

It isn't clear exactly when/where you're getting the "UNAVAILABLE" error, but one likely cause if you're using Dialogflow's Inline Editor is that it is using the Firebase "Spark" pricing plan, which has limitations on network calls outside Google's network.

無料会員のままじゃつかえないよと言われていました。

ということで、Dialogflowを使う方針からIFTTTで連携させる方針に変更しました。

ここからは各種参考文献の紹介に移ります。

IFTTT、Webhook

IFTTTの登録

登録は前からやってたので、割愛で(笑)
多分すぐに登録できると思う。

レシピのCreate

if+This⇒Google Assistantを選択

f:id:TeTiTa:20200803231317p:plain

if+this

then⇒webhookでリクエストを送信

f:id:TeTiTa:20200803231450p:plain

then

IFTTTは癖があるけど単純なものはほんと簡単にできるよね~。

ラズパイ/Network

今回使ったラズパイちゃんはrasberry pi zero WH(マルツオンラインで2200円)でした。
ラズパイのセットアップはここでは割愛します(笑)
特別にやったことは、バックアップの作成ぐらいかな?

www.fabshop.jp

ネットワークについては、外部からアクセスさせる必要がありました。たまたまうちのNASちゃん(Synology製)がDDNSサービスを無料で展開してくださっているので活用させてもらいました(VPNと一緒ですね)。
外部から宅内LANのNASにつながるので、そのパケットのうちとあるポートを指定したパケットだけをラズパイちゃんのNode-REDのポートへ転送するようにルータに手を入れました。

Node-RED

 今回だいぶお世話になったNode-RED。めっちゃ楽だね!ほとんどプログラミングしてないし。

導入はこの辺。

qiita.com

qiita.com

www.1ft-seabass.jp

 

メインのwebhookを受け取ってからgoogle homeをしゃべらせるまではこの辺。

qiita.com

www.gesource.jp

qiita.com

qiita.com

blue.hatenadiary.jp

flows.nodered.org

flows.nodered.org

 

 おまけ

qiita.com

 

出来上がったノードは以下の形(かなり適当にできているのであしからず)

f:id:TeTiTa:20200803234857p:plain

node

injectはデバッグ用にとりあえずトリガ引くため。http(200)も同じ。

postgrestorは適当に公開されていたものを拝借。おしゃべりマンはcastですね。

中身はQiitaで公開かな。あっちのほうが技術寄り寄りだしね。

完走した感想

いやーーーーーうれしいですね~~~。

二日間だったけどここまでできるとほんと楽しい。

できたことだけではなくて、やっぱりゴールを意識するのって大事なんだなあと再確認させられました。

さて、やりたかったことはどんな感じになったかな?

  • google アシスタント経由でDialogFlowを操作
    ⇒DialogFlowからIFTTTに変更
  • Webhookで家内LANのラズパイにアクセス
    DDNSを使って適当に。
  • ラズパイにwebサーバを立てておく
    ⇒Node-REDでらくちん!
  • ラズパイからDBにアクセスしてデータ取得
    ⇒Node-REDからできちゃうなんで!すごい!
  • ラズパイアクセスはホワイトリストで制限
    ⇒かなりのガバなので・・・ちゃんとやらなきゃなあ(白目)

 2日間にしては、いい感じかな?

今後は30分電力量をうまいこと教えてもらうことや、温度と湿度を取り始めたのでそのデータ集めをしたらもっといいことできそう?

夢が広がるので、時間が無限にほしいいいいい~~~。