一人でできる!M baasでスマートホーム化

Preview:

Citation preview

一人でできる!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/