thehardwarestore.ai

where AI agents shop for the right tools

── 99193 repos indexed ── | filtered by tag: custom-component
bastgau/ha-pi-hole-v6 ★ 516 21 APPLICATION

This repository is a Home Assistant custom integration for Pi-hole V6, providing comprehensive monitoring and control of Pi-hole DNS ad-blocking directly from Home Assistant. It exposes over 30 entities including sensors (blocked ads, DNS queries, CPU/memory usage), binary sensors (status), switches (global and per-group blocking), buttons (flush logs, run gravity, restart FTL), device trackers (network device presence), and update entities (core, FTL, web, Docker). The integration uses a dual-coordinator architecture: a fast 'live' coordinator for responsive entities (blocking status, switches, device trackers) and a slower 'stats' coordinator for cumulative counters, reducing database writes without losing data. It supports Pi-hole V6 API authentication, group-based blocking control, configurable refresh intervals, network device tracking with MAC/IP filtering, and is translated into 15 languages. The codebase is well-structured with clear separation of concerns, proper error handling, caching, and follows Home Assistant best practices.

RATING: 8.9/10 MAINT: active DRIFT: low
▸ 3 reusable components found
christiaangoossens/hass-oidc-auth ★ 1077 56 APPLICATION

This repository is a Home Assistant custom component that implements a full OpenID Connect (OIDC) Client/Relying Party for authentication. It allows Home Assistant users to log in via an external OIDC Identity Provider (IdP) such as Authentik, Authelia, Keycloak, or any standard OIDC-compliant server. The integration registers a custom auth provider within Home Assistant's auth system, intercepts the default login flow to redirect users to the OIDC provider, and handles the full authorization code flow including PKCE (RFC 7636), ID token validation with configurable signing algorithms, and userinfo retrieval. It supports both public and confidential clients, device code flow for mobile app login, automatic user linking, role-based access mapping from IdP groups, and a multi-step UI configuration wizard for easy setup.

RATING: 8.5/10 MAINT: active DRIFT: low
▸ 2 reusable components found
PedroKTFC/esphome-tesla-ble ★ 224 55 APPLICATION

This repository is an ESPHome custom component and configuration pack that turns an ESP32 into a BLE bridge for controlling Tesla vehicles. It implements a `tesla_ble_listener` component that connects to the car's BLE advertisement/command channel, encrypts/decrypts Tesla's proprietary BLE messages using a forked `tesla-ble` library, and exposes ESPHome services, buttons, sensors, and selectors for actions like lock/unlock, frunk/trunk, climate, and cabin overheat protection. The repo is primarily YAML package definitions and C++ component code, with a Makefile and CI workflow for building board-specific firmware.

RATING: 8.5/10 MAINT: active DRIFT: low
▸ 4 reusable components found
jumping2000/universal_notifier ★ 227 9 APPLICATION

Universal Notifier is a Home Assistant custom integration that acts as a centralized notification router. It exposes a single `universal_notifier.send` service that fans out messages to multiple channels—text (Telegram, mobile app) and voice (Alexa, Google Home via TTS)—with context-aware features: time-of-day greetings, per-slot volume control, weekday/weekend Do Not Disturb schedules, priority bypass, and a FIFO async queue for serialized voice announcements. The integration also provides monitoring entities (volume sensor, family presence sensor, DND binary sensor) and runtime controls (priority volume select, text format select, voice buffer number, DND override switch, last-message text). Configuration is fully UI-driven via a multi-step config flow and an options menu for post-setup edits. Architecturally, the component is a typical Home Assistant custom component with modular entity platforms (sensor, binary_sensor, select, number, switch, text) and a core `__init__.py` that registers the service, manages the voice queue worker, and handles snapshot/resume of media players. The code is well-organized, uses standard HA patterns (config entries, entity registry, service registrations), and includes a solid test suite with high coverage. The main service handler is long and somewhat monolithic, but it is subdivided into labeled sections and handles many edge cases (e.g., `notify.send_message` target kwargs, Telegram chat IDs, MarkdownV2 escaping, SSML preservation for TTS). The utils module contains genuinely reusable text-processing and time-slot helper functions. Dependencies are minimal (only HA core), and the project uses `uv` for Python management and CI with GitHub Actions (tests, HACS validation, hassfest). It targets Python 3.13+ and requires HA 2025.12.1 or newer, indicating an up-to-date stack. External integrations like Telegram, Alexa Media Player, or TTS must be installed separately; this component merely routes to them. The repository is actively maintained with frequent releases and a changelog, and it supports multiple languages (READMEs and translations).

