Google Home関係となります。
Google Home miniでの拡張機能で、dialogFlow/ Fulfillment
のwebhook 経由で、外部APIから IoT更新のセンサー値データを読み込みます。
先人さまの、記事を参考に機能を追加しました。
Webhookは、今回はappEngine(GAE) 使いました。
Google以外のクラウドでも多分よさそうです。
*) 先日 Home mini 実機を入手したので、基本機能も良く理解していませんが、
少しづつ調べたいと思います。
# thanks/ 参考
自然言語処理を容易に実装できるDialogflow(旧:API.AI) を使ってみる
https://qiita.com/flatfisher/items/76bc86b65e5f2150a1a0
GoogleHomeをDialogflow(旧:API.ai)でスプラトゥーンアシスタントにする
https://qiita.com/tak_km/items/c06f45c6692dceb9258d
手順としては、
dialogFlow で、 Entity, Intents 等を設定しておき、
Fulfillment で、 webhook を指定
シミュレータでテスト、みたいな流れでした。
# 概要
# 動画
指定場所の、温度センサー値読み出し。
VIDEO
*) テスト版で、テストアプリの接続確認の質問出てます。
申請すれば、確認承認後は出ないかもしれません。
# Code ,python (utf-8 )
webhook.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*-
# 日本語
from urllib2 import urlopen
import webapp2
import json
import os
#define
mDnsName="http://your-DNS.jp"
#
class WebhookHandler(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.write("this is [GET] url" )
def post(self):
sURL =mDnsName +"/tst/ghome/dat/device1-api"
result = json.load(urlopen(sURL))
# text = "ok, temperature is " +str(result["temperature"])+ " degree"
text = "ok, リビングの温度は、" +str(result["temperature"])+ " 度です。"
sDat = "{'speech':'"+ text+ "'"
sDat += ",'displayText' :'"+ text+ "'"
sDat += "}"
sJs = json.dumps(sDat )
dict = {'speech' : text , 'displayText' :text }
sDict =json.dumps(dict)
#print(json.dumps(dict) )
# print(sJs )
self.response.headers['Content-Type'] = 'application/json'
self.response.write( sDict )
app = webapp2.WSGIApplication([
('/webhook', WebhookHandler )
], debug=True)
データ保存クラウドの、レスポンスの参考は下記です
{"temperature":"24","humidity":0}
Home側から呼ばれた時、
最新の、センサー値を出力する必要があります。
# dialogFlow のJSON ダンプを追加しました。2017/10/26
# IoT側
子機は省電力版の BLE(arduino) + BLE gateway使用していますが、
クラウド側にデータ保存できれば、他の機種でも問題ないと思います
参考:
BLE gateway 機能:
http://knaka0209.blogspot.jp/2017/08/nanoPi-4.html
BLE子機:
http://knaka0209.blogspot.jp/2017/09/RN4020-4.html
==== Update:2017/10/26 ====
動画の追加:複数のセンサー対応。
VIDEO
会話の内容(例)
1) センサーをチェック (音声入力)
2) Home (音声出力)
ok,リビングの温度は、24度です。
玄関の温度は、22度です。
センサー値の平均は、23度です。
現在の時刻は、11時45分です。
*)少し長くなりましたが。
平均値の計算、時刻の追加は オプションです
テスト版は同じです。
==== Update:2017/10/27 =====
Home対応と、グラフ表示機能を追加しました。
2箇所のセンサーのログの監視が可能です。(PC ,mobile )
field1: 1台目
field4: 2台目
異なるクラウドサービス (thigSpeak )にも、
データ送信機能を追加しています。
*) グラフの最新値は、Homeの音声出力する値と
同一になります。
==== update :2017/10/30 ====
補足、ショートカットの利用 (ご参考まで )
一般的な話しですが , Homeアプリのショートカットを使うと、
テストの追加したアプリも少し楽になりました。
テスト版モードに切り替わる点は、おなじですが。
音声入力が楽になります。下記を登録しておきます。
1)
テスト
内容、テスト用アプリにつないで、
2)チェック、intentsで定義した文章
内容、センサーをチェックして
# 入力、
OK,Google テスト
チェック
1で、テスト接続
2で、実行
動画
VIDEO
==== =====