一人でできる!m baasでスマートホーム化
Post on 16-Apr-2017
2.442 Views
Preview:
TRANSCRIPT
一人でできる!mBaaSでスマートホーム化
(株)MOONGIFT 中津川篤司
自己紹介
@a_nakatsugawa
fb.me/moongift
株式会社MOONGIFT 代表取締役
2004年1月よりオープンソース・ソフトウェアを毎日紹介するブログ MOONGIFT を運営。
http://www.moongift.jp/
中津川 篤司
@moongift fb.me/moongift.fan
ニフティクラウド mobile backend
• アプリ、Webアプリのバックエンド(サーバサイド)をまるっと提供するサービス。いわゆるmBaaS。
• データベースとかファイルストレージ、プッシュ通知とか。
http://mb.cloud.nifty.com/
一人でできる!mBaaSでスマートホーム化
スマートホーム?
• 家電や設備機器などを情報化&静的制御(ホームオートメーション)
• 地域や家庭内のエネルギーを最適制御する住宅
by Wikipedia@スマートホーム
ホームオートメーション• 室内環境(温度、照明)
• 開口部(扉や窓)
• セキュリティ(防犯、防火)
• 風呂の遠隔自動給湯、ホームシアター
• 生物(自動散水、自動給餌)
芝生ェ…
15.5万ドル/7.5万ドル!
7.6万ドル/3万ドル!
10.2万ドル/3万ドル!
イメージ
自動給餌
諸事情により削除されています
ホームオートメーション
諸事情により削除されています
ホームオートメーション
諸事情により削除されています
ホームオートメーション
諸事情により削除されています
ホームオートメーション
諸事情により削除されています
H.AにおけるmBaaSとは?
• ドアを開けると照明がつく
• 明るくなるとカーテンが開く
• 温度が高くなるとエアコンがつく
H.AにおけるmBaaSとは?
トリガーが家庭内→実行も家庭内
• ドアを開けると照明がつく
• 明るくなるとカーテンが開く
• 温度が高くなるとエアコンがつく
トリガーが家庭内→リモート監視
H.Aにおけるクラウドとは?
• ステータスの記録
• 指定時間の実行
• リモートでの確認、監視
• 閾値を超えた時の処理通知
ニフティクラウド mobile backendについて
• 月200万回のWeb APIコールまで無料
• 月200万回のプッシュ通知が無料
• 無料で5GBまでのストレージ
• node.js(JavaScript)、Objective-C/Java/Unityフレームワーク
ニフティクラウドについて• MQTT(同時接続数100!)
• βにつき無料! WebSocket(Secure)もあり!
• タイマー
• 最小1分間隔/タイムアウト20秒
• HTTP(GET/POST) MQTT/MQTTS fluentd
H.AにおけるmBaaSとは?
• ステータスの記録 → mBaaS
• 指定時間の実行 → タイマー
• リモートでの確認、監視 → mBaaS
• 閾値を超えた時の処理通知 → MQTT/mBaaS
MQTTについて
MQTTとは?
• Pub/Sub型のメッセージングシステム
• HTTPに比べてヘッダデータ量が少ない
• N対Mでデータの送受信ができる
HTTPの場合
リクエスト
レスポンス
リクエストが来るまでは常に待ち
MQTTの場合
ブローカー
パブリッシャー サブスクライバー
パブリッシャー&サブスクライバー
ニフティクラウドのMQTT
• MQTT(同時接続数100!)
• βにつき無料! WebSocket(Secure)もあり!
今回のハードウェア/ソフトウェアの組み合わせ
Raspberry Pi 2 Model BARM 900 MHz!
お値段 4,800円!(アールエスコンポーネンツさん価格)
USBポート×4!
そもそもIoT用じゃない!
Windows 10 IoT Coreも動く!
ロジクール HD Webcam C270m
お値段 1,620円!(Amazonさん価格)
Raspberry PI対応(サポートとは言ってない)
WLI-UC-GNMやっすい無線LANアダプタ
お値段 841円!(Amazonさん価格)
発熱するっぽい(気にしない)
Raspberry PI対応(サポートとは言ってない)
IRKit
• Arduinoベース、オープンソースな赤外線リモコンデバイス
• HTTP経由で赤外線通信ができます。
• 7,700円(Amazonさん価格)
HDMIPi9インチ、1280×800 LCD
FirefoxOS(Open Web Board)でも使えます!
FullHDサポート
Raspberry PI用に作られた小型ディスプレイ
マイクロUSBからの給電でも動きます!
75ポンド!(約1.4万円) 仮注文受付中
マイク
• USB接続の適当なものでOK
プログラミング言語
• みんな大好きnode.js/JavaScript
• apt-get install nodejsで入るのは古いので、https://github.com/nathanjohnson320/node_armで公開されている版(v0.12系)を推奨
音声による制御
• Raspberry PI にJulius(音声認識エンジン)をインストール普通にDLしてコンパイル
音声認識動画.mov
デモ
アーキテクチャ
デモ
音声認識 - 電気点灯.mov
クラウド…?
• ネットワーク(LAN)は使っているけどインターネット(Internet)使ってなくね?
ニフティクラウド mobile backend
• アプリ、Webアプリのバックエンド(サーバサイド)をまるっと提供するサービス。いわゆるmBaaS。
• データベースとかファイルストレージ、プッシュ通知とか。
http://mb.cloud.nifty.com/
ニフティクラウド mobile backendの主な機能
データストア ファイルストア
認証
!プッシュ通知
IoTを絡めてみる• 何か問題があったら助けを呼ぶ→ プッシュ通知が飛ぶ!
!
アーキテクチャ
!
デモ
音声からのプッシュ通知.mov
NCMB.initialize(APP_KEY, CLI_KEY);NCMB.Push.send({ “immediateDeliveryFlag”: true, “message”: message}).then(function (obj) { // プッシュ登録完了});
監視システムを作る• Webカム×motionで動きがあった時に写真撮影&mBaaSにアップロード
• motionはapt-get install motionでOK
ファイルストア
アーキテクチャ
デモ
防犯カメラ.mov
var net = require('net'); var fs = require('fs'); var http = require('http'); var NCMB = require(‘./ncmb-latest.min').NCMB;
NCMB.initialize(“APP_KEY”, “CLI_KEY”); setInterval(function() { fs.readdir('/tmp/motion', function(err, files){ files.filter(function(file) { var path = '/tmp/motion/'+file; }).forEach(function (file) { var path = '/tmp/motion/'+file; fs.readFile(path, function(err, data) { var f = new NCMB.File(file, data, "image/jpeg"); f.save().then(function() { }, function(err) { console.log(err); }); }); }); }); }, 10000);
NCMB.initialize(“APP_KEY”, “CLI_KEY”);
var query = new NCMB.Query("file"); query.descending("createDate"); var filelist = {}; setInterval(function () { query.find().then(function(files) { files.forEach(function(file) { if (filelist[file.get('fileName')]) { return true; } filelist[file.get('fileName')] = true; var img = $("<img />"); var objFile = new NCMB.File(file.get('fileName'), null, "image/jpeg", null); objFile.fetchImgSource(img.get(0)); $(".images").prepend(img); }); }); }, 5000);
発展性
• 写真のアップロードと同時にプッシュ通知
• 写真から人物の認識ができれば、そこから特定の部屋のエアコンや照明をつけたり、合成音声で受け答えできる
照明とエアコンを連携する
• 照明を消したタイミングを関知して、エアコンを止める
データストア
アーキテクチャ
Intel Edison Light Sensor
++
IRKit
NCMB
var NCMB = require(‘./ncmb-latest.min').NCMB; NCMB.initialize(“APP_KEY”, “CLI_KEY”);
var IRKit = NCMB.Object.extend("IRKit"); var message = ""; setInterval(function () { if (value > 250) { if (on == null || on == false) message = "エアコンをオン"; } else { if (on == null || on == true) message = "エアコンをオフ"; } var obj = new IRKit(); obj.set("action", message); obj.save(); });
デモ
タイマー
• 指定した時間(または毎分など)に指定したURL、MQTT、Fluentdなどを実行
• Cronのサーバがない版
使用例
• 毎朝2時にデバイスのステータスを確認デバイス側にCronを設定しなくて良い(後々自由に変更できる)
• 毎朝6時にメッセージを送る
MQTT
• node.js/Rubyライブラリを使ってみる
デモ
MQTTデモ1
MQTT2.mov
MQTT3.mov
まとめ• mBaaS/ニフティクラウドを使うとサーバレスでIoTが実現できます
• 身近なところからホームオートメーションで遊んでみましょう
• Raspberry PI 2 Bモデルなら周辺機器も多いので手軽に使えますよ!
ご静聴ありがとう ございました
http://www.moongift.jp/
top related