この記事は逆TUT Advent Calendar 2024の1日目の記事です.大遅刻しました.お詫びします.
げっぱと言います.C3棟からF1棟に異動になり,なかなか落ち着かない日々を送っているD3です.去年はパプアニューギニアに行ってきた話 ,一昨年は転生したら愛大生だった件,その前は大学院修士2年生が母校の非常勤講師をすることになった話とか書いてますね.アドベントカレンダーにはどうやら2019年から参加しているみたいなので,6年目になります.ちなみに弊学在籍は7年目.8年目はありません.
電動ベッドのリモコンを改造してWi-Fi接続し、Alexaから音声制御できるようにした事例を紹介します。ESPHomeとHomeAssistantを活用して、低コストで実用的なIoTデバイスを実装しました。
僕はFlexispot S2という電動ベッドを愛用しています.思いつきで買ったんですがなかなか快適で,コアラマットレスを敷いて日々惰眠を貪っています.
しかし人間,寝てばかりいてはいけません.いくら12時間睡眠がデフォであろうとも,起きなきゃいけない時は起きなきゃいけません.僕は割と睡眠に問題があるようなので,起床直後が死ぬほど辛い.「いい感じに朝になったら起きる手伝いをしてくれるものはないかなぁ」と,例えばAmazon Alexaくんにニュースを朗読してもらったり,Switchbotカーテンくんにカーテンを開けてもらったりしています.
実は電動ベッドを購入したのも,「朝になったらいい感じに起こしてくれそうなシステムが組めるだろうな」という中学生レベルの思いつきだったのですが,いくつもの困難がありました.今回は,電動ベッドをAlexaから制御することを目的に,実装手法を書いていきます.
まず真っ先に思い浮かぶのは,Switchbotの利用です.Switchbot ハブは,赤外線リモコンの信号を学習し,ほとんどのデバイスを一括操作できるようにしてくれる優れものです.しかし,僕の電動ベッドは2.4GHz無線通信によるリモートコントロールでした.このため,Switchbot ハブは目的には適しません.
Switchbot ボットの利用も一つの方法です.ややこしい名前ですが,これはボタンを押してくれるやつです.SwitchbotアプリやAlexaから制御することで,指定の時間にボタンを押す操作ができます.この方法であれば,電動ベッドのリモコンにボットを貼り付けて,指定の時間にリモコン操作の実行が実現できます.しかし,おひとつ5000円となかなか良いお値段がします.
他の手法として,リモコン側ではなく本体側に対するアプローチも存在します.例えば,Flexispotの昇降デスクの一部はhttps://github.com/iMicknl/LoctekMotion_IoTというリポジトリで解析作業が行われており,PCなどからI2C通信で制御する方法が知られています.しかし,残念ながら電動ベッドに関する解析は存在しませんでした.また,実機の制御ユニットの型番で調べてみたのですが,情報が全く見つからず,自力で解析するのも時間がかかりすぎるので断念しました.
さらに他の手法として,2.4GHz通信を解析してシミュレートすることが考えられます.リモコンのFCC ID(2ARK8-NF03)から,2.4GHzの独自通信規格によって通信をしていそうな雰囲気がわかりました.ソフトウェアエンジニア的には,この2.4GHz通信をリバースエンジニアリングして,適当なデバイスからリモコンの動作をシミュレートできそうな気がします.しかし,膨大な手間がかかることと,そもそも手元に2.4GHz帯の電波をモニタリングできる機材がなく,これも断念しました.