Your SlideShare is downloading. ×
MQTTでオフィスハック with RasPi
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

MQTTでオフィスハック with RasPi

256
views

Published on

http://iotlt.connpass.com/event/11373/ …

http://iotlt.connpass.com/event/11373/

IoTLT vol.1にて発表。
MQTTを使った電子工作の入門編的なスライドです。
JavaScriptだけで電子工作を完結します。

Published in: Engineering

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
256
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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