WebのUIからではなくて自分のサーバーからObnizをコントロールするというのを 前回 と 前々回 やりました。
obniz Event
でも、Obniz は、自分のサーバーを持っていなくても定時実行などが obniz Event という機能を使って実現できるのです。
これは、次の3種類のトリガー(文字通り引き金)を設定することでプログラムを実行させる仕組みです。
1.Webhook(POST,GETがきた毎 つまり他のプログラムからも動かせる)
2.決められた時間(毎日12:00に等)
3.決められた時間間隔(30分毎、1時間毎等)
2と3はLinuxなら cron や Windowsならタスクスケジューラなどで実装される機能ですが、それをObnizのマイページに作った各プログラムに対して設定できます。
たとえば、「毎日何時になるとサーボを動かして花に水をやる」とか「毎分何かを計測する」などの機能として手軽に便利に使えます。
1の Webhook(ウェブフック) は、Obniz サイトのマイページに作った各プログラムにURLを与えて、それを外部からたたくことで実行させるという機能です。もちろんURLパラメータで引数を与えることもできます。また、生成されるURLは https ですし、いたずらされないように アクセストークン をうこともできます。
これで、様々な別のプログラムやWebサービスとの連携が可能になります。
で今日は、3を使って15分毎に実行するのを試します。
マイページを開く
Obnizのサイトで マイページ を開き イベント>新規作成 で new event の設定ページが開きます。
ここで適当な「名前」を入力し「実行するWebApp」を登録したリポジトリのコードの中から選択し、次に「繰り返し」を選択して繰り返すインターバル(ここでは15)を書いてその単位を「minuts」か「hour」のいずれかから選びます(ここではminuts)。
そして「作成」ボタンを押すと登録できます。
※注:実行回数は1日に120回が上限となっているので、それを超えてしまう12分未満は設定できません。
「作成」ボタンを押すと「テスト実行」ボタンが現れます。これですぐに動作を確認することができます。
今回のコード
今回動作させるコード(test-timeStr)は下記のようなもので、実行時の 時間、分、秒を表示するだけのものです。
<html>
<head>
<meta charset="utf-8">
<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.5.0/obniz.js" crossorigin="anonymous"></script>
</head>
<body>
<script>
let time={
getNow: function () {
let now = new Date();
return {
hour: now.getHours(),//時
min: now.getMinutes(),//分
sec: now.getSeconds(), //秒
msec: now.getMilliseconds() //ミリ秒
}
},
mkDigital: function (now) {
let H = (now.hour < 10) ? ('0' + now.hour) : now.hour;
let M = (now.min < 10) ? ('0' + now.min) : now.min;
let S = (now.sec < 10) ? ('0' + now.sec) : now.sec;
return H + ':' + M + ' ' + S //時間文字列を作って返す
}
}
const obniz = new Obniz("0123-4567");//0123-4567は自分のobniz ID に書き換える
obniz.onconnect = async function () {
let timeStr = time.mkDigital(time.getNow());
obniz.display.clear();
obniz.display.print(timeStr);//時間文字列を表示する
obniz.display.print('refresh in 15min');
}
</script>
</body>
</html>
そして結果
15minインターバルで pic.twitter.com/8Dmp9q8OUA
— 高橋登史朗 ( T blockchain T ) (@toshirot) 2018年6月20日
この表示は30秒で消えて、、、
15分後 pic.twitter.com/yqRToKdyo1
— 高橋登史朗 ( T blockchain T ) (@toshirot) 2018年6月20日
15分後に表示。1秒ずれたけどほぼ15分。