部員三号さんの「 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を取り替えるたびに抜き差しするのは馬鹿らしいので、続きはジャンパワイヤーが届いてから。