Slide 1

Slide 1 text

PicoRubyでMQTTサポートの実装をしている話 (3) ryosk7 Omotesando.rb #106

Slide 2

Slide 2 text

Omotesando.rb #106

Slide 3

Slide 3 text

これはシリーズ物のLTです。 過去のtalkはspeackerdeckにアップロードしてます。 Omotesando.rb #106

Slide 4

Slide 4 text

ギークハウス新宿というシェアハウスに住んでいます。 Omotesando.rb #106

Slide 5

Slide 5 text

ほとんどの住人がエンジニアという変わったシェアハウスです。 Omotesando.rb #106

Slide 6

Slide 6 text

趣味でPicoRubyを使ってスマートロックを作ってます。 Omotesando.rb #106

Slide 7

Slide 7 text

近い話を東京RubyKaigiの前夜祭でしました。 Omotesando.rb #106

Slide 8

Slide 8 text

スマートロックを作るために、PicoRubyでMQTTの実装をしてい ます! Omotesando.rb #106

Slide 9

Slide 9 text

っていうのを前回話しそびれてしまったので、今回はそんな話を したいと思います。 あの日から進捗もあるので話したい!!!! Omotesando.rb #106

Slide 10

Slide 10 text

Omotesando.rb #106

Slide 11

Slide 11 text

おさらい Omotesando.rb #106

Slide 12

Slide 12 text

MQTTについて Message Queue Telemetry Transport の略 IoTデバイス向けの軽量な通信プロトコル パブリッシュ/サブスクライブ型のメッセージング TCP/IPをベースとした通信 QoSレベル(0,1,2)でメッセージの配信保証 最小限のヘッダで通信量を削減 Omotesando.rb #106

Slide 13

Slide 13 text

MQTTの仕組み ブローカーとクライアント MQTT Broker Publisher 1 Publisher 2 Subscriber 1 Subscriber 2 Publish Publish Subscribe Subscribe Omotesando.rb #106

Slide 14

Slide 14 text

前回は、subscribe時にコールバックでRubyを実行できるようにし た。 Omotesando.rb #106

Slide 15

Slide 15 text

しかし、実はこれメモリリークが起きていた!!!! Omotesando.rb #106

Slide 16

Slide 16 text

5回subscribeを受け取るとメモリ枯渇が起きてしまう。 Omotesando.rb #106

Slide 17

Slide 17 text

これをそのままスマートロックで使うと、 Omotesando.rb #106

Slide 18

Slide 18 text

5回くらい開け閉めすると2度と開かない!!!!! Omotesando.rb #106

Slide 19

Slide 19 text

これではいけない!!! Omotesando.rb #106

Slide 20

Slide 20 text

地道なデバッグを続けていると、subscribeする度にコンパイルを 繰り返し、メモリがどんどん溜まっていることがわかった。 Omotesando.rb #106

Slide 21

Slide 21 text

一度コンパイル済みのコールバック用Rubyコードがある場合は、 コンパイルしない条件を追加して回避した。(暫定対処) Omotesando.rb #106

Slide 22

Slide 22 text

これでメモリリークが起きないMQTT実装が完成。 Omotesando.rb #106

Slide 23

Slide 23 text

RubyでLチカを動かせるし、 カスタムメッセージを吐かせたり、 サーボモーター動かしたり ...etc Omotesando.rb #106

Slide 24

Slide 24 text

いろいろできるようになった! Omotesando.rb #106

Slide 25

Slide 25 text

今後の目標 TLS対応 mqtt gemに合わせたAPIを作る OTA対応 コールバックの暫定実装を修正して、MQTT経由でコールバックコードを更新 できるようにする Omotesando.rb #106

Slide 26

Slide 26 text

ロードマップ TLS encryption support POSIX support MQTT 5.0 features QoS levels 1 and 2 support MQTT over WebSocket Last Will and Testament Over-the-Air (OTA) updates (callback script only) Omotesando.rb #106

Slide 27

Slide 27 text

スマートロック開発は続く。 。 。 Omotesando.rb #106

Slide 28

Slide 28 text

おわり Omotesando.rb #106