tokuhirom's Blog

WebAPIを駆使して東京電力使用状況メーターを作る!(Node.js版)

http://chalow.net/2011-04-02-1.html にかいてあるものを node.js にしてみた。

HTTPのリクエストには https://github.com/driverdan/node-XMLHttpRequest を使用。node.js の HTTP クライアントライブラリは Furl::HTTP とおなじぐらい低レベルなので、ラッパーをかませないととてもつかえない。

var sys = require('sys');
var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;

var APPID = 'APPID';
var URL = 'http://setsuden.yahooapis.jp/v1/Setsuden/latestPowerUsage?appid=' + APPID;

var xhr = new XMLHttpRequest();
xhr.host = URL;
xhr.onreadystatechange = function () {
    if (this.readyState == 4) {
        var body = this.responseText;
        var usage = body.match(/<Usage.*?>(\d+)<\/Usage>/)[1];
        var capacity = body.match(/<Capacity.*?>(\d+)<\/Capacity>/)[1];
        var hour = body.match(/<Hour.*?>(\d+)<\/Hour>/)[1];
        var rate = Math.ceil(usage / capacity * 100);

        var graph_url = 'http://chart.apis.google.com/chart?chxt=x&chbh=a,4,5&chs=225x69'
        +'&cht=bhs&chco=FFCC33,FF0000&chd=t:'+rate+'|'+(100 - rate)
        +'&chtt=%E6%9D%B1%E4%BA%AC%E9%9B%BB%E5%8A%9B%E4%BD%BF%E7%94%A8%E7%8A%B6%E6%B3%81'
        + hour + '%E6%99%82%E5%8F%B0&chts=676767,14.5';

        sys.puts("Location " + graph_url + "\n\n");
    } else {
        // console.log("...");
    }
};
xhr.open('GET', URL);
xhr.send();