SlideShare a Scribd company logo
Copyright © 2016 AGREX INC. All rights reserved.
JAWS-UG 札幌 in AWS Cloud Roadshow 2016
2016.10.12
札幌事業所 松田 生吾
AWS歴2週間で IoT に挑戦してみた。
Copyright © 2016 AGREX INC. All rights reserved. 2
自己紹介
松田 生吾(まつだ しょうご)
 所属
 (株)アグレックス 札幌事業所
 主な仕事内容
 某市の人事給与システム開発、保守
 AWS
 気になるAWSサービス
 AWS IoT(なんかすごそう。)
 その他
 JAWS-UGのイベント初参加&
初登壇です。
New!!
趣味はマラソン
※ガチなのはちょっとお休み中・・・
Copyright © 2016 AGREX INC. All rights reserved. 3
AWS との関わり
2016.09 2016.10
今ここ!
(部長)
AWS やらない?
(JAWS-UGの人)
来月
Cloud Rowdshow
あるんだけどさぁ・・・。
AWS歴 約1ヶ月・・・
Copyright © 2016 AGREX INC. All rights reserved. 4
さて、何の話をしよう
何か語れるほど、まだ業務で AWS に触れていない。
↓
「業務で困ってたアレをこうしてみた!」みたいな
人の役に立つような話ができない・・・。
↓
とりあえず、自分に関する問題をAWSを使って
解決してネタにしてみよう・・・。
Copyright © 2016 AGREX INC. All rights reserved. 5
AWS を利用して解決したいこと
-外出時-
Lock!
施錠する。
Copyright © 2016 AGREX INC. All rights reserved. 6
AWS を利用して解決したいこと
-外出時-
Lock!
出かける。
Copyright © 2016 AGREX INC. All rights reserved. 7
AWS を利用して解決したいこと
鍵
は
締
め
た
だ
ろ
う
か
…
-外出時-
Lock!
Locked…?
不安になる。
Copyright © 2016 AGREX INC. All rights reserved. 8
AWS を利用して解決したいこと
-外出時-
(Before)
Lock!
確認しに戻る。
(無限ループ)
Copyright © 2016 AGREX INC. All rights reserved. 9
AWS を利用して解決したいこと
-外出時-
(After)
Lock!
施錠する。
Copyright © 2016 AGREX INC. All rights reserved. 10
AWS を利用して解決したいこと
鍵
は
締
ま
り
ま
し
た
よ
。
-外出時-
(After)
Lock!
施錠したことを教えてくれる。
Copyright © 2016 AGREX INC. All rights reserved. 11
AWS を利用して解決したいこと
鍵
は
締
ま
り
ま
し
た
よ
。
-外出時-
(After)
Lock!
Locked!!
安心して
出かけられる!
Copyright © 2016 AGREX INC. All rights reserved. 12
AWS を利用した解決策(ぼんやり)
Locked!!
Lock!
家の施錠状態をAWSがうまいこと処理してスマホに通知してくれる。
Copyright © 2016 AGREX INC. All rights reserved. 13
AWS を利用した解決策
Locked!!
Lock!
家の施錠状態をセンサーが検知し、AWS IoTで処理してスマホに通知する。
Copyright © 2016 AGREX INC. All rights reserved. 14
AWS IoT とは・・・
Q: AWS IoT とは何ですか?
AWS IoT では、接続されたデバイスが簡単かつ安全にクラウドアプリケーションやそ
の他のデバイスとやり取りできるマネージド型クラウドプラットフォームです。AWS IoT
では数十億のデバイスと数兆のメッセージをサポートし、それらのメッセージを AWS エ
ンドポイントおよび他のデバイスに確実かつ安全に処理しルーティングします。AWS
IoT によってアプリケーションはそれらが接続されていない場合でも、全てのデバイスを
常に追跡し通信することができます。
AWS IoT を使用すると、AWS Lambda、Amazon Kinesis、Amazon S3、
Amazon Machine Learning、Amazon DynamoDB、Amazon
CloudWatch、AWS CloudTrail、および Amazon Elasticsearch
Service (組み込みの Kibana と統合されている) といった AWS の各種サービス
を簡単に使用でき、インフラストラクチャを管理をせずに、接続されたデバイスによって
生成されたデータを収集、処理、分析、実行する IoT アプリケーションを構築できま
す。
https://aws.amazon.com/jp/iot/faqs/
Copyright © 2016 AGREX INC. All rights reserved. 15
AWS IoT とは・・・
要するに、AWS IoT を利用することで、
お手軽に IoT を実現できるらしい!!
https://aws.amazon.com/jp/iot/how-it-works/
Copyright © 2016 AGREX INC. All rights reserved. 16
IoTを実現するために用意したもの
センサーと、センサーの情報をAWSに飛ばすものが必要。
Copyright © 2016 AGREX INC. All rights reserved. 17
今回使用したもの①:SimpleLink SensorTag(CC2650)
 BLE(Bluetooth Low Energy)対応
 低消費電力(ボタン電池1個で数ヶ月稼働)
 複数のセンサーを搭載
 赤外線および周囲温度センサー
 周辺光センサー
 湿度センサー
 大気圧センサー
 9軸モーショントラッキングデバイス
 3軸加速度計
 3軸ジャイロスコープ
 3軸磁力計
 磁気センサー
 $29.00(USD)
(送料とかを含めると4000円くらい) 50mm
40mm
シリコンケースを外した状態
Copyright © 2016 AGREX INC. All rights reserved. 18
今回使用したもの②:Raspberry Pi 3 Model B
 無線LAN標準搭載
(IEEE 802.11 b/g/n 2.4 GHz)
 Bluetooth標準搭載
(Bluetooth Low Energy)
 使用するのに必要な一式を揃えても1万円前後
(本体、SDカード、HDMIケーブル、アダプタ、ケース)
公式のケースがかわいい!
Copyright © 2016 AGREX INC. All rights reserved. 19
SensorTag × Raspberry Pi 3 Model B
Bluetooth
(無線)
Wi-Fi
(無線)
余計な配線、電子工作が不要!
 ハンダ付け・・・?
 ブレッドボード・・・ ??
 ジャンパーワイヤー・・・???
とってもお手軽!文系な人でもあんしん!
Copyright © 2016 AGREX INC. All rights reserved. 20
AWS 側の設定をしよう
Copyright © 2016 AGREX INC. All rights reserved. 21
AWS IoT の設定
1. Thing
利用するデバイス(Raspberry Pi など)を登録する
2. Rule
デバイスからデータが届いた際の振る舞いを設定する
3. Policy
デバイスに AWS IoT の各種操作を許可するためのポリシーを作成する
4. Certificate
デバイスに登録する証明書を作成する
Copyright © 2016 AGREX INC. All rights reserved. 22
AWS IoT の設定(Thingの作成)
Copyright © 2016 AGREX INC. All rights reserved. 23
AWS IoT の設定(Ruleの作成①)
Topicを設定
SELECT * FROM ‘lockState/sns’
Copyright © 2016 AGREX INC. All rights reserved. 24
AWS IoTの 設定(Ruleの作成②)
選択できる Action
 CloudWatch alarms
 CloudWatch metrics
 DynamoDB
 Amazon Elasticsearch Service
 Amazon Kinesis
 AWS IoT
 S3
 SNS
 SQS
 Lambda
