SlideShare a Scribd company logo
1 of 25
リレーションズ株式会社
久原政彦
Masahiko KUBARA
自己紹介
 久原政彦(Masahiko KUBARA)
リレーションズ株式会社
→この会場です!
 組み込みエンジニア
フロントエンジニア
 ステータス:明日引っ越し。
背景
 以前は、組み込みエンジニア
 ARMとBTと足裏圧力センサを使ってリハビリ支援
 RasPiで廃棄物計量監視
 最近は、webフロントエンジニア
 JavaScript/SPA
 bower, browserify, vue, gulp,,, 覚えることたくさん
 。○(電子工作をもっと楽しみたい…)
_人人人人人人人人人人人人_
> JavaScriptで電子工作 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
JavaScriptで電子工作…
 Tesselとかもあるけど…
 高いねん… 10000円とか…
 RasPiが安くて気軽!
 3,240円なら、まぁ壊しても安心
 GPIO直接叩ける
 通信もWi-FiドングルでOK
 「センサデータとか、処理結果とか、
うまく投げたいな。」
_人人人人人人人人人人人人人人人_
> いまMQTTが流行りだってよ! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
MQTTって何?
 メッセージングプロトコル。
 IoT、とくにセンサネットワーク向き
 ヘッダが軽い
 重要度管理ができる (QoS)
 最後のメッセージはいつでも取り出せる (Retain)
 遺言も残せる (Will)
 pub/subモデル
 データを好きなだけ投げて良い
 それを聞きたい人だけに、配送する
 プロトコルが軽いので、中継役が低スペでもOK
つくってみた
玄関に人が来たら知らせるシステム
 センサで人を検知して、アラームを鳴らす。
 つい先日、5Fを増床しました。
 誰かが来てもわからない。
 「お客さんキタヨ!!」→すぐ対応!
 「うろついてる人イルヨ」→すぐ対応!
システム概要
 ハードウェア
 Raspberry Pi
 アラーム:LED
 センサ :焦電センサ(SB412A @500)
 ソフトウェア
 Node.js
 mqtt.js MQTTが簡単に使える
 wiring-pi GPIOが簡単に使える
構成
RasPi
焦電センサ
Wi-Fi
test.mosquitto.org
RasPi
Wi-Fi
publisher subscriberbroker
RasPi
焦電センサ
Wi-Fi
mkubara/ir/9F
mkubara/ir/5F
mkubara/ir/9F
mkubara/ir/5F
publisher(センサ)
 初期設定
 RasPiのWi-Fiを設定
 Node.jsを入れておく
 センサ出力をGPIO11に繋ぐ
 npm i mqtt wiring-pi
 sudo node pub.js
// MQTTクライアントのセットアップ
var mqtt = require('mqtt');
, client = mqtt.connect
('mqtt://test.mosquitto.org');
// センサ入力の設定
var wpi = require('wiring-pi')
, sensor = 11;
wpi.setup('wpi');
wpi.pinMode(sensor, wpi.INPUT);
// 100msごとにセンサをチェック
// 反応があればpublishする
var state = 0;
setInterval(function(){
var detected = wpi.digitalRead(sensor);
if (state != detected){
client.publish('mkubara@github/ir/5F‘
, ''+detected);
state = detected;
}
}, 100);
subscriber(LED)
 初期設定
 RasPiのWi-Fiを設定
 Node.jsを入れておく
 LEDをGPIO10に繋げておく
 npm i mqtt wiring-pi
 sudo node sub.js
// MQTTクライアントのセットアップ
var mqtt = require('mqtt');
, client = mqtt.connect
('mqtt://test.mosquitto.org');
// センサ入力の設定
var wpi = require('wiring-pi')
, led = 10;
wpi.setup('wpi');
wpi.pinMode(led, wpi.OUTPUT);
// 焦電センサからの通知を購読する
var detected = 0;
client.subscribe('mkubara@github/ir/5F');
client.on('message',
function(topic, message){
detected = (message!='0' ? 1 :0);
});
// 定期的に表示を更新する
setInterval(function(){
wpi.digitalWrite(led, detected);
}, 100);
brokerはどうする?
 test.mosquitto.org
 テスト用。コネクションを定期的にリセット
 MQTT as a Service
 Sango(時雨堂) :メッセージ数で制限
 CloudMQTT(heroku):帯域幅で制限
 自前で立てる
 mosquitto
 クラウドサーバ、RasPiでもいい!
