kintoneで実践するiotハンズオン -90分で挑戦!kintone & aws iot連携-
TRANSCRIPT
![Page 1: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/1.jpg)
Twitter: @yamaryu0508 FB: https://www.facebook.com/ryu.yamashita.3
2016年2月19日 株式会社ジョイゾー/kintoneエバンジェリスト/ kintone Café 運営事務局・東京支部 山下 竜
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
Developers Summit 2016 【19-F-3】サイボウズ特別トラック
#devsumiF
![Page 2: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/2.jpg)
自己紹介「山下 竜」
2
2013.3 IOTとグループウェア(デヂエ)の連携を試みてkintone に出会う2014.4 - kintoneエバンジェリストに
2014.11 kintone好きが高じて、界隈初のkintone転職2015.2 kintone Café 運営事務局開設、事務局メンバーに
2014.5 - 2014.10 kintone Café 福岡 Vol.1 - 3を主催
現在(kintone歴2年ちょっと、AWS歴数ヶ月) 多分、“日本で唯一100%kintoneでご飯食べてる人”
株式会社ジョイゾー 山下 竜(33) 福岡県大牟田市出身
「ブルーウェーブ」という共通点
![Page 3: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/3.jpg)
kintone楽しませてもらっています!
3
Pepperによるアプリ作成
アイディアバナナ (貰いに行っただけ)
NKアグリさんの 見学
kintone devCamp 2015
kintone Café クラウドEXPO
ハンズオン祭りcybozu.com developer
network
デブサミ
![Page 4: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/4.jpg)
会社紹介「株式会社ジョイゾー」
4
会社名 株式会社ジョイゾー 所在地 東京都江東区木場3-5-5 設立 2010年12月20日(6期目) 社員数 8名(kintoneエバンジェリスト2名) 主な事業 kintone導入支援・カスタマイズ開発 サイボウズOffice/ガルーン構築支援 案件の9割以上がkintone
![Page 5: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/5.jpg)
日本初定額制来店型システム開発「システム39」
5
![Page 6: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/6.jpg)
1Week20万円の定額kintoneカスタマイズ
6
![Page 7: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/7.jpg)
kintoneエコシステム背景
![Page 8: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/8.jpg)
新しいSI・働き方
コミュニティ
ユーザー
コアサービス
グローバル
他サービス開発者/パートナー
![Page 9: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/9.jpg)
kintoneエコシステムの本質
9
作って、使って、 コミュニケーションして、楽しい!
ユーザーが、 コミュニティ参加者が、 開発者/パートナーが、 サイボウズの人が、
![Page 10: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/10.jpg)
kintoneエコシステム テクニカルな切り口では・・・
![Page 11: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/11.jpg)
kintoneエコシステム
11
「kintoneエコシステム」構築の3つのテクニカルキーワード
Lv.1 kintoneプラグイン
kintone連携サービス
サーバレスアーキテクチャ
Lv.2
Lv.3
帳票
複合機
経費精算
基幹
EAI
BI
![Page 12: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/12.jpg)
kintoneエコシステム
12
「kintoneエコシステム」構築の3つのテクニカルキーワード
Lv.1 kintoneプラグイン
kintone連携サービス
サーバレスアーキテクチャ
Lv.2
Lv.3
帳票
複合機
経費精算
基幹
EAI
BI
最近注目しています!
![Page 13: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/13.jpg)
kintoneとAWSナイスな相性だと 言われています!
![Page 14: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/14.jpg)
kintoneとAWS
14
• アプリケーション寄りPaaS(SaaS)
• クライアントサイド/フロントエンド (UI/UX)
• 行動的/解釈の共有でアクションを起こし、コミュニケーションで業務を回す
• インフラ寄りPaas(IaaS、BaaS)
• サーバーサイド/バックエンド (コマンド)
• 思考的/データを捌き事象を解釈する
APIで 結合・補完
良質のインプット
強力なデータ処理
![Page 15: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/15.jpg)
AWS Lambdaによる サーバレスアーキテクチャ
参考・引用「Serverless Architecture on AWS」 (http://www.slideshare.net/keisuke69/serverless-architecture-on-aws)
肝となる
![Page 16: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/16.jpg)
Lambda イベントソース
kintoneエコシステム(王道っぽいAWSとkintoneの連携パターン)
Amazon DynamoDB Stream
Amazon SNS
Amazon S3
Amazon Kinesis
AWS Lambda
Amazon EC2
REST API
kintone on cybozu.com
・レコード操作 ・ワークフロー操作 ・スペース操作 ・アプリ操作
REST API
kintone.proxy() & Amazon API Gateway 経由もやっぱりイイ!
REST API
プリミティブな連携 ・ホスティング ・バッチ処理
Amazon API Gateway
AWS IoT
16
![Page 17: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/17.jpg)
サーバ(EC2)による処理系の例
17
データプッシュポーリング・ 待機・監視
データの発生状況を ポーリングチェック
処理(コード)の 実行
・ロードバランス ・レプリケーション ・オートスケール
データ
![Page 18: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/18.jpg)
サーバレス(Lambda)による処理系の例
18
データ
トリガー
データの発生が トリガーとして渡る
・ロードバランス ・レプリケーション ・オートスケール
処理(コード)の 実行
• インフラ構築不要
• インフラの運用管理不要
• キャパシティ
• スケール
• デプロイ
• 障害耐性
• モニタリニグ
• ロギング
• セキュリティパッチ適用
サーバレス(Lambda)の恩恵
![Page 19: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/19.jpg)
Lambda イベントソース
kintoneエコシステム(王道っぽいAWSとkintoneの連携パターン)
19
Amazon DynamoDB Stream
Amazon SNS
Amazon S3
Amazon Kinesis
AWS Lambda
Amazon EC2
REST API
kintone on cybozu.com
・レコード操作 ・ワークフロー操作 ・スペース操作 ・アプリ操作
REST API
kintone.proxy() & Amazon API Gateway 経由もやっぱりイイ!
REST API
プリミティブな連携 ・ホスティング ・バッチ処理
Amazon API Gateway
AWS IoT
![Page 20: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/20.jpg)
kintone & AWSサーバレスアーキテクチャのベストプラクティス
![Page 21: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/21.jpg)
その3
その2
kintoneとAWSサーバレスアーキテクチャのベストプラクティス
21
その1 AWS各サービスを用いたkintoneへのインプット
kintoneへのAPIアクセスのラッピング
kintoneからAWS各サービスへのアクセス
(従来IoT、kintone controller)
(Webhookからの連携、kintoneデータの柔軟な公開)
(kintoneデータを元にした機械学習)
その4 Schedule Eventによるkintoneバッチ処理
API
(定期的な集計、サービス間連携)
![Page 22: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/22.jpg)
AWS各サービスを用いたkintoneへのインプット
22
・農業(圃場) ・見守り ・建設・工事現場 ・工場設備 ・エネルギー設備
現場
センサー
・温度 ・湿度 ・照度 ・加速度 ・騒音
センサー クラウド kintone
・通知 ・ワークフロー ・スレッド ・カスタマイズビュー
事象・データが発生する データを捌き、 事象を解釈する
解釈の共有でアクションを起こし、コミュニケーションで業務を回す
IoT
![Page 23: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/23.jpg)
ルール (閾値条件)
AWS各サービスを用いたkintoneへのインプット
23
XX
MQTT
REST API
Rule Action
kintone & AWSによるIoT構成例
センサー トピック
Rule Action
全データ 蓄積
業務アクションのために 即時連携が必要なデータ
通知・ワークフロー
可視化
必要なデータを 必要な分だけ取得
MQTT
ルール (全データ)
認証
REST
API
![Page 24: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/24.jpg)
AWS各サービスを用いたkintoneへのインプット
24
kintone controller
REST API
AWS LambdaAWS IoTコントローラー
IoT連携
・レコード操作 ・ワークフロー操作 ・スペース操作 ・アプリ操作
①ボタンを押す ②IoT情報を受け取って、次のサービスに渡す
③受け取った情報をトリガーにkintoneにアクセス
![Page 25: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/25.jpg)
kintoneへのAPIアクセスのラッピング
25
Webhook Event REST API
①Gitのプッシュ、 課題追加等の発生
②APIでパラメータを 渡す
③Eventでパラメータを受け取り、 APIでkintoneへ
Webhook(通知等)をAPI Gatewayを経由してLambdaで捌いた内容を kintoneに連携
Webhookからのkintoneアクセス
![Page 26: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/26.jpg)
kintoneへのAPIアクセスのラッピング
26
①kintoneデータへのアクセスをAPI Gatewayで APIを再定義
②kintoneを意識することなく 有益な情報にアクセス
kintoneに蓄積されたデータをAPI Gatewayで再定義したAPIで柔軟に公開
kintoneのデータを再定義したAPIで公開
REST API Event REST APIRESTful Service
![Page 27: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/27.jpg)
kintoneからAWS各サービスへのアクセス
27
kintoneのデータを元にしたMachine Learning
AWS Lambda
kintone on cybozu.com
①kintoneデータで 予測モデル作成
Amazon API Gateway
Amazon Machine Learning
②kintoneにデータ登録 ③API(クエリ)で パラメータを渡す
④Eventでパラメータを受け取り、 APIでリアルタイム予測へ
REST API Event REST API
⑤予測実行後 予測値を返す
※初動のモデル作成は直接実施 (Lambda未経由)
⑥予測値をセット
kintone.proxy()
kintoneのデータ管理に予測機能を追加!
![Page 28: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/28.jpg)
kintoneからAWS各サービスへのアクセス
28
REST API Event REST API
Device Shadow
SOAP API
①スイッチON/OFF②API GatewayとLambdaを介して、 Device ShadowのREST APIをコール
③Device Shadowで Raspberry Piを制御
④Raspberry PiからLAN内の Wemoにアクセス
⑤家電の電源をON/OFF
![Page 29: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/29.jpg)
Schedule Eventによるkintoneバッチ処理
29
①Lambdaを定期起動
スケジュールイベント(定期実行)で、サービス間連携
Event REST API
連携 サービス
REST API ②connpassのデータを取得
③connpassのデータを kintoneへ
④kintoneに入ったデータを kViewerで公開
![Page 30: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/30.jpg)
kintoneエコシステム真時代の到来!なぜ今なのか?
改めて、
![Page 31: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/31.jpg)
サーバーレスアーキテクチャが 登場したから?
キーワードですが、いち要素にすぎません
![Page 32: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/32.jpg)
コミュニティ
ユーザー
コアサービス
グローバル
他サービス新しいSI・働き方 開発者/パートナー
もう一度見返してみましょう!
![Page 33: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/33.jpg)
新しいSI・働き方
コミュニティ
ユーザー
コアサービス
グローバル
他サービス
2011
2006
2014
20142015
20132011
開発者/パートナー
![Page 34: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/34.jpg)
それぞれの進化によりエコシステム形成のためのピースが全て実際に埋まったから^^
紙芝居でなく写真になり、 システムも今日実践しましょう!
![Page 35: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/35.jpg)
いよいよ本題
kintone & AWS IoT連携 ハンズオンシナリオと構成
![Page 36: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/36.jpg)
ハンズオンモチベーション
36
kintone × IoT とは?
データベース プロセス 管理
コミュニケーション
ただの「データベース」ではなくて、kintoneならではの 「プロセス管理」や「コミュニケーション」の機能を活かす!
ここで大切なのは
「オフィスのデータ」だけでなく 「現場のデータ」も取り込む
オフィスで人が入力 現場でセンサーが送信
kintone × センサークラウド 連携事例
データ送信センサークラウド kintone
レコード登録 - 通知 - ワークフロー
カスタマイズビュー - グラフカスタマイズ
megakiku connect (IoTアプリ)
※kintone連携機能有
- 温度・湿度・照度等のデータを蓄積 - 生産予測の精度向上 - 上のノウハウ再利用で、フランチャイズ化に伴う生産管理の効率化
NKアグリ様(東京・和歌山)(kintoneでやっていること)
温度センサー
・低下する就労人口 ・農業経営・技術の継承問題
チームワークプラットフォームの インプットとしてのIoT
引用「kintone × IoT 連携による現場業務の改善」 (http://www.slideshare.net/joyzojp/kintone-iot)
![Page 37: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/37.jpg)
Rule Action
全データ 蓄積
可視化REST
API
必要なデータを 必要な分だけ取得
ルール (全データ)
ルール (閾値条件)
ハンズオン構成(続き)
37
XX
MQTT
REST API
センサー トピック
Rule Action
業務アクションのために 即時連携が必要なデータ
通知・ワークフローMQTT
認証
kintone & AWSによるIoT構成例
![Page 38: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/38.jpg)
ハンズオン構成(続き)
①BLE CentralからBLE Peripheralの センサーデータをAWS IoT Device GWへ MQTT Publish
AWS Lambda kintone on cybozu.com
MQTT
AWS IoT
Event REST API
IoT Device
BLE Peripheral
BLE Central
②AWS IoTルール エンジンでイベントドライブ
③Lambdaから kintoneへのレコード操作
AWS IoT/Lambdaからkintoneへの柔軟なデータ取り込みを体験
※今回BLE CentralはRaspberry Piで代用38
![Page 39: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/39.jpg)
Special Thanks
39
引用「TechCrunch」 (http://jp.techcrunch.com/2016/01/13/skydisc/)
最近1億円の資金調達をされた福岡の
の着脱式センサ「GINGA」をAWS様のご協力でお借りしています!
SKYDISC様
![Page 40: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/40.jpg)
• kintone
• kintone REST APIをNode.jsでコールする
• レコード操作
• ワークフロー操作(応用編)
• AWS
• AWS Lambdaの設定方法
• AWS IoTの設定方法
• デバイス、ルール、ポリシー、証明書
• IoT Device
• AWS IoT SDKによるMQTT Publishの記述方法
今回のハンズオンに必要とされるスキルセット(目標・成果物)
40
![Page 41: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/41.jpg)
ハンズオンの手順
①BLE CentralからBLE Peripheralの センサーデータをAWS IoT Device GWへ MQTT Publish
AWS Lambda
IoT Device ← AWS IoT ← Lambda ← kintone
MQTT
AWS IoT
Event REST API
IoT Device
BLE Peripheral
BLE Central
②AWS IoTルール エンジンでイベントドライブ
③Lambdaから kintoneへのレコード操作
データやプロセスの終着点側から設定すると、スムーズに進みます!
41
![Page 42: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/42.jpg)
kintone & AWS IoT連携 ハンズオン予備知識
![Page 43: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/43.jpg)
kintone REST API
![Page 44: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/44.jpg)
kintone3大要素とREST API
44
データベース プロセス管理 コミュニケーション
充実 強化中 弱いAPIからの操作も3大要素をバランスよく活用することが重要!
API操作で3大機能同士を密に結合できるようになると、更に便利になると期待しています!
![Page 45: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/45.jpg)
kintone3大要素とREST API(ポータル画面)
45
スペースの 作成・メンバー更新等
アプリの作成・更新
(欲しい)
(参考:「cybozu.com developer network > kintone API」)
![Page 46: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/46.jpg)
kintone3大要素とREST API(詳細画面)
46
レコードの 取得・登録・更新・削除
添付ファイルの アップロード・ダウンロード
レコードの ステータス変更
(欲しい)(参考:「cybozu.com developer network > kintone API」)
![Page 47: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/47.jpg)
kintone REST APIの概要
47
• kintoneアプリのレコードやスペースの操作
kintone REST APIの用途
プロトコル
• HTTPSプロトコル
フォーマット
• JSON
文字コード
• UTF-8
認証認証
• ユーザ認証(パスワード、APIトークン)
• Basic認証
その他
• 同時処理レコード数100件
• API同時アクセス10件※GET/recordsのみ500件
![Page 48: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/48.jpg)
kintone REST APIの概要(続き)
48
• https://{subdomain}.cybozu.com/k/v1/{command}.json【通常】
• https://{subdomain}.cybozu.com/k/guest/{space id}/v1/{command}.json【ゲストスペース】
URI
リクエストヘッダ
• Host: {subdomain}.cybozu.com:443
• Content-Type:application/json
• 認証情報
![Page 49: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/49.jpg)
リクエスト例(GET/records)
49
QWRtaW5pc3RyYXRvcjpwYXNzd29y
GETメソッドではContent-Typeは不要
Basic認証を使用していない場合にも空欄で入れておく分には問題ない様子
https://{subdomain}.cybozu.com/k/v1/records.json?app={app id}
【認証方法の記述】 X-Cybozu-Authorization : {BASE64-encoded "id:password"} Authorization : Basic {BASE64-encoded "id:password"} ※例の{base64-encoded "id:password"}はidをAdministrator、passwordをpasswordとした場合の値としています
HTTPクライアント設定画面
※以降、Google Chromeのアドオン「POSTMAN」を利用しています
![Page 50: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/50.jpg)
リクエスト例(GET/records:続き)
50
リクエスト詳細
https://{subdomain}.cybozu.com/k/v1/records.json?app={app id}
QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==
{subdomain}.cybozu.com
{app id}
![Page 51: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/51.jpg)
リクエスト例(GET/records:続き)
51
レスポンス
"{field code}": { "type" : "{field type}", "value" : "{value}" }
各フィールドはこのように記述されます ・複数値を取りうる{value}は配列になります ・POST/PUTの際はtypeが不要です
フィールドの記述
![Page 52: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/52.jpg)
リクエスト例(POST/records)
52
HTTPクライアント設定画面
QWRtaW5pc3RyYXRvcjpwYXNzd29y
https://{subdomain}.cybozu.com/k/v1/records.json
![Page 53: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/53.jpg)
リクエスト例(POST/records:続き)
53
リクエスト詳細
POST/PUTメソッドではContent-Lengthが必要(自動補完してくれない言語・ライブラリを利用する場合は要注意)
https://{subdomain}.cybozu.com/k/v1/records.json
QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==
{subdomain}.cybozu.com
![Page 54: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/54.jpg)
リクエスト例(POST/records:続き)
54
レスポンス
【POSTのレスポンス】 ・ids(レコードID)とrevisions(リビジョン) 【PUTのレスポンス】 ・revisions(リビジョン)
![Page 55: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/55.jpg)
AWS IoT
![Page 56: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/56.jpg)
AWS IoTの概要
56
引用「AWS IoTの仕組み」 (https://aws.amazon.com/jp/iot/how-it-works/)
• DEVICE GATEWAY
• メッセージブローカー、MQTT/HTTP1.1
• AUTHENTICATION & AUTHORIZATION
• TLS1.2、IAM、SigV4、Cognito
• AWS IoT DEVICE SDK
• Embedded C、JavaScript、Arduino Yún
• RULES ENGINE
• SQLライクな記述、AWSサービスへのアクション
• DEVICE SHADOWS
• オフライン時のメッセージ受信
• REGISTRY
• メタデータ管理参考「Everything You Want to Know About AWS IoT」 (http://www.slideshare.net/AmazonWebServices/mbl205-new-everything-you-want-to-know-about-aws-iot)
![Page 57: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/57.jpg)
AWS IoTの概要(DEVICE GATEWAY)
57
![Page 58: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/58.jpg)
AWS IoTの概要(DEVICE GATEWAY・続き)
58
メッセージブローカー
PublishSubscribe
MQTTイメージ
![Page 59: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/59.jpg)
AWS IoTの概要(DEVICE GATEWAY・続き)
59
メッセージブローカー
POSTGET
RESTイメージ
![Page 60: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/60.jpg)
AWS IoTの概要(AUTHENTICATION & AUTHORIZATION)
60
認証・アクセス許可
![Page 61: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/61.jpg)
AWS IoTの概要(AUTHENTICATION & AUTHORIZATION・続き)
61
認証・アクセス許可
XXポリシー
証明書証明書
モノ
![Page 62: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/62.jpg)
AWS IoTの概要(RULE ENGINE)
62
ルールエンジン
ルールエンジンアクション
![Page 63: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/63.jpg)
AWS IoTの概要(RULE ENGINE・続き)
63
ルールエンジン
SQLライクな記述が可能なフィルタ 例: SELECT * FROM ‘things/thing-2/color' WHERE color = ‘red’
メッセージ交換(文字列操作、算術演算等)
![Page 64: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/64.jpg)
AWS IoTの概要(RULE ENGINE・続き)
64
ルールエンジンアクション受け取ったメッセージの処理
パブリッシュ データ格納 Lambda関数呼出
テーブル操作 パブリッシュ リパブリッシュ
![Page 65: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/65.jpg)
AWS IoTを中心にハンズオン構成を見る
65
XX
MQTT REST API
①証明書で紐ついたモノから メッセージ(データ)をPublish
Event
②受け取ったメッセージを Topic等でフィルタ
③受け取ったメッセージを Lambdaで処理してkintoneへ連携
MQTT
{ "temp": "14", "humidity": "80", "time": "2016-02-19T12:23:56+09:00", "device": "Lambda test" }
メッセージ kintoneの レコード
![Page 66: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/66.jpg)
ハンズオンの設定概要
66
XX
MQTT REST API
Event
【kintone】 ①アプリ作成 ②APIトークンの取得
MQTT
【AWS Lambda】 ①eventで送られてきたメッセージを 処理して、kintoneに連携するLambda 関数の作成
【AWS IoT】 ①モノの作成 ②ルールの作成 ②ポリシーの作成 ④証明書の生成 ⑤証明書とモノの紐付け ⑥証明書とポリシーの紐付け
【IoT Device】 ①BLEによるセンサー値取得 ②AWS IoT Device SDKによる センサー値のMQTT Publishの設定
![Page 67: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/67.jpg)
ハンズオン本編
![Page 68: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/68.jpg)
サンプルダウンロード
68
①「https://github.com/joyzo/devsumi-2016-19F3」にアクセス
②「Download ZIP」をクリックして、 ファイル一式をダウンロード
![Page 69: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/69.jpg)
kintoneアプリの設定
![Page 70: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/70.jpg)
kintoneアプリの設定(テンプレートからのアプリ作成)
①「ハンズオンスペース」をクリックして、個別スペースに移動
70
![Page 71: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/71.jpg)
kintoneアプリの設定(テンプレートからのアプリ作成・続き)
②アプリ作成の「+」をクリック
③「テンプレートから選ぶ」をクリック
④「アプリを作成する」をクリック ⑤今回1つのアプリが追加される
71
![Page 72: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/72.jpg)
kintoneアプリの設定(インシデント管理アプリの概要)
72
フォーム項目フィールド の種類
フィールドコード
測定日時 日時 time
センサー名 文字列(1行) device
温度 数値 temp
湿度 数値 humidity
IoT DeviceからAWS IoT/Lambdaを経由して登録されるセンサーデータ用のフォームを準備
![Page 73: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/73.jpg)
kintoneアプリの設定(インシデント管理アプリの概要・続き)
73
フォーム項目フィールド の種類
フィールドコード
タイトル 文字列(1行) タイトル
優先度 ドロップダウン 優先度
内容 文字列(複数行)
内容
対応期限 日付 対応期限
対応者 ユーザー選択 対応期限
センサーデータをトリガーに発生する業務に関連するフォームを準備
![Page 74: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/74.jpg)
kintoneアプリの設定(インシデント管理アプリのID確認)
74
①アプリURLの「/k/」の後ろの数値(アプリID)をメモ
![Page 75: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/75.jpg)
kintoneアプリの設定(インシデント管理アプリのAPIトークン取得)
75
②「アプリの設定を変更」をクリック
①「・・・」をクリック
![Page 76: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/76.jpg)
kintoneアプリの設定(インシデント管理アプリのAPIトークン取得・続き)
76
③「詳細設定」をクリックして展開
④「APIトークン」をクリック
![Page 77: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/77.jpg)
kintoneアプリの設定(インシデント管理アプリのAPIトークン取得・続き)
77
⑤「生成する」をクリック
⑥「レコード閲覧」、「レコード追加」、「レコード編集」、「レコード削除」にチェック
⑦生成されたAPIトークンをメモ
⑧「保存」をクリック
![Page 78: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/78.jpg)
kintoneアプリの設定(インシデント管理アプリのAPIトークン取得・続き)
78
⑨「設定完了」をクリック
⑩「OK」をクリック
![Page 79: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/79.jpg)
Lambda・関数の設定
AWS IoTのルールエンジンからのアクセ本をトリガーにkintoneのレコードを操作するLambda関数の設定
![Page 80: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/80.jpg)
Lambda・関数の設定
80
①「Lambda」をクリック
※今回は「東京(ap-northeast-1)」リージョン
![Page 81: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/81.jpg)
Lambda・関数の設定(続き)
81
②(Lambda利用が初めてでなければ)「Create a Lambda function」をクリック
②(Lambda利用が初めてならば)「Get Started Now」をクリック
![Page 82: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/82.jpg)
Lambda・関数の設定(続き)
82
③今回は「Skip」をクリック
![Page 83: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/83.jpg)
Lambda・関数の設定(続き)
83
④「Name」に今回のLambda関数の名前(例: kintone-iot)を記入
⑤「Runtime」は「Node.js」を選択しておく
⑦「APP_ID」の値をメモしておいたkintoneアプリのIDで差し替える
⑥サンプルの「./nodejs/kintone_iot.js」を貼付け ※日本語は貼付け時に文字化けし、不具合の原因になることがある ※全選択して貼り付けると既存のソースを残して追加されることがある
⑧「API_TOKEN」の値をメモしておいたkintoneアプリのAPI Tokenで差し替える
![Page 84: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/84.jpg)
Lambda・関数の設定(続き)
84
⑨「Handler」はそのまま ※ZIPコードをアップロードする際にファイル名と同一である必要がある(index.handler → index.js)
⑪基本実行権限を持つIAMロールを新しく作る場合には「許可」をクリック
⑬「Next」をクリック⑩「Role」は基本実行権限を持つ既存ロールか「Basic execution role」を選択
⑫「Memory」を512、「Timeout」を5で設定
※ポップアップの許可が必要な場合があります
![Page 85: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/85.jpg)
Lambda・関数の設定(続き)
85
⑭「Create function」をクリック
![Page 86: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/86.jpg)
Lambda・関数の設定(続き)
86
⑮Lambda関数の作成完了
⑯「Test」をクリック
⑰サンプルの「./json/sample_event.json」を貼付け ※IoT DeviceがPublishしてくるデータ
⑱「Save and test」をクリックして、テスト実行
![Page 87: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/87.jpg)
Lambda・関数の設定(続き)
87
⑲テスト実行が成功すると「Execution result」が「succeeded」になり、kintoneのレスポンスが出力される
![Page 88: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/88.jpg)
• event(PublishされたメッセージがAWS IoT経由で渡される)データを用いてkintoneへのレコード登録を行う
イベントコード「kintone_iot.js」の概要
88
![Page 89: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/89.jpg)
// Libraries var https = require('https'); // HTTPS request
// constant parameters const KINTONE_HOST = 'kintone-iot.cybozu.com'; const APP_ID = 3; const API_TOKEN = 'Tm8C8ziqgf7fUx2XdvAAIu1PJINczwPHVntFj9ON';
イベントコード「kintone_iot.js」の部分解説
89
HTTPSリクエストを行う標準モジュールNode.jsのモジュール(1行目~)
設定値(定数)(6行目~)アプリ毎の固有の情報(今回の編集対象)
![Page 90: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/90.jpg)
// get options to access to kintone REST API var getOptions = function(path, method) { return { hostname: KINTONE_HOST, port: 443, path: path, method: method, secureProtocol: 'SSLv3_method', headers: { 'X-Cybozu-API-Token': API_TOKEN } }; };
イベントコード「kintone_iot.js」の部分解説(続き)
90
ヘッダ情報は認証情報のみセットしておく (URL渡しのGET/records等以外はContent-Type: application/jsonを別途付加)
HTTPSリクエスト時に必要な情報を取得する関数(9行目~)
![Page 91: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/91.jpg)
// regist record to kintone var postRecord = function(event, callback) { console.log('start postRecord'); // set request body var params = { "app": APP_ID, "record": { "time": { "value": event.time || event.timestamp || "" }, "device": { "value": event.device || "devsumi_device" }, "temp": { "value": event.temp || "" }, "humidity": { "value": event.humidity || "" } } }; var json = JSON.stringify(params); // set request headers var options = getOptions('/k/v1/record.json', 'POST'); options.headers['Content-Type'] = 'application/json';
// access to kintone REST API var req = https.request(options, function(res) { console.log('STATUS: ' + res.statusCode); console.log('HEADERS: ' + JSON.stringify(res.headers)); res.setEncoding('utf8'); res.on('data', function(chunk) { console.log('BODY: ' + chunk); if (res.statusCode === 200) { callback(null, JSON.parse(chunk)); } }); });
req.on('error', function(e) { console.log('problem with request: ' + e.message); callback(e.message); });
req.write(json); req.end(); };
イベントコード「kintone_iot.js」の部分解説(続き)
91
eventを処理してレコード登録を行う関数(24行~)
eventから登録するrecordを作成
「Content-Type: application/json」をリクエストヘッダに付加
POST/recordをコール
![Page 92: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/92.jpg)
Lambda関数のテスト起動で kintoneにレコード登録する動きの確認
![Page 93: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/93.jpg)
ここまでの設定による動き
①BLE CentralからBLE Peripheralの センサーデータをAWS IoT Device GWへ MQTT Publish
AWS Lambda
MQTT
AWS IoT
REST API
IoT Device
BLE Peripheral
BLE Central
②AWS IoTルール エンジンでイベントドライブ
③Lambdaから kintoneへのレコード操作
Event
(設定済みの範囲)先ほどのテスト
93
![Page 94: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/94.jpg)
イベント履歴の確認
94
①「Monitoring」をクリックする
②直近24時間の履歴を表示
③詳細をCloudWatchで確認するためにクリック
![Page 95: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/95.jpg)
イベント履歴の確認(続き)
95
④直近のログストリームをクリック
⑤テストで挿入したeventデータ
⑥kintoneのレスポンスが表示され正常終了
![Page 96: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/96.jpg)
kintoneのレコード登録確認
96
⑳Lambdaのテストで登録されたレコード
![Page 97: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/97.jpg)
AWS IoTの設定
モノ周辺の設定を行い、MQTT PublishされたデータをLambdaに渡す
![Page 98: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/98.jpg)
AWS IoTの設定
98
①「AWS IoT」をクリック
※今回は「東京(ap-northeast-1)」リージョン
![Page 99: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/99.jpg)
AWS IoTの設定
99
②(AWS IoT利用が初めてでなければ)「Create a resource」をクリック
②(AWS IoT利用が初めてならば)「Get started」をクリック
![Page 100: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/100.jpg)
AWS IoTの設定(モノの作成)
100
④「Name」に作成するモノの名前(例: kintone-iot)を記入
③「Create a thing」を選択
⑤「Create」をクリック
![Page 101: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/101.jpg)
AWS IoTの設定(モノの作成・続き)
101
⑦Shadowのエンドポイント等が表示される
⑥「View thing」をクリック
![Page 102: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/102.jpg)
AWS IoTの設定(ルールの作成)
102
⑧「Create a rule」を選択
⑨「Name」にルール名(例: kintone_iot)を記入
![Page 103: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/103.jpg)
AWS IoTの設定(ルールの作成)
103
⑨「Attribute」に「*」を記入
⑪「Choose an action」では「Insert this message into a code function and execute it
(Lambda) 」を選択
⑩「Topic filter」に「devsumi/ginga」を記入
![Page 104: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/104.jpg)
AWS IoTの設定(ルールの作成・続き)
104
⑫「Function name」は先程設定した「kintone-iot」を記入・選択
⑬「Add action」をクリック
⑮「Create」をクリック
⑭「Lambda Action」が追加される
![Page 105: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/105.jpg)
AWS IoTの設定(ルールの作成・続き)
105
⑰先ほど設定したクエリ情報等が表示される
⑯「View rule」をクリック
![Page 106: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/106.jpg)
AWS IoTの設定(ポリシーの作成・続き)
106
⑱「Create a policy」を選択
⑲「Name」にポリシー名(例: kintone-iot)を記入
㉑「Resource」には「*」を記入
㉒「Allow」にチェック
㉓「Add statement」をクリック
⑳「Action」には 「iot:*」を記入
![Page 107: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/107.jpg)
AWS IoTの設定(ポリシーの作成・続き)
107
㉕「Create」をクリック
㉔「Statement 1」が追加される
![Page 108: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/108.jpg)
AWS IoTの設定(ポリシーの作成・続き)
108
㉗設定されたポリシー情報が表示される
㉖「View policy」をクリック
![Page 109: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/109.jpg)
AWS IoTの設定(証明書の作成)
109
㉘「Create a certificate」を選択
㉙「1-Click certificate create」をクリック
![Page 110: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/110.jpg)
AWS IoTの設定(証明書の作成・続き)
110
㉚生成された3つの証明書をダウンロード 【ファイル名(今回の命名ルール)】 サンプルの「./ginga/」で「./ginga/cert」フォルダを作成し、その下に保存 ・public key -> public.pem ・private key -> private.pem ・certificate -> certificate.pem ※「Download」の部分が「Show」となっている方は コピペしてテキストエディタで保存してください。
![Page 111: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/111.jpg)
AWS IoTの設定(証明書とポリシーの紐付け)
111
㉛先程作成した証明書に「レ(チェック)」を入れる
32「Attach a policy」をクリック
33先程作成したポリシー名を記入
34「Attach」をクリック
![Page 112: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/112.jpg)
36「Attach a thing」をクリック
AWS IoTの設定(証明書とモノの紐付け)
112
35選択中の証明書にはチェックのまま
37先程作成したモノの名前を記入
38「Attach」をクリック
![Page 113: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/113.jpg)
AWS IoT(証明書のアクティベーション)
113
39選択中の証明書にはチェックのまま
40「Activate」をクリック
![Page 114: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/114.jpg)
AWS IoT(証明書のアクティベーション・続き)
114
41「ACTIVE」に変わる
![Page 115: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/115.jpg)
AWS IoTの設定(再掲:AUTHENTICATION & AUTHORIZATION)
115
認証・アクセス許可
XXポリシー
証明書証明書
モノ
証明書のアタッチ状況
モノポリシー
![Page 116: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/116.jpg)
AWS IoTの設定(ルート証明書の取得)
116
42Symantecからルート証明書を取得
43コピペもしくはcURLコマンド等で他の証明書と同じフォルダに「rootCA.pem」として保存する ※cURLコマンドはサンプルの「howto_curl_rootCA.txt」に記載
![Page 117: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/117.jpg)
AWS IoTへのPublishで kintoneにレコード登録する動きの確認
![Page 118: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/118.jpg)
ここまでの設定による動き
AWS LambdaAWS IoT
REST API
IoT Device
BLE Peripheral
BLE Central
②AWS IoTルール エンジンでイベントドライブ
③Lambdaから kintoneへのレコード操作
Event
(設定済みの範囲)MQTT Publishテスト
①BLE CentralからBLE Peripheralの センサーデータをAWS IoT Device GWへ MQTT Publish
MQTT
118
![Page 119: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/119.jpg)
MQTT Publishの確認(エミュレータの準備)
119
①「https://github.com/yamaryu0508/aws-iot-publisher」にアクセス
②「Download ZIP」をクリックして、 ファイル一式をダウンロード
※ハンズオンではUSBにてアプリを配布
![Page 120: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/120.jpg)
MQTT Publishの確認(エミュレータの準備・続き)
120
/ ┣ AWS IoT Publisher-darwin-x64/ (Mac用) ┃ ┗ AWS IoT Publisher.app (エミュレータアプリ) ┣ AWS IoT Publisher-win32-ia32/ (Windows32bit用) ┃ ┗ AWS IoT Publisher.exe (エミュレータアプリ) ┗ AWS IoT Publisher-win32-x64/ (Windwos64bit用) ┗ AWS IoT Publisher.exe (エミュレータアプリ)
レポジトリの中身(パッケージ済アプリ部分のみ)
③自分の環境に適したアプリを起動
![Page 121: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/121.jpg)
MQTT Publishの確認(エミュレータによるPublish)
①「Asia Pacific (Tokyo)[ap-northeast-1]」を選択
②先程設定した「devsumi/ginga」を記入
③先程ダウンロードした「rootCA.pem」を選択
④先程ダウンロードした「certificate.pem」を選択
⑤先程ダウンロードした「private.pem」を選択
⑥サンプルの「sample_event.json」をkey-value形式で入力
⑦「Publish to AWS IoT !」をクリック
121
![Page 122: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/122.jpg)
MQTT Publishの確認(エミュレータによるPublish・続き)
122
⑧AWS IoTにConnectして メッセージをPublish
出典: https://github.com/yamaryu0508/aws-iot-publisher
![Page 123: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/123.jpg)
kintoneのレコード登録確認
123
⑧MQTT Publishのテストで登録されたレコード ※Lambda-kintone間はチェック済みのため、LambdaのCloudWatch Logsの確認は省略
![Page 124: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/124.jpg)
AWS IoT内のMQTT Clientを使った確認(続き)
124
①「MQTT Client」を選択
![Page 125: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/125.jpg)
AWS IoT内のMQTT Clientを使った確認(続き)
125
②「Clinet ID」を入力(例: devsumi-test)
③「Connect」をクリック
![Page 126: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/126.jpg)
AWS IoT内のMQTT Clientを使った確認(続き)
126
④「Connection」が 「Connected」になる
![Page 127: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/127.jpg)
AWS IoT内のMQTT Clientを使った確認(続き)
127
⑤「Publish to topic」をクリック
⑥サンプルの「./json/sample_event.json」を貼付け ※IoT DeviceがPublishしてくるデータ
⑦「device」を「MQTT Client test」等わかりやすいものにしておく
⑧「Publish」をクリック
![Page 128: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/128.jpg)
AWS IoT内のMQTT Clientを使った確認(続き)
128
⑨「Publish」に成功すると「Success!」が表示される
![Page 129: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/129.jpg)
kintoneのレコード登録確認
129
⑩MQTT Clientからのテストで登録されたレコード ※Lambda-kintone間はチェック済みのため、LambdaのCloudWatch Logsの確認は省略
![Page 130: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/130.jpg)
IoT Deviceの設定
![Page 131: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/131.jpg)
IoT Device周辺の詳細
131
BLE MQTT Publish
温湿度センサー (BLE Peripheral)
GW (BLE Central) AWS IoT
ここでの設定対象
Peripheralから送られてくるセンサー値を取得して、 AWS IoTにメッセージ(データ)をパブリッシュする
BLE Centralの動き
IoT Device周辺の構成
![Page 132: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/132.jpg)
IoT Device周辺の詳細(続き)
132
BLE MQTT Publish
センサー (BLE Peripheral)
GW (BLE Central) AWS IoT
- Periferalの値を読み取るNode.jsコーディング - AWS IoTアクセス用の証明書のセット - AWS IoT SDKを用いたAWS IoTアクセス用のNode.jsコーディング
BLE Centralの設定内容
![Page 133: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/133.jpg)
IoT Deviceの設定
133
{kintoneのログインID(例: user1)}/ ┣ ginga_iot.js (センサーの値を取得してPublishするメインのNode.jsファイル) ┣ node_module/ (Node.jsのモジュール群) ┃ ┣ aws-iot-device-sdk/ (証明書を伴うAWS IoTへのアクセス) ┃ ┣ noble/ (BLE Centralの作成) ┃ ┗ moment/ (日時操作) ┗ cert/ (証明書ファイル群) ┣ rootCA.pem (ルート証明書) ┣ certificate.pem (証明書) ┗ private.pem (秘密鍵)
BLE Centralのフォルダ構成 フォルダ名を「ginga/」からkintoneのログインIDに各自修正しておく
![Page 134: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/134.jpg)
// constant parameters const DEVICE_NAME = 'dev1'; const TOPIC = "devsumi/ginga"; // MQTT TOPIC const MY_ADDRESS = "f3:2f:85:98:69:ce"; // MAC Address of BLE peripheral, "GINGA" const REGION = 'ap-northeast-1';
IoT Deviceの設定
134
ginga_iot.jsの編集箇所(6行目~)①Peripheralの「Dev**」を記入
②Peripheralのアドレスを記入
![Page 135: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/135.jpg)
• アドレス指定したPeripheralからのadvertisementがあった際にセンサーの値を取得する
• 証明書を紐付けて、取得したセンサーの値をAWS IoTにPublishする
• 「AWS IoTのリージョン」、「証明書のパス」、「Topic」の指定が必要
Centralコード「ginga_iot.js」の概要
135
![Page 136: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/136.jpg)
// libraries var noble = require('noble'); // BLE central module var awsIot = require('aws-iot-device-sdk'); // AWS IoT SDK var moment = require('moment'); // Date library
Centralコード「ginga_iot.js」の部分解説
136
Node.jsのモジュール群(1行目~)
// constant parameters const DEVICE_NAME = 'dev1'; const TOPIC = "devsumi/ginga"; // MQTT TOPIC const MY_ADDRESS = "f3:2f:85:98:69:ce"; // MAC Address of BLE peripheral, "GINGA" const REGION = 'ap-northeast-1';
設定値(定数)(6行目~)
AWS IoTルールエンジンで設定したTopicと同じ値
AWS IoTの設定を行った東京リージョン
![Page 137: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/137.jpg)
// device config. var device = awsIot.device({ keyPath: './certs/private.pem', certPath: './certs/certificate.pem', caPath: './certs/rootCA.pem', clientId: DEVICE_NAME, region: REGION });
Centralコード「ginga_iot.js」の部分解説(続き)
137
AWS IoT Device SDKにおけるdeviceオブジェクトの初期化(12行目~)
証明書のパス
![Page 138: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/138.jpg)
// parse & publish temperature/humidity data function publish_ginga(data) { // parse temperature data var t1 = parseInt(data[0]); var t2 = parseInt(data[1]) / 100; var temp_value = t1 + t2; // temperature value // parse humidity data var h1 = parseInt(data[2]); var h2 = parseInt(data[3]) / 100; var humidity_value = h1 + h2; // humidity value // create & publish message var message = { "device": DEVICE_NAME, "sensor": 'ginga', "time": moment().format(), "temp": temp_value, "humidity": humidity_value }; message = JSON.stringify(message); console.log("# Publish: " + message); device.publish(TOPIC, message); // publish }
Centralコード「ginga_iot.js」の部分解説(続き)
138
GINGAのデータをパースしてAWS IoTにPublishする関数(48行目~)
温度をパース
湿度をパース
Publishするメッセージ
AWS IoTへのPublish
![Page 139: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/139.jpg)
// event for BLE peripheral "discover" noble.on('discover', function(peripheral) { noble.stopScanning();
if (MY_ADDRESS == 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, characteristics) { 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) { // publish_humidity(data); // publish humidity // publish_temp(data); // publish temperature publish_ginga(data); // publish GINGA data } }); }, 10 * 1000); // per 10sec }); }); } ); }); } else { console.log("# No my device is discovered"); } });
Centralコード「ginga_iot.js」の部分解説(続き)
139
Peripheralからのadvertisement受信時の処理(80行目~)
BLE Peripheralからのadvertisementを受けてデータが取れたら、Publishする関数を呼ぶ
nobleモジュールでBLEのadvertisementを受けた時のイベント
advertisementが指定したアドレスからの時にはデータ取得のために処理続行
![Page 140: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/140.jpg)
メインファイルと証明書をCentralに設置
各自のファイルセット → kintone → BLE Central
SCPコマンドも良いのですが、ファイルの受け渡しのためにkintoneを利用します
![Page 141: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/141.jpg)
{kintoneのログインID(例: user1)}/ ┣ ginga_iot.js ┣ node_module/ ┃ ┣ aws-iot-device-sdk/ ┃ ┣ noble/ ┃ ┗ moment/ ┗ cert/ ┣ rootCA.pem ┣ certificate.pem ┗ private.pem
kintoneにファイルセットを保存
141
圧縮して、kintoneの「ユーザー管理」アプリに保存
BLE Centralのフォルダ
![Page 142: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/142.jpg)
kintoneに保存したファイルセットをCentralにデプロイ
142
$ curl -X GET "https://kintone-iot.cybozu.com/k/v1/file.json?fileKey={ファイルキー}"\ -H "X-Cybozu-Authorization:{「ID:Passwrod」のbase64エンコード値}"\ -o ./{kintoneのログインID(例: user1)}.zip
ファイル取得のコマンド
$ unzip ./{kintoneのログインID(例: user1)}.zip
ファイルセットの展開
今回は代表何名か分を実施させていただきますm(__)m
![Page 143: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/143.jpg)
CentralからMQTT Publish
![Page 144: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/144.jpg)
Peripheralの電源を入れる
144
下に倒れている状態 (バックの枠に合った状態)
上に倒れている状態 (バックの枠に合ってない状態)
OFF ON
ONに!
![Page 145: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/145.jpg)
Centralでコードを実行
145
$ node ginga_iot.js
PeripheralのデータをPublish
![Page 146: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/146.jpg)
kintoneのレコード登録確認
146
IoT DeviceからAWS IoT/Lambda経由で登録されたレコード
![Page 147: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/147.jpg)
おさらいとまとめ
![Page 148: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/148.jpg)
今回やった内容のおさらい
148
XX
MQTT REST API
①証明書で紐ついたモノから メッセージ(データ)をPublish
Event
②受け取ったメッセージを Topic等でフィルタ
③受け取ったメッセージを Lambdaで処理してkintoneへ連携
MQTT
{ "temp": "14", "humidity": "80", "time": "2016-02-19T12:23:56+09:00", "device": "Lambda test" }
メッセージ kintoneの レコード
![Page 149: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/149.jpg)
今回行った設定のおさらい
149
XX
MQTT REST API
Event
【kintone】 ①アプリ作成 ②APIトークンの取得
MQTT
【AWS Lambda】 ①eventで送られてきたメッセージを 処理して、kintoneに連携するLambda 関数の作成
【AWS IoT】 ①モノの作成 ②ルールの作成 ②ポリシーの作成 ④証明書の生成 ⑤証明書とモノの紐付け ⑥証明書とポリシーの紐付け
【IoT Device】 ①BLEによるセンサー値取得 ②AWS IoT Device SDKによる センサー値のMQTT Publishの設定
![Page 150: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/150.jpg)
• AWS IoT/LambdaでkintoneへのIoTインプットが容易に実現できました
• 今回はデータ連携のハンズオンでしたが、kintoneはチームワークプラットフォームなので、ただのDBやビューワだけでなく、IoTインプットからのワークフロー、コミュニケーション、そしてアクションにつなげる利用がkinotne IoT活用の鍵となります
まとめ
150
![Page 151: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/151.jpg)
ハンズオンは以上です
![Page 152: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/152.jpg)
ハンズオン後片付け(Lambda関数の削除)
152
①今回作成した関数にチェック
②「Delete function」をクリック
③「Delete」をクリック
![Page 153: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/153.jpg)
ハンズオン後片付け(AWS IoT証明書の削除)
153
①証明書のリンクをクリック
②ポリシーにチェック
③モノにチェック
④「Detach」をクリック
⑤「Detach」をクリック
※「Detach」、「Deactive」後に、 「Delete」が可能になる
![Page 154: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/154.jpg)
ハンズオン後片付け(AWS IoT証明書の削除・続き)
154
⑥証明書にチェック
⑧「Deactive」をクリック ⑦「Deactive」をクリック
![Page 155: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/155.jpg)
ハンズオン後片付け(AWS IoT証明書の削除・続き)
155
⑨証明書にチェックのまま
⑪「Delete」をクリック ⑩「Delete」をクリック
![Page 156: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/156.jpg)
ハンズオン後片付け(AWS IoTポリシーの削除)
156
③「Delete」をクリック ②「Delete」をクリック
①ポリシーにチェック
![Page 157: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/157.jpg)
ハンズオン後片付け(AWS IoTモノの削除)
157
③「Delete」をクリック ②「Delete」をクリック
①モノにチェック
![Page 158: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/158.jpg)
ハンズオン後片付け(AWS IoTルールの削除)
158
③「Delete」をクリック ②「Delete」をクリック
①ルールにチェック
![Page 159: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/159.jpg)
本日の内容は以上です
![Page 160: kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-](https://reader030.vdocuments.mx/reader030/viewer/2022012904/5871252e1a28abe4448b5f11/html5/thumbnails/160.jpg)