今回はSNSを利用
Copyright © 2016 AGREX INC. All rights reserved. 25
AWS IoT の設定(Ruleの作成③)
Copyright © 2016 AGREX INC. All rights reserved. 26
AWS IoT の設定(Ruleの作成④)
E-Mailへの通知
Copyright © 2016 AGREX INC. All rights reserved. 27
AWS IoT の設定(Ruleの作成⑤)
Actionが追加された!
Copyright © 2016 AGREX INC. All rights reserved. 28
AWS IoT の設定(証明書、ポリシーの作成)
証明書とポリシーを
同時作成
Copyright © 2016 AGREX INC. All rights reserved. 29
AWS IoT の設定(証明書、ポリシーの作成)
ダウンロードした秘密鍵と証明書は
Raspberry Pi へ
Copyright © 2016 AGREX INC. All rights reserved. 30
AWS IoT の設定(できた!)
 Thing
 Rule
 Policy
 Certificate
Copyright © 2016 AGREX INC. All rights reserved. 31
Raspberry Pi からメッセージを送ってみる
AWS IoT デバイス SDK を利用
※https://aws.amazon.com/jp/iot/sdk/
 Embedded C
 JavaScript
 Arduino Yún
 Java
 Python
 iOS
 Android
今回はJavaScriptを利用
Copyright © 2016 AGREX INC. All rights reserved. 32
Raspberry Pi からメッセージを送ってみる
$ git clone https://github.com/aws/aws-iot-device-sdk-js.git
$ cd aws-iot-device-sdk-js.git
$ npm install
AWS IoT デバイス SDKをインストール
メッセージ送信用のサンプル(iot-test.js)
var awsIot = require('..');
var device = awsIot.device({
keyPath :'private.pem.key',
certPath:'certificate.pem.crt',
caPath :'rootCA.crt',
clientId:'KeyLockNotifier',
region:'ap-northeast-1'
});
device.publish('lockState/sns', 'CloudRoadshowに間に合うかな?');
AWS IoT設定時に
作成した
秘密鍵、証明書、Thing
AWS IoT設定時に
設定したtopic
Copyright © 2016 AGREX INC. All rights reserved. 33
Raspberry Pi からメッセージを送ってみる
$ sudo node iot-test.js
実行
Copyright © 2016 AGREX INC. All rights reserved. 34
Raspberry Pi からメッセージを送ってみる
$ sudo node iot-test.js
実行
メールが来た!
Copyright © 2016 AGREX INC. All rights reserved. 35
SensorTag のデータを Raspberry Pi で取得する
$ sudo hcitool lescan
LE Scan ...
24:71:89:XX:XX:86 (unknown)
24:71:89:XX:XX:86 CC2650 SensorTag
$ gatttool -b 24:71:89:XX:XX:86 -I
[24:71:89:XX:XX:86][LE]> connect
Attempting to connect to 24:71:89:XX:XX:86
Connection successful
[24:71:89:XX:XX:86][LE]> char-write-req 0x2f 01
Characteristic value was written successfully
[24:71:89:XX:XX:86][LE]> char-read-hnd 0x2c
Characteristic value/descriptor: 68 61 44 7c
試しにコマンドラインから接続、データ(気温)を取得する
なんだこれは・・・・
センサーのMACアドレス
Copyright © 2016 AGREX INC. All rights reserved. 36
SensorTag のデータを Raspberry Pi で取得する
$ sudo hcitool lescan
LE Scan ...
24:71:89:XX:XX:86 (unknown)
24:71:89:XX:XX:86 CC2650 SensorTag
$ gatttool -b 24:71:89:XX:XX:86 -I
[24:71:89:XX:XX:86][LE]> connect
Attempting to connect to 24:71:89:XX:XX:86
Connection successful
[24:71:89:XX:XX:86][LE]> char-write-req 0x2f 01
Characteristic value was written successfully
[24:71:89:XX:XX:86][LE]> char-read-hnd 0x2c
Characteristic value/descriptor: 68 61 44 7c
試しにコマンドラインから接続、データ(気温)を取得する
センサーから取得したデータを活用するには適切な加工が必要。
生データでは意味が分からないし時間もないので先人の力を頼ることに・・・。
※変換式についてはWikiに載っています
http://processors.wiki.ti.com/index.php/CC2650_SensorTag_User's_Guide
Copyright © 2016 AGREX INC. All rights reserved. 37
SensorTag のデータを Raspberry Pi で取得する
$ npm install async
$ npm install bluebird
$ npm install sensortag
SensorTag 用の node.js ライブラリをインストール
※https://github.com/sandeepmistry/node-sensortag
SensorTag.discoverByAddress(address, callback(sensorTag));
デバイスの検知
デバイスの接続
sensorTag.connectAndSetUp(callback(error));
センサーデータの読込・通知
sensorTag.enableGyroscope(callback(error));
sensorTag.readGyroscope(callback(error, x, y, z));
sensorTag.notifyGyroscope(callback(error));
hcitool lescanで取得した
MACアドレス
Copyright © 2016 AGREX INC. All rights reserved. 38
SensorTagで取得できる情報
 赤外線温度(℃)
 周囲温度(℃)
 周辺光(lux)
 湿度(%)
 大気圧(hPa)
 加速度(G)
 ジャイロスコープ(deg/s)
 地磁気 (μT)
 磁気(磁石が近づくとON)
Copyright © 2016 AGREX INC. All rights reserved. 39
施錠状態を検知するために、何の計測値を使おう・・・
 赤外線温度(℃)
 周囲温度(℃)
 周辺光(lux)
 湿度(%)
 大気圧(hPa)
 加速度(G)
 ジャイロスコープ(deg/s)
 地磁気 (μT)
 磁気(磁石が近づくとON)
