Home Assistantをやめて、家のOSを自作しはじめた
昔見た映画に、terminalから家じゅうの電気を一括でoffにするシーンがありました。PC一つで、物理的なものが動く。その光景に憧れて以来、ずっとスマートホームに惹かれています。声やスマホひとつで照明やエアコンを動かせたら、暮らしはもっとシンプルになる。
そして最近、家を建てました。設計のときから目指していたのは——スマートホームを前提とした家です。
その「家のOS」として最初に選んだのが、Home Assistant(以降HAと呼びます)でした。
理由はシンプルです。ベンダーに縛られないスマートホームを自宅でやるなら、これがデファクトスタンダードだったから。これから普及するであろうMatterを扱えるのはもちろんのこと、日本独自のECHONET LiteやSwitchBotのようなクラウドサービスまで、同じ統合環境からまとめて触れる。こんなに理想的なものは他にない。そう思って、採用を決めました。
まずは賃貸で、試してみた
いきなり新居で本番投入するのは怖い。だからまずは、家が建つまでの実験として、それまで住んでいた賃貸でHAを導入してみました。
このとき管理していたのは、3つだけ。Nanoleafのテープライト(Matter対応)、NanoleafのE26電球、Onvisのスマートプラグです。調光(Matterのみ)もon/offもほぼ遅延なく動いて、「これで完璧だ!」と思っていました。
設定は面倒そうだけど、自宅で運用するのはなんだかロマンがある。新居でもHAでいこう——このときまでは、そう決めていたんです。
ところがいま、私はスマートホーム機器を操作するCLIを自作しはじめています。なぜHAをやめて、自作に踏み切ったのか。その経緯と、作りはじめたツールたちについて紹介させてください。
新居で、雲行きが変わった
新居に移って構成が大きくなると、雲行きが変わってきました。
いちばん象徴的なのが、リビングの照明です。Nanoleaf製のテープライトを7台設置し、「リビングライト」という1つのentityにグループ化しています。これが、まったくシームレスに動かない。何回かに1回、グループのうち1台だけ点かなかったり、消えなかったりする。しかも、1台だけ個別に操作しようとすると、アプリ上のステップがやたら多くて面倒くさい。
設定面でもつまずきました。IntegrationやAutomationといった概念自体はわかる。つらいのは、HACSやアプリそのものが使いづらいこと。
そして何より——やりたいことはすごくシンプルなはずなのに、素直にできない。AIからも触りづらい(MCPは一応あるみたいですが、そもそも本体がうまく動かないものをこれ以上使い続けたくはない)。
そんなとき、Claude Codeの登場で、ソフトウェアを新しく作るコストがものすごく下がりました。「いっそ全部自作したら、自宅のOSとしてもっと良いものになるんじゃないか?」——そう思って、開発を始めました。
「家のOS」に欲しかったもの
どうやって作るかを考えるにあたって、最初に思いついたのがUNIX哲学でした。
そもそもスマートホームって、本来もっと単純なものなはずなんですよね。照明をつけたり消したり、たまに調光したり、やることの大半はほとんどそれくらい。にもかかわらず、その単純なon/offすら素直にできないのはおかしい。
だったら、とにかく軽量なCLIを、UNIX哲学に沿って作る。そうすればメンテしやすいし、AIも操作しやすい。「家のOS」としてふさわしいものになるんじゃないか。そう考えました。具体的にはこんな方針です。
- 1ツール1仕事
- stateless(状態を持たない)
- 結果はJSONでstdoutへ
statelessにこだわったのは、HAで状態がまともに取れなかった反動でもあります。でもよく考えたら、家の状態は家自身が持ってるんですよね。ツールが状態を抱え込む必要はない。知りたければ、その場で家に聞けばいい。
作っているツールたち
いまの構成はこんな形です。各プロトコル担当のCLI(enl / mat / ais)が実際の家の設備とやり取りし、その上に、それらをまとめて束ねる統合CLI casa がいます。
人間が手元から家電を操作するときは、mando を使います。リモコンのような立ち位置の、スマホから触るWebフロントです。一方、AIはCLIを直接たたく。どちらも最終的には casa を経由して家を動かします。もちろんUNIX哲学で作ってあるので、casa を介さず各CLIを直接たたくこともできる設計です。
スマホ / Webフロント
プロトコルごとに振り分け
エアコン・給湯器など
chip-toolをバックエンドに
電力モニタリング
改めて整理すると、こんなツール群です。
enl— ECHONET Lite(エアコン・給湯器など国内設備)mat— Matter(chip-toolをバックエンドに)ais— AiSEG2(電力モニタリング)casa— 上記をまとめる統合CLI。人に優しい名前で各機器を呼べるmando— スマホから家電を操作するWebフロント(人のリモコン)
casa は、単なる手動操作の窓口にとどまりません。enl が受け取ったinf(ECHONET Liteの状態通知)を契機に mat を動かしたり、定期実行で mat を操作したり——家を自律的に動かす部分も casa で実装しています。
これからのこと
各ツールの進捗状況や使い方、実際に使ってみてどうだったかは、それぞれ別記事として書いていければと思っています。
HAをやめて、家のOSをゼロから自作しはじめた——今回はその出発点の話でした。正直、まだ完成にはほど遠い。それでも、自分の家が自分の書いたコードで動きはじめる感覚は、思っていた以上に面白いです。
僕が当初思い描いていた、PC一つで物理的なものをぱちっと動かせるあの感動が、いま目の前にある。そのことに、とても感動しています。
次は各ツールの中身や、実際に家がどう動いているのかを、ひとつずつ書いていきます。同じようにスマートホームと格闘している方は、よかったら家が育っていく様子を覗きにきてください。