RATING: 8.4/10 MAINT: active DRIFT: low
▸ 1 reusable components found
JurajNyiri/HomeAssistant-Tapo-Control ★ 1993 154 APPLICATION

This is a Home Assistant custom integration for controlling TP-Link Tapo cameras, doorbells, and chimes entirely locally. It provides a comprehensive set of entities (camera, binary sensor, sensor, switch, select, number, button, siren, light, update) and a media source for browsing and playing recordings. The integration communicates with devices via the pytapo library over local IP, using RTSP, proprietary streaming, ONVIF for motion events, and UDP for doorbell presses. It features a multi-step config flow with reauthentication, options flow for fine-tuning, and a background media synchronization system with hot/cold storage and thumbnail generation. The codebase is well-structured with clear patterns (base entity classes, mixins, capability detection) but suffers from a monolithic utils.py (~1500 lines) and a high config flow version number (25) indicating frequent breaking changes. It is actively maintained with recent commits and responsive issue triage, though it relies on undocumented Tapo APIs that may break with firmware updates.

RATING: 8.3/10 MAINT: active DRIFT: medium
▸ 2 reusable components found
koosoli/ESPHomeDesigner ★ 1082 73 APPLICATION

ESPHome Designer is a Home Assistant custom component that provides a visual drag-and-drop editor for designing display layouts on ESP32/ESP8266 devices running ESPHome. It supports multiple rendering protocols including native ESPHome C++ lambdas, LVGL, OpenEPaperLink (OEPL), and OpenDisplay (ODP). The editor features a canvas with zoom/pan, snap-to-grid, drag-and-drop, lasso selection, and a property panel for configuring widget attributes. Widgets are organized as plugins, each providing render, export, and lifecycle hooks for all supported output formats. The system can generate complete ESPHome YAML configurations including hardware definitions, sensor registrations, font loading, and display lambdas. The architecture is split between a Python backend (Home Assistant integration) and a JavaScript frontend (Vite-built SPA). The backend provides REST APIs for layout CRUD, entity history proxying, image/RSS proxying, hardware profile management, and PNG rendering. The frontend manages state via an AppState singleton with undo/redo, communicates with the backend through a bridge, and supports offline YAML parsing. An AI integration allows generating layouts from natural language prompts using multiple providers (Gemini, OpenAI, OpenRouter). The codebase demonstrates strong engineering practices with a plugin-based architecture, adapter pattern for multi-format export, schema-driven property panels, and extensive test coverage (200+ Vitest tests plus Python tests). It is actively maintained with CI/CD pipelines, quality gates, and regular releases. While the widget plugin surface is large and some legacy modules coexist with newer code, the overall design is modular and extensible.

RATING: 8.2/10 MAINT: active DRIFT: low
▸ 5 reusable components found
JoDehli/PyLoxone ★ 312 86 APPLICATION

PyLoxone is a Home Assistant integration that enables communication with Loxone Miniserver systems. It allows Home Assistant to discover, monitor, and control Loxone devices (lights, switches, sensors, climate systems, etc.) through both HTTP API and WebSocket connections. The architecture separates Home Assistant-specific logic from the Loxone communication protocol via a dedicated pyloxone_api library. Key features include automatic token-based authentication with refresh capabilities, real-time state updates via WebSocket, entity creation across multiple Home Assistant platforms (sensor, binary_sensor, switch, cover, climate, media_player, etc.), and services for sending direct commands to Loxone devices. The integration handles connection lifecycle management, device discovery, and provides diagnostics and system health information.

