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

Shuma Yoshioka

January 25, 2019
Tweet

More Decks by Shuma Yoshioka

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. 前提
    ● PIX-SMB400というチューナ搭載
    Android TV
    ● 音声アシスタント操作機能はある
    ● Play Storeもある
    ● adb接続もできる
    ● = アプリ作って入れることもできる

    View Slide

  8. アイデア1: アプリ作って外からイベント発火
    ● Android TVなので
    ● 王道ルート
    でもコレはNGです

    View Slide

  9. アプリNGの理由1: バックグランド処理
    ● Android 8.0 Oreo から厳しくなった
    ● アイドル状態のアプリは基本ダメ
    ● 暗黙的ブロードキャストも同様

    View Slide

  10. アプリNGの理由2: FCM
    ● Firebase Cloud Messaging
    ● AndroidでイベントPushといえばコレ
    ● foregroundならロジックまで届く
    ● backgroundだと通知トレイまでのみ
    ● そしてTVには通知トレイが無い!

    View Slide

  11. どうしよう...

    View Slide

  12. あ、

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. つくってみた

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. とってもシンプル

    View Slide

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

    View Slide

  22. 私はこれで
    ● 朝起きれるようになりました
    ● リモコンを無くしても困らなくなりまし

    ● リモコンの場所がわからなくなりまし

    View Slide

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

    View Slide

  24. 鋭意開発中です

    View Slide

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

    View Slide

  26. View Slide

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

    View Slide