概要
さて、電子工作のHello Wordで有名なLチカ、LEDをつけてそれをチカチカさせるやつです。
これをAWS IoTを経由してやってみました。プログラム自体はnode.jsで書いています。
構成
手元のPCをクライアントとしてAWS IoTを経由して信号をラズパイに送り続けます。
ライトを点灯させたい時には「1」を。ライトを消滅させたいときは「0」を送信します。
これを繰り返して信号を送ることでチカチカさせるという仕組みです。
クライアント側のコード
var count=0;
device
.on('connect', function() {
const minimumDelay=100;
timeout = setInterval( function() {
count++;
var led = count%2;
device.publish('led', led.toString());
}, Math.max(args.delay,minimumDelay) );
});
setIntervalでループを回します。led変数にはループの回数に応じで0と1が交互に入力されます。このデータをledというtopicでAWS IoTに送信します。
Raspberry側のコード
var fs = require('fs');
device
.on('connect', function() {
console.log('connect');
device.subscribe('led');
});
device
.on('message', function(topic, payload) {
console.log('message', topic, payload.toString());
fs.writeFileSync('/sys/class/gpio/gpio18/value', payload.toString());
});
AWS IoTからの信号を受け取る側のプログラムです。ledというtopicをsubscribeします。
ここに1または0のデータが送信されてくるため、これをRaspberryのGPIOに渡すことでLEDをチカチカさせます
結果
はい、こんな感じでチカチカしてます。
通常、デバイス同士をつなくためにはnode.jsでサーバ立ててwebsocketで通信を確立したりって必要があるんですが、一切不要です。
AWS IoTが提供しているMQTTプロトコルを通したおかげで複雑な設定やプログラミングは一切不要でした。
また、AWS IoTで複数デバイスを管理接続できるので、1つの端末から数百台の端末に同時に命令を送ったりってことも可能になります。
まだまだ、いろんなことができそうっすね。それでは良いIoTライフを!
##参考文献