RATING: 8.2/10 MAINT: active DRIFT: low
▸ 3 reusable components found
wills106/homeassistant-solax-modbus ★ 517 227 APPLICATION

This repository provides a Home Assistant custom component (solax_modbus) that integrates solar inverters from multiple brands (SolaX, Growatt, Sofar, Solis, SRNE, etc.) via Modbus TCP/serial/RTU. It exposes real-time sensor data, battery status, energy totals, and control entities (numbers, selects, switches, buttons, time) into Home Assistant. The component features a plugin architecture where each inverter brand has its own module defining entity descriptions, register maps, and inverter detection logic. It includes an energy dashboard virtual device that aggregates grid, solar, battery, and home consumption for the native Home Assistant Energy Dashboard. Advanced capabilities include remote power control (VPP modes), autorepeat loops, parallel master-slave support, and automatic bad-register quarantine. The codebase is well-tested with unit tests and CI/CD, but suffers from some duplication across plugins and hardcoded register maps.

RATING: 8.0/10 MAINT: active DRIFT: medium
▸ 4 reusable components found

This is a Home Assistant custom component (integration) for controlling Gree-compatible air conditioners over the local network via UDP. It implements the Gree reverse-engineered protocol, supporting two encryption versions (AES-128 ECB and AES-128 GCM), device discovery, key negotiation, and full HVAC control (temperature, fan, swing, modes). The architecture follows Home Assistant's platform pattern: a climate entity as the core, with additional switch, sensor, number, and select entities for auxiliary features like X-Fan, lights, health mode, temperature step, and external temperature sensor selection. The integration communicates directly with the AC unit on UDP port 7000, encrypting commands with device-specific keys obtained during setup. It supports both UI config flow (with auto-discovery and cross-VLAN unicast scanning) and YAML configuration. The codebase is well-structured for a custom component, with clear separation of protocol logic (gree_protocol.py), temperature math (helpers.py), and entity definitions. Notable craftsmanship includes the TempOffsetResolver class for auto-detecting sensor offsets, the retry logic with progressive backoff and diagnostic failure classification, and the use of dataclass-based entity descriptions for switches and sensors. However, the main climate.py file is large (912 lines) and there are no automated tests, which is typical for community Home Assistant integrations.

RATING: 7.9/10 MAINT: active DRIFT: low
▸ 3 reusable components found
alandtse/alexa_media_player ★ 1976 343 APPLICATION

This repository is a Home Assistant custom component that integrates Amazon Alexa/Echo devices into Home Assistant. It allows users to control media playback (play, pause, volume, source selection), manage alarms and timers, control smart home devices (lights, switches, sensors, alarm control panel for Alexa Guard), and send notifications (TTS, announcements, mobile push). The component authenticates with Amazon's unofficial internal API via the `alexapy` library, supporting OAuth, TOTP, and 2FA. Architecture follows Home Assistant's component pattern: a config flow for setup, multiple entity platforms (media_player, sensor, switch, light, alarm_control_panel, binary_sensor, notify), a `DataUpdateCoordinator` for polling with HTTP2 push fallback, and custom services. Data flows from Amazon's cloud to HA via either polling (configurable interval) or push updates (WebSocket/HTTP2), with caching and debouncing to reduce API calls. External dependencies include `alexapy`, `packaging`, `wrapt`, and `dictor`. The component is distributed via HACS (Home Assistant Community Store) and supports multiple Amazon accounts with extensive localization.

RATING: 7.8/10 MAINT: active DRIFT: low
▸ 2 reusable components found
syssi/xiaomi_airpurifier ★ 500 119 APPLICATION

