Upgrade to Pro — share decks privately, control downloads, hide ads and more …

苦しんで実現するホームオートメーション

 苦しんで実現するホームオートメーション

苦しんで実現するホームオートメーション - あるいは、HTTP経由でHIDを操作する話
https://h.s64.jp/entry/ble-hid-keyboard-over-http-using-esp32

0a741f935003a289716373693b95db34?s=128

Shuma Yoshioka

January 25, 2019
Tweet

More Decks by Shuma Yoshioka

Other Decks in Programming

Transcript

  1. 苦しんで実現する ホームオートメーション あるいは、HTTP経由でHIDを操作する話 システムライトニングトーク! at VOYAGE GROUP

  2. 自宅の紹介 交流会ということで、趣味の話をします

  3. Demo Slack経由でオートロックが開く http://bit.ly/2MiFTuO エアコン点いたり、照明点いたり、カーテン開いたりも

  4. 自己紹介 @shuma_yoshioka • ホームオートメーションが趣味 • フリーランス • 株式会社fluctのAndroid向けSDKなどをお手伝い中 • あと高校でプログラミング教えたりも

  5. テレビをSlackから 操作しようとした話

  6. なぜSlack経由で操作したい? • アプリやジョブの管理を一箇所に まとめたい • 客人にも権限渡しやすい • Audit Logにもなる

  7. 前提 • PIX-SMB400というチューナ搭載 Android TV • 音声アシスタント操作機能はある • Play Storeもある

    • adb接続もできる • = アプリ作って入れることもできる
  8. アイデア1: アプリ作って外からイベント発火 • Android TVなので • 王道ルート でもコレはNGです

  9. アプリNGの理由1: バックグランド処理 • Android 8.0 Oreo から厳しくなった • アイドル状態のアプリは基本ダメ •

    暗黙的ブロードキャストも同様
  10. アプリNGの理由2: FCM • Firebase Cloud Messaging • AndroidでイベントPushといえばコレ • foregroundならロジックまで届く

    • backgroundだと通知トレイまでのみ • そしてTVには通知トレイが無い!
  11. どうしよう...

  12. あ、

  13. リモコン作ればよくね?

  14. アイデア2: リモコンを作る • 要はBluetoothのコントローラ • KeyEventを発火させればよい • 物理ボタンなくても、直でBLE叩けば よさそう

  15. PCから操作できる 無線キーボード

  16. つくってみた

  17. 構成 HTTP経由のリクエストをブリッジするバックエンドと BLEでキーボードを再現し入力するマイコン用プログラム

  18. マイコン • ESP32系の開発ボードで動く • BLEでHIDキーボードを再現する • バックエンドへWebSocketで接続 • イベントが降ってきたらBLE経由で キーを流す

  19. バックエンド • Scala on Play Framework • POSTでkeycodeを受け取る • keycodeが来たらWebSocketでマイ

    コンへ流す
  20. とってもシンプル

  21. Demo Slackで特定のキーワードが出たらWebHook扱いで バックエンドを叩く http://bit.ly/2S37Hsx

  22. 私はこれで • 朝起きれるようになりました • リモコンを無くしても困らなくなりまし た • リモコンの場所がわからなくなりまし た

  23. まだまだ課題山積 • エラー処理, メモリまわりの処理が不 足している • 長時間放置すると動かなくなる • 再接続時に反応しない •

    etc...
  24. 鋭意開発中です

  25. 今回のおもちゃはこちら github.com/S64/hidremo

  26. None
  27. 実は • adbコマンドでkeycode送れる • 宅内にサーバ置こう