JavaScript
Mesh
meshsdk

電車の遅延情報をMESH SDKで取得してLEDタグでお知らせ

はじめに

電車の遅延を予め知っとけたら、こんな待たんくてよかったのになー。と思うことがそこそこある。でも、毎回調べるのめんどくさい。毎回、通知くるのもうざい。できるだけ、簡単に知りたい。操作なしで知りたい。
遅延情報を教えてくれるAmazon Echoのスキルもあったけど、聞くのめんどくさい。

いいのがないから作ろかなと思って、電車の遅延情報を知る方法調べてたらjsonで取れるサイトがあった。すばらしい。
鉄道遅延情報のjson

MESHのLEDタグを使えば、見ればわかる仕組み作れそうだと思って、妻にプレゼンしてみたて、まあまあいい反応やったので、作ることにした。

MESH-100LE LEDタグ - ワイヤレスLEDライト | ソニー

MESH SDK

デフォルトの仕組みだけじゃ作れないので、MESH SDKを使った。jsonデータを取得して普段使う路線の遅延情報を確認するプログラムを書いた。

初めの方の設定はこんな感じ。ごく普通。
image.png

コードはこんな感じ。4ヶ所書く所ある。
まず、こんな感じ。

Initialize
return {
    runtimeValues : {
        outputIndex : 0
    },
    resultType : "continue"
};

これは、からっぽでよさそう。

Receive

メインの処理。データ取得して、for分でJR神戸線が遅延しているか確認する。
なんで、わざわざcallbackSuccess呼ぶのかよくわからん。サンプルコードとか見てるとこんな感じでやってるから、真似した。

Execute
var url_delay = "https://rti-giken.jp/fhc/api/train_tetsudo/delay.json";

ajax({
    url : url_delay,
    type : "GET",
    dataType : "json",
    success : function(myJson){
        f_delay = false;
        for (var i=0; i<myJson.length; i++) {
            // console.log(myJson[i].name);                                          
            if(myJson[i].name == "JR神戸線"){
                f_delay = true;
            }
            if(myJson[i].name == "JR神戸線"){
                f_delay = true;
            }
        }

        if(f_delay == true){
            log("遅延しています");
            runtimeValues.outputIndex = 1;
        }else{
            log("遅延していません");
            runtimeValues.outputIndex = 0;
        }
        callbackSuccess( {
            resultType : "continue",
            runtimeValues : runtimeValues
        } );
    }
});

return {
    resultType : "pause"
};

最後に。こんな感じ。

Result
return {
    indexes : [ runtimeValues.outputIndex ],
    resultType : "continue"
};

これで、オリジナルブロックの完成。デバッグが大変やった。

MESH

構成を、こんな感じにした。
定期的に、遅延情報を確認して、遅延ありと遅延なしでLEDの色を変える。

image.png

それぞれのブロックはこんな感じ。
まず、タイマーはこんな感じ。

image.png

遅延情報のブロックは特に設定項目なし。

image.png

LEDのブロックは遅延時とnot遅延時で、色を変えた。

image.png

image.png

結果

ちゃんと動いてくれた。UIがLEDだけなので、凄くシンプル。必要なときに目をやればいい。ダイニングとか玄関とかにおいといたら良さそう。

image.png

おわりに

それなりに楽しくMESH SDK使って、そこそこ有益なシステム作れた。
デバッグ環境がしょぼしょぼなので、JavaScript+HTMLで少し動かしてみてがんばった。