2019年9月26日木曜日

9/25 役割に分かれて作業

平松:WebAPIから時間を取得する事が出来た。
   大まかな形が出来たので次回は細かいところを仕上げたい。

内田:前回のエラーは解決した。ons-navigatorを2つ設置した事がエラーの原因だった。
   基本的なパターンは完成したので次回はレイアウトを仕上げていく。

小山:今日はGASのAIの続き。上手く動作しないためどのようにしてカレンダーに
   複数回時間ごとに入力するか考えた。
   次回で作成できるように仕上げたい。

谷口・勇:論文の作成。昨年の先輩の論文を参考に大まかに書いた。
     アプリ構成、システム・ ハードウェア構成、開発ツール、デバイス、
     アプリケーションは入力完了。

2019年9月25日水曜日

9/20役割に分かれて作業

小山:送られてくるテキストデータをJSON成形したものをとりあえず表示しようとする
   も分からない。
   必要な部分を抜き取れるようになれば書き込めるようになると思う。

平松:invalid data表示され時刻が取得できない。

内田:ons-navigatorとons-templateを組み合わせることにより新しくhtmlを作らなく
   ても仮想のページを作ることはできた。
   QRコードを読み取ったタイミングでページを切り替えようとするとエラーになる
   ので次回解決策を考えたい。
   

2019年9月18日水曜日

09/18役割に分かれて作業

谷口・勇
スマホアプリがGoogle Assistantからも「〇の薬飲んだよ」というと変更されるようになった。前回できなかった原因は不明。
現在は卒論を少しずつ進めている。

小山
作成していたWebAPIをゼミのアカウントに移動。debug先のIDを変更していなかったせいで時間ロス。現在はA1, A2, A3それぞれ実行できるようになった。
A3が完成した。カレンダーの全件イベント、IDで指定した個別のイベントそれぞれ返すようになった。また5回催促されたとき(num_reminder=5)イベントタイトルを「〇の食〇の薬(応答無)」を変更、イベントの色も黄色に変更するようになった。
残るはA1のテキスト情報をカレンダーに書き込むところである。9月末までに完成させれるよう頑張りたい。

平松
薬の時間になると発話し、その後一定時間ごとに繰り返すようなプログラムが完成した。
次回は完成したA3と連携し、実際にカレンダーのデータをみてしゃべるようにしていきたい。

内田
レイアウトが思った通りに行かず苦戦中。
スマホの種類問わず、見やすい画面を作りたい。

仕様書を改訂しVer.1.1としてリリース
主な変更内容
・A3の引数に催促回数を追加
・GASのアカウント変更に伴ってWebAPIのURLを変更
・改訂記録を追加


IFTTTでWebhookとGoogleHomeの連携方法

IFTTTでWebhookとGoogleHomeの連携方法は以下のリンクに表示してます。

https://drive.google.com/open?id=1lXoR1BZ2k_vh2I78JYmOdb2WLzhQ0wje

2019年9月13日金曜日

09/13役割に分かれて作業14

勇・谷口 IFTTTできることはすべて終わったため、webnockとGoogleHomeとの連携の方法をまとめた。
外出しているときにgoogle homeに話しかけてカレンダーを書き換えることができないためどうするか考える。←スマホアプリで話しかけるとgoogle homeとの連携ができていないからかカレンダーには変更されなかった。

小山 RPで薬の情報を返すようになった
JSON形式を扱えるようになった。
次回は用法や数量の入力方法を考える。

内田 QRコードのレイアウトが想像できるようになった。
背景や画像を入れてわかりやすくしていきたい。

平松 朝の薬、夜の薬の時間を取得しその時間になると飲んだかどうか喋らすことに成功した。
少しずつ完成にちかづけていきたい。

2019年9月12日木曜日

9/11役割に分かれて作業

谷口・勇
前回、IFTTTで「夜の薬飲んだよ」バージョンのweb hockとの連携がうまくいったため、今回は朝と昼のバージョンのプログラムを作った。

小山
A2完成(たぶん)指定の時間が変更できるようになった。JSON形式にした処方箋情報を読み取ってカレンダーに書き込めるようにしていく。

内田
実際に使用するにあたりどのようなレイアウトにすれば お年寄りの使いやすいアプリができるのか思ったより時間がかかっているため、シンプルかつ誰もが使いやすいものをで消えるだけ早く完成させたい。

