Skip to main content

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.

Metadata

Release files for espro 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for espro 0.1.0
File Size Uploaded
espro-0.1.0.tar.gz 4.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for espro 0.1.0
File Interpreter ABI Platform
espro-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 10.8 kB

Release files / espro-0.1.0.tar.gz

Download URL espro-0.1.0.tar.gz
Size 4.7 kB
Tags Source
SHA-256 checksum
How to use checksums
64bd8f81d63102200858a3c26a68f08ed12542889940ce1836a6eadf676a5533
BLAKE2b-256 checksum
How to use checksums
a9d969e21348eae302a3456f83baf8d6f506d743edc319a7715b8da49f504e6f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.8

Release files / espro-0.1.0-py3-none-any.whl

Download URL espro-0.1.0-py3-none-any.whl
Size 6.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cb6af16fd5448d9ab62e04b3f55b67b269dce9a18ed02acb505df1eacd7536d1
BLAKE2b-256 checksum
How to use checksums
7d21648dc512d0249a7492a4791e61875b92f8732b6cb3f430a021e71152ee8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.8

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page