ニュース
» 2016年10月11日 11時00分 公開

「さくらのIoT Platform」を知り、プロトタイプを試作する(5/7 ページ)

[さくらインターネット,MONOist]
  • Node.jsのインストール

 NVMを使用し、Node.js(今回はv6.5.0)をインストールします。

# nvm install v6.5.0
  • 必要なモジュールのインストール

 今回作成するプログラムに必要となる、3つのモジュール(express、body-parser、request)をインストールします。

# npm install express body-parser request
  • ロケールの変更

 そのまま日本語を含むjsファイルを作成すると日本語部分が文字化けしてしまうため、ロケールを変更します。具体的にはi18nファイルのLANGをデフォルトの「C」から「ja_JP.utf8」に変更します。

# vim /etc/sysconfig/i18n
 
LANG="ja_JP.utf8"
SYSFONT="latarcyrheb-sun16"
 
# . /etc/sysconfig/i18n
  • pot.jsの作成

 以下の内容でjsファイルを作成します。なお、本件では給湯温度を直接計測せず外気温を取得しているため、送信の際に仮の値としてtempareture の値に60℃を加算しています。

var express = require('express');
var app = express();
var bodyParser = require('body-parser')
var request = require('request');
app.use(bodyParser.json());
 
function send_slack(text) {
  var payload = {
    "text": text,
  };
 
  var options = {
    url: '《SlackのIncoming Webhooksにて生成されたWebhook URL》',
    form: 'payload=' + JSON.stringify(payload),
    json :true
  };
 
  request.post(options, function(error, response, body){
    if (!error && response.statusCode == 200) {
    } else {
      console.log('error: '+ response.statusCode + body);
    }
  });
}
 
var tempareture = null;
var seconds = null;
 
app.post('/pot', function(req, res) {
  var module = req.body.module;
  var channels = req.body.payload.channels;
  channels.forEach(function(channel){
    console.log(module, channel);
    if(channel.channel == 11){
        tempareture = channel.value;
        console.log(tempareture + " degrees");
    }
    if(channel.channel == 12){
        seconds = channel.value;
        console.log(seconds + "sec");
        var c = parseInt(seconds/0.5, 10);
        var message = "ジャ" + Array(c+1).join("〜");
        if(c<2){
            message = "チョロ";
        }
        send_slack(message + " (" + (tempareture+60.0) + "℃)");
    }
  });
  
  res.send("OK");
});
 
app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});
  • pot.jsの起動

 nodeコマンドでpot.jsを起動し「Example app listening on port 3000!」のメッセージが表示されれば、変換サーバの準備は完了です。サービスを停止したい場合は「Ctrl+C」を押下します。

# node pot.js

Copyright © ITmedia, Inc. All Rights Reserved.