いろいろ作るよ | 電子工作・3Dプリント

今まで作った物やその過程を技術的なことを省いて残すよ

LINE送っても気付かない問題を解決するためにLINEを送ったらgoogle homeから喋らせる

この時期に起こる問題ってありますよね。

それは飲み会が多いこの時期によくある 「今日は夕食いらない」連絡問題 です。

LINEを送っても気づかないので前回はLINEを送ると矢文を送る実装をしましたが、非常に邪魔というデメリットがありました。

以前の→

www.tatetate55.com

そこでおうちハックの人なら日に日に増えるスマートスピーカーを使います。

google Home Mini
LINEを送ったらgoogle Home Miniから喋らせる

やりたいことはLINE を送信したら、google homeに何かしら喋らせます。

以下、実装です。

IFTTTを使ってgoogle homeからLINEは直感的にできるのですが、その逆となるgoogle home に何かしら話してもらうようにするにはIFTTTだけではダメなのでそれぞれ手順です。

作業手順

1.Beebotteにアクションを登録

Beebotteにアクションを登録します。BeebotteとはIoT向けのクラウドサービスで50,000 Messages/dayまでは無料で使えます。

Beebotte

アカウントを登録し、ログインをしたら 「Channels」 「Create New」から新規でチャンネルを作成します。

Beebotteアクションを追加
Beebotteでアクション追加

登録が完了したら次にこのアクションを起動させるためのwebhookをIFTTTに登録します。

また、トークンとアクション名はIFTTTで使います。

チャンネルトークン
チャンネルトークン

一旦ここで確認をしておく

curl -i -H "Content-Type: application/json" -X POST -d '{"data":"Hello World"}' https://api.beebotte.com/v1/data/write/googleHome/action?token=token_<TOKEN>

2.IFTTTアプレットの登録

IFTTTにログインをしたらnew appletから

triggerとaction両方を「webhooks」にしてAppletを作成します。

IFTTTのwebhooks
IFTTTにwebhooksで登録

Method: POST
Content Type: application/json
boddy:  {"data" : "帰る"}

URLには先ほど作ったアクションとトークンを追加します。

https://api.beebotte.com/v1/data/write/googleHome/action?token=<TOKEN>

3.LINE DevelopersにMessanger APIを追加する

f:id:ruteinyoyokk121:20181222225021p:plain
LINE Developers

次にトリガーとなるラインを追加します

LINE DevelopersでMessanger APIを作成します。

家族用LINE Bot
LINE bot

作成しましたら、チャンネル基本設定にあるメッセージ送受信設定から ・webhook送信を利用する。 ・Webhook URL の2点を設定します。

https://maker.ifttt.com/trigger/<EVENT>/with/key/<SECRET_KEY>

でIFTTTのWebhooks Documentatsから作れます。(また、curlコマンドも表示されるので、うまく行かなかったときなどにテストもできます

f:id:ruteinyoyokk121:20181222020540p:plain

4.mac(or ラズパイ)にgoogle-home-notifierをインストール

mac

最後にmacにgoogle-home-notifierとコードを記述して完了です。 ただ、こちらですがgoogleの仕様変更に伴いちょくちょく変わるので注意が必要です。

google-home-notifierのインストール

$ mkdir googleHome; cd $_
$ npm update -g npm
$ npm init
$ npm install --save google-home-notifier

エラーが出る場合はPythonのバージョンが2.xか確認。

次に google-home-notifier/google-home-notifier.jsのenをjaに変更します

$ vim google-home-notifier/google-home-notifier.js

また、そのままだとエラーが出るのでパッケージのバージョンを変更 (12/22現在)

node_modules/google-home-notifier/package.jsonの

"google-tts-api": "0.0.3","google-tts-api": "0.0.4",に変更

アップーデート

cd node_modules/google-home-notifier
npm update google-tts-api

次にAlexaに喋らせるためのindex.jsを記述します。

MQTTをインストール

npm install mqtt --save

実行するindex.js

const googlehome = require('google-home-notifier');
const language = 'ja';

var mqtt = require('mqtt');
var client = mqtt.connect('mqtt://mqtt.beebotte.com', {username: 'token:token_<ACCESSTOKEN>', password: ''});

googlehome.device("Google-Home", language);
googlehome.ip("<IPADDRESS>");


client.on('connect', function() {
  console.log('connect');
  client.subscribe('googleHome/action');
});

client.on('message', function(topic, message) {
  console.log(message.toString());
  googlehome.notify('帰る', function(res) {
    console.log(res);
  });
});

google homeのIPアドレスはアプリからわかります。

ラズパイ

(すみません。ラズパイは記事を書くときにまさかの使用不能状態+届かない状態だったため後日追記します・・) ここら辺が参考になるかと思います。https://qiita.com/ktetsuo/items/5cd3cc72f18fa885affd

逆にgoogle homeからlineに送るには

こっちはすごく簡単でIFTTTからgoogle assistantから「Say a simple phrase」からのLINEの「Send message」で送信できます。これだけ!

終わりに

少し、長くなってしまいましたがnodejsの箇所以外はIFTTTやBeebotteを使えばそこまで記述が多い訳ではないのでスマホでは気付かない場合などにやってみてはいかがでしょうか。 運用して変更した箇所やまたアップデートの必要がある場所などが出てきましたら更新いたします!