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

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

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

0a741f935003a289716373693b95db34?s=128

Shuma Yoshioka

January 25, 2019
Tweet

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送れる • 宅内にサーバ置こう