【Raspberry Pi】子供への通知はGoogle Homeさんに任せた

Google Home with Raspberry Pi

はじめに

毎朝、子供に「やれ準備は終わったか」だの「そろそろ出発の時間だぞ」など言ってるのが疲れるので、Google Homeさんにお願いすることにした。彼女ならスマートスピーカーの名の通り、スマートにお知らせしてくれることだろう。きっと。

先日、Raspberry Pi Zero Wも手に入れたし、node.js使って定刻通知をする仕組みを作ってみる。

用意したもの

  • Google Home
  • 彼女がいないと今回の話は始まらない。頑張ってくれたまへ。

  • Raspberry Pi Zero W
  • 主役その2。今回のシステムは常時稼働が条件なので、省エネ型のZeroをチョイスした。

実現方法

メッセージファイルはスプレッドシートを使うことにした。どこからでも手軽に書き換えられるし、夫婦で共有管理もできるので便利である。

  1. 特定の時間になったらスプレッドシートから該当メッセージを読み込む
  2. 取得したメッセージをGoogle Homeにしゃべらせる

これだけである。実に簡単だ。

[amazonjs asin=”B0746H9881″ locale=”JP” title=”Raspberry Pi Zero W Starter Kit”]
“【Raspberry Pi】子供への通知はGoogle Homeさんに任せた” の続きを読む

Google Apps Scriptで使えるファイルロガー

だって、コンソールを開かないと見られないし、なによりバッチが途中でコケた時とか、なんの記録も残らないんだぜ。

ってことで、ログのテッパン「ファイル(Google ドキュメント)ロガー」を作ってみた。

ソースコード

主目的は【ログを都度出力にすることにより、処理ダウンによるログの欠落をなくす(検知する)】である。
若干パフォーマンスは落ちるものの、この方式でイク!

gallberry/GALogger

“Google Apps Scriptで使えるファイルロガー” の続きを読む

Google Apps Scriptでタイムアウトを検知する

Google Apps Scriptの制限について

Gooogle Appsの各種サービスを利用する上で考えて置かなければならないのが利用制限である。下記のURLに詳細が記載されているとおり、利用時にはいろいろな制限がある。

Google Apps Script ダッシュボード

今回はこの中の実行時間6分の壁について考えてみようと思う。

そもそも実行制限を超えると何が起こるか?

答えは簡単「何も起こらない」である。処理の書き方にもよるけど急に止まる。ロールバック処理を入れようがない。途中でファイル出力とかしてたら書きっぱなしである。
そのためトリガーをセットしてバックグラウンドで実行している時、タイムアウトが発生した場合、なにもわからないのである。

こんなのいかがでしょうか?

5分の壁を超える方法は色々な人が教えてくれているようなので、本稿ではそもそもタイム・アウトしてしまった時の処理について考えてみた。

まぁ、簡単に言うとこれだけである。

  1. タイムアウト検知用の処理を作成
  2. メイン処理開始時に上記処理を10分後(値は任意)に起動するようにトリガーを作成
  3. メイン処理終了時に先のトリガーを削除

Class ScriptApp

サンプルコード

[javascript highlight=”18,22″]
/**
* タイムアウト通知処理
*/
function sendTimeout() {
// ここにタイムアウト時に通知を行う手段を記載する
// メールで通知やSlackに投稿なんぞいかがでしょう
}

/**
* メイン処理
*/
function main() {
// タイムアウト検知用トリガーをセット(10分後)
var triggerTimeout = ScriptApp.newTrigger(‘sendTimeout’).timeBased().after(10 * 60 * 1000).create();

// メインの処理を記載します

// タイムアウト検知用トリガーを削除
ScriptApp.deleteTrigger(triggerTimeout);
}
[/javascript]

注意

タイムアウトが発生した場合、検知用トリガーが残りっぱなしになるので、こればっかりは運用で削除するしかありませんな・・・