Demo…はライブ実行中ですね
やってみて
 すごい、楽。
 クライアントはTopicを指定してpub/subするだけでいい
○ 再送管理とか気にしない
○ APIとかいらない
 意外とJavaScript-OnlyでもOKだった
 webプログラマ側からどんどんアプローチできるかも
 webとgadgetが、簡単に繋がる!
 興味のある人、ぜひお友達になりましょう!
これからやりたいこと
MQTT-SN
 センサネットワーク
 ZigBee系を想定? XBee、TWE-Lite
BLEとかでもイケるとは思う
 TWE-Liteで超省電力ノード
 TWE-EH Solar
○ 無電源!: 環境発電で賄える
○ 鋭意製作中。
ブラウザからでもpub/subできる!
 mows.js
 WebsocketでMQTTできる
 クライアントもNode.jsで作る
 browserify
 angular, react, vue …
 gulp
 mows
いろいろなモノと連携…
 Slack
 チャットでpublish
 hubot
 センサをsubscribeしておいて、反応する
 MicroService
 センサデータを、意味のあるデータへ変換
 Google App Script
 カレンダーを見て、会議の終了アラートとか
MQTTでオフィスハック
おわり
補足用
MQTTってなんぞや? [MQTT 1/3]
 軽量プロトコル
 IoT向け
M2M用に作られたメッセージングプロトコル
 2バイト
ヘッダサイズ。 → 組み込み環境向き
(HTTPの1/10のデータ量で済む例も)
トピックベースで pub/sub [MQTT 2/3]
 トピックでまとめる
 pub/subモデル
 投げたいだけ投げる
 聞きたいだけ聴く 認証はTLSとかで
 Brokerが仲介
センサネットワーク向き [MQTT 3/3]
 Will
 接続が切れたら発行されるメッセージ。
これで電池が切れてもわかる!
 Retain
 最後のメッセージは取っておける。
いつ購読開始してもデータが受け取れる!
 QoS
 メッセージの重要度を決められる。
大事なデータだけは、絶対送る!

More Related Content

Viewers also liked

ワンコインでIot入門 第二章
ワンコインでIot入門 第二章ワンコインでIot入門 第二章
ワンコインでIot入門 第二章Makoto Takahashi
 
20150726 IoTってなに?ニフティクラウドmqttでやったこと
20150726 IoTってなに?ニフティクラウドmqttでやったこと20150726 IoTってなに?ニフティクラウドmqttでやったこと
20150726 IoTってなに?ニフティクラウドmqttでやったことDaichi Morifuji
 
OpenBlocks IoTで温湿度を可視化してみた
OpenBlocks IoTで温湿度を可視化してみたOpenBlocks IoTで温湿度を可視化してみた
OpenBlocks IoTで温湿度を可視化してみたHideki Yanagihara
 
Raspberry pi internet of things
Raspberry pi  internet of thingsRaspberry pi  internet of things
Raspberry pi internet of thingscatmoney
 
IoTタグで遊んでみよう
IoTタグで遊んでみようIoTタグで遊んでみよう
IoTタグで遊んでみようYukimitsu Izawa
 
ストリーム処理勉強会 大規模mqttを支える技術
ストリーム処理勉強会 大規模mqttを支える技術ストリーム処理勉強会 大規模mqttを支える技術
ストリーム処理勉強会 大規模mqttを支える技術Keigo Suda
 
動かしながら学ぶMQTT
動かしながら学ぶMQTT動かしながら学ぶMQTT
動かしながら学ぶMQTTEiji Yokota
 
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQIntroduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQDmitriy Samovskiy
 
