home-automation について
home-automationは、Home Assistant、HomeKit、Google Home、Matterを通じてスマートホーム機器をプログラムから制御するスキルです。機器の状態確認や、各システムでの操作を行えます。
主な機能
- 01Home Assistant REST APIへの接続
- 02HAPによるHomeKit連携
- 03Google Home APIでの機器制御
- 04ブリッジAPI経由のMatter機器対応
活用シーン
- 01照明の自動消灯
- 02Google Homeのサーモスタット調整
- 03スマート機器の状態確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill home-automationインストール後、Claude Code で/home-automationを入力して読み込まれたか確認します。
詳細
ホームオートメーション
目的
このスキルは、Home Assistant、HomeKit、Google Home、Matter の各プロトコルを使用してスマートホームシステムと連携し、自動化タスクのために AI が IoT デバイスをプログラムで制御できるようにします。
使用するタイミング
IoT プラットフォームを介して照明、サーモスタット、セキュリティシステムなどを制御するなど、家庭環境を自動化する場合にこのスキルを使用します。スマートホームアプリ、音声アシスタントとの連携、就寝時に照明を消すなどの日課用カスタムスクリプトといったシナリオに適用します。
主な機能
- REST API を介して Home Assistant に接続し、デバイスの状態を管理します。
- HAP プロトコルを使用して HomeKit と連携し、Apple エコシステムのデバイスを利用できます。
- Google Home API を使用して、互換性のあるスマートデバイスを制御します。
- ブリッジ API を介して Matter デバイスを扱い、クロスプラットフォームの互換性を実現します。
- 詳細:状態を取得する Home Assistant API エンドポイントは
GET /api/statesです。HomeKit では Bonjour による検出が必要です。Google Home はhttps://www.googleapis.com/auth/homeautomationなどのスコープで OAuth 2.0 を使用します。Matter では IP ベースのコミッショニングを行います。
使用パターン
このスキルを使用するには、まず認証を行って初期化します。skill.use('home-automation') でインポートし、skill.connect(service, key) などのメソッドを呼び出します。順次実行するタスクでは、接続、状態の照会、アクションの実行の順に呼び出しを連結します。非同期処理は必ずプロミスまたはコールバックで処理してください。設定形式は JSON オブジェクトです。例:{"service": "home-assistant", "api_url": "http://localhost:8123"}。
一般的なコマンド/API
- CLI:
openclaw home-automation connect --service home-assistant --api-url http://localhost:8123 --key $HOME_ASSISTANT_API_KEYを実行して接続を確立します。 - API:Home Assistant のアクションには
POST /api/servicesを使用します。Google Home のエンドポイントの例:GET https://homegraph.googleapis.com/v1/devices。 - コードスニペット:
skill.use('home-automation') skill.connect('home-assistant', { apiUrl: 'http://localhost:8123', key: process.env.HOME_ASSISTANT_API_KEY })const state = await skill.call('getState', { entity: 'light.living_room' }) console.log(state)
キーには環境変数を使用します。Home Assistant にはskill.execute('turnOn', { device: 'light.kitchen', service: 'homekit' })$HOME_ASSISTANT_API_KEY、Google Home には$GOOGLE_HOME_TOKENを使用してください。
連携に関する注意事項
操作の前に、環境変数(例:$HOME_ASSISTANT_API_KEY)を使用して認証してください。HomeKit の場合は、ホームアプリでデバイスがペアリングされていることを確認してください。カスタム連携には HAP-NodeJS ライブラリを使用します。Google Home では OAuth フローが必要です。https://accounts.google.com/o/oauth2/v2/auth にリダイレクトしてください。Matter との連携には互換性のあるブリッジが必要です。設定形式は matter: { bridge_ip: '192.168.1.100', port: 5540 } のような YAML です。1 回の呼び出しで複数のプロトコルを混在させないでください。サービス間をエラーなく切り替えるにはラッパーを使用します。
エラー処理
呼び出しを try-catch ブロックで囲み、HTTP エラー(例:401 Unauthorized)を確認してください。認証に失敗した場合は、トークンを更新して再試行します。よくあるエラーには API のレート制限(例:Home Assistant が 429 を返す)があります。指数バックオフで処理してください。コードスニペット:
try {
await skill.call('getState', { entity: 'light.living_room' })
} catch (error) {
if (error.code === 401) console.error('Reauthenticate with $HOME_ASSISTANT_API_KEY')
else throw error
}
詳細なレスポンスを記録し、デバッグにはスキル固有のエラーコードを使用してください。
具体的な使用例
- 時刻に基づいて照明を自動化する:
skill.connect('home-assistant', { key: process.env.HOME_ASSISTANT_API_KEY })を使用し、続いてスケジュールされたスクリプト内でskill.execute('turnOff', { entity: 'light.all' })を実行すると、午後 11 時にすべての照明を消せます。 - 温度制御のために Google Home と連携する:
skill.use('home-automation').connect('google-home', { token: process.env.GOOGLE_HOME_TOKEN })を呼び出し、続いてskill.call('setThermostat', { deviceId: 'thermostat.living_room', temperature: 72 })を呼び出してサーモスタットを調整します。
グラフ上の関係
- クラスター:より広範な IoT 連携のため、'iot' クラスターに接続されています。
- タグ:device-control や smart-security のスキルなど、'iot' および 'home' タグを持つスキルにリンクしています。
- 関係:このスキルは認証サービスに依存しており、Home Assistant の REST エンドポイントや Google Home の OAuth フローなどの外部 API と連携します。