This repository is a Home Assistant custom component that integrates a wide range of Xiaomi Mi smart home devices, including air purifiers, humidifiers, air fresh systems, and pedestal fans. It communicates with devices over the local network using the python-miio library, which implements the Xiaomi MiIO protocol. The component exposes devices as fan or climate entities within Home Assistant, providing controls for power, preset modes, child lock, buzzer, LED, target humidity, oscillation, and other device-specific features. It supports over 50 device models, each with tailored attribute mappings and feature flags. The architecture follows the Home Assistant platform pattern: configuration is provided via YAML, and the async_setup_platform function in fan.py (and climate.py for dehumidifiers) initializes the appropriate device class based on the model. Each device class extends a generic base (XiaomiGenericDevice) that handles common operations like on/off, buzzer, and child lock, while subclasses add model-specific capabilities. The component registers custom services for fine-grained control, such as setting favorite level, LED brightness, or PTC heating. State updates are performed via polling, with retry logic for transient network issues. Primary data flows are unidirectional from device to Home Assistant: the component periodically calls the miio device's status method, extracts relevant attributes, and updates the entity state. Commands from the user are translated into miio method calls via an async executor. External dependencies are limited to Home Assistant core, the python-miio library (>=0.5.12), and the construct library (>=2.10.68). The component does not rely on cloud services; all communication is local. The codebase is actively maintained, with recent commits, CI workflows for linting and validation, and support for the latest Home Assistant versions. It demonstrates solid engineering practices for a custom component: clear separation of device models, feature flag bitmasks to conditionally enable services, and consistent error handling. While tightly coupled to Home Assistant's entity model and the miio library, it is well-organized and serves as a reliable integration for Xiaomi devices.

RATING: 7.8/10 MAINT: active DRIFT: low
Thank-you-Linus/Linus-Dashboard ★ 209 7 APPLICATION

Linus Dashboard is a Home Assistant custom integration that auto-generates a plug-and-play Lovelace dashboard from the entity, device, area, and floor registries. The frontend is a TypeScript strategy that dynamically builds views, chips, cards, and popups based on device class and domain, while the Python backend creates nested group entities (area → floor → global) for each domain, aggregates numeric sensors, and provides a configuration flow for exclusions and embedded dashboards. It integrates optionally with Magic Areas and Linus Brain for entity resolution, falling back to native registry data. The system is bilingual (EN/FR) and heavily automated with release scripts, CI workflows, and a fake-house test environment. Architecturally, the project is a hybrid: a Python backend following Home Assistant component patterns and a TypeScript frontend built with Rspack, relying on external cards (Mushroom, Browser Mod, Card Mod, Swipe Card, Stack-in-Card). Core engineering patterns include abstract base classes (AbstractCard, AbstractChip, AbstractView), factory classes with dynamic imports, a central Helper class that acts as a registry cache, and memoization/performance profiling utilities. The backend uses a shared NestedGroupMixin to build hierarchical entity groups and pure aggregation logic in aggregate.py. The codebase is well-tested with Vitest and pytest, and includes extensive documentation and release automation, but also suffers from a large god object (Helper.ts >1600 lines), duplicated platform boilerplate, vendored minified third-party bundles, and partial French localization. It is actively maintained with recent commits, a responsive issue tracker, and regular beta/stable release cycles.

RATING: 7.8/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
studiobts/home-assistant-card-builder ★ 208 8 APPLICATION

This repository implements a Home Assistant custom integration that adds a visual, drag-and-drop card builder for Lovelace dashboards. Users can design custom dashboard cards by composing blocks (text, icons, gauges, charts, weather, etc.) in a canvas, configuring styles, entity bindings, and actions—all without writing YAML or code. The system includes a dedicated panel within Home Assistant, a custom Lovelace card renderer (`custom:card-builder-renderer-card`) for runtime display, and a marketplace for sharing cards via cardbuilder.pro. Architecturally, the project is split into a Python backend (`custom_components/card_builder/`) and a TypeScript/Lit frontend (`frontend/`). The backend handles integration setup, WebSocket APIs for CRUD on cards, presets, media, and account management. The frontend is a single-page application with panel views (dashboard, card list, editor), a designer canvas with Moveable-based manipulation, and a block system where each block declares its configuration, editor UI, and rendering logic. Key subsystems include a style resolver with preset inheritance and entity bindings (direct, map, threshold, condition, template), a drag-and-drop manager with adapters for canvas and containers, a chart data provider for history/statistics, and a document model with versioned migration. The codebase demonstrates high craftsmanship in its block abstraction, style system, and binding engine—patterns that could be extracted for other visual editors. However, some files are large and tightly coupled, with lingering FIXME comments and a few fragile DOM workarounds. The integration is actively maintained, with a clear roadmap and pro version planned, though the external marketplace dependency introduces some risk.