デバイスからクラウドへ ~組み込みエンジニアと IoT
デバイスからクラウドへ ~組み込みエンジニアと IoTデバイスからクラウドへ ~組み込みエンジニアと IoT
デバイスからクラウドへ ~組み込みエンジニアと IoTShin-ya Koga
 
MQTTとAMQPと.NET
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NETterurou
 

Viewers also liked (12)

ワンコインでIot入門 第二章
ワンコインでIot入門 第二章ワンコインでIot入門 第二章
ワンコインでIot入門 第二章
 
20150726 IoTってなに?ニフティクラウドmqttでやったこと
20150726 IoTってなに?ニフティクラウドmqttでやったこと20150726 IoTってなに?ニフティクラウドmqttでやったこと
20150726 IoTってなに?ニフティクラウドmqttでやったこと
 
OpenBlocks IoTで温湿度を可視化してみた
OpenBlocks IoTで温湿度を可視化してみたOpenBlocks IoTで温湿度を可視化してみた
OpenBlocks IoTで温湿度を可視化してみた
 
Raspberry pi internet of things
Raspberry pi  internet of thingsRaspberry pi  internet of things
Raspberry pi internet of things
 
IoTタグで遊んでみよう
IoTタグで遊んでみようIoTタグで遊んでみよう
IoTタグで遊んでみよう
 
WebとIoTとMake
WebとIoTとMakeWebとIoTとMake
WebとIoTとMake
 
ストリーム処理勉強会 大規模mqttを支える技術
ストリーム処理勉強会 大規模mqttを支える技術ストリーム処理勉強会 大規模mqttを支える技術
ストリーム処理勉強会 大規模mqttを支える技術
 
動かしながら学ぶMQTT
動かしながら学ぶMQTT動かしながら学ぶMQTT
動かしながら学ぶMQTT
 
Mqttで始めるIoT
Mqttで始めるIoTMqttで始めるIoT
Mqttで始めるIoT
 
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQIntroduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQ
 
デバイスからクラウドへ ~組み込みエンジニアと IoT
デバイスからクラウドへ ~組み込みエンジニアと IoTデバイスからクラウドへ ~組み込みエンジニアと IoT
デバイスからクラウドへ ~組み込みエンジニアと IoT
 
MQTTとAMQPと.NET
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NET
 

Similar to MQTTでオフィスハック with RasPi

基幹業務もHadoop(EMR)で!!のその後
基幹業務もHadoop(EMR)で!!のその後基幹業務もHadoop(EMR)で!!のその後
基幹業務もHadoop(EMR)で!!のその後Keigo Suda
 
メディアコンテンツを支えるデータストアサービスをAWSで
メディアコンテンツを支えるデータストアサービスをAWSでメディアコンテンツを支えるデータストアサービスをAWSで
メディアコンテンツを支えるデータストアサービスをAWSでYasuhiro Murata
 
Re: ご注文は自動化ですか?[2]
Re: ご注文は自動化ですか?[2]Re: ご注文は自動化ですか?[2]
Re: ご注文は自動化ですか?[2]Masahito Zembutsu
 
MBSハッカソン_協賛について_ハンズラボ
MBSハッカソン_協賛について_ハンズラボMBSハッカソン_協賛について_ハンズラボ
MBSハッカソン_協賛について_ハンズラボ由佳 青木
 
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBMToshiki Tsuboi
 
20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸Takahiro Iwase
 
新卒3年目のぼくが、でぶおぷす???なオジサンだらけのエンプラ金融PJにAnsibleを導入してみた
新卒3年目のぼくが、でぶおぷす???なオジサンだらけのエンプラ金融PJにAnsibleを導入してみた新卒3年目のぼくが、でぶおぷす???なオジサンだらけのエンプラ金融PJにAnsibleを導入してみた
新卒3年目のぼくが、でぶおぷす???なオジサンだらけのエンプラ金融PJにAnsibleを導入してみたShuntaro Saiba
 
JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?Shingo Fukui
 
