古い記事
ランダムジャンプ
新しい記事
MESH の SDK をいじってみました。
言語は JavaScript です。
公式のドキュメントなどを見てコピペしながらいろいろやってると分かってきます。
そんなに複雑なものではないです。


とりあえず練習として最初に作ってみたのが、「コメントとタイムスタンプをパラメータとしてウェブアクセスすることでログを残す」ためのカスタムタグ「ログる」。

MESH カスタムタグ

MESHタグからの通知をトリガーとして、タイムスタンプとコメントを黙々とウェブにログります。

MESH SDK my first custom tag

「Execute」のコードはこんな感じ。
関数 ajax 以降はサンプルプログラムのコピペ+改変で、Qiitaのmyfairさんの記事を参考にしました。
結局 URL の組み立てくらいしかプログラミング要素なし。
日時を表す文字列を作るのが面倒なのですが何か手軽な方法ないでしょうか?

var dt = new Date();
var y = dt.getFullYear();
var m = toNiketa(dt.getMonth() + 1);
var d = toNiketa(dt.getDate());
var H = toNiketa(dt.getHours());
var M = toNiketa(dt.getMinutes());
var S = toNiketa(dt.getSeconds());
function toNiketa(v) { return v < 10 ? '0' + v : v }

var ts =  y + m + d + H + M + S;

var epurl = 'http://****.sakura.ne.jp/test/loguru.cgi?c=' + ts + ',' + properties.val;

ajax({
  url: epurl,
  type: 'get',
  timeout: 5000,
  success: function(contents) {
    callbackSuccess({
      resultType: 'continue',
    });
  },
  error: function(request, errorMessage) {
    log('ERROR: ' + errorMessage);
    callbackSuccess({
      resultType: 'continue',
    });
  }
});
return {
  resultType: 'pause'
};

アクセス先URL(epurl)のCGIは、パラメータをテキストファイルの末尾に append するだけ。

#!/usr/bin/env perl
use strict;
use warnings;
use CGI;
my $LOG_FILE = 'log.txt';
my $q = new CGI;
print $q->header(-charset => 'UTF-8');
my $c = $q->param('c') || "";
if (open(my $fh, ">>", $LOG_FILE)) {
    print $fh $c."\n";
    close($fh);
}

こんな風にデータがファイルにたまっていきます。

20180126214840,明るさ変化あり
20180126220003,誰かいる
20180126220127,誰かいる
20180126222112,明るさ変化あり
20180126223515,ボタン押された
20180126230128,ボタン押された

レシピは単純です。
「ログる」タグを終端に繋げるだけ。
この記事の冒頭にのせました。

様々な事情により IFTTT を通さずにログをとりたい場面もあるので、さくっと実現できてよかったです。

関連記事