トイレにrestfulなapiを実装してみた

28
トイレにRESTfulAPI実装してみた 吉村 圭一郎 けーいち@9SQ Developers Summit 2016 - Day 2【19-E-7】 February 19, 2016

Upload: kei-yoshimura

Post on 16-Apr-2017

4.008 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: トイレにRESTfulなAPIを実装してみた

トイレにRESTfulなAPIを 実装してみた

吉村 圭一郎 けーいち@9SQ

Developers Summit 2016 - Day 2【19-E-7】 February 19, 2016

Page 2: トイレにRESTfulなAPIを実装してみた

IoT超HOT

Page 3: トイレにRESTfulなAPIを実装してみた

Internet of Thingsモノのインターネット

Page 4: トイレにRESTfulなAPIを実装してみた

Internet of Toiletトイレのインターネット

Page 5: トイレにRESTfulなAPIを実装してみた

遡ること3年前Internet of Toilet歴 元年 1月 1日

Page 6: トイレにRESTfulなAPIを実装してみた

‒ 某mrubyとかVimの人

“便器からツィートが流れだすまであと少し”

‒ 某QRコードを焼く人

“トイレ流すリモコンの信号を受信すればすぐ実現出来そう。大小の区別も…。”

2013年1月1日のTwitter(一部省略)

Page 7: トイレにRESTfulなAPIを実装してみた

トイレツイートbot

Page 8: トイレにRESTfulなAPIを実装してみた

トイレツイートbot 改

Page 9: トイレにRESTfulなAPIを実装してみた

あれから3年… トイレ→ネットだけでなく

Internet of Toilet歴 3年 1月 1日

ネット→トイレの時代が来る

Page 10: トイレにRESTfulなAPIを実装してみた

トイレにRESTfulなAPIを 実装してみよう

Page 11: トイレにRESTfulなAPIを実装してみた

ハードウェア選定

http://espressif.com/en/products/wroom/

ESP-WROOM-02

ESP8266EX chipset • TCP/IPプロトコルスタック搭載32bit MCU • Wi-Fi STA, AP, STA+AP • 10-bit ADC with HSPI, SDIO, UART, PWM, I2C, and I2S

✓簡単 ✓安い ✓無線LAN

Page 12: トイレにRESTfulなAPIを実装してみた

ハードウェア構成• ESP-WROOM-02 (with オリジナル基板) • 赤外線LED

ケース 3Dプリンタで製作 基板

スイッチサイエンスPCB

Page 13: トイレにRESTfulなAPIを実装してみた

リモコンからコードを取得Arduino UNOに赤外線リモコン受信モジュールを接続

PL-IRM2161-XD1

Arduino-IRremote https://github.com/z3t0/Arduino-IRremote

example/IRrecvDumpを書き込んで シリアルモニタで取得

Page 14: トイレにRESTfulなAPIを実装してみた

リモコンからコードを取得トイレのリモコンが 送信している信号をGET

流す(小)流す(大)

停止1 停止2

やわらか1 やわらか2

送信開始リーダ部 約6ms, 2.9ms データ部 1.5ms=1, 0.5ms=0が続く

流す以外のコマンドは 2回に分けて送信されている

Page 15: トイレにRESTfulなAPIを実装してみた

プログラムを書く&書き込む

1. 無線LAN接続する 2. サーバ起動 3. リクエストを受ける 4. 赤外線送信

ESP8266 core for Arduino https://github.com/esp8266/Arduino

ESP-WROOM-02を単体で Arduinoのように使える

IRremote ESP8266 https://github.com/markszabo/IRremoteESP8266

38kHzで変調して赤外線LEDを 点滅させるライブラリ

トータル 150行くらい

Page 16: トイレにRESTfulなAPIを実装してみた

設置

Page 17: トイレにRESTfulなAPIを実装してみた

toilet.local

Page 18: トイレにRESTfulなAPIを実装してみた

http://toilet.local/

HTML(bootstrap3)+JavaScript

ボタンを押すとXMLHttpRequestで各コマンドを叩く

mDNS対応ブラウザ でアクセス可能 (Androidは…)

Page 19: トイレにRESTfulなAPIを実装してみた

toilet.local/washlet

おしりを洗浄したいときcurl -X POST -d 'c=rear' http://toilet.local/washlet

洗浄を止めたいときcurl -X POST -d 'c=stop' http://toilet.local/washlet

example

®

ウォシュレット, WashletはTOTOの登録商標です

Page 20: トイレにRESTfulなAPIを実装してみた

toilet.local/washlet

「大」を流すときcurl -X DELETE -d 'c=big' http://toilet.local/washlet

®

ウォシュレット, WashletはTOTOの登録商標です

example

Page 21: トイレにRESTfulなAPIを実装してみた

もう少しスマートに しようじゃないか

Page 22: トイレにRESTfulなAPIを実装してみた
Page 23: トイレにRESTfulなAPIを実装してみた

Androidアプリ作りました。 Android 5.0~

✔通知領域に常駐 他のアプリ起動中もシームレスに おしりの洗浄が可能

Page 24: トイレにRESTfulなAPIを実装してみた

Blog

全部まとめて公開中

トイレにRESTfulなAPIを実装してみた

赤外線リモコンで操作できる 機器, 家電に応用可能

Page 25: トイレにRESTfulなAPIを実装してみた

GitHub

全部まとめて公開中

ESP-WROOM-02(ESP8266)向けコード

Androidアプリのコード

赤外線リモコンで操作できる 機器, 家電に応用可能

Page 26: トイレにRESTfulなAPIを実装してみた

モノがネットワークに繋がり RESTful APIを持つ

トイレ

Page 27: トイレにRESTfulなAPIを実装してみた

トイレ×???の可能性✓APIを与えるだけで出来ることが一気に広がる

+音声認識 = 対話できるトイレ? 「hey Siri, おしり洗って!」

+人工知能 = 行動予測するトイレ?? お尻を3回洗う人が来たぞ!

✓様々な既存ソフトウェア技術要素と組み合わせて…

Page 28: トイレにRESTfulなAPIを実装してみた

[room].local/[device]

Let’s Enjoy おうちハック!

流行らないかなぁ…