


PCパーツ・ガジェット専門
自作PCパーツやガジェットの最新情報を発信中。実測データに基づいた公平なランキングをお届けします。
CPU
Waveshare ESP32-C6 ミニ開発ボード 3個 ESP32-C6FH4 ベース、デュアルプロセッサ、160MHzの実行周波数、2.4GHz wi-fi 6 & BLE 5、ESP32開発ボード
¥7,222ゲーミングギア
Waveshare ESP32-C6 1.45インチディスプレイ開発ボード、172×320、262Kカラー、160MHzの実行周波数シングルコアプロセッサ、Wi-Fi 6とBLEをサポート、カラフルなRGB LED付き、AIOTアプリケーションに最適
¥4,844CPU
ESP32-S3-DevKitC-1-N8R2 開発ボード ESP32-S3-WROOM-1 マイクロコントローラープロセッサ 内蔵2.4GHz WiFi Bluetooth 5 長距離モード、Arduino用デュアルタイプCインターフェース 3個。
¥3,446ゲーミングギア
Waveshare ESP32-S3 2.8インチ静電容量式タッチディスプレイ開発ボード、5ポイントタッチ、複数の周辺機器インターフェイス、32ビットLX7デュアルコアプロセッサ、最大240MHz周波数、240×320解像度。
¥7,203ゲーミングギア
ESP32-S3イーサネット開発ボード、10/100Mbps RJ45イーサネットポート、240MHzデュアルコアプロセッサ、オンボードType-Cポート&TFカードスロット、W-i-F-i、BLE&イーサネット通信をサポート、POEモジュール付き。
¥5,354ゲーミングギア
waveshare ESP32-S3 5インチ 静電容量式タッチLCD開発ボード 800×480 ソリューション IPSディスプレイ 2.4GHz WiFiとBLE 5サポート、32ビットLX7デュアルコアプロセッサ
¥10,726ESPHomeで自作IoTセンサーを作る方法を解説。温湿度・CO2・照度など実用的な10プロジェクトとHome Assistant連携。
ESPHomeとESP32でDIYスマートホームデバイスを作る方法。温湿度センサー、スマートスイッチ、人感センサーの作例を紹介。
Home Assistant 2026深掘り。統合200+、オートメ100+、月運用、ESPHome連携。
ESP32 を使ったIoT開発の初心者ガイド。ESP32-S3 / C6 / C3 の選び方、Arduino IDE / ESP-IDF 導入、センサー連携、Home Assistant 統合を詳しく紹介。
Home Assistant の Bluetooth プロキシ構築を解説。ESPHome 導入、ESP32 デバイス選定、BLE センサー統合、実運用Tipsを詳しく紹介。
自作PCとスマートホームデバイスの連携方法を解説。Home Assistantによる自動化、音声でPC制御、照明連携などを紹介。
この記事で紹介した無線LANルーターをAmazonで確認できます。Prime対象商品なら翌日届きます。
Q: さらに詳しい情報はどこで?
A: 自作.comコミュニティで質問してみましょう。
2025 年以降、スマートホーム市場はクラウド依存からローカル制御への転換期を迎えています。従来のスマート家電がインターネットに接続されていることが前提だったため、通信障害時にデバイスが機能しなくなるリスクや、プライバシー懸念が高まっていました。しかし、2026 年時点では、Home Assistant を中核としたローカルサーバー環境で完結するシステム構築が主流となっています。この中で ESPHome は、ESP32 シリーズなどのマイコンボードを Home Assistant の一部として直接制御できる唯一無二のソフトウェアスタックとして確固たる地位を築いています。
ESPHome の最大の特徴は、ハードウェアファームウェアとホームオートメーションプラットフォームを密結合させる点です。通常のスマートプラグやセンサーが専用アプリ経由でクラウドサーバーにデータを転送するのに対し、ESPHome はデバイス上の ESP32 チップ上で直接 YAML 設定ファイルを読み込み、Home Assistant とネイティブな通信を行います。これにより、データ処理の遅延を数ミリ秒レベルまで抑えることが可能になり、自動化ルールのレスポンスタイムが劇的に向上しています。また、設定ファイルを Git で管理できるため、変更履歴の追跡やバージョン管理によるチーム開発も容易になっています。
本ガイドでは、2026 年最新の技術動向を踏まえつつ、Home Assistant と ESPHome を連携させた自作 IoT センサーの構築方法を詳細に解説します。特に、省電力設計やセキュリティ対策といった、実運用で重要な要素に焦点を当てます。初心者の方でも理解できるよう専門用語には注釈を付け、中級者向けには具体的な YAML 設定コードやトラブルシューティングのノウハウを提供します。2026 年現在において、最も信頼性の高い自作 IoT 環境を構築するための基礎知識と実践テクニックを体系的に学んでいきましょう。
自作 IoT センサーの基盤となるのは、マイクロコントローラーの開発ボードです。2026 年現在、ESP32 シリーズは価格性能比が極めて高く、Home Assistant エコシステムで最も広くサポートされています。しかし、用途に応じて適切なモデルを選ぶことが、システムの安定性と省電力性を決定づけます。特にバッテリー駆動を想定するセンサーでは、消費電流の小さい RISC-V アーキテクチャを採用した最新モデルが推奨されます。ここでは代表的な 5 つのボードを比較し、具体的なスペックに基づいて選定基準を解説します。
まず基本となる ESP32-WROOM-32 は、Xtensa LX6 プロセッサを搭載しており、処理能力に優れています。このチップは WiFi と Bluetooth LE を内蔵しており、最大で 160MHz のクロック動作が可能です。メモリ容量は Flash 4MB、SRAM 512KB が標準仕様です。価格帯は 1,200 円前後で購入可能です。ただし、待機時電流が比較的高いため、バッテリー駆動での長期運用には不向きな場合が多いです。しかし、センサーデータを直接 Home Assistant にプッシュする必要があるケースや、ローカルで画像処理を行うカメラモジュールを接続する場合など、高負荷処理が必要な用途では依然として有力な選択肢です。
次に注目すべきは ESP32-C3 です。これは RISC-V アーキテクチャを採用した省電力モデルであり、2026 年以降のバッテリー駆動 IoT デバイスのデファクトスタンダードとなっています。WiFi 802.11 b/g/n をサポートしつつ、Bluetooth 5 (LE) も内蔵しています。消費電流はスリープ状態で 1.5uA 以下に抑えることが可能で、CR2032 バッテリーでも数ヶ月から 1 年以上の駆動が期待できます。価格は ESP32-WROOM-32 と同程度かやや安価な 900 円〜1,200 円程度です。ただし、処理性能は WROOM 系列より若干低下するため、複雑な演算には向きません。
最新の ESP32-S3 は、AI 処理に特化した命令セットを実装しています。USB OTG ポートを標準搭載しており、シリアル通信モジュールを接続する際に便利な USB-UART ブリッジ機能を備えています。また、ピクセルデータ転送のための SPI 高速インターフェースも強化されています。このボードは M5Stack ATOM Lite や S3 DevKitC などの形で提供されており、価格帯は 1,200 円〜1,800 円です。USB 接続によるシリアル通信が容易になるため、開発中のデバッグに非常に便利です。
さらに、ディスプレイ付きの M5Stack Core2 や超小型の ATOM Lite も選択肢として挙げておきます。M5Stack Core2 は ESP32-PICO-D4 ベースで、2.8 インチのタッチパネルとバッテリーを内蔵しています。価格は 6,000 円〜7,000 円程度ですが、センサー値を表示したり、ボタン入力を受け付けたりするインタラクティブなデバイスに適しています。M5Stack ATOM Lite は ESP32-S3 ベースで、非常に小型の PCB に WiFi と BLE を搭載しており、価格も 1,800 円前後と安価です。Grove 端子が付属しているため、センサーとの接続が簡単に行えます。
下表に各ボードの主要スペックを比較しました。用途に応じて適切なボードを選定し、予算と性能のバランスを取ることがプロジェクト成功の第一歩となります。2026 年時点では、セキュリティ機能強化のため Secure Boot と Flash Encryption が標準で推奨されるようになっているため、購入時にこれらの機能がサポートされている firmware を確認することをお勧めします。
| ボード名 | プロセッサ | WiFi | Bluetooth | USB OTG | ディスプレイ | 価格目安 (円) | 主な用途 |
|---|---|---|---|---|---|---|---|
| ESP32-WROOM-32 | Xtensa LX6 | ○ | BLE | × | × | 1,200 | 汎用、高負荷処理 |
| ESP32-C3 | RISC-V | ○ | BLE (5.0) | × | × | 900 | 省電力、バッテリー駆動 |
| ESP32-S3 | Xtensa LX7 | ○ | BLE (5.0) | ○ | × | 1,400 | USB 通信、AI 処理 |
| M5Stack ATOM Lite | ESP32-S3 | ○ | BLE (5.0) | ○ | LED | 1,800 | 超小型 IoT、Grove 接続 |
| M5Stack Core2 | ESP32-PICO-D4 | ○ | BLE (5.0) | × | OLED(2.8") | 6,500 | データ表示、操作入力 |
自作 IoT センサーにおいて、測定対象に応じた適切なセンサーモジュールの選定は不可欠です。センサーと ESP32 ボードを接続する際、通信プロトコルの違いを理解し、正しく配線を行うことがデータ収集の精度を左右します。主なインターフェースである I2C、SPI、UART にはそれぞれ得意・不得意があり、使用目的や配線の複雑さに応じて使い分ける必要があります。
I2C (Inter-Integrated Circuit) プロトコルは、2 本の信号線(SDA と SCL)で複数のデバイスを接続できるため、配線がシンプルです。温湿度センサーの BME280 や高精度 SHT31 がこれに該当します。SDA はデータライン、SCL はクロックラインとして機能し、アドレス指定により同時に多数のデバイスを読み書きできます。ESP32 の I2C ピンは通常 GPIO21 (SDA) と GPIO22 (SCL) ですが、ボードの設計によって異なる場合があります。注意すべき点は、I2C 通信にはプルアップ抵抗が必要であり、センサーモジュール側に内蔵されていない場合は外付けする必要があります。
SPI (Serial Peripheral Interface) は、I2C よりも高速なデータ転送が可能です。ただし、各デバイスに CS(Chip Select)ピンが必要となるため、配線数が I2C より増えます。M5Stack の ATOM Lite などに接続する SPI 対応ディスプレイや、一部の高速センサーで採用されます。しかし、一般的な温湿度や人感センサーにはあまり使用されず、本ガイドでは主に UART や I2C に焦点を当てます。
UART (Universal Asynchronous Receiver/Transmitter) は、シリアル通信の一種で、データ送受信に TX と RX の 2 線を使用します。HC-SR501 PIR センサーや LD2410 mmWave モジュールはデジタル出力または UART 出力を持ちます。特に LD2410 は毫米波レーダー技術を採用しており、人体の動きを検知する精度が極めて高いです。UART 接続ではボートレート(通信速度)の設定が重要で、LD2410 では通常 9600bps または 38400bps が設定されます。ESPHome の YAML ファームウェア内で UART ポートとボートレートを正しく指定しないと、データパケットの破損や受信エラーが発生します。
センサー接続時の電圧レベルにも注意が必要です。ESP32 の GPIO ピンは 3.3V ロジックです。一部の古いセンサーモジュール(HC-SR501 など)は 5V を必要とする場合があります。この場合、直接 ESP32 に接続すると破損のリスクがあるため、論理レベルコンバーター(ロジックコンバーター)を介在させるか、ESPHome の設定で電圧降下の許容範囲を確認する必要があります。2026 年現在では、多くのモジュールが 3.3V 対応となっているため、接続前に必ずデータシートの仕様を確認することが推奨されます。
下表に主要センサーのインターフェースと接続ピンをまとめました。実際の配線作業時には、ブレッドボードや専用基板を使用し、接触不良を防ぐために十分なハンダ付けまたはクリップ使用が求められます。特に I2C 接続では、プルアップ抵抗(通常 4.7kΩ)を VCC と信号線間に挟むことが必須要件です。
| センサー名 | 測定項目 | インターフェース | 電圧 (V) | ピン設定例 (ESP32) | 備考 |
|---|---|---|---|---|---|
| BME280 | 温度/湿度/気圧 | I2C | 1.8 - 3.6 | SDA: GPIO21, SCL: GPIO22 | プルアップ抵抗必須 |
| SHT31-DIS | 高精度温湿度 | I2C | 2.4 - 5.5 | SDA: GPIO21, SCL: GPIO22 | 精度が高い (±0.2℃) |
| BH1750FVI | 照度 | I2C | 3.3 | SDA: GPIO21, SCL: GPIO22 | 直接デジタル出力 |
| HC-SR501 | 人感 (PIR) | Digital | 4.5 - 24 | GPIO4 | 高/低レベル出力 |
| LD2410 | mmWave 人体検知 | UART | 3.3 | TX: GPIO16, RX: GPIO17 | ボートレート設定必要 |
| SGP30 | VOC/CO2 | I2C | 2.5 - 3.6 | SDA: GPIO21, SCL: GPIO22 | 空気質検知に有用 |
ESPHome の設定は YAML (YAML Ain't Markup Language) という形式で記述されます。このファイルが ESP32 ボードに書き込まれることで、センサーや通信機能が定義されます。YAML はインデント(字下げ)を厳密に扱うため、半角スペースの数を間違えるとエラーが発生します。本セクションでは、ESPHome の設定ファイルの基本構造と、各コマンドの意味を詳細に解説します。
まず、設定ファイルの冒頭には必ず esphome ブロックが定義されます。この中でプロジェクト名や ESP32 用のボードモデル(esp32dev など)を指定します。次に、wifi ブロックで接続先の SSID とパスワードを設定し、Home Assistant の API に接続するための IP アドレスもここで定義可能です。2026 年現在では、WiFi 再接続時の自動試行回数を増やせるオプション(reconnect_timeout)が標準実装されており、電波状況の悪い環境でも安定性を保つことができます。
センサー設定の中心となるのは sensor ブロックです。ここで各センサーデバイスを定義し、測定値を Home Assistant に送信します。例えば BME280 を接続する場合は、I2C のアドレス(通常 0x76 または 0x77)を指定し、温度、湿度、気圧のメトリック名を設定します。各センサーには update_interval を設定する必要があり、これによってデータ取得頻度が決まります。省電力設計の場合は、この間隔を長くして(例:300 秒)、バッテリー寿命を延ばすことができます。
また、binary_sensor ブロックは ON/OFF の二値情報を扱うセンサーで使用されます。HC-SR501 PIR センサーはこのカテゴリに該当し、動きを検知した時に Home Assistant に「検出」イベントを送信します。この設定では device_class: motion を指定することで、Home Assistant 上で Motion Sensor として認識されやすくなります。さらに、スイッチやライトを ESP32 で直接制御する場合は、switch や light ブロックを使用し、GPIO ピンを出力モードに割り当てます。
下表は YAML キーと機能を整理したリファレンスです。設定ファイルを作成する際は、この表を参考にしながら、自分のハードウェア構成に合わせてカスタマイズします。コメント行(#で始まる行)を活用して、設定項目の説明を記述しておくと、後日のメンテナンス時に大変役に立ちます。
| 設定ブロック | キー例 | 説明 | 推奨値/注意 |
|---|---|---|---|
esphome | name | プロジェクト名 | 英数字(半角) |
| esp_platform | プラットフォーム指定 | esp32, esp8266 など | |
wifi | ssid | WiFi SSID | クォート文字列使用 |
| password | WiFi パスワード | セキュリティ注意 | |
sensor | platform | 測定器タイプ | BME280, SHT31 など |
| address | I2C アドレス | 0x76, 0x77 など | |
binary_sensor | platform | 二値センサータイプ | PIR_MOTION, RAIN など |
| device_class | デバイス種別 | motion, light, door など |
ESPHome で設定した ESP32 デバイスは、自動的に Home Assistant 上に表示されるようになります。このプロセスは「Auto Discovery(自動検出)」と呼ばれる機能によるもので、ユーザーが手動でデバイスを追加する手間を省きます。しかし、その背後では ESPHome と Home Assistant Native API の間に確立された通信経路が存在しています。2026 年時点の標準的な動作原理を理解しておくことは、トラブルシューティング時に役立ちます。
ESPHome デバイスは起動時、設定された SSID に接続し、指定された IP アドレスまたは mDNS 経由で Home Assistant サーバーへアクセスします。Home Assistant は ESPHome の Native API を使用してデバイスとの双方向通信を行います。このプロトコルは MQTT よりも軽量かつ高速で、状態の同期をリアルタイムで行うことができます。具体的には、センサー値の更新やスイッチの状態変更が数ミリ秒以内に関知されます。また、ESPHome 側からの状態プッシュが可能であるため、バッテリー駆動デバイスの消費電力削減にも寄与しています。
連携に際しては、ESPHome アドオン(Add-on)を使用する場合と、Home Assistant OS に ESPHome を組み込む場合があります。2026 年では、Home Assistant Core のバージョン 2026.4.0 以降で Native API のセキュリティ強化が行われており、パスワード認証や暗号化通信が必須となっています。ESPHome の YAML ファイルには api ブロックを設定し、パスワードを指定する必要があります。このパスワードは複雑な文字列を使用することが推奨され、セキュリティ侵害からデバイスを守るための重要な要素です。
また、デバイスの名前と ID は Home Assistant 上で一意である必要があります。ESPHome の設定ファイルで定義された名前は、Home Assistant のエントリ名として反映されますが、スペースや特殊文字を避けることで、自動化ルールでの使用時にエラーが発生しにくくなります。特に日本語名を使用するとエンコード問題で認識されない場合があるため、半角英数字のみを基本とするのが安全です。
Home Assistant 側では「Integrations」ページから ESPHome デバイスが検出されたことを確認できます。もし検出されない場合は、ESPHome のログを確認し、WiFi 接続が確立されているか、API ポート(通常 6053)が開かれているかをチェックします。また、ネットワーク分離(ゲスト WiFi など)を行っている場合、ESPHome デバイスと Home Assistant サーバー間の通信経路が遮断されていないかも確認ポイントです。2026 年現在では、IP アドレスの固定化を推奨する設定がデフォルトで有効になっており、DHCP による IP 変更による接続切断を防ぐ仕組みが標準搭載されています。
自作 IoT センサーにおいて、電源供給の問題は最も重要な課題の一つです。特に、配線作業が困難な場所や屋外に設置するセンサーでは、バッテリーでの運用が必須となります。ESP32-C3 や ESP32-S3 を使用した場合、ディープスリープ(Deep Sleep)機能を活用することで、待機時の消費電流を極限まで抑えることが可能です。
ESPHome のディープスリープ設定では、deep_sleep ブロックを使用します。このブロック内には run_duration(実行時間)や sleep_duration(停止時間)を設定できます。例えば、10 分ごとに測定してデータを送信し、残りの時間は完全に電源を落として眠るような設定が可能です。2026 年現在では、RTC(リアルタイムクロック)によるウェイクアップタイマーの精度が向上しており、秒単位での制御が可能になっています。
しかし、ディープスリープ中は GPIO ピンの状態管理に注意が必要です。ESP32 シリーズには特定のピンでスリープ中に電流を消費するリスクがあります。例えば、GPIO15 はスリープ時にプルダウン抵抗が必要であることが知られています。これを怠ると、スリープ状態であっても数 mA の電流が流れ続け、バッテリーが短期間で枯渇します。ESPHome 設定では pin_mode を指定してスリープ中のピン状態を制御できます。
さらに、センサー側も省電力モードに対応している必要があります。BME280 や SHT31 にはスリープモードがあるため、測定間隔の間は休眠させることができます。ESPHome の YAML で setup_priority を調整し、電源安定のためにセンサーの初期化順序を制御することも重要です。また、バッテリー残量モニタリング機能を実装すれば、交換時期を予測できるようになります。
下表に省電力設計における重要な設定項目と推奨値を示します。この設定を行うことで、CR2032 バッテリーで 6 ヶ月以上の稼働を目指すことが可能になります。実機での電流測定はテスタで確認し、実際の数値が仕様通りか検証することが望ましいです。
| 設定項目 | 推奨内容 | 効果 |
|---|---|---|
deep_sleep ブロック启用 | true に設定 | メインクロック停止 |
sleep_duration | 300 秒 (5 分) など | 測定間隔制御 |
pin_mode | GPIO15: PULL_DOWN | スリープ電流抑制 |
wake_up_pin | PIR センサー等 | イベント駆動ウェイクアップ |
power_down_pin | 特定ピンで電源制御 | 外部モジュールの完全シャットダウン |
ESPHome で収集したセンサーデータは、Home Assistant の自動化機能と連携することで真価を発揮します。単に数値を表示するだけでなく、状況に応じてアクションを実行することがスマートホームの目的です。2026 年時点では、AI を活用した予測制御や、多条件を複合した複雑なルール作成が容易になっています。ここでは代表的な自動化シナリオをいくつか解説します。
まず、人感センサーによる照明制御です。ESPHome で接続した PIR センサー(binary_sensor)が「検出」イベントを送信した瞬間に、対応するスマートライトのスイッチを ON にします。ただし、単なるトリガーでは夜間の誤作動を防げないため、時間条件や明るさセンサー(BH1750 など)との組み合わせが必要です。「人感検出かつ暗い場合のみ照明 ON」というロジックは、Home Assistant の「If」ブロックを使用して実装できます。また、点灯後も 5 分間動きが検出されなければ自動的に OFF にするタイマー機能も併設します。
次に、CO2 濃度センサーによる換気制御です。室内の CO2 濃度が 1,000ppm を超えた場合、換気扇やエアコンを ON にして空気の入れ替えを行います。この際、ESPHome で SGP30 センサーを使用し、VOC(揮発性有機化合物)値を測定することで、空気質の悪化を検知できます。「CO2 高濃度」かつ「窓が開いていない」場合のみ換気扇を ON にするなどの条件分岐も可能です。Home Assistant のテンプレートセンサー機能を活用すれば、複数のセンサー情報を合成して判断基準を設定できます。
最後に、温度制御によるエアコン連携です。ESP32 で測定した室内温度が設定値を超えた場合にエアコンを制御します。ただし、エアコンの電源を直接切ると復旧時に温度が急激に変化するリスクがあるため、適切なクールモードへ切り替えるか、ファン回転数を調整するなどの微調整が必要です。Home Assistant の Thermostat Integration を使用することで、より高度なヒーター/クーラー制御が可能になります。
下表に自動化ルールの構成例を示しました。各ルールは Home Assistant の Automations 画面で設定するか、YAML ファイルで定義できます。2026 年時点では、ダークモード対応や UI の最適化が行われており、視認性も向上しています。
| 自動化名 | トリガー | コンディション | アクション |
|---|---|---|---|
| 人感照明制御 | PIR センサー ON | 時刻が 18:00-6:00、照度低 | ライト ON(5 分後 OFF) |
| CO2 換気制御 | CO2 > 1000ppm | 窓の状態 = クローズ | 換気扇 ON(30 分後 OFF) |
| 温度エアコン制御 | 温度 > 28℃ | エアコン未稼働 | エアコン COOL モード ON |
IoT デバイスを運用する上で、ファームウェアの維持管理は不可欠です。ESPHome では OTA (Over-The-Air) アップデート機能を提供しており、ネットワーク経由で新しい設定や修正をデバイスに適用できます。これにより、配線接続を行わずに遠隔からシステムを改善することが可能になります。しかし、セキュリティリスクも存在するため、適切な対策が求められます。
2026 年現在の ESPHome では、OTA アップデート時に暗号化通信が行われるよう標準仕様となっています。設定ファイル内で ota ブロックを定義し、パスワードを設定します。このパスワードは、ネットワークからのアクセス権限を管理する鍵となるため、推測されにくい複雑な文字列を使用することが推奨されます。また、アップデートが失敗した場合の自動ロールバック機能も実装されており、デバイスが起動不能になるリスクを低減しています。
セキュリティ対策には、Secure Boot と Flash Encryption の有効化が含まれます。これらは ESP32 チップ内部で実行される機能であり、不正なファームウェアの書き込みを防ぎます。Home Assistant の ESPHome Add-on を使用する場合、これらの設定が自動的に適用されることが多いですが、手動設定を行う場合は esp32 ブロック内で secure_boot_enabled: true を指定する必要があります。
また、ネットワークレベルでのセキュリティも重要です。ESPHome デバイスをゲストネットワークに隔離することは推奨されます。これにより、万が一デバイスがハッキングされた場合でも、メインの Home Assistant サーバーや LAN 内の他デバイスへのアクセスを制限できます。2026 年現在では、このネットワーク分離機能をデフォルトで有効化できるテンプレートが ESPHome に含まれています。
さらに、API キー管理についても言及します。ESPHome の API パスワードは YAML ファイルに直接記述されますが、Git などのバージョン管理システムに含める際は注意が必要です。環境変数や Home Assistant の Secrets ファイルを使用することで、パスワードを外部化し、設定ファイルの公開リスクを回避できます。
下表に OTA アップデートとセキュリティの設定項目を示します。これらの設定を行うことで、長期間安定して運用するための基盤を整えます。定期的なファームウェア更新は、脆弱性情報が公開された場合に迅速に対応するため、月 1 回のチェックを推奨します。
| 設定項目 | 値/内容 | セキュリティ効果 |
|---|---|---|
ota ブロック | パスワード設定 | 不正アクセス防止 |
secure_boot_enabled | true | 不正ファームウェア阻止 |
flash_encryption | true | データ暗号化保存 |
| API ポート | 非公開 (6053) | ネットワーク隠蔽 |
| 秘密情報管理 | secrets ファイル使用 | パスワード漏洩防止 |
Q1: ESPHome の設定ファイルを書き込んだ後、デバイスが Home Assistant に表示されないのはなぜですか? A1: まず、ESP32 ボードが正しく WiFi に接続されているか確認してください。Home Assistant の設定画面で ESPHome アドオンのログを確認し、「Connecting to WiFi」や「Connected to SSID」というメッセージが出ているかチェックします。また、ESPHome デバイスの IP アドレスが Home Assistant サーバーと同じサブネット内にない場合も検出されません。
Q2: ディープスリープ中にセンサーの値が更新されないのはなぜですか?
A2: 設定ファイル内の deep_sleep ブロックで、ウェイクアップ条件を正しく指定しているか確認してください。RTC タイマーによる自動ウェイクアップの場合、sleep_duration の値が短すぎるか、または設定が無効になっている可能性があります。また、センサー側もスリープモード対応である必要があります。
Q3: ESPHome で WiFi パスワードを変更しましたが、パスワードが保存されません。
A3: 2026 年現在は Home Assistant OS にて secrets.yaml ファイルを使用する推奨方法があります。YAML ファイル内で ${SECRET_WIFI_PASS} のように参照し、外部ファイルにパスワードを管理することで変更の柔軟性を高めます。直接 YAML ファイルに記載する場合でも、設定保存後に再起動が必要です。
Q4: 人感センサーが誤作動して照明が頻繁に点滅します。
A4: PIR センサー(HC-SR501 など)は赤外線の変化を検知するため、熱源や日光の影響を受けやすいです。センサーの向きを変更するか、ESPHome の設定で debounce_delay を増やして検出間隔を長くすることで誤作動を防げます。また、照明制御ルールに時間条件(夜間のみに有効)を追加することも効果的です。
Q5: ESP32-C3 と ESP32-S3 のどちらを使うべきですか? A5: バッテリー駆動がメインであれば ESP32-C3 を推奨します。RISC-V アーキテクチャによりスリープ時の消費電流が極めて低く、省電力性に優れています。一方、USB 接続や高速処理が必要な場合は ESP32-S3 が適しています。用途に応じて選択してください。
Q6: センサーの値が極端に不安定です(温度が激しく変動する)。
A6: これは電圧降下やノイズの影響である可能性があります。ESP32 の電源ラインにコンデンサーを挿入するか、センサー側の VCC を安定した 3.3V レギュレーターから供給してください。また、YAML ファイルで filter 設定(例えば平均化フィルタ)を追加することでデータの平滑化が可能です。
Q7: Home Assistant に ESPHome デバイスを追加する際、「接続できません」と表示されます。
A7: これは API のポートが遮断されているか、パスワード設定が間違っている可能性があります。ESPHome の設定ファイルで api ブロック内の password を確認し、Home Assistant 側の導入時に同じパスワードを入力しているか確認してください。また、ネットワーク設定を確認し、ファイアウォールが ESPHome デバイスの通信をブロックしていないかもチェックします。
Q8: OTA アップデート後にデバイスが起動しなくなります(ブートループ)。 A8: これはファームウェアの書き込みエラーや設定ファイルの不具合によるものです。ESPHome のログを確認し、どの部分でエラーが発生したか特定してください。また、ESP32 には物理的なボタン(BOOT ボタン)があり、押しながら電源を入れることでリカバリーモードに入る場合があります。この状態で USB ケーブルを接続して、再度書き込みを行ってください。
Q9: 省電力設計をしたいが、バッテリー駆動で数ヶ月しか持ちません。
A9: ディープスリープ設定を見直してください。deep_sleep ブロック内の sleep_duration を長くし、測定間隔を延ばします。また、ESPHome のログを確認し、スリープ中に電流が消費されていないかテスタで測定してください。センサー側もオフにできる場合は、電源制御ピン(GPIO)を追加して完全シャットダウンする方法も検討してください。
Q10: ESPHome の設定ファイルを Git で管理したいです。パスワードはどのように扱いますか?
A10: 必ず secrets.yaml ファイルを使用してください。YAML ファイル内で ${SECRET_WIFI_PASS} のように参照し、外部ファイルにパスワードを記述します。Git に公開する際は、この secrets.yaml を.gitignore で除外することで、パスワードの漏洩を防げます。2026 年現在では、この方法が標準的なベストプラクティスとなっています。
本ガイドでは、Home Assistant と ESPHome を連携させた自作 IoT センサーの構築方法について詳細に解説しました。以下の要点を整理します。
esphome, wifi, sensor, binary_sensor ブロックを適切に定義する。このガイドに沿って実践することで、2026 年時点でも通用する高機能かつ安全なローカル IoT システムを構築できます。初心者の方はまず基本的なセンサー接続から始め、徐々に自動化ルールの複雑さを増していくことをお勧めします。