クラウド制御の天井ファンをRFハッキングして自由を手に入れる
RF hacking my cloud-controlled ceiling fan
RF hacking my cloud-controlled ceiling fan
クラウド接続が必須のスマートシーリングファンにうんざりしていませんか?メーカーのサーバー経由でしか操作できないのは不便ですし、プライバシー面でも不安ですよね。そこで、今回はこの天井ファンをRF(無線周波数)ハッキングすることで、メーカーの支配から解放し、ローカル環境で直接制御できるように改造してみました。これでインターネット接続が切れても、自分好みのスマートホーム環境を維持できます。
いい記事をありがとう、Sam!
こういう記事大好き。うちも家中に433MHzデバイスがいろいろあって、Home Assistantに統合してるよ。一番便利なのは、プローブが複数ついてるBBQ用温度計かな。
それはそうと、この分野で一番愛用してるツールを貼っておくね。https://github.com/jopohl/urh (Universal Radio Hacker)を使うと作業がめちゃくちゃ楽になるんだけど、リポジトリがアーカイブ済みになってるのが残念。どっちにしろ、ソフト自体は最高だよ。
家を持ってないからよくわからないんだけどさ。寝るときに暑かったら、ベッドの横のつまみを回して天井のファンをつける。起きたら消す。それ以上の自動化って何が必要なの?
笑えることに、先週まさに同じことをやろうとしてたんだ。でも、手持ちの433MHzトランシーバーがESPHomeでうまく動かないみたいで、今は一旦あきらめたよ。リモコンを使えば信号は出力されてるみたいなんだけどね。まあいいや、また時間があるときに再挑戦するよ。
大きな違いは、RTL-SDRじゃなくてFlipper Zeroで433MHzのキャプチャをしたことかな(RTL-SDRも持ってるけど、まだ必要になってない)。
参考までに、トランシーバーはこれについてたやつを使ってるよ:https://www.athom.tech/blank-1/8ch-inching-self-lock-relay-f... (すでにヒーターの制御に使ってるやつ)。奇妙なことに、公式のESPHome設定には載ってないんだ(たぶんRFが最近追加された機能だからかも)。次は別のESPボードでテストして、ESPHomeが生成するタイミングと比較してみるつもり。
自分も記事を書き始めようかな。このミニプロジェクト(最大2-3時間)でいくつか面白いソースを見つけたし。
Home Assistantを使えるレベルの人にとって、RFのキャプチャとリプレイをもっと魔法のように手軽に感じてもらえるようなプロセスを数ヶ月前から作ってるよ。現時点だと技術的なハードルが高すぎるからね。EvilCrow-RFを使って、RFリモコンのコピーがメーカーのサイトでアカウント登録するより簡単になるようなセットアップフローを提供したいんだ。近い将来、Show HNで披露できればと思ってる。
「スマートじゃない」天井ファン用に、安いTuyaのWiFiファンコントローラーを買ったよ。スマホのSmartThingsアプリから接続して、Siriと連携させたから「リビングのファンつけて/消して」って言うだけで動く。最高だよ。
シェアしてくれてありがとう。自分も数年かけてスワンプクーラー(気化熱式冷風機)を制御する旅を続けてるよ。最初はFlipper Zeroでリモコンの信号をキャプチャしてリプレイし、URHでデコードするところから始めた。昔のAIモデルを駆使して、強引に解読したんだ。とりあえずリモコンがベントモード(水流なし)のときに「冷房」信号を送るようにしてたよ。
部屋の湿度をRHセンサーで測って、湿度が一定以下に下がったらコントローラーから冷房信号を送ってパッドに水を追加する仕組み。これで温度を1〜2度上げるだけで、湿度をぐっと低く抑えられる。おかげで外の状況に合わせて湿度を50〜60%に保てて、すごく快適になった。
最近またプロジェクトを再開して、Claudeの新しいモデルのおかげでかなり進捗してる。外の気温や湿度が変わっても、「いつ冷房を入れるか」の判断コードがかなり賢くなってきた。それに、今はリモコンを完全に置き換えられるようになって、フィードバックループで制御できてる。リモコンにはキープアライブ用の同期信号があって、それを突き止めるまではESP32だけじゃ無理だったんだ。リモコンがオフだとコントローラーはクーラーを動かしてくれるけど、キープアライブを送らないと最終的にクーラーが停止しちゃうから。
リモコンの信号を受信するRXモジュールも追加したから、リモコンでオフにしたときにコントローラー側も停止できるようにもした。例えばリモコンでクーラーをつけて、コントローラー側でオン・オフの管理をする感じ。
最終的なゴールは、朝から晩まで外の状況に合わせて室内の湿度を保つこと。妻の希望で、寝るときに一度オフにして、1時間後にまたつくようなタイマー機能も今後実装する予定。
RFは難しいけど、解明したときの満足感はすごいね。Claudeなしじゃ挑戦すらしてなかったと思う。メーター読み取り用のESP32も今デバッグ中で、それもなんとかなりそうな手応えがあるよ。