部員三号さんの「 Raspberry PiとJavaScriptではじめる IoTプログラミング」について進めて行った結果の日記です。
必要なもの
- ラズパイ一式(自分は初代モデルBを使用)
- ブレッドボード
- LED
- 220Ωの抵抗
- PCF8591 AD/DA コンバータモジュール(YL-40)
あるといいもの
- ラズパイ GPIO拡張ボード(I2Cの線が出ているもの)
当初はホイホイ進んでいきましたが、一つだけ注意点。
node.jsをいじっている方には当たり前の話かもしれませんが、jsはnpm installを行ったディレクトリに格納すること。
PubNub編に入るといきなり躓きます。
Lチカのサンプルですが、どうもSDK V3で記述されていたため、動作しません。そこで以下のように書き直しました。
var publishKey = 'pub-key'; var subscribeKey = 'sub-key'; var channel = "led-onoff"; // channel名の設定 var raspi = require('raspi-io'); var five = require("johnny-five"); var board = new five.Board({ io: new raspi() }); var PubNub = require("pubnub"); board.on("ready", function() { var led = new five.Led('P1-22'); // PubNub初期化 pubnub = new PubNub({ ssl : true, publishKey : publishKey, subscribeKey : subscribeKey }); // channel購読(データの受信) pubnub.subscribe({ channels: ['led-onoff'] }); pubnub.addListener({ message: function(message) { var msg = message.message; console.log('>',msg); if(msg.action === 'on') { led.on() } else { led.off(); } } }); });
変わっていた点は
- 鍵の指定方法が変わっていたこと
- subcribeで受信するのではなく、どうやらaddListenerを指定する必要がありそうなこと
の二点でした。ちゃんと調べきれているわけではないので、本当はもっと少ない改造で行けるかもしれません。
subscribeにあるchannelsの指定もいけてませんし。
あくまで動かすためだけの修正です。HTMLの方もsyntax errorがあったので、取り除いておきました。
センサーとLEDを取り替えるたびに抜き差しするのは馬鹿らしいので、続きはジャンパワイヤーが届いてから。