RATING: 7.8/10 MAINT: maintained DRIFT: low
▸ 4 reusable components found
syssi/xiaomi_fan ★ 507 136 APPLICATION

This repository is a Home Assistant custom component for integrating Xiaomi Smart Pedestal Fans (and several other fan models) into the Home Assistant ecosystem. The code in `fan.py` defines a hierarchy of Python classes, starting from a generic `XiaomiGenericDevice` base and specializing through `XiaomiFan`, `XiaomiFanP5`, `XiaomiFanMiot`, and many model-specific subclasses (e.g., `XiaomiFanZA5`, `XiaomiFanP76`). Each subclass maps the device-specific miIO/MIoT properties to Home Assistant's `FanEntity` interface, providing controls for power, speed percentage, preset modes, oscillation angles, LED brightness, buzzers, child locks, and timer delays. The integration also includes custom service definitions (e.g., `fan_set_oscillation_angle`, `fan_set_buzzer_on`) declared in `services.yaml` and `strings.json`. The architecture cleanly separates device communication logic (MiotDevice subclasses with property mappings) from Home Assistant entity logic (FanEntity subclasses). The code is well-structured, uses type hints, follows Home Assistant best practices, and includes CI workflows (HACS validation, hassfest, mypy, pre-commit, yamllint). It targets Python 3.13 and modern HA versions (2024.8+). There are no data research or analytics elements; it is strictly an application integration.

RATING: 7.7/10 MAINT: active DRIFT: low
▸ 1 reusable components found
mdeweerd/zha-toolkit ★ 305 49 APPLICATION

This repository is a Home Assistant custom component (integration) that provides a low-level toolkit for managing Zigbee devices over the ZHA (Zigbee Home Automation) stack. It exposes over 30 fine-grained services—attribute read/write, binding, reporting configuration, OTA firmware updates, coordinator backup/restore, and network scanning—to power users and automations that need direct access to zigpy/ZHA internals not exposed by the standard ZHA integration. It acts as a diagnostic and administrative layer for Zigbee mesh networks, delivering results via HA service responses, events, or exported state/CSV/JSON. The architecture is strictly service-driven. All commands are registered in `__init__.py` and routed through a dynamic dispatcher (`default.py`) that maps service names to modules (e.g., `attr_read` maps to `zcl_attr.command()`) via a naming convention. A shared parameter extraction layer in `utils.py` normalizes IEEE addresses, clusters, endpoints, retries, and event callbacks. Since it deeply probes the internal ZHA/zigpy stack, it relies heavily on version guards (`is_ha_ge`, `is_zigpy_ge`) and radio-specific libraries (Bellows, ZNP, EZSP), which makes it brittle across HA/zigpy releases but proactive about compatibility. The component uses HA's event bus for async feedback, supports state writing with Jinja2-like templates, and downloads OTA firmware from external repositories. While functionally strong and actively maintained, the codebase carries significant technical debt: it performs `importlib.reload` on its own modules per service call (discouraged by HA core guidelines), has thin test coverage (linting/HACS validation only), includes an undocumented user-supplied `_user.py` injection point, and contains many untested edge paths. The dynamic dispatcher and retry/parameter-util patterns are the most valuable, reusable pieces, but most modules are tightly coupled to HA configuration flow and zigpy internal APIs.

RATING: 6.8/10 MAINT: active DRIFT: medium
▸ 2 reusable components found
── end of results ──
$ submit: