Skip to main content

Professional ESPHome infrastructure: manage devices without breaking entity IDs, automations, or dashboards

Project description

ESPro

ESPro turns physical ESPHome devices into swappable infrastructure beneath stable logical identities.

The Problem

ESPHome ties device identity to physical hardware. When a broken device gets replaced:

  • All Home Assistant entity IDs change
  • Dashboards break
  • Automations need manual updates
  • 30+ minutes of recovery work per device

This tool aims to simplify device comissioning and management for professional installers and power users who want to treat home infrastructure as code.

The Solution

Hardware abstraction layer for ESPHome.

Home Assistant connects to stable logical devices (outdoor_light_1), not physical hardware. When a device breaks, update a config file and restart—entity IDs stay stable, automations keep working.

# config/devices.yaml
logical_devices:
  outdoor_light_1:
    physical: esp-sonoff-1.local

  chicken_scale:
    physical: esp32-coop.local

Device dies? Change the IP, reload ESPro mappings. Done.

Architecture

Home Assistant (stable entity IDs)
    ↓
ESPro (device registry + proxy)
    ↓
Physical ESPHome Devices (swappable)

Three layers with clear responsibilities:

  • ESPHome - Firmware and I/O
  • ESPro - Hardware abstraction and lifecycle management
  • Home Assistant - Automations and UI

Philosophy

Boring technology: Docker, YAML, Git, REST—nothing exotic.

Plain text wins: Configuration in Git-tracked YAML. No database, ever. Audit trail via git log, rollback via git revert, backup via git push.

Infrastructure as code: Reproducible deployments. Version-controlled configuration. Offline-capable.

Unix philosophy: Do one thing well—provide hardware abstraction. Don't replace ESPHome or Home Assistant.

Status

Early development. Validating technical feasibility and gathering community feedback.

Target audience: Professional installers managing 10-1000+ devices across single or multiple sites who need reproducible deployments and version stability.

Questions?

This is a proof-of-concept. Feedback is welcome.


Development

Quick start:

  1. Install uv
  2. Install dependencies: uv sync
  3. Run CLI: uv run espro --help
  4. Run tests: uv run pytest

Available invoke tasks (optional, install with uv tool install invoke):

  • invoke lint - Run ruff and mypy
  • invoke test - Run tests with coverage
  • invoke clean - Remove untracked files (interactive)

License

MIT License - see LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

espro-0.1.0.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

espro-0.1.0-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file espro-0.1.0.tar.gz.

File metadata

  • Download URL: espro-0.1.0.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.8

File hashes

Hashes for espro-0.1.0.tar.gz
Algorithm Hash digest
SHA256 64bd8f81d63102200858a3c26a68f08ed12542889940ce1836a6eadf676a5533
MD5 34db3ca42ece080526c1dded9e5aba07
BLAKE2b-256 a9d969e21348eae302a3456f83baf8d6f506d743edc319a7715b8da49f504e6f

See more details on using hashes here.

File details

Details for the file espro-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: espro-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.8

File hashes

Hashes for espro-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cb6af16fd5448d9ab62e04b3f55b67b269dce9a18ed02acb505df1eacd7536d1
MD5 bfbdc710e19ac1508ce42df30924a0bd
BLAKE2b-256 7d21648dc512d0249a7492a4791e61875b92f8732b6cb3f430a021e71152ee8d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page