This repository is a Home Assistant add-on distribution point for Music Assistant, not a standalone application. It packages the Music Assistant server and a companion local audio output add-on as installable Home Assistant add-ons. The repository contains multiple variants—stable, beta, dev, and nightly—each with its own Dockerfile, run script, configuration schema, translations, and changelog. The local_audio add-on provides low-latency playback to local sound cards and is hardened with a custom AppArmor profile. In production, the add-ons run inside Home Assistant OS or a supervised installation. The main entry points are the add-on config.yaml files and the shell scripts that start the Music Assistant server or local audio player. The server exposes a web UI and integrates with Home Assistant; audio flows from music providers to players, with local_audio acting as an output sink. External dependencies include Home Assistant, Docker, the Music Assistant Python server, and system audio libraries. The codebase is primarily operational glue: shell scripts, Dockerfiles, YAML configuration, and security profiles. The most reusable artifacts are the AppArmor profile for sandboxing a network-exposed audio player and the git-ref-based source installer used by the development add-on. The repository is actively maintained, with frequent releases and detailed changelogs, and shows low technical drift relative to current Home Assistant add-on practices.
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.
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.
This repository provides ESPHome firmware configurations and custom components to control LoctekMotion/FlexiSpot standing desks via Home Assistant. The core functionality is implemented as two custom ESPHome sensor components: `loctekmotion_desk_height` for reading desk height from a 7-segment display protocol over UART, and `loctekmotion_desk_command` for detecting keypad button presses. The primary entry points are the YAML package files (`packages/office-desk-esp32.yaml` and `packages/office-desk-esp32-passthrough.yaml`) which wire up UART communication, GPIO control for the screen wake pin (PIN20), and expose cover, button, switch, and number entities to Home Assistant. The architecture is a typical ESPHome device: a single microcontroller (ESP32/ESP8266) running the ESPHome firmware, communicating with the desk controller via a 9600 baud UART serial link. The repo also contains archived Arduino and Raspberry Pi implementations, but the active development is focused on the ESPHome components. It is a well-structured IoT integration project with CI/CD, linting, and test compilation for multiple board variants.
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.
Awesome Home Assistant is a community-curated index (an awesome list) of third-party resources for the Home Assistant home automation platform. The repository contains a single massive README.md that serves as the canonical list, organized into sections for custom integrations, dashboard cards, themes, apps, DIY projects, community resources, and more. It is not a software application itself but a well-maintained documentation and curation project with a set of Python maintenance scripts and GitHub Actions workflows that validate entries, check for broken links, refresh star counts, and generate a static website via MkDocs. The repository is designed for contributors to propose additions via pull requests; automated checks enforce entry quality criteria (license, age, activity).
ESPAtherma is an embedded firmware application (PlatformIO/Arduino) for monitoring and basic control of Daikin Altherma heat pump systems via an ESP32 or ESP8266 microcontroller. In production, it connects to the heat pump's X10A serial port, queries specific register addresses (reverse-engineered Daikin I and S protocols), converts raw bytes into human-readable values using configurable label definitions, and publishes the data over MQTT to a Home Assistant instance. It also provides Home Assistant MQTT auto-discovery for seamless integration. The architecture is a single-threaded loop: setup reads model-specific definition files and MQTT/WiFi config, then repeatedly queries registers, converts data, and publishes to MQTT. Key entry points are `src/main.cpp`, `include/comm.h` (serial query), and `include/homeassistant.cpp` (discovery payload generation). External dependencies include PubSubClient, ArduinoJSON, and board-specific libraries (M5Unified for M5Stick). The project also includes reverse-engineering scripts, serial log dumps, and a heat pump emulator, making it a hybrid of embedded application and protocol research. However, the primary usage and codebase character are that of an IoT monitoring/control application.
teddyCloud is a self-hosted, open-source replacement server for the Toniebox children's audio player. It implements the entire cloud-side protocol stack—including HTTPS, TLS, MQTT, and custom protobuf-based APIs—to intercept, proxy, cache, and serve audio content to physical Toniebox devices. The application is written in C, builds on the CycloneTCP networking library, and integrates a full MQTT server, a Home Assistant bridge, a web administration interface, and tools for firmware patching (ESP32, CC3200, CC3235) and certificate generation. It also includes a WebAssembly-based TAF audio encoder for browser-side use. The codebase is a result of extensive reverse engineering of the Toniebox protocol, demonstrating deep expertise in embedded systems, cryptography, and IoT networking. While tightly coupled to the Toniebox ecosystem, several components (MQTT server, settings overlay system, WASM encoder) are designed with sufficient abstraction to be reusable in other contexts.
This is a custom firmware project for the EleksTubeHAX family of IPS nixie-tube-style desk clocks. It is an embedded C++ application targeting ESP32 microcontrollers (ESP32, ESP32-S2, S3, C3) using the PlatformIO build system. The firmware provides a full-featured digital clock with customizable clock faces (stored as BMP or CLK images in LittleFS), WiFi connectivity (WPS, static IP), NTP time sync with adaptive polling intervals, battery-backed RTC support (DS1302, DS3231, RX8025T), and RGB backlight control (WS2812 LEDs) with multiple effects (pulse, breath, rainbow). It includes an on-device menu system with button (and gesture sensor) navigation, Home Assistant MQTT auto-discovery for remote control, and IP geolocation for automatic timezone/DST detection. The architecture is a monolith with clear class separation (Backlights, Buttons, Menu, TFTs, Clock, ChipSelect, WiFi_WPS, MQTT_client, IPGeolocation). The code heavily uses conditional compilation (#ifdef HARDWARE_*) to support over a dozen physical clock variants (EleksTube, SI HAI, Xunfeng, IPSTube, MarvelTubes, etc.), which increases complexity but enables a single codebase to target many boards. The project includes forked and modified libraries (TFT_eSPI, NTPClient, RTC_RX8025T, SparkFun APDS9960) integrated into the repo, which may diverge from upstream over time.
This repository provides the Home Assistant add-on packaging for Zigbee2MQTT, a Zigbee to MQTT bridge. It contains Docker build configurations, entrypoint scripts, and add-on metadata to run Zigbee2MQTT as a managed add-on within Home Assistant OS or Supervised installations. The actual Zigbee2MQTT application is fetched from its upstream repository during Docker build (either a stable release or the dev branch for the edge variant). The add-on supports serial device passthrough, socat for remote serial forwarding, MQTT auto-discovery via Home Assistant services, and an ingress-enabled web frontend. The codebase is primarily configuration and build orchestration; there is no application logic beyond the entrypoint script that translates add-on configuration into environment variables for Zigbee2MQTT. It is a well-structured, actively maintained add-on following Home Assistant best practices, but offers no reusable software components outside the Home Assistant ecosystem.
This repository provides firmware for ESP8266/ESP32 microcontrollers to interface Mitsubishi Heat Pumps (HVAC units) with MQTT and Home Assistant. The firmware runs on the ESP board, which connects to the heat pump's serial interface using the SwiCago/HeatPump library, and exposes a web interface for configuration and control, as well as MQTT topics for integration with smart home systems. It supports Home Assistant MQTT auto-discovery, Prometheus metrics, OTA firmware updates, and multi-language web UI. The architecture is a monolithic Arduino sketch with separate header files for configuration, HTML templates, JavaScript, and language strings. Key entry points are the setup() and loop() functions in mitsubishi2mqtt.ino, which initialize WiFi, MQTT, the heat pump connection, and a web server. Data flows: the ESP reads heat pump status via serial, publishes state to MQTT, subscribes to command topics, and serves a web control panel. External dependencies include the HeatPump library, ArduinoJson, PubSubClient, and the ESP8266/ESP32 Arduino core.
This repository is a collection of Home Assistant blueprints (YAML automation and script templates) that enable voice-controlled music playback via the Music Assistant integration. It provides three distinct options: a fully local intent-based automation using custom conversation triggers, an LLM-enhanced automation that leverages an external LLM conversation agent to parse natural language queries, and an LLM script that can be used as a tool by LLM conversation agents for more flexible music requests. The blueprints are well-structured with multi-language support (English, Dutch, French, German, Hungarian, Italian, Portuguese, Slovak, Spanish, Finnish) and demonstrate advanced use of Home Assistant's conversation triggers, Jinja2 templating, and integration with Music Assistant's play_media service. The repository is community-driven and actively maintained, with detailed documentation and changelogs. While tightly coupled to Home Assistant and Music Assistant, the blueprints exhibit good craftsmanship in handling target resolution, shuffle logic, and LLM prompt engineering.
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.
Firemote is a Home Assistant custom dashboard card that emulates physical remote controls for a wide range of media devices including Amazon Fire TV, Apple TV, Chromecast, NVIDIA Shield, Roku, Xiaomi, and more. The card provides realistic visual remotes with extensive customization: over 330 app launcher shortcuts, button overrides via Home Assistant scripts or actions, multiple remote styles, and support for device-specific compatibility modes. It integrates with Home Assistant's Android Debug Bridge, Android TV Remote, Apple TV, and Roku integrations. The repository contains the compiled JavaScript card and supporting data files for device definitions and translations, but the source is distributed as a single minified bundle. It is actively maintained with a large community and frequent updates.
This repository is a build configuration for the Home Assistant Docker base image. It contains a multi-stage Dockerfile that installs various system dependencies (bluez, ffmpeg, nmap, etc.), builds and integrates third-party libraries (ssocr, libcec, PicoTTS, Telldus) via builder stages, installs Python wheels from a requirements.txt, and copies a root filesystem overlay. The CI/CD pipelines (builder.yml, hadolint, shellcheck, release drafter) automate building multi-arch images for amd64 and aarch64, and publishing on releases. The repository itself does not contain any application code, CLI entry points, or service logic; it purely defines how to assemble the container environment used by Home Assistant Core. Its architecture is a set of build scripts and Dockerfile instructions. Key entry points are the Dockerfile and the builder workflow. External dependencies include Alpine Linux packages, Python packages (Brotli, mysqlclient, psycopg2), and upstream project patches.
This repository contains the Debian packaging and installer scripts for Home Assistant Supervised, an advanced installation method that runs the full Home Assistant Supervisor stack on a standard Debian operating system using Docker. The package configures system services (NetworkManager, systemd-resolved, AppArmor, Docker), downloads and runs the Supervisor container, and sets up the necessary systemd units and configuration files. The installer is a set of Debian maintainer scripts (preinst, postinst, postrm) that orchestrate the setup, including network checks, Docker image pulls, and system hardening. The project is explicitly deprecated as of Home Assistant OS 2025.12.0 and is no longer supported, though the code remains functional for legacy installations. It is a straightforward, well-structured installer with no reusable software components beyond its specific deployment purpose.
This repository is a Home Assistant custom integration for displaying ICS (iCalendar) calendars. It fetches calendar data from remote URLs, handles authentication and URL templating, parses ICS files using either the 'recurring_ical_events' or 'ics' library, applies event filtering, and exposes the events as a Home Assistant calendar entity. The architecture follows Home Assistant's custom integration patterns with separate modules for data fetching, parsing, filtering, and entity management. While functional, the project shows signs of stagnation due to expressed maintainer lack of motivation, dependency version pinning, and impending obsolescence from Home Assistant's built-in Remote Calendar integration.
This repository provides a custom Lovelace card for Home Assistant that replaces the default sidebar with a fully customizable sidebar. The card is implemented as a single TypeScript file (src/sidebar-card.ts) using LitElement and integrates with Home Assistant via card-tools and custom-card-helpers. It supports analog/digital clocks, date display, a configurable menu with navigation, toggle, call-service, and other actions, template-based messages, and a bottom card slot. The initialization code modifies the DOM to wrap the main view and insert the sidebar, and can hide the default HA header, footer, and sidebar. The codebase is functional but shows signs of technical drift (outdated dependencies like LitElement 2.x, Moment.js, old TypeScript) and tight coupling to the Home Assistant DOM structure. It is actively used (498 stars) but has 49 open issues.
This repository is a personal Home Assistant configuration for a multi-occupant smart home, managing lights, sensors, cameras, locks, media players, and presence detection across numerous devices. It integrates over 30 services including ZHA, Frigate, Ecobee, Sonos, Alexa, and Google Assistant through a modular YAML structure with blueprints, Python scripts, and shell scripts. The codebase demonstrates patterns for MQTT discovery, presence fusion, and external API wrappers, but is heavily tied to a specific hardware setup and runs on an outdated Home Assistant version (0.92). Many integrations referenced are deprecated, and several shell scripts contain hardcoded credentials or paths, limiting reusability. The repository is stale with no recent maintenance, and some Python scripts contain syntax errors indicating untested code.