時報を作る

obniz Eventを使ってプログラムの自動実行。

obniz Eventとは

obniz Eventはトリガーとプログラムを設定しておくと、自分でプログラムを動かしてなくてもトリガーが起きた時に自動的にプログラムを動かすサービスです。

詳細は obniz Event

Eventを使うことで手元でページを開いたりNodejsのアプリを用意したりしなくても、自動的にプログラムを動かすことができます。
今回は1時間ごとに音が鳴るようなイベントを設定してみましょう。

時報を作る

イベントの作成方法は obniz Event にも詳しく載っています。

まずはアカウントを作成をし、マイページよりobnizをアカウントに追加します。

追加できたらリポジトリにプログラムを作成してみましょう。
このプログラムをイベントに登録して1時間ごとに呼ばれるようにします。
リポジトリ一覧から作成を押し、適当な名前(今回はtestとしています。)でhtmlを作成します。

配線とプログラム

まずはスピーカーをobnizにつなぎます。今回はio3とio9につなぎました。

プログラムではボタンなどを押さなくても開かれるたびに音が鳴るようにします。

<!-- HTML Example -->
<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
  <script src="https://unpkg.com/obniz@1.14.1/obniz.js"></script>
</head>
<body>

<div id="obniz-debug"></div>

<script>
var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {

  var speaker = obniz.wired("Speaker", {signal:3, gnd:9});
  speaker.play(1000);
  await obniz.wait(1000);
  speaker.stop();
}
</script>
</body>
</html>

このhtmlを先ほど作成したhtml(testとして作成したやつです)に貼り付けて保存します。
実行すると1秒だけ1khzの音がなるはずです。

イベントでは、処理が完了した時にdone()関数を呼ぶことになっています(詳しくは obniz Event で)。
呼ばない場合は30秒後に自動的にエラーとして停止することになります。
done関数はイベントから呼ばれたときだけ存在する関数なので、doneがあるかどうかをチェックしてあれば、doneを呼ぶようにします。

<!-- HTML Example -->
<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
  <script src="https://unpkg.com/obniz@latest/obniz.js"></script>
</head>
<body>

<div id="obniz-debug"></div>

<script>
var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {

  var speaker = obniz.wired("Speaker", {signal:3, gnd:9});
  speaker.play(1000);
  await obniz.wait(1000);
  speaker.stop();

  if (typeof done === "function") {
    done();
  }
}
</script>
</body>
</html>

イベントに登録

イベントの作成は同じくマイページのイベント一覧にある「作成」から行います。

  1. name: 名前です。なんでも良いので今回はhourlyとしました。
  2. WebApp to run: イベント時にどのhtmlを開いて実行するかをしています。先ほど作成したtestを選びます。
  3. Event Triggers: どのトリガーにするかを選びます。Everyを選び1にして、hourを選びます。これで1時間毎になります。

入力が終わったらCreateを押して作成します。

これで完了です。

試しに実行してみましょう。イベント画面の「テスト実行」ボタンを押すと試しに実行させることができます。音は鳴りましたか?
これで1時間ごとに自動的にスピーカーから音がすると思います。

もしうまく動かなかったりした場合はイベント画面で実行ログを確認することができます。
エラーやconsole.log()などで出力したログを確認できますので、それを使って確認してみて下さい。