→関係ない。
→関係ない。
→使えないことはないけど、夜使えない。
→関係ない。
→関係ない。
→鍵が動いたことは検知できそう。
→スマホとかでも使われてるアレ。傾きが取れる?
→よく分からない。
→磁石と組み合わせれば・・・?
とりあえずジャイロスコープの値を使ってみよう。
Copyright © 2016 AGREX INC. All rights reserved. 40
施錠状態を検知するために、何の計測値を使おう・・・
ジャイロスコープ(英語: gyroscope)とは、
物体の角度(姿勢)や角速度あるいは角加速度を検出する計測器ないし装置。
※Wikipediaより。
ジャイロスコープの値の単位
deg/s(角速度:単位時間あたりに変化した角度)
→ある期間内の角速度の合計から角度の変化を読み取れる・・・?
【速さ×時間=距離】的な・・・(ガバガバ発想)
Copyright © 2016 AGREX INC. All rights reserved. 41
SensorTag のデータを Raspberry Pi で取得する
1秒ごとにジャイロスコープの値を取得する(垂直→水平)
Sat Oct 08 2016 20:29:08 GMT+0900 (JST),x= 1.32813, y=-3.16406, z=-1.67969
Sat Oct 08 2016 20:29:09 GMT+0900 (JST),x= 0.76563, y=-1.60938, z=-1.39844
Sat Oct 08 2016 20:29:10 GMT+0900 (JST),x= 1.72656, y=-1.98438, z=-0.72656
Sat Oct 08 2016 20:29:11 GMT+0900 (JST),x=-0.21875, y=-2.79688, z=-1.24219
Sat Oct 08 2016 20:29:12 GMT+0900 (JST),x= 1.28906, y=-0.95313, z=-0.85938
Sat Oct 08 2016 20:29:13 GMT+0900 (JST),x= 1.78906, y=-1.58594, z=-0.42969
Sat Oct 08 2016 20:29:14 GMT+0900 (JST),x= 0.29688, y=-1.85938, z=-1.32813
Sat Oct 08 2016 20:29:15 GMT+0900 (JST),x= 2.24219, y=-1.70313, z=-0.45313
Sat Oct 08 2016 20:29:16 GMT+0900 (JST),x= 0.92969, y=-1.35938, z=-2.58594
Sat Oct 08 2016 20:29:17 GMT+0900 (JST),x= 0.88281, y=-1.40625, z=-3.17969
垂
直
水
平
Copyright © 2016 AGREX INC. All rights reserved. 42
SensorTag のデータを Raspberry Pi で取得する
1秒ごとにジャイロスコープの値を取得する(垂直→水平)
Sat Oct 08 2016 20:29:08 GMT+0900 (JST),x= 1.32813, y=-3.16406, z=-1.67969
Sat Oct 08 2016 20:29:09 GMT+0900 (JST),x= 0.76563, y=-1.60938, z=-1.39844
Sat Oct 08 2016 20:29:10 GMT+0900 (JST),x= 1.72656, y=-1.98438, z=-0.72656
Sat Oct 08 2016 20:29:11 GMT+0900 (JST),x=-0.21875, y=-2.79688, z=-1.24219
Sat Oct 08 2016 20:29:12 GMT+0900 (JST),x= 1.28906, y=-0.95313, z=-0.85938
Sat Oct 08 2016 20:29:13 GMT+0900 (JST),x= 1.78906, y=-1.58594, z=-0.42969
Sat Oct 08 2016 20:29:14 GMT+0900 (JST),x= 0.29688, y=-1.85938, z=-1.32813
Sat Oct 08 2016 20:29:15 GMT+0900 (JST),x= 2.24219, y=-1.70313, z=-0.45313
Sat Oct 08 2016 20:29:16 GMT+0900 (JST),x= 0.92969, y=-1.35938, z=-2.58594
Sat Oct 08 2016 20:29:17 GMT+0900 (JST),x= 0.88281, y=-1.40625, z=-3.17969
何のことやら全く分からない・・・。
有意な差があるようにも見えない・・・。
おまけに、静止状態でも値が変動している・・・。
垂
直
水
平
Copyright © 2016 AGREX INC. All rights reserved. 43
SensorTag のデータを Raspberry Pi で取得する
1秒ごとに地磁気の値を取得する(垂直→水平)
Sat Oct 08 2016 20:26:07 GMT+0900 (JST),x=-16.33936, y=77.34961, z=-64.0083
Sat Oct 08 2016 20:26:08 GMT+0900 (JST),x=-16.78906, y=79.14844, z=-63.7085
Sat Oct 08 2016 20:26:09 GMT+0900 (JST),x=-18.13818, y=76.15039, z=-60.86035
Sat Oct 08 2016 20:26:10 GMT+0900 (JST),x=-16.48926, y=76.4502 , z=-61.45996
Sat Oct 08 2016 20:26:11 GMT+0900 (JST),x=-17.83838, y=78.69873, z=-62.65918
Sat Oct 08 2016 20:26:12 GMT+0900 (JST),x=-14.09082, y=49.76758, z=-38.2251
Sat Oct 08 2016 20:26:13 GMT+0900 (JST),x=-14.54053, y=47.66895, z=-39.42432
Sat Oct 08 2016 20:26:14 GMT+0900 (JST),x=-16.18945, y=48.26855, z=-37.92529
Sat Oct 08 2016 20:26:15 GMT+0900 (JST),x=-14.09082, y=49.31787, z=-39.57422
Sat Oct 08 2016 20:26:16 GMT+0900 (JST),x=-15.43994, y=46.46973, z=-37.47559
垂
直
水
平
Copyright © 2016 AGREX INC. All rights reserved. 44
SensorTag のデータを Raspberry Pi で取得する
1秒ごとに地磁気の値を取得する(垂直→水平)
Sat Oct 08 2016 20:26:07 GMT+0900 (JST),x=-16.33936, y=77.34961, z=-64.0083
Sat Oct 08 2016 20:26:08 GMT+0900 (JST),x=-16.78906, y=79.14844, z=-63.7085
Sat Oct 08 2016 20:26:09 GMT+0900 (JST),x=-18.13818, y=76.15039, z=-60.86035
Sat Oct 08 2016 20:26:10 GMT+0900 (JST),x=-16.48926, y=76.4502 , z=-61.45996
Sat Oct 08 2016 20:26:11 GMT+0900 (JST),x=-17.83838, y=78.69873, z=-62.65918
Sat Oct 08 2016 20:26:12 GMT+0900 (JST),x=-14.09082, y=49.76758, z=-38.2251
Sat Oct 08 2016 20:26:13 GMT+0900 (JST),x=-14.54053, y=47.66895, z=-39.42432
Sat Oct 08 2016 20:26:14 GMT+0900 (JST),x=-16.18945, y=48.26855, z=-37.92529
Sat Oct 08 2016 20:26:15 GMT+0900 (JST),x=-14.09082, y=49.31787, z=-39.57422
Sat Oct 08 2016 20:26:16 GMT+0900 (JST),x=-15.43994, y=46.46973, z=-37.47559
y と z の値に何か有意な差を感じる・・・が、センサータグの
設置場所によって値が変化するので使うのは難しそう・・・。
(そもそも地磁気って何だよ・・・。)
垂
直
水
平
Copyright © 2016 AGREX INC. All rights reserved. 45
SensorTag のデータを Raspberry Pi で取得する
1秒ごとに加速度の値を取得する(垂直→水平)
Sat Oct 08 2016 20:27:31 GMT+0900 (JST),x=-0.91895, y= 0.04517, z=0.00269
Sat Oct 08 2016 20:27:32 GMT+0900 (JST),x=-0.91919, y= 0.10327, z=0.0625
Sat Oct 08 2016 20:27:33 GMT+0900 (JST),x=-0.87817, y= 0.01904, z=0.00244
Sat Oct 08 2016 20:27:34 GMT+0900 (JST),x=-0.87646, y= 0.0354 , z=0.03613
Sat Oct 08 2016 20:27:35 GMT+0900 (JST),x=-0.91772, y= 0.05078, z=0.08105
Sat Oct 08 2016 20:27:36 GMT+0900 (JST),x= 0.38184, y=-0.13159, z=2.88232
Sat Oct 08 2016 20:27:37 GMT+0900 (JST),x= 0.24121, y= 0.11401, z=1.05908
Sat Oct 08 2016 20:27:38 GMT+0900 (JST),x= 0.21802, y= 0.1167 , z=1.04248
Sat Oct 08 2016 20:27:39 GMT+0900 (JST),x= 0.18213, y= 0.12842, z=0.96167
Sat Oct 08 2016 20:27:40 GMT+0900 (JST),x= 0.21704, y= 0.04224, z=1.01587
垂
直
水
平
Copyright © 2016 AGREX INC. All rights reserved. 46
SensorTag のデータを Raspberry Pi で取得する
1秒ごとに加速度の値を取得する(垂直→水平)
Sat Oct 08 2016 20:27:31 GMT+0900 (JST),x=-0.91895, y= 0.04517, z=0.00269
Sat Oct 08 2016 20:27:32 GMT+0900 (JST),x=-0.91919, y= 0.10327, z=0.0625
Sat Oct 08 2016 20:27:33 GMT+0900 (JST),x=-0.87817, y= 0.01904, z=0.00244
Sat Oct 08 2016 20:27:34 GMT+0900 (JST),x=-0.87646, y= 0.0354 , z=0.03613
Sat Oct 08 2016 20:27:35 GMT+0900 (JST),x=-0.91772, y= 0.05078, z=0.08105
Sat Oct 08 2016 20:27:36 GMT+0900 (JST),x= 0.38184, y=-0.13159, z=2.88232
Sat Oct 08 2016 20:27:37 GMT+0900 (JST),x= 0.24121, y= 0.11401, z=1.05908
Sat Oct 08 2016 20:27:38 GMT+0900 (JST),x= 0.21802, y= 0.1167 , z=1.04248
Sat Oct 08 2016 20:27:39 GMT+0900 (JST),x= 0.18213, y= 0.12842, z=0.96167
Sat Oct 08 2016 20:27:40 GMT+0900 (JST),x= 0.21704, y= 0.04224, z=1.01587
x と z の値に何か有意な差を感じる・・・
しかし、よく分からない・・・。
垂
直
水
平
Copyright © 2016 AGREX INC. All rights reserved. 47
SensorTag のデータを Raspberry Pi で取得する
センサーをいじりながら観測を続けること数日間・・・
とりあえず、加速度のデータが
ジャイロ・地磁気に比べると見込みがありそう・・・。
Copyright © 2016 AGREX INC. All rights reserved. 48
SensorTag のデータを Raspberry Pi で取得する
加速度を近似値で整数化してみる
Copyright © 2016 AGREX INC. All rights reserved. 49
SensorTag のデータを Raspberry Pi で取得する
加速度を近似値で整数化してみる
Sat Oct 08 2016 21:09:26 GMT+0900 (JST),x=-1, y=0, z=0
Sat Oct 08 2016 21:09:27 GMT+0900 (JST),x=-1, y=0, z=0
Sat Oct 08 2016 21:09:28 GMT+0900 (JST),x= 0, y=0, z=1
Sat Oct 08 2016 21:09:29 GMT+0900 (JST),x= 0, y=0, z=1
Sat Oct 08 2016 21:09:30 GMT+0900 (JST),x= 0, y=0, z=1
Sat Oct 08 2016 21:09:31 GMT+0900 (JST),x= 0, y=0, z=1
Sat Oct 08 2016 21:09:32 GMT+0900 (JST),x= 0, y=0, z=1
Sat Oct 08 2016 21:09:33 GMT+0900 (JST),x= 0, y=0, z=1
Sat Oct 08 2016 21:09:34 GMT+0900 (JST),x= 0, y=0, z=1
Sat Oct 08 2016 21:09:35 GMT+0900 (JST),x=-1, y=0, z=0
Sat Oct 08 2016 21:09:36 GMT+0900 (JST),x=-1, y=0, z=0
垂
直
水
平
垂
直
Copyright © 2016 AGREX INC. All rights reserved. 50
SensorTag のデータを Raspberry Pi で取得する
加速度を近似値で整数化してみる
Sat Oct 08 2016 21:09:26 GMT+0900 (JST),x=-1, y=0, z=0
Sat Oct 08 2016 21:09:27 GMT+0900 (JST),x=-1, y=0, z=0
Sat Oct 08 2016 21:09:28 GMT+0900 (JST),x= 0, y=0, z=1
Sat Oct 08 2016 21:09:29 GMT+0900 (JST),x= 0, y=0, z=1
Sat Oct 08 2016 21:09:30 GMT+0900 (JST),x= 0, y=0, z=1
Sat Oct 08 2016 21:09:31 GMT+0900 (JST),x= 0, y=0, z=1
Sat Oct 08 2016 21:09:32 GMT+0900 (JST),x= 0, y=0, z=1
Sat Oct 08 2016 21:09:33 GMT+0900 (JST),x= 0, y=0, z=1
Sat Oct 08 2016 21:09:34 GMT+0900 (JST),x= 0, y=0, z=1
Sat Oct 08 2016 21:09:35 GMT+0900 (JST),x=-1, y=0, z=0
Sat Oct 08 2016 21:09:36 GMT+0900 (JST),x=-1, y=0, z=0
垂
直
水
平
垂
直
垂直の時は x = -1、水平の時は z = 1 になるらしい!
(理屈は不明)
Copyright © 2016 AGREX INC. All rights reserved. 51
実装
SensorTag から1秒毎に送られてくる加速度を監視し、
状態が変化したら以下のメッセージを AWS IoT に publish する。
加速度(x)が、-1になった場合 →「鍵が開いたよ!」
加速度(z)が、1になった場合 →「鍵が締まったよ!」
両面テープでSensorTagを貼付け(雑)
※シリコンケースは外してます。
Copyright © 2016 AGREX INC. All rights reserved. 52
実装
UNLOCK
LOCK
施錠してみる。
Copyright © 2016 AGREX INC. All rights reserved. 53
実装
UNLOCK
LOCK
メールが来た!
Copyright © 2016 AGREX INC. All rights reserved. 54
実装
UNLOCK
LOCK
これで安心して外出できるように・・・
Copyright © 2016 AGREX INC. All rights reserved. 55
AWS IoT を使ってみての感想
 AWS周りの設定は簡単。
 デバイス→AWS IoT のデータ送信も簡単。
 もうちょっと AWS のサービスを組み合わせて使いたい。
 センサーから取得したデータをどう扱うかがキモ。
