見出し画像

子供の朝の支度とトイトレをGoogle Homeに手伝ってもらうよ

背景

奥様が復職することになり、2歳の息子くんが保育園に入ることになりました。
今は8時までのんびり寝ていますが、これからは7時過ぎに起きて、朝のうちに色んな支度をしなければなりません。
さて、嫌がる子供に毎日同じことを言い聞かせるのって結構ストレスです。

そこでGoogle Homeを使います。

子供の支度関連をGoogle Homeに喋って貰えば、「ほら、Google先生もトイレに行こうって言ってるよ!」と、良いことを言ってくれる新たな家族ができます。
直接子供に嫌な顔をされるよりも、間接的な立場になれるので気持ちが和らぐと思って作ってみました。「パパはどっちでもいいけど、トイレ行かないとGoogle先生怒るよ?」的な感じ。

Google Apps ScriptからRaspberry Piを呼び出す

今回はGoogle Apps ScriptからRaspberry Pi上のngrokを経由してGoogle Homeを喋らせます。

まずはGoogle Sheetsに喋らせたいデータを用意します。
以下のようにA列に時刻、B列にGoogle Homeに喋って貰いたい内容を用意します。

『http』から始まるのは、Raspberry PiのWebサーバーに保存したmp3ファイルです。
この場合Google Homeは喋るのではなく音楽を再生してくれます。
Google Homeで音楽ファイルを再生する方法についてはこちらに書きました。

Google Apps Scriptのプログラムはこちらです。

function checkCommand() {
  var now = new Date();
  now.setSeconds(0, 0);

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheetByName("Schedule");
  var data = sheet.getSheetValues(2, 1, sheet.getLastRow(), sheet.getLastColumn());
  
  data.forEach(function(value, index) {
    var time = new Date(value[0]);
    time.setFullYear(now.getFullYear(), now.getMonth(), now.getDate());
    time.setSeconds(0, 0);
    
    var diff = (now.getTime() - time.getTime()) / (1000 * 60);
    if (Math.round(diff) == 0) {
      var message = value[1];
      sendRasPi(message);
    }
  });
}

function sendRasPi(message){
   var payload =
   {
     "text" : message
   };

   var options =
   {
     "method" : "post",
     "payload" : payload
   };

   UrlFetchApp.fetch("http://{ngrokの文字列}.ngrok.io/google-home-notifier", options);
}
【プログラムの説明】
1. Google SheetsからA,B列を取得
2. 現在の時刻と設定された時刻を比較
3. 現在の時刻と一致するmessageをRaspberry Piに立てたngrokにPOSTする

Google Apps Scriptで上記のプログラムを1分に1回実行されるように設定します。完成です。

感想

思った以上にこいつは便利です。
忙しい朝の時間に助けてくれる執事(じいや)が一人増えた感じで、「ほら、じいや怒らせんなよ。早くトイレ行かんとな」という感じで、ちょっと間接的に促せるようになりました。

毎日何かをさせるのって面倒ですもんね。

この記事が気に入ったらサポートをしてみませんか?