たつをの ChangeLog : 2018-01-27

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 を通さずにログをとりたい場面もあるので、さくっと実現できてよかったです。

関連記事


今話題のビットコイン。
ウェブ界隈では今更感がありますが、ついに、やっとこさ、買いましたよ!!!

ビットコインの実態通貨を購入した!

ビットコインといえば仮想通貨ですが、こちらは実体化したビットコイン。1枚百数十円で、仮想通貨の1万分の1の価格でお得です。しかもリスクゼロ。

単なる金属加工物なので大幅な値上がりは望めませんが、リアルな所有感があり満足度高めです。インテリアやプレゼントに最適ですよ。

最初アマゾンで3枚買ったのですが、あまりに良いのでさらに10枚買い増ししました。


たつをの ChangeLog
Powered by chalow