※今回のネタ作りにかかった時間の半分以上はココ・・・。
Copyright © 2016 AGREX INC. All rights reserved. 56
AWS IoT を使ってみての感想
 アイディア次第で色々できそう
 センサーのデータを検知できなくなったら通知
→自転車の盗難通知(カメラモジュールも使うといいかも。)
 センサーのデータを検知できるようになったら通知
→こども(鍵っ子)の帰宅通知
 光センサーの利用
→遠方の実家の両親の見守り(冷蔵庫の開閉)
Copyright © 2016 AGREX INC. All rights reserved. 57
AWS IoT を使ってみての感想
意外とかんたんなので、気軽に IoT してみましょう!
THANK YOU

More Related Content

AWS歴2週間で IoT に挑戦してみた。

  • 1. Copyright © 2016 AGREX INC. All rights reserved. JAWS-UG 札幌 in AWS Cloud Roadshow 2016 2016.10.12 札幌事業所 松田 生吾 AWS歴2週間で IoT に挑戦してみた。
  • 2. Copyright © 2016 AGREX INC. All rights reserved. 2 自己紹介 松田 生吾(まつだ しょうご)  所属  (株)アグレックス 札幌事業所  主な仕事内容  某市の人事給与システム開発、保守  AWS  気になるAWSサービス  AWS IoT(なんかすごそう。)  その他  JAWS-UGのイベント初参加& 初登壇です。 New!! 趣味はマラソン ※ガチなのはちょっとお休み中・・・
  • 3. Copyright © 2016 AGREX INC. All rights reserved. 3 AWS との関わり 2016.09 2016.10 今ここ! (部長) AWS やらない? (JAWS-UGの人) 来月 Cloud Rowdshow あるんだけどさぁ・・・。 AWS歴 約1ヶ月・・・
  • 4. Copyright © 2016 AGREX INC. All rights reserved. 4 さて、何の話をしよう 何か語れるほど、まだ業務で AWS に触れていない。 ↓ 「業務で困ってたアレをこうしてみた!」みたいな 人の役に立つような話ができない・・・。 ↓ とりあえず、自分に関する問題をAWSを使って 解決してネタにしてみよう・・・。
  • 5. Copyright © 2016 AGREX INC. All rights reserved. 5 AWS を利用して解決したいこと -外出時- Lock! 施錠する。
  • 6. Copyright © 2016 AGREX INC. All rights reserved. 6 AWS を利用して解決したいこと -外出時- Lock! 出かける。
  • 7. Copyright © 2016 AGREX INC. All rights reserved. 7 AWS を利用して解決したいこと 鍵 は 締 め た だ ろ う か … -外出時- Lock! Locked…? 不安になる。
  • 8. Copyright © 2016 AGREX INC. All rights reserved. 8 AWS を利用して解決したいこと -外出時- (Before) Lock! 確認しに戻る。 (無限ループ)
  • 9. Copyright © 2016 AGREX INC. All rights reserved. 9 AWS を利用して解決したいこと -外出時- (After) Lock! 施錠する。
  • 10. Copyright © 2016 AGREX INC. All rights reserved. 10 AWS を利用して解決したいこと 鍵 は 締 ま り ま し た よ 。 -外出時- (After) Lock! 施錠したことを教えてくれる。
  • 11. Copyright © 2016 AGREX INC. All rights reserved. 11 AWS を利用して解決したいこと 鍵 は 締 ま り ま し た よ 。 -外出時- (After) Lock! Locked!! 安心して 出かけられる!
  • 12. Copyright © 2016 AGREX INC. All rights reserved. 12 AWS を利用した解決策(ぼんやり) Locked!! Lock! 家の施錠状態をAWSがうまいこと処理してスマホに通知してくれる。
  • 13. Copyright © 2016 AGREX INC. All rights reserved. 13 AWS を利用した解決策 Locked!! Lock! 家の施錠状態をセンサーが検知し、AWS IoTで処理してスマホに通知する。
  • 14. Copyright © 2016 AGREX INC. All rights reserved. 14 AWS IoT とは・・・ Q: AWS IoT とは何ですか? AWS IoT では、接続されたデバイスが簡単かつ安全にクラウドアプリケーションやそ の他のデバイスとやり取りできるマネージド型クラウドプラットフォームです。AWS IoT では数十億のデバイスと数兆のメッセージをサポートし、それらのメッセージを AWS エ ンドポイントおよび他のデバイスに確実かつ安全に処理しルーティングします。AWS IoT によってアプリケーションはそれらが接続されていない場合でも、全てのデバイスを 常に追跡し通信することができます。 AWS IoT を使用すると、AWS Lambda、Amazon Kinesis、Amazon S3、 Amazon Machine Learning、Amazon DynamoDB、Amazon CloudWatch、AWS CloudTrail、および Amazon Elasticsearch Service (組み込みの Kibana と統合されている) といった AWS の各種サービス を簡単に使用でき、インフラストラクチャを管理をせずに、接続されたデバイスによって 生成されたデータを収集、処理、分析、実行する IoT アプリケーションを構築できま す。 https://aws.amazon.com/jp/iot/faqs/
  • 15. Copyright © 2016 AGREX INC. All rights reserved. 15 AWS IoT とは・・・ 要するに、AWS IoT を利用することで、 お手軽に IoT を実現できるらしい!! https://aws.amazon.com/jp/iot/how-it-works/
  • 16. Copyright © 2016 AGREX INC. All rights reserved. 16 IoTを実現するために用意したもの センサーと、センサーの情報をAWSに飛ばすものが必要。
  • 17. Copyright © 2016 AGREX INC. All rights reserved. 17 今回使用したもの①:SimpleLink SensorTag(CC2650)  BLE(Bluetooth Low Energy)対応  低消費電力(ボタン電池1個で数ヶ月稼働)  複数のセンサーを搭載  赤外線および周囲温度センサー  周辺光センサー  湿度センサー  大気圧センサー  9軸モーショントラッキングデバイス  3軸加速度計  3軸ジャイロスコープ  3軸磁力計  磁気センサー  $29.00(USD) (送料とかを含めると4000円くらい) 50mm 40mm シリコンケースを外した状態
  • 18. Copyright © 2016 AGREX INC. All rights reserved. 18 今回使用したもの②:Raspberry Pi 3 Model B  無線LAN標準搭載 (IEEE 802.11 b/g/n 2.4 GHz)  Bluetooth標準搭載 (Bluetooth Low Energy)  使用するのに必要な一式を揃えても1万円前後 (本体、SDカード、HDMIケーブル、アダプタ、ケース) 公式のケースがかわいい!
  • 19. Copyright © 2016 AGREX INC. All rights reserved. 19 SensorTag × Raspberry Pi 3 Model B Bluetooth (無線) Wi-Fi (無線) 余計な配線、電子工作が不要!  ハンダ付け・・・?  ブレッドボード・・・ ??  ジャンパーワイヤー・・・??? とってもお手軽!文系な人でもあんしん!
  • 20. Copyright © 2016 AGREX INC. All rights reserved. 20 AWS 側の設定をしよう
  • 21. Copyright © 2016 AGREX INC. All rights reserved. 21 AWS IoT の設定 1. Thing 利用するデバイス(Raspberry Pi など)を登録する 2. Rule デバイスからデータが届いた際の振る舞いを設定する 3. Policy デバイスに AWS IoT の各種操作を許可するためのポリシーを作成する 4. Certificate デバイスに登録する証明書を作成する
  • 22. Copyright © 2016 AGREX INC. All rights reserved. 22 AWS IoT の設定(Thingの作成)
  • 23. Copyright © 2016 AGREX INC. All rights reserved. 23 AWS IoT の設定(Ruleの作成①) Topicを設定 SELECT * FROM ‘lockState/sns’
  • 24. Copyright © 2016 AGREX INC. All rights reserved. 24 AWS IoTの 設定(Ruleの作成②) 選択できる Action  CloudWatch alarms  CloudWatch metrics  DynamoDB  Amazon Elasticsearch Service  Amazon Kinesis  AWS IoT  S3  SNS  SQS  Lambda 今回はSNSを利用
  • 25. Copyright © 2016 AGREX INC. All rights reserved. 25 AWS IoT の設定(Ruleの作成③)
  • 26. Copyright © 2016 AGREX INC. All rights reserved. 26 AWS IoT の設定(Ruleの作成④) E-Mailへの通知
  • 27. Copyright © 2016 AGREX INC. All rights reserved. 27 AWS IoT の設定(Ruleの作成⑤) Actionが追加された!
  • 28. Copyright © 2016 AGREX INC. All rights reserved. 28 AWS IoT の設定(証明書、ポリシーの作成) 証明書とポリシーを 同時作成
  • 29. Copyright © 2016 AGREX INC. All rights reserved. 29 AWS IoT の設定(証明書、ポリシーの作成) ダウンロードした秘密鍵と証明書は Raspberry Pi へ
  • 30. Copyright © 2016 AGREX INC. All rights reserved. 30 AWS IoT の設定(できた!)  Thing  Rule  Policy  Certificate
  • 31. Copyright © 2016 AGREX INC. All rights reserved. 31 Raspberry Pi からメッセージを送ってみる AWS IoT デバイス SDK を利用 ※https://aws.amazon.com/jp/iot/sdk/  Embedded C  JavaScript  Arduino Yún  Java  Python  iOS  Android 今回はJavaScriptを利用
  • 32. Copyright © 2016 AGREX INC. All rights reserved. 32 Raspberry Pi からメッセージを送ってみる $ git clone https://github.com/aws/aws-iot-device-sdk-js.git $ cd aws-iot-device-sdk-js.git $ npm install AWS IoT デバイス SDKをインストール メッセージ送信用のサンプル(iot-test.js) var awsIot = require('..'); var device = awsIot.device({ keyPath :'private.pem.key', certPath:'certificate.pem.crt', caPath :'rootCA.crt', clientId:'KeyLockNotifier', region:'ap-northeast-1' }); device.publish('lockState/sns', 'CloudRoadshowに間に合うかな?'); AWS IoT設定時に 作成した 秘密鍵、証明書、Thing AWS IoT設定時に 設定したtopic
  • 33. Copyright © 2016 AGREX INC. All rights reserved. 33 Raspberry Pi からメッセージを送ってみる $ sudo node iot-test.js 実行
  • 34. Copyright © 2016 AGREX INC. All rights reserved. 34 Raspberry Pi からメッセージを送ってみる $ sudo node iot-test.js 実行 メールが来た!
  • 35. Copyright © 2016 AGREX INC. All rights reserved. 35 SensorTag のデータを Raspberry Pi で取得する $ sudo hcitool lescan LE Scan ... 24:71:89:XX:XX:86 (unknown) 24:71:89:XX:XX:86 CC2650 SensorTag $ gatttool -b 24:71:89:XX:XX:86 -I [24:71:89:XX:XX:86][LE]> connect Attempting to connect to 24:71:89:XX:XX:86 Connection successful [24:71:89:XX:XX:86][LE]> char-write-req 0x2f 01 Characteristic value was written successfully [24:71:89:XX:XX:86][LE]> char-read-hnd 0x2c Characteristic value/descriptor: 68 61 44 7c 試しにコマンドラインから接続、データ(気温)を取得する なんだこれは・・・・ センサーのMACアドレス
  • 36. Copyright © 2016 AGREX INC. All rights reserved. 36 SensorTag のデータを Raspberry Pi で取得する $ sudo hcitool lescan LE Scan ... 24:71:89:XX:XX:86 (unknown) 24:71:89:XX:XX:86 CC2650 SensorTag $ gatttool -b 24:71:89:XX:XX:86 -I [24:71:89:XX:XX:86][LE]> connect Attempting to connect to 24:71:89:XX:XX:86 Connection successful [24:71:89:XX:XX:86][LE]> char-write-req 0x2f 01 Characteristic value was written successfully [24:71:89:XX:XX:86][LE]> char-read-hnd 0x2c Characteristic value/descriptor: 68 61 44 7c 試しにコマンドラインから接続、データ(気温)を取得する センサーから取得したデータを活用するには適切な加工が必要。 生データでは意味が分からないし時間もないので先人の力を頼ることに・・・。 ※変換式についてはWikiに載っています http://processors.wiki.ti.com/index.php/CC2650_SensorTag_User's_Guide
  • 37. Copyright © 2016 AGREX INC. All rights reserved. 37 SensorTag のデータを Raspberry Pi で取得する $ npm install async $ npm install bluebird $ npm install sensortag SensorTag 用の node.js ライブラリをインストール ※https://github.com/sandeepmistry/node-sensortag SensorTag.discoverByAddress(address, callback(sensorTag)); デバイスの検知 デバイスの接続 sensorTag.connectAndSetUp(callback(error)); センサーデータの読込・通知 sensorTag.enableGyroscope(callback(error)); sensorTag.readGyroscope(callback(error, x, y, z)); sensorTag.notifyGyroscope(callback(error)); hcitool lescanで取得した MACアドレス
  • 38. Copyright © 2016 AGREX INC. All rights reserved. 38 SensorTagで取得できる情報  赤外線温度(℃)  周囲温度(℃)  周辺光(lux)  湿度(%)  大気圧(hPa)  加速度(G)  ジャイロスコープ(deg/s)  地磁気 (μT)  磁気(磁石が近づくとON)
  • 39. Copyright © 2016 AGREX INC. All rights reserved. 39 施錠状態を検知するために、何の計測値を使おう・・・  赤外線温度(℃)  周囲温度(℃)  周辺光(lux)  湿度(%)  大気圧(hPa)  加速度(G)  ジャイロスコープ(deg/s)  地磁気 (μT)  磁気(磁石が近づくとON) →関係ない。 →関係ない。 →使えないことはないけど、夜使えない。 →関係ない。 →関係ない。 →鍵が動いたことは検知できそう。 →スマホとかでも使われてるアレ。傾きが取れる? →よく分からない。 →磁石と組み合わせれば・・・? とりあえずジャイロスコープの値を使ってみよう。
  • 40. Copyright © 2016 AGREX INC. All rights reserved. 40 施錠状態を検知するために、何の計測値を使おう・・・ ジャイロスコープ(英語: gyroscope)とは、 物体の角度(姿勢)や角速度あるいは角加速度を検出する計測器ないし装置。 ※Wikipediaより。 ジャイロスコープの値の単位 deg/s(角速度:単位時間あたりに変化した角度) →ある期間内の角速度の合計から角度の変化を読み取れる・・・? 【速さ×時間=距離】的な・・・(ガバガバ発想)
  • 41. Copyright © 2016 AGREX INC. All rights reserved. 41 SensorTag のデータを Raspberry Pi で取得する 1秒ごとにジャイロスコープの値を取得する(垂直→水平) Sat Oct 08 2016 20:29:08 GMT+0900 (JST),x= 1.32813, y=-3.16406, z=-1.67969 Sat Oct 08 2016 20:29:09 GMT+0900 (JST),x= 0.76563, y=-1.60938, z=-1.39844 Sat Oct 08 2016 20:29:10 GMT+0900 (JST),x= 1.72656, y=-1.98438, z=-0.72656 Sat Oct 08 2016 20:29:11 GMT+0900 (JST),x=-0.21875, y=-2.79688, z=-1.24219 Sat Oct 08 2016 20:29:12 GMT+0900 (JST),x= 1.28906, y=-0.95313, z=-0.85938 Sat Oct 08 2016 20:29:13 GMT+0900 (JST),x= 1.78906, y=-1.58594, z=-0.42969 Sat Oct 08 2016 20:29:14 GMT+0900 (JST),x= 0.29688, y=-1.85938, z=-1.32813 Sat Oct 08 2016 20:29:15 GMT+0900 (JST),x= 2.24219, y=-1.70313, z=-0.45313 Sat Oct 08 2016 20:29:16 GMT+0900 (JST),x= 0.92969, y=-1.35938, z=-2.58594 Sat Oct 08 2016 20:29:17 GMT+0900 (JST),x= 0.88281, y=-1.40625, z=-3.17969 垂 直 水 平
  • 42. Copyright © 2016 AGREX INC. All rights reserved. 42 SensorTag のデータを Raspberry Pi で取得する 1秒ごとにジャイロスコープの値を取得する(垂直→水平) Sat Oct 08 2016 20:29:08 GMT+0900 (JST),x= 1.32813, y=-3.16406, z=-1.67969 Sat Oct 08 2016 20:29:09 GMT+0900 (JST),x= 0.76563, y=-1.60938, z=-1.39844 Sat Oct 08 2016 20:29:10 GMT+0900 (JST),x= 1.72656, y=-1.98438, z=-0.72656 Sat Oct 08 2016 20:29:11 GMT+0900 (JST),x=-0.21875, y=-2.79688, z=-1.24219 Sat Oct 08 2016 20:29:12 GMT+0900 (JST),x= 1.28906, y=-0.95313, z=-0.85938 Sat Oct 08 2016 20:29:13 GMT+0900 (JST),x= 1.78906, y=-1.58594, z=-0.42969 Sat Oct 08 2016 20:29:14 GMT+0900 (JST),x= 0.29688, y=-1.85938, z=-1.32813 Sat Oct 08 2016 20:29:15 GMT+0900 (JST),x= 2.24219, y=-1.70313, z=-0.45313 Sat Oct 08 2016 20:29:16 GMT+0900 (JST),x= 0.92969, y=-1.35938, z=-2.58594 Sat Oct 08 2016 20:29:17 GMT+0900 (JST),x= 0.88281, y=-1.40625, z=-3.17969 何のことやら全く分からない・・・。 有意な差があるようにも見えない・・・。 おまけに、静止状態でも値が変動している・・・。 垂 直 水 平
  • 43. Copyright © 2016 AGREX INC. All rights reserved. 43 SensorTag のデータを Raspberry Pi で取得する 1秒ごとに地磁気の値を取得する(垂直→水平) Sat Oct 08 2016 20:26:07 GMT+0900 (JST),x=-16.33936, y=77.34961, z=-64.0083 Sat Oct 08 2016 20:26:08 GMT+0900 (JST),x=-16.78906, y=79.14844, z=-63.7085 Sat Oct 08 2016 20:26:09 GMT+0900 (JST),x=-18.13818, y=76.15039, z=-60.86035 Sat Oct 08 2016 20:26:10 GMT+0900 (JST),x=-16.48926, y=76.4502 , z=-61.45996 Sat Oct 08 2016 20:26:11 GMT+0900 (JST),x=-17.83838, y=78.69873, z=-62.65918 Sat Oct 08 2016 20:26:12 GMT+0900 (JST),x=-14.09082, y=49.76758, z=-38.2251 Sat Oct 08 2016 20:26:13 GMT+0900 (JST),x=-14.54053, y=47.66895, z=-39.42432 Sat Oct 08 2016 20:26:14 GMT+0900 (JST),x=-16.18945, y=48.26855, z=-37.92529 Sat Oct 08 2016 20:26:15 GMT+0900 (JST),x=-14.09082, y=49.31787, z=-39.57422 Sat Oct 08 2016 20:26:16 GMT+0900 (JST),x=-15.43994, y=46.46973, z=-37.47559 垂 直 水 平
  • 44. Copyright © 2016 AGREX INC. All rights reserved. 44 SensorTag のデータを Raspberry Pi で取得する 1秒ごとに地磁気の値を取得する(垂直→水平) Sat Oct 08 2016 20:26:07 GMT+0900 (JST),x=-16.33936, y=77.34961, z=-64.0083 Sat Oct 08 2016 20:26:08 GMT+0900 (JST),x=-16.78906, y=79.14844, z=-63.7085 Sat Oct 08 2016 20:26:09 GMT+0900 (JST),x=-18.13818, y=76.15039, z=-60.86035 Sat Oct 08 2016 20:26:10 GMT+0900 (JST),x=-16.48926, y=76.4502 , z=-61.45996 Sat Oct 08 2016 20:26:11 GMT+0900 (JST),x=-17.83838, y=78.69873, z=-62.65918 Sat Oct 08 2016 20:26:12 GMT+0900 (JST),x=-14.09082, y=49.76758, z=-38.2251 Sat Oct 08 2016 20:26:13 GMT+0900 (JST),x=-14.54053, y=47.66895, z=-39.42432 Sat Oct 08 2016 20:26:14 GMT+0900 (JST),x=-16.18945, y=48.26855, z=-37.92529 Sat Oct 08 2016 20:26:15 GMT+0900 (JST),x=-14.09082, y=49.31787, z=-39.57422 Sat Oct 08 2016 20:26:16 GMT+0900 (JST),x=-15.43994, y=46.46973, z=-37.47559 y と z の値に何か有意な差を感じる・・・が、センサータグの 設置場所によって値が変化するので使うのは難しそう・・・。 (そもそも地磁気って何だよ・・・。) 垂 直 水 平
  • 45. Copyright © 2016 AGREX INC. All rights reserved. 45 SensorTag のデータを Raspberry Pi で取得する 1秒ごとに加速度の値を取得する(垂直→水平) Sat Oct 08 2016 20:27:31 GMT+0900 (JST),x=-0.91895, y= 0.04517, z=0.00269 Sat Oct 08 2016 20:27:32 GMT+0900 (JST),x=-0.91919, y= 0.10327, z=0.0625 Sat Oct 08 2016 20:27:33 GMT+0900 (JST),x=-0.87817, y= 0.01904, z=0.00244 Sat Oct 08 2016 20:27:34 GMT+0900 (JST),x=-0.87646, y= 0.0354 , z=0.03613 Sat Oct 08 2016 20:27:35 GMT+0900 (JST),x=-0.91772, y= 0.05078, z=0.08105 Sat Oct 08 2016 20:27:36 GMT+0900 (JST),x= 0.38184, y=-0.13159, z=2.88232 Sat Oct 08 2016 20:27:37 GMT+0900 (JST),x= 0.24121, y= 0.11401, z=1.05908 Sat Oct 08 2016 20:27:38 GMT+0900 (JST),x= 0.21802, y= 0.1167 , z=1.04248 Sat Oct 08 2016 20:27:39 GMT+0900 (JST),x= 0.18213, y= 0.12842, z=0.96167 Sat Oct 08 2016 20:27:40 GMT+0900 (JST),x= 0.21704, y= 0.04224, z=1.01587 垂 直 水 平
  • 46. Copyright © 2016 AGREX INC. All rights reserved. 46 SensorTag のデータを Raspberry Pi で取得する 1秒ごとに加速度の値を取得する(垂直→水平) Sat Oct 08 2016 20:27:31 GMT+0900 (JST),x=-0.91895, y= 0.04517, z=0.00269 Sat Oct 08 2016 20:27:32 GMT+0900 (JST),x=-0.91919, y= 0.10327, z=0.0625 Sat Oct 08 2016 20:27:33 GMT+0900 (JST),x=-0.87817, y= 0.01904, z=0.00244 Sat Oct 08 2016 20:27:34 GMT+0900 (JST),x=-0.87646, y= 0.0354 , z=0.03613 Sat Oct 08 2016 20:27:35 GMT+0900 (JST),x=-0.91772, y= 0.05078, z=0.08105 Sat Oct 08 2016 20:27:36 GMT+0900 (JST),x= 0.38184, y=-0.13159, z=2.88232 Sat Oct 08 2016 20:27:37 GMT+0900 (JST),x= 0.24121, y= 0.11401, z=1.05908 Sat Oct 08 2016 20:27:38 GMT+0900 (JST),x= 0.21802, y= 0.1167 , z=1.04248 Sat Oct 08 2016 20:27:39 GMT+0900 (JST),x= 0.18213, y= 0.12842, z=0.96167 Sat Oct 08 2016 20:27:40 GMT+0900 (JST),x= 0.21704, y= 0.04224, z=1.01587 x と z の値に何か有意な差を感じる・・・ しかし、よく分からない・・・。 垂 直 水 平
  • 47. Copyright © 2016 AGREX INC. All rights reserved. 47 SensorTag のデータを Raspberry Pi で取得する センサーをいじりながら観測を続けること数日間・・・ とりあえず、加速度のデータが ジャイロ・地磁気に比べると見込みがありそう・・・。
  • 48. Copyright © 2016 AGREX INC. All rights reserved. 48 SensorTag のデータを Raspberry Pi で取得する 加速度を近似値で整数化してみる
  • 49. Copyright © 2016 AGREX INC. All rights reserved. 49 SensorTag のデータを Raspberry Pi で取得する 加速度を近似値で整数化してみる Sat Oct 08 2016 21:09:26 GMT+0900 (JST),x=-1, y=0, z=0 Sat Oct 08 2016 21:09:27 GMT+0900 (JST),x=-1, y=0, z=0 Sat Oct 08 2016 21:09:28 GMT+0900 (JST),x= 0, y=0, z=1 Sat Oct 08 2016 21:09:29 GMT+0900 (JST),x= 0, y=0, z=1 Sat Oct 08 2016 21:09:30 GMT+0900 (JST),x= 0, y=0, z=1 Sat Oct 08 2016 21:09:31 GMT+0900 (JST),x= 0, y=0, z=1 Sat Oct 08 2016 21:09:32 GMT+0900 (JST),x= 0, y=0, z=1 Sat Oct 08 2016 21:09:33 GMT+0900 (JST),x= 0, y=0, z=1 Sat Oct 08 2016 21:09:34 GMT+0900 (JST),x= 0, y=0, z=1 Sat Oct 08 2016 21:09:35 GMT+0900 (JST),x=-1, y=0, z=0 Sat Oct 08 2016 21:09:36 GMT+0900 (JST),x=-1, y=0, z=0 垂 直 水 平 垂 直
  • 50. Copyright © 2016 AGREX INC. All rights reserved. 50 SensorTag のデータを Raspberry Pi で取得する 加速度を近似値で整数化してみる Sat Oct 08 2016 21:09:26 GMT+0900 (JST),x=-1, y=0, z=0 Sat Oct 08 2016 21:09:27 GMT+0900 (JST),x=-1, y=0, z=0 Sat Oct 08 2016 21:09:28 GMT+0900 (JST),x= 0, y=0, z=1 Sat Oct 08 2016 21:09:29 GMT+0900 (JST),x= 0, y=0, z=1 Sat Oct 08 2016 21:09:30 GMT+0900 (JST),x= 0, y=0, z=1 Sat Oct 08 2016 21:09:31 GMT+0900 (JST),x= 0, y=0, z=1 Sat Oct 08 2016 21:09:32 GMT+0900 (JST),x= 0, y=0, z=1 Sat Oct 08 2016 21:09:33 GMT+0900 (JST),x= 0, y=0, z=1 Sat Oct 08 2016 21:09:34 GMT+0900 (JST),x= 0, y=0, z=1 Sat Oct 08 2016 21:09:35 GMT+0900 (JST),x=-1, y=0, z=0 Sat Oct 08 2016 21:09:36 GMT+0900 (JST),x=-1, y=0, z=0 垂 直 水 平 垂 直 垂直の時は x = -1、水平の時は z = 1 になるらしい! (理屈は不明)
  • 51. Copyright © 2016 AGREX INC. All rights reserved. 51 実装 SensorTag から1秒毎に送られてくる加速度を監視し、 状態が変化したら以下のメッセージを AWS IoT に publish する。 加速度(x)が、-1になった場合 →「鍵が開いたよ!」 加速度(z)が、1になった場合 →「鍵が締まったよ!」 両面テープでSensorTagを貼付け(雑) ※シリコンケースは外してます。
  • 52. Copyright © 2016 AGREX INC. All rights reserved. 52 実装 UNLOCK LOCK 施錠してみる。
  • 53. Copyright © 2016 AGREX INC. All rights reserved. 53 実装 UNLOCK LOCK メールが来た!
  • 54. Copyright © 2016 AGREX INC. All rights reserved. 54 実装 UNLOCK LOCK これで安心して外出できるように・・・
  • 55. Copyright © 2016 AGREX INC. All rights reserved. 55 AWS IoT を使ってみての感想  AWS周りの設定は簡単。  デバイス→AWS IoT のデータ送信も簡単。  もうちょっと AWS のサービスを組み合わせて使いたい。  センサーから取得したデータをどう扱うかがキモ。 ※今回のネタ作りにかかった時間の半分以上はココ・・・。
  • 56. Copyright © 2016 AGREX INC. All rights reserved. 56 AWS IoT を使ってみての感想  アイディア次第で色々できそう  センサーのデータを検知できなくなったら通知 →自転車の盗難通知(カメラモジュールも使うといいかも。)  センサーのデータを検知できるようになったら通知 →こども(鍵っ子)の帰宅通知  光センサーの利用 →遠方の実家の両親の見守り(冷蔵庫の開閉)
  • 57. Copyright © 2016 AGREX INC. All rights reserved. 57 AWS IoT を使ってみての感想 意外とかんたんなので、気軽に IoT してみましょう!