9. AWS IoT Device SDK解説¶
本ハンズオンで利用したゲートウェイ側のサンプルコードになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | var noble = require('noble');
var awsIot = require('aws-iot-device-sdk');
var moment = require('moment');
var deviceName = 'devXX';
var topic = deviceName + '/ginga';
var myAddress = "****";
var device = awsIot.device({
keyPath: './certs/private.pem',
certPath: './certs/cert.pem',
caPath: './certs/root.pem',
clientId: deviceName,
region: 'ap-northeast-1'
});
function publish_data(sensorType, value) {
var record = {
"device": deviceName,
"sensor": sensorType,
"timestamp": moment().toISOString(),
"value": value
};
console.log("Publish: " + message);
device.publish(topic, message);
}
function temp(data){
var v1 = parseInt(data[0]);
var v2 = parseInt(data[1]) / 100;
publish_data('temp',v1 + v2);
}
function humid(data){
var v1 = parseInt(data[2]);
var v2 = parseInt(data[3]) / 100;
publish_data('humid',v1 + v2);
}
noble.on('stateChange', function(state) {
if (state === 'poweredOn') {
noble.startScanning();
} else {
noble.stopScanning();
}
});
noble.on('discover', function(peripheral) {
noble.stopScanning();
//console.log('Local Name: ' + peripheral.advertisement.localName);
if(myAddress == peripheral.address){
var serviceUUID = peripheral.advertisement.serviceUuids[0];
console.log('Service UUID: ' + serviceUUID);
peripheral.connect(function(error){
if (error) console.log('connect error: ' + error);
console.log('connected to ' + peripheral.uuid);
peripheral.discoverServices([serviceUUID],
function (error, services){
if (error) console.log('discoverServices error: ' + error);
console.log('services.length: ' + services.length);
var service = services[0];
service.discoverCharacteristics(null,function(error, characteristicss
){
if (error) console.log('discoverCharacteristics error: ' + error);
console.log('characteristics.length: ' + characteristics.length);
characteristics[0].notify(true, function(error){
if (error) console.log('notify error: ' + error);
setInterval(function(){
characteristics[0].read(function(error, data){
if (data){
//console.log( data );
humid(data);
temp(data);
}
});
}, 10000);
});
});
}
);
});
} else {
console.log("not device");
}
});
device
.on('connect', function() {
console.log('Connected to Message Broker.');
});
|