---
title: "ラズパイでスマートホームを自作する方法｜できること・Home Assistant構成・赤外線家電の操作"
url: "https://www.issoh.co.jp/tech/details/1926/"
published: 2024-02-06
updated: 2026-10-12
categories: ["Raspberry Pi"]
publisher: "株式会社一創"
---

# ラズパイでスマートホームを自作する方法｜できること・Home Assistant構成・赤外線家電の操作

ラズパイ（Raspberry Pi）でスマートホームを自作するなら、**Home Assistantを母艦にして市販機器を集め、ラズパイで作るのは市販品が無いセンサーと赤外線家電の操作だけに絞る**のが完成までの近道です。照明・エアコン・温湿度の記録・外出先からの確認は既製の統合で揃い、自分で書くコードは自動化ルールと数十行のPythonで済みます。

この記事では、ラズパイでできることの全体像、構成とモデルの選び方、Home Assistantの導入、Raspberry Pi 5で変わったGPIO制御、古いエアコンを赤外線で動かす手順、MQTTでの自作センサー連携、24時間動かすための運用までを、Raspberry Pi・Home Assistantの公式ドキュメントに沿って順に説明します。

## まとめ：ラズパイ製スマートホームの構成と手順の要点

- **構成**：母艦はHome Assistant（HA）。全部を自作Pythonで書くと、操作画面・状態保持・再起動後の復帰まで自前になり、途中で更新が止まりやすい
- **モデル**：母艦はRaspberry Pi 4かPi 5（RAM 2GB以上）。HAの公式手順がこの2機種を前提にしている。電池で動かすセンサーはPico Wなどのマイコンに任せる
- **Pi 5のGPIO**：RPi.GPIOとpigpioは動かない。gpiozero（既定のpin factoryはlgpio）で書く。ライブラリはaptかvenvで入れる（素のpip installは拒否される）
- **赤外線家電**：カーネル標準のgpio-ir／gpio-ir-txオーバーレイとir-ctlで学習・送信できる。HAからはMQTT経由で呼び出す
- **運用**：microSDの書き込み寿命、電源容量、外部公開の3点で止まる。NVMe移行、5V／5A電源、ポート開放をしない外部接続で対処する

## ラズパイのスマートホームでできることと実現手段

ラズパイが担う範囲は用途によって大きく違います。市販品で済む用途まで自作すると手間が増えるだけなので、最初に用途ごとの実現手段を切り分けます。

| やりたいこと         | ラズパイの役割  | 主な手段                   |
| -------------- | -------- | ---------------------- |
| 照明・スマートプラグの自動化 | 母艦（判断のみ） | Zigbee／Matter対応の市販品    |
| 古いエアコン・テレビの操作  | 赤外線の送信   | 赤外線LED＋ir-ctl          |
| 温湿度・CO2の記録とグラフ | 計測と送信    | センサー＋MQTT              |
| ドア・窓の開閉、水漏れ検知  | 母艦（判断のみ） | Zigbeeセンサー             |
| 人感で照明を点ける      | GPIO入力   | PIRセンサー＋gpiozero       |
| スマホへの通知        | 母艦（判断のみ） | HAのコンパニオンアプリ           |
| カメラでの見守り・人検知   | 撮影・推論    | カメラモジュール               |
| 植木鉢の水分監視       | 計測と送信    | 土壌センサー（Matter 1.5で規格化） |

表で「母艦（判断のみ）」としたものは、ラズパイ側にコードを書く必要がありません。HAが市販機器の状態を受け取り、自動化ルールで動かします。自作の価値が出るのは「赤外線の送信」「計測と送信」「GPIO入力」の行で、ここにラズパイのGPIOとPythonを充てます。カメラは録画と推論の負荷が重いため母艦と分け、構成は[ラズパイでAI監視カメラを作る方法｜カメラの選び方とAI Camera（IMX500）で人を検知して録画するまで](/tech/details/6731/)で扱っています。

## ラズパイ製スマートホームの構成パターン

構成は3つに分かれ、どれを選ぶかで自分で書くコードの範囲が「自動化ルールだけ」から「操作画面と状態管理まで」に広がります。

### Home Assistantを母艦にする構成

ラズパイにHAを入れ、市販機器と自作センサーをそこへ集約する構成です。照明・エアコン・スマートプラグの制御は既存の統合（インテグレーション）が担うため、自分で書くのは「どの条件でどれを動かすか」だけになります。Matter機器は公式のMatter統合、Zigbee機器はZigbee Home Automation（ZHA）統合で、コードを書かずに取り込めます。スマホの操作画面、状態の履歴、通知、外出先からの接続が最初から揃う点が、残り2つとの差です。

### Pythonスクリプトだけで自作する構成

GPIOにつないだセンサーとリレーを、Pythonで直接読み書きする構成です。「室温が28度を超えたらファンを回す」のような単機能なら、母艦を置くより早く動きます。ただし機能が2つ、3つと増えると、操作画面・状態保持・再起動後の自動復帰・例外処理をすべて自前で書き足すことになります。単機能で終える前提がないなら選ばないほうが無難です。

### 市販ハブのクラウドAPIを呼ぶ構成

SwitchBotやNature Remoのように、メーカーが公開しているクラウドAPIをラズパイからHTTPで呼ぶ形です。ハブ側が赤外線を出すので、配線なしで古い家電まで動かせます。認証と呼び出し方は[SwitchBot APIとは？できること・使い方とハブが必要な仕組み【v1.1対応】](/tech/details/3342/)にまとめました。

弱点はクラウド依存で、回線断やAPI仕様の変更で家の中の操作まで止まります。ローカル完結を重視するなら、このAPIは赤外線家電の穴埋めに留め、主要機器はZigbeeやMatterでローカル接続にしておくのが安全です。業務システムや社外サービスとの連携まで含めて設計する場合は、[API開発・システム連携](/service/system/api/)の支援内容も参考になります。

## 用途別のモデル選定と必要な部材

母艦とセンサー端末では要求が違います。同じ機種で揃えようとすると、母艦が非力になるか、端末が過剰装備になります。

### 常時稼働の母艦に向くモデル

[HAの公式インストール手順](https://www.home-assistant.io/installation/raspberrypi/)は、Raspberry Pi 4またはPi 5でRAM 2GB以上、32GB以上のmicroSDカード（アプリケーションクラスA2推奨）を前提にしています。Pi 5のRAMは1GB／2GB／4GB／8GB／16GBの5構成で、公式は少なくとも2036年1月までの生産継続を公表しています（期限ではなく下限）。

Pi 5で注意したいのは電源です。推奨は5V／5A（25W）で、5V／3A（15W）のアダプタではUSB周辺機器の合計電流が600mAに制限されます。ZigbeeドングルやSSDを足す予定があるなら、最初から5A対応のアダプタを選んでください。Pi 4との違いは[Raspberry Pi 5 と Pi 4 の違いを徹底比較｜スペック・性能・できること【2026年版】](/tech/details/8373/)で比較しています。

### センサー端末・電池駆動に向くモデル

Raspberry Pi Zero 2 Wを乾電池で数か月動かすセンサー端末にするのは現実的ではありません。1GHzの4コアCortex-A53と512MBのSDRAMを1パッケージに収めたRP3A0で動くLinuxマシンで、マイコンのように眠らせて起こす使い方を想定していないためです。常時給電できる場所の小型ノード（赤外線送信やセンサー読み取り）には向いています。

電池で動かすなら、Raspberry Pi Pico WのようなマイコンでMicroPythonの`machine.deepsleep()`を使います。公式ドキュメントはdeepsleepからの復帰をハードリセットに近い扱いとし、RAMの状態は保持されない場合があるとしています。計測値はスリープ前に送り切り、復帰後はスクリプトの先頭から実行し直す前提で組んでください。仕様は[Raspberry Pi Pico Wとは？基本仕様・モデルの違い・できることを総まとめ](/tech/details/11676/)にまとめています。

### 最小構成の部材と費用の考え方

| 品目                        | 要否   | 備考           |
| ------------------------- | ---- | ------------ |
| Raspberry Pi 4 / 5（2GB以上） | 必須   | HA公式手順の対象機種  |
| microSDカード 32GB以上         | 必須   | A2表記推奨       |
| 電源アダプタ                    | 必須   | Pi 5は5V／5A推奨 |
| ケース・冷却                    | ほぼ必須 | 常時稼働のため      |
| Zigbee／Threadドングル         | 条件付き | ZBT-2は49ドル   |
| M.2 HAT+ ＋ NVMe SSD       | 推奨   | HAT+は12ドルから  |
| 赤外線LED・受光モジュール            | 条件付き | 赤外線家電を操作する場合 |

本体の価格はメモリ価格の高騰で上がり続けています。Raspberry Piは[2026年10月1日の告知](https://www.raspberrypi.com/news/price-increases-for-2gb-raspberry-pi-4-and-raspberry-pi-5/)でPi 5の2GB版を12.50ドル値上げして77.50ドルとし、1GB版は据え置きました。HAの最低要件を満たす最安は、同日に67.50ドルへ値上げされたPi 4の2GB版で、Pi 5の2GB版はそれより10ドル高くなります。国内実売は販売店と時期で動くため、購入前に取扱店の現在価格を確認してください。見積もりで抜けやすいのは2点です。公式のConnect ZBT-2はZigbeeとThreadを同時に使えないため、両方の機器を使うならドングル代が2回かかります。SDカードは消耗品なので、NVMe SSDへの移行費用も前提コストとして見込んでおくべきです。

## Home Assistantを導入して無線機器をつなぐ手順

### HAOSの書き込みと初期アクセス

推奨はHome Assistant OS（HAOS）です。Raspberry Pi Imagerの「Other specific-purpose OS」→「Home automation」→「Home Assistant」と進み、機種に合ったイメージ（2026年10月12日時点はHome Assistant OS 18.3）を選んで書き込みます。Imagerの使い方は[Raspberry Pi ImagerをLinuxで使う方法｜apt・snapの旧版1.xに注意、2.0の導入とCLI](/tech/details/8312/)で解説しています。

起動後はブラウザで `homeassistant.local` を開きます。ポート番号は環境で異なり、既定が80番になるのはHAOSの2026.8以降で新規構築した場合だけです。Dockerで動かすHome Assistant Containerは現在も8123が既定で、2026.8より前に構築した環境も更新後は8123のままです。開けないときは `homeassistant.local:8123` を明示して試してください。

### ZigbeeとThreadのドングルは1本1プロトコル

ラズパイ本体はZigbeeやThreadの無線（IEEE 802.15.4）を持っていないため、Zigbee電球やThread対応のMatter機器を使うにはUSBドングルが要ります。

公式のHome Assistant Connect ZBT-2（49ドル）について、公式ドキュメントは「Connect ZBT-2 cannot do both Zigbee and Thread simultaneously」と明記しています。ハードウェアの限界ではなく、前世代で動作が不安定だったため実装しないという方針判断です。将来の更新を当てにせず、1プロトコルにつき1本を専有させてください。

接続先の規格も動いています。Matter 1.5（2025年11月20日）でカメラ、シャッターなどのクロージャ、土壌センサー、電気料金タリフが標準デバイスタイプに入り、植木鉢の水分監視のような自作の定番が「対応品を買えば済む」領域に移りつつあります。現行の最新は[Matter 1.6](https://csa-iot.org/newsroom/matter-1-6-enables-more-intuitive-setup-multi-ecosystem-experiences-and-context-driven-control/)（2026年6月17日）で、給電前でもNFCで始められるコミッショニングや、複数の管理者でネットワークを共同管理するJoint Fabricなど、機器の追加と管理を楽にする方向の更新です。

### 自動化ルールの書き方

HAに寄せる構成で自分で書くのは自動化ルールだけです。画面のエディタでも作れますが、YAMLで書くと差分を管理できます。現在の記法は `triggers`／`conditions`／`actions` を複数形で並べる形です。室温が28度を超え、かつ在宅のときだけ冷房を入れ、スマホに通知する例です。

```
alias: 室温28度超で冷房を入れる
triggers:
  - trigger: numeric_state
    entity_id: sensor.livingroom_temperature
    above: 28
conditions:
  - condition: state
    entity_id: person.owner
    state: home
actions:
  - action: climate.set_temperature
    target:
      entity_id: climate.living_room
    data:
      hvac_mode: cool
      temperature: 26
  - action: notify.mobile_app_my_phone
    data:
      message: "室温が28度を超えたので冷房を入れました"
mode: single
```

在宅判定の条件を外すと、誰もいない部屋で冷房が動きます。逆に、留守中に28度を超えていた場合は帰宅しても発火しないので、帰宅時にも冷房を入れたいなら `person.owner` が home になったときのトリガーを追加し、条件に室温28度超を加えます。`mode: single` は既定値で、実行中に再びトリガーされても新しい実行を始めず、警告をログに残します。numeric\_state は28度を下から上へ越えた瞬間にだけ発火するため、28度超が続いても命令や通知が繰り返されることはありません。通知の `notify.mobile_app_my_phone` は、[HAのコンパニオンアプリ](https://companion.home-assistant.io/docs/notifications/notifications-basic/)を入れたスマホごとに作られるアクションで、末尾はコンパニオンアプリが登録した端末のデバイスIDに置き換えます（HAのモバイルアプリ統合の画面で確認できます）。

LINEへ通知したい場合、古い作例で使われている[LINE Notifyは2025年3月31日に終了](https://notify-bot.line.me/)しており、そのままでは動きません。移行先のMessaging APIでの実装は[LINE Notify終了後の移行実装｜Messaging APIへの置き換え手順と通知コスト試算](/tech/details/17533/)で扱っています。GUIでフローを組みたい場合は[Node-RED（ノードレッド）とは？できること・使い方・料金と商用利用を5.0対応で解説](/tech/details/4815/)も選択肢です。

## Raspberry Pi 5でGPIOを制御するPythonの書き方

Web上のPythonコードの多くはPi 4以前の前提で書かれていて、Pi 5や現行OSではそのまま動きません。

### ライブラリの導入先はaptかvenv

Raspberry Pi OSの公式ドキュメントは「From Raspberry Pi OS Bookworm onwards, you cannot install libraries directly into the system version of Python.」と述べています。PEP 668に沿った変更で、素の `pip install` は externally-managed-environment エラーで拒否されます。

```
sudo apt install python3-gpiozero

# プロジェクト単位で追加ライブラリを入れる場合
python3 -m venv --system-site-packages ~/smarthome
source ~/smarthome/bin/activate
pip install paho-mqtt
```

`--system-site-packages` は、aptで入れたgpiozeroを仮想環境から見えるようにする指定です。付け忘れると仮想環境の中で import に失敗します。なお最新のRaspberry Pi OSはDebian 13ベースのTrixieで、公式は稼働中のBookwormイメージを入れ替えるアップグレードを「we do not recommend or support」としています。母艦を更新するならクリーンインストールを前提に計画してください。

### RPi.GPIO・pigpioからgpiozeroへの置き換え

Pi 5ではGPIOが新しいI/OチップRP1側に移り、カーネルのgpiochipデバイス経由で扱う形になりました。レジスタへの直接アクセスを前提にしたRPi.GPIOは期待どおりに動きません。PyPI上のRPi.GPIOの最新は0.7.1（2022年2月6日）で、Pi 5の登場前に更新が止まっています。赤外線送信の作例で定番だったpigpioも、[GitHubのissue #589](https://github.com/joan2937/pigpio/issues/589)で開発者側が「pi5 is not supported by pigpio」と回答しており、最新リリースは2021年3月のv79のままです。

公式ドキュメントが案内するのはgpiozeroで、既定のpin factoryはlgpioです。人感センサーで照明を点ける最小構成は次のとおりです。

```
from gpiozero import MotionSensor, LED
from signal import pause

pir = MotionSensor(4)
led = LED(16)

pir.when_motion = led.on
pir.when_no_motion = led.off

pause()
```

RPi.GPIOで書いた既存コードが多い場合は、互換APIをgpiochip経由で再実装したrpi-lgpio（aptでは `python3-rpi-lgpio`）で受け止める手もあります。ただしSPIやI2Cが確保済みのピンは扱えず、`bouncetime` の挙動も違います。

## 赤外線リモコン家電をラズパイから操作する手順

Matter非対応の古いエアコンやテレビは、リモコンの赤外線信号をラズパイから出せば操作できます。Pi 4以前の作例はpigpioやLIRCデーモンを使うものが多いのですが、現行のRaspberry Pi OSではカーネル標準のドライバだけで学習と送信ができ、Pi 5でも同じ手順が使えます。

### オーバーレイの設定と信号の学習

受光モジュールと赤外線LED（トランジスタで駆動）をGPIOにつなぎ、`/boot/firmware/config.txt` にオーバーレイを2行足して再起動します。[公式のオーバーレイ一覧](https://github.com/raspberrypi/linux/blob/rpi-6.18.y/arch/arm/boot/dts/overlays/README)によると、`gpio-ir` は受信、`gpio-ir-tx` はGPIOをビットバングで動かす送信用で、どちらも既定のピンはGPIO18なので、片方を別のピンに移します。

```
# /boot/firmware/config.txt に追記
dtoverlay=gpio-ir,gpio_pin=17
dtoverlay=gpio-ir-tx,gpio_pin=18
```

再起動すると `/dev/lirc0` と `/dev/lirc1` ができます。どちらが送信用かは起動順で入れ替わることがあるため、`ir-ctl -f` の出力で確かめます。ir-ctlはaptの `v4l-utils` パッケージに入っています。

```
sudo apt install v4l-utils
mkdir -p ~/ir
ir-ctl -f -d /dev/lirc0
ir-ctl -f -d /dev/lirc1

# 受信側のデバイスで学習（リモコンのボタンを押したらCtrl+Cで止める）
ir-ctl -r -d /dev/lirc1 > ~/ir/aircon_off.txt

# 送信側のデバイスで再生
ir-ctl -d /dev/lirc0 --send ~/ir/aircon_off.txt
```

[ir-ctlのマニュアル](https://git.linuxtv.org/v4l-utils.git/tree/utils/ir-ctl/ir-ctl.1.in)のとおり、`-r` の出力は「+9000 -4500 …」のようなパルスとスペースの並びで、そのまま `--send` に渡せる形式です。エアコンのリモコンは1回の押下で温度・モード・風量をまとめて送るため、「冷房26度」「停止」のように状態ごとに1ファイルずつ学習しておきます。学習が済んだら、送信専用のノードでは config.txt の `dtoverlay=gpio-ir` の行を消して再起動してください。送信用の `/dev/lirc0` だけが残るので、次のスクリプトの指定先が入れ替わる心配がなくなります。

### Home AssistantからのMQTT経由の送信

HAOSはアプリ（旧称アドオン）単位で機能を足すOSで、母艦にir-ctlを入れて呼ぶ前提にはなっていません。赤外線の送信はRaspberry Pi OSを入れた別のラズパイ（Zero 2 Wで十分です）に任せ、HAからはMQTTで命令を送ります。受け側は次のスクリプトを常駐させます。systemdのユニットに `Restart=always` を付けて登録すると、停電後の再起動でも自動で立ち上がります。

```
import subprocess
from pathlib import Path
from paho.mqtt.client import Client
from paho.mqtt.enums import CallbackAPIVersion

# 送ってよい信号名とファイルの対応（受け取った文字列をそのままコマンドに渡さない）
IR_DIR = Path.home() / "ir"
SIGNALS = {
    "aircon_cool26": str(IR_DIR / "aircon_cool26.txt"),
    "aircon_off": str(IR_DIR / "aircon_off.txt"),
}

def on_connect(client, userdata, flags, reason_code, properties):
    client.subscribe("home/ir/send")

def on_message(client, userdata, msg):
    path = SIGNALS.get(msg.payload.decode())
    if path is None:
        return
    subprocess.run(["ir-ctl", "-d", "/dev/lirc0", f"--send={path}"], check=False)

client = Client(CallbackAPIVersion.VERSION2)
client.username_pw_set("mqttuser", "password")
client.on_connect = on_connect
client.on_message = on_message
client.connect("192.168.1.10", 1883, 60)
client.loop_forever()
```

購読を `on_connect` の中で行っているのは、ブローカー再起動で再接続したときに購読し直すためです。辞書に無い信号名は無視するので、トピックに任意の文字列が届いても任意のコマンドは実行されません。HA側の自動化ルールでは、actionsに次の1件を書けばエアコンが止まります。

```
  - action: mqtt.publish
    data:
      topic: home/ir/send
      payload: aircon_off
```

赤外線は送りっぱなしで、エアコンが本当に止まったかは分かりません。確実にしたいなら、吹き出し口の温度センサーやスマートプラグの消費電力で結果を確かめる条件を自動化ルールに足してください。

## 自作センサーのMQTTディスカバリ登録

自作した計測値をHAの画面に出す最短経路がMQTTです。ブローカーには公式のMosquitto Brokerを使い、MQTT統合のセットアップ時に自動で導入・設定され、ユーザー名とパスワードも自動生成されます。ただし自動生成されるのはHA自身が使う資格情報です。ラズパイ側のノードは、HAの［設定］→［人物］→［ユーザー］で作ったMQTT用のユーザーで接続します（名前に homeassistant と addons は使えません）。このブローカーは匿名接続を受け付けません。ブローカーの比較は[MQTTブローカーとは？仕組み・主要ブローカー比較・構築手順を解説](/tech/details/3894/)、プロトコルの仕組みは[MQTTとは？Pub/Subの仕組み・QoS・MQTT 5.0の実装からHTTPとの使い分けまで実装者向けに解説](/tech/details/15819/)を参照してください。

HAのMQTTディスカバリは、`homeassistant/<component>/<object_id>/config` の形のトピックへ設定JSONを送ると機器が自動登録される仕組みで、既定で有効です。

```
import json
from paho.mqtt.client import Client
from paho.mqtt.enums import CallbackAPIVersion

client = Client(CallbackAPIVersion.VERSION2)
client.username_pw_set("mqttuser", "password")
client.connect("192.168.1.10", 1883, 60)

config = {
    "name": "Temperature",
    "state_topic": "home/livingroom/temperature",
    "unit_of_measurement": "°C",
    "device_class": "temperature",
    "state_class": "measurement",
    "unique_id": "livingroom_temp_01",
    "device": {
        "identifiers": ["livingroom_node"],
        "name": "Living Room Sensor Node",
        "model": "Pi Zero 2 W",
    },
}

client.publish(
    "homeassistant/sensor/livingroom_temp_01/config",
    json.dumps(config),
    retain=True,
)
client.publish("home/livingroom/temperature", "23.4", retain=True)
client.disconnect()
```

`CallbackAPIVersion.VERSION2` は省略しても動きますが、その場合は旧来のVERSION1が適用されてDeprecationWarningが出ます。VERSION1は3.0で削除予定と明記されているため、新規のコードで選ぶ理由はありません（paho-mqttの最新は2.1.0）。ループ方式や再接続の作法は[Python MQTT実装｜paho-mqtt 2系のループ方式と再接続を実装目線で解説](/tech/details/16866/)で詳しく扱っています。

`device` の `identifiers` を共有させると、同じノードの温度・湿度を1台の機器にまとめられます。`state_class: measurement` を付けると長期統計の対象になり、グラフで推移を追えます。`retain=True` は、HAの再起動直後に値が空にならないようにするための指定です。

## 24時間365日動かすための運用設計

### microSDの書き込み寿命とNVMe移行

最大の故障要因はmicroSDの書き込み寿命です。HAのrecorderは状態変化を絶えずデータベースへ書くため、公式もrecorderのドキュメントで「life expectancy of the storage medium (the SD card)」への影響を認めています。SDのまま延命するなら、履歴の保持日数 `purge_keep_days`（既定10日）を短くし、書き込み間隔 `commit_interval`（既定5秒）を30秒程度に延ばします。

根本的な対処はストレージの交換で、Pi 5ならM.2 HAT+でNVMe SSDへ移せます。PCIe 2.0の1レーンで最大500MB/s、2230／2242サイズに対応し、少なくとも2032年1月まで生産が続く公式アクセサリです。USBメモリやUSB SSDから起動する構成は[Raspberry PiでUSBメモリを使う方法｜公式Flash Driveの仕様・USBブート設定・fstab自動マウント](/tech/details/10742/)で扱っています。

### 電源不足とバックアップの退避先

Pi 5を容量の足りないアダプタで動かすとUSB機器が600mAに制限され、SSDが時々見えなくなる、ドングルが再接続を繰り返すといった症状として出ます。原因が電源だと気づきにくいので、不安定になったら周辺機器を1つずつ外して再現するかを確かめてください。設定のバックアップは、SDカードが壊れたときに道連れにならないよう、NASやクラウドストレージなど母艦以外の場所へ定期的に退避させます。

### 同居者が使える操作経路とカメラの扱い

ラズパイの再起動中に照明が点かない状態は、自分ひとりなら許容できても同居者には受け入れられません。壁スイッチや物理リモコンでも操作できる経路を残し、自動化は上乗せとして設計します。たとえば照明はZigbeeの壁付けリモコンと電球を直接結び付けておけば（バインディング）、[ZHAの公式ドキュメント](https://www.home-assistant.io/integrations/zha/)が「even when ZHA or Home Assistant are not working」と書くとおり、母艦が止まっていても点灯と消灯ができます。バインディングに対応しない機器もあるため、購入前に仕様を確認してください。カメラや在室センサーを置く場合は、何をどこまで記録するかを同居者に説明して合意を取ってから設置してください。

### 外出先からの接続とセキュリティ

ルーターのポートを開けてHAをインターネットへ晒すのは避けてください。[公式ドキュメント](https://www.home-assistant.io/docs/configuration/remote/)も「Just putting a port up is not secure.」と警告しています。公式が最初に案内するのはHome Assistant Cloud（Nabu Casa、月6.50ドル）で、ポートを開けずに外から接続できます。費用を抑えるなら、公式も挙げるTailscaleなどのVPNで家庭内ネットワークに参加する方式が現実的です。Tailscaleの仕組みと注意点は[Tailscaleの安全性は大丈夫？暗号化の仕組み・脆弱性リスク・料金・使い方を解説【2026年最新】](/tech/details/5403/)を参照してください。どの方式でも、多要素認証の有効化とバックアップの退避を先に済ませておきます。

## ラズパイで自作すべきでない場面

次のいずれかに当てはまるなら、市販のハブとMatter対応機器で組んだほうが、費用でも時間でも有利です。

- やりたいことが市販機器の標準機能で足りている（照明のスケジュール、外出時のエアコン停止など）
- 主な利用者が自分以外の家族で、故障時にすぐ対応できない
- 賃貸などで配線ができず、自作センサーや赤外線LEDを置く場所がない
- LinuxやSSHでの復旧作業に不安がある

自作の価値がはっきり出るのは「市販品が無い計測」と「クラウドを通したくない制御」です。灯油タンクの残量、特定の機械の稼働音、Matter非対応の古いエアコンの操作といった対象にラズパイを充て、照明やスマートプラグのような一般的な機器は市販品に任せる。この分担がコストと安定性の両面で合理的です。

## よくある質問

### ラズパイでスマートホームを組むのに最低限必要なものは？

母艦にするRaspberry Pi 4またはPi 5（RAM 2GB以上）、32GB以上のmicroSDカード、機種に合った電源アダプタの3点です。Zigbee機器を使うならUSBドングルを足します。HAの公式手順はこの構成を前提にしています。

### Raspberry Pi Zeroでもスマートホームは作れますか？

常時給電できる場所の小型ノードとしては使えます。Zero 2 WはRAMが512MBなのでHAの母艦にはせず、センサーの読み取りや赤外線の送信に役割を絞ってください。乾電池で長期間動かすなら、Pico Wなどのマイコンを選んでください。

### ラズパイで古いエアコンを操作できますか？

できます。赤外線LEDと受光モジュールをGPIOにつなぎ、gpio-ir／gpio-ir-txオーバーレイとir-ctlでリモコン信号を学習して送信します。配線したくない場合は、SwitchBotやNature Remoなどの赤外線ハブをHAから操作する方法もあります。

### Raspberry Pi 5でRPi.GPIOのコードが動かないのはなぜですか？

Pi 5ではGPIOがRP1に移り、RPi.GPIOが前提とするレジスタへの直接アクセスができないためです。gpiozeroへ書き換えるのが公式の案内で、既存コードを大きく変えられない場合はRPi.GPIO互換のrpi-lgpioを使う手もあります。

### ZigbeeとThreadは1本のドングルで両方使えますか？

Home Assistant Connect ZBT-2の場合、公式ドキュメントが同時利用はできないと明記しています。両方の機器を運用するならドングルを2本用意してください。

## 関連記事

- [Raspberry Pi 5 と Pi 4 の違いを徹底比較｜スペック・性能・できること【2026年版】](/tech/details/8373/)
- [ラズパイでAI監視カメラを作る方法｜カメラの選び方とAI Camera（IMX500）で人を検知して録画するまで](/tech/details/6731/)
- [Raspberry Pi Pico Wとは？基本仕様・モデルの違い・できることを総まとめ](/tech/details/11676/)
- [SwitchBot APIとは？できること・使い方とハブが必要な仕組み【v1.1対応】](/tech/details/3342/)
- [Python MQTT実装｜paho-mqtt 2系のループ方式と再接続を実装目線で解説](/tech/details/16866/)

---

出典: [ラズパイでスマートホームを自作する方法｜できること・Home Assistant構成・赤外線家電の操作](<https://www.issoh.co.jp/tech/details/1926/>)（株式会社一創）