2019年9月6日金曜日

9月4日

勇・谷口

前回はできなかったが、今回はIFTTTでGoogleHomeに『◯◯の薬飲んだよ』と伝えるとWebhookで小山さんのWebAPIに『◯◯』の情報が送られカレンダーの色とタイトルを書き換えることができた。→GoogleHomeとWebhookの連携ができた
Webhookに与えるJSON形式のパラメタは下記の通り

{
    "timing": "朝"
}
リスト1.IFTTTのWebhookに設定するJSONパラメタ

小山さんのWebAPIを修正すると連携できた。
URLのところに何を入れればよいのか迷っていたが小山さんのWebAPIのURLでよかった。

小山

A2を編集してGoogleHomeに話しかけるとGoogleカレンダーの色とタイトルを変更することが出来た。
このサイトによると、doPostで公開したWebAPIでJSON形式で入力データを取得する際は
var parms = JSON.Parse(e.postpat.getDataAsString());
var timing = params.timing;
と書き込む必要があった。
次回は正規表現を用いてスケジュール(のタイトル)を絞り込み、スケジュールの変更ができるかを確認する。

内田

ついにQRコードリーダー作成は終わり、後はレイアウトを整えるだけとなった。
改行の問題もQRクラスを作成することで解決することが出来た。QRクラスは複数回に分割して読み取ったQRコードのデータを一つにまとめるために考案したクラスである。ソースを下記に示す。
    // QRクラス
    class QR {
      constructor(str) {
          this.data = str;
      }
      get() {
        return this.data.split('\r\n');
      }
      append(str) {
          this.data += str;
      }
    }
リスト.1

まず、起動時に、インスタンスを作成する。
var qr = new QR('');
QRコードを読み込んだら、その都度読み取ったデータ(result.text)を追加する。
qr.append(result.text);
読み取ったデータをサーバへ送るときは、getメソッドを使ってお薬手帳の行単位に文字列配列にしたものを取得してAjaxでサーバへ送信する(QRコードで読み込んだデータの改行コードは\r\nであることに注意)。

平松

settimeoutで設定された時刻(ここでは朝の薬を飲む時刻)になったらGoogleHomeにしゃべらせるというNodejsのプログラムをリスト2に示す。Googleカレンダーの時刻はグリニッジ標準時刻で格納されていることに注意。日本時間はグリニッジ標準時刻よりも9時間進んでいる。グリニッジ標準時刻を引数にDate関数を呼び出すとローカルタイム(日本時間)に変換される。

var url = 'http://192.168.11.39:8091/google-home-notifier';
var webclient = require("request");

var data ={
 "drug_notifies": [
  {
   "title": "朝の薬の時間です",
   "description": "クラビット細粒10% 100mg 3錠",
   "id": "t4s1bi3v05bhvcjp41rr89qulg@google.com",
   "location": "5",
   "startTime": "2019-09-04T04:37:14.000Z",
   "endTime": "2019-08-03T01:01:51.000Z",
   "color": "11"
  },
  {
   "title": "夜の薬の時間です",
   "description": "クラビット細粒10% 100mg",
   "id": "v84ho65ceseoja7257s1moj1o8@google.com",
   "location": "0",
   "startTime": "2019-08-03T09:00:00.000Z",
   "endTime": "2019-08-03T09:30:00.000Z",
   "color": "11"
  }
 ],
 "num_reminder": "5",    // 催促回数
 "taiking_status": "0",    // 服用状況 (0:未服用, 1:服用済)
 "status": "0"        // 0=成功, 1:失敗
}
var startTime = new Date(data.drug_notifies[0].startTime);
var now = new Date();
var df = startTime - now;

setTimeout(function() {
    talk(data.drug_notifies[0].title);
  }, 
  df
);

//
// 発話サーバにメッセージを送る
// HTTPリクエスト(GETメソッド)
//
function talk(message){
 console.log(message);
 webclient.get({
  url: url,
  qs: {
   text: message,
  }
 }, function (error, response, body) {
  if(!error) {
   console.log(body);
  } else {
   console.log('Error:' + error);
  }
 });
}
リスト2.タイマを設定して5秒後に発話サーバへ発話リクエストを送る