CA流 フロントエンドエンジニアの働きかた
CA流 フロントエンドエンジニアの働きかたCA流 フロントエンドエンジニアの働きかた
CA流 フロントエンドエンジニアの働きかたKazunari Hara
 
○○したら受託開発が180°変わった
○○したら受託開発が180°変わった○○したら受託開発が180°変わった
○○したら受託開発が180°変わったAtsushi Harada
 
NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野livedoor
 
サーバ擬人化ユーザ会キックオフ資料 Slideshare ver
サーバ擬人化ユーザ会キックオフ資料 Slideshare verサーバ擬人化ユーザ会キックオフ資料 Slideshare ver
サーバ擬人化ユーザ会キックオフ資料 Slideshare verSeiichiro Ishida
 
2014-01-28 Operation in the future
2014-01-28 Operation in the future2014-01-28 Operation in the future
2014-01-28 Operation in the futureOperation Lab, LLC.
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術dena_study
 
Going Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No ServersGoing Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No ServersKeisuke Nishitani
 

Similar to MQTTでオフィスハック with RasPi (20)

情シス必要論 re:Birth
情シス必要論 re:Birth 情シス必要論 re:Birth
情シス必要論 re:Birth
 
基幹業務もHadoop(EMR)で!!のその後
基幹業務もHadoop(EMR)で!!のその後基幹業務もHadoop(EMR)で!!のその後
基幹業務もHadoop(EMR)で!!のその後
 
Assembler
AssemblerAssembler
Assembler
 
メディアコンテンツを支えるデータストアサービスをAWSで
メディアコンテンツを支えるデータストアサービスをAWSでメディアコンテンツを支えるデータストアサービスをAWSで
メディアコンテンツを支えるデータストアサービスをAWSで
 
Re: ご注文は自動化ですか?[2]
Re: ご注文は自動化ですか?[2]Re: ご注文は自動化ですか?[2]
Re: ご注文は自動化ですか?[2]
 
MBSハッカソン_協賛について_ハンズラボ
MBSハッカソン_協賛について_ハンズラボMBSハッカソン_協賛について_ハンズラボ
MBSハッカソン_協賛について_ハンズラボ
 
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM
 
20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸
 
新卒3年目のぼくが、でぶおぷす???なオジサンだらけのエンプラ金融PJにAnsibleを導入してみた
新卒3年目のぼくが、でぶおぷす???なオジサンだらけのエンプラ金融PJにAnsibleを導入してみた新卒3年目のぼくが、でぶおぷす???なオジサンだらけのエンプラ金融PJにAnsibleを導入してみた
新卒3年目のぼくが、でぶおぷす???なオジサンだらけのエンプラ金融PJにAnsibleを導入してみた
 
2018/1/30 Django勉強会
2018/1/30 Django勉強会2018/1/30 Django勉強会
2018/1/30 Django勉強会
 
JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?
 
CA流 フロントエンドエンジニアの働きかた
CA流 フロントエンドエンジニアの働きかたCA流 フロントエンドエンジニアの働きかた
CA流 フロントエンドエンジニアの働きかた
 
ラズタンク
ラズタンクラズタンク
ラズタンク
 
○○したら受託開発が180°変わった
○○したら受託開発が180°変わった○○したら受託開発が180°変わった
○○したら受託開発が180°変わった
 
NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野NHNグループ合同勉強会 ライブドア片野
NHNグループ合同勉強会 ライブドア片野
 
R高速化
R高速化R高速化
R高速化
 
サーバ擬人化ユーザ会キックオフ資料 Slideshare ver
サーバ擬人化ユーザ会キックオフ資料 Slideshare verサーバ擬人化ユーザ会キックオフ資料 Slideshare ver
サーバ擬人化ユーザ会キックオフ資料 Slideshare ver
 
2014-01-28 Operation in the future
2014-01-28 Operation in the future2014-01-28 Operation in the future
2014-01-28 Operation in the future
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術
 
Going Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No ServersGoing Serverless, Building Applications with No Servers
Going Serverless, Building Applications with No Servers
 

MQTTでオフィスハック with RasPi