Node-RED on Intel Edison

IoT/M2Mに有用なOSSであるNode-RED(個人的見解)を先月末に日本でも発売されたIntel Edison上で動かしてみます。

※Node-REDについては[enebular][Node-RED][IoT][Treasure Data] Node-REDで簡単アプリケーション開発とか[enebular][Node-RED][Salesforce][box][S3] Node-REDでSalesforceデータをCSV化してboxとS3へ保存を参照してください(宣伝)

まず、Intel EdisonのセットアップについてはIntel Edisonのセットアップを見てやりました。

ハマりどころはマイクロUSBケーブルが2本いるってとこですかね(MacBook ProはUSBポートが両側に別れてて苦労したw)で、こんな状態に…

まあ、それは冗談としてLinux慣れてる人はハマらずいけると思います。

次はNode-REDなんですが、Intel Edisonには最初からnode.js入ってるので普通にNode-REDを動かすだけです。

もちろんNode-REDリポジトリからcloneして動かしたって良いですが、今回はついでなので別のexpressアプリにNode-REDを読み込んで動かす方法を書いておきます。

# node -v
v0.10.28
# mkdir node-red
# cd node-red
# npm install express node-red```

あとは最小構成でNode-REDを動かすためのexpressアプリを書きます。

vi app.js

var http = require(‘http’); var express = require(“express”); var RED = require(“node-red”);

// Create an Express app var app = express();

// Add a simple route for static content served from ‘public’ app.use(“/”,express.static(“public”));

// Create a server var server = http.createServer(app);

// Create the settings object - see default settings.js file for other options var settings = { httpAdminRoot:“/red”, httpNodeRoot: “/api”, userDir:“/home/nol/.nodered/”, functionGlobalContext: { } // enables global context };

// Initialise the runtime with a server and settings RED.init(server,settings);

// Serve the editor UI from /red app.use(settings.httpAdminRoot,RED.httpAdmin);

// Serve the http nodes UI from /api app.use(settings.httpNodeRoot,RED.httpNode);

server.listen(8000);

// Start the runtime RED.start();```

起動してみます。 ``` # node app.js

Welcome to Node-RED

12 Nov 08:54:51 - [red] Version: 0.9.1-nocolors 12 Nov 08:54:51 - [red] Loading palette nodes 12 Nov 08:54:55 - —————————————— 12 Nov 08:54:55 - [red] Failed to register 8 node types 12 Nov 08:54:55 - [red] Run with -v for details 12 Nov 08:54:55 - —————————————— 12 Nov 08:54:55 - [red] Flows file not found : flows_node-red-edison.json```

だいぶモッサリしてますが…起動しました。ポート8000で起動したのでブラウザからはhttp://<edisonのipアドレス>:8000/redでアクセスできます。

Workspaceが表示されました!