This repository implements a custom Lovelace card for Home Assistant that displays an interactive map of a robot vacuum's environment. It allows users to select zones, rooms, points, or paths for cleaning and sends corresponding service calls to the vacuum. The card supports multiple vacuum platforms (Xiaomi Miio, Roborock, Valetudo, Neato, Dreame, Roomba, etc.) via platform-specific templates that define map modes, tiles, and icons. It includes a visual editor, localization in 28 languages, pinch-zoom functionality, and a configurable tile/icon system. The architecture is a single-page web component built with LitElement, with modular internal components for map objects, map modes, generators, and UI elements. It relies on Home Assistant frontend internals and custom-card-helpers. The codebase is well-structured with reusable patterns like dependency injection (Context), coordinate transformation (CoordinatesConverter), and template-based service call generation (ServiceCallSchema). However, it has some technical drift due to deprecated rollup plugins, polyfills for legacy browsers, and tight coupling to HA APIs that may break with updates.
Magic Areas is a Home Assistant custom integration that turns HA's area registry into an occupancy-aware automation layer. In production it listens to entity states across configured areas, computes presence from motion sensors, device trackers, and occupancy binary sensors, manages clear timers and secondary states (dark, sleep, extended), and publishes derived entities: area presence binary sensors, smart light/fan/cover/media groups, aggregate sensors, and feature-override switches. It is event-driven and tightly coupled to Home Assistant internals: the area/entity registries, dispatcher, event bus, async timers, and group entities.
This repository is a large collection of Bash scripts that automate the deployment, configuration, and update of self-hosted services on Proxmox VE, primarily through LXC containers and VMs. It is a provisioning and automation framework rather than a runtime application: each ct/*.sh script declares resource variables (CPU, RAM, disk, OS template) and an optional update_script(), while install/*.sh scripts run inside an existing container to install a specific application. Usage is typically a one-line curl command executed as root on the Proxmox host, after which the script creates a container/VM, installs dependencies, generates credentials, writes systemd units or OpenRC init scripts, and configures databases and reverse proxies. The architecture is layered: hundreds of app-specific scripts wrap a smaller set of shared Bash function libraries in the misc/ directory (build.func, install.func, vm-core.func, core.func, error_handler.func). These shared functions handle common operations such as fetching GitHub releases, setting up language runtimes, creating databases, backing up configs before updates, and standardizing error handling. Update flows generally stop the service, back up configuration/data, fetch the latest release, restore the backup, run migrations, and restart the service. This consistency is the project's main strength and makes adding a new container recipe relatively straightforward. Weaknesses are typical of a large community-driven shell-script collection: no unit tests, heavy reliance on third-party installers fetched via curl|bash, some hardcoded versions, and external dependencies on GitHub release asset names and remote core-library URLs. Many scripts assume Debian/Ubuntu or Alpine bases and run as root with no signature verification. Despite these risks, the codebase is actively maintained, consistently formatted, and the shared function libraries are practical examples of reusable Bash abstractions for Proxmox automation.
This repository is a Home Assistant custom integration for communicating with Solarman Stick Loggers to monitor and control solar inverters. It uses Modbus TCP/RTU to read/write inverter registers, exposing the data as Home Assistant entities (sensors, switches, etc.). The integration includes a device discovery mechanism via UDP broadcast, a configuration flow for setup, and a coordinator for periodic data updates. It also provides services for arbitrary Modbus register operations. The inverter definitions are stored in YAML files that specify the register mappings and sensor configurations for various inverter models.
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).
This repository is the deCONZ REST plugin, a C++/Qt plugin that turns a ConBee/RaspBee Zigbee USB gateway into a full-featured IoT controller. It exposes a REST API (emulating Philips Hue) to manage lights, sensors, groups, scenes, rules, schedules, alarms, and devices over Zigbee (ZCL, ZDP, Green Power). The architecture is a monolithic Qt plugin running inside the deCONZ application, with a dedicated event loop, WebSocket server, and persistent SQLite database. Key entry points include `DeRestPlugin` (plugin interface), `DeRestPluginPrivate` (core logic), and REST handlers in files like `rest_lights.cpp`, `rest_sensors.cpp`, `rest_groups.cpp`. Device support is largely externalized via JSON Device Description Files (DDF) and embedded JavaScript (Duktape) for vendor-specific parsing. External dependencies include Qt 5/6, OpenSSL (dynamically loaded), Duktape, and system utilities (tar, gzip). The codebase is actively maintained with frequent commits, but contains technical debt from legacy device quirk handling and dual (DDF vs. legacy) initialization paths.
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.
This repository is a comprehensive IoT device driver library for .NET nanoFramework. It provides bindings for hundreds of sensors, actuators, displays, and communication modules (e.g., BME280, SSD1306, NFC, Modbus, cellular modems, GPS). The architecture is a collection of independent driver projects, each with its own samples, tests, and documentation. Shared utility libraries (e.g., System.Device.Model, NumberHelper, SpanByte compatibility shims) support cross-cutting concerns. The codebase is actively maintained with frequent commits, but the sheer number of drivers (300+) leads to varying quality, some code duplication (e.g., SpanByte classes in multiple locations), and partially auto-generated code. Networking components like DHCP server, DNS server, and Home Assistant MQTT integration extend the library beyond raw sensor access. The primary use case is building embedded IoT applications on microcontrollers (ESP32, STM32) running nanoFramework.
This repository is a sample application for the Google Home Local SDK, demonstrating how to create a local fulfillment for a smart light device. It consists of three main parts: the local home app (in the `app` directory) that discovers and controls the device using various network protocols (UDP, mDNS, UPnP for discovery; UDP, TCP, HTTP for control); a virtual device (in the `device` directory) that simulates a smart light using the Open Pixel Control (OPC) protocol and supports the same discovery and control protocols for testing; and a Cloud Function (in the `functions` directory) that acts as a placeholder for the cloud-to-cloud backend, handling account linking and returning placeholder responses for SYNC and QUERY intents (while deferring EXECUTE and QUERY to the local fulfillment). The local home app uses a strategy pattern to delegate discovery and execution handling to protocol-specific implementations. The virtual device encapsulates the OPC protocol logic in a reusable component that is independent of the underlying transport mechanism.
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.
Casa is a deprecated Mac Catalyst iOS app that exposes local HomeKit accessory data through a loopback-only HTTP REST API on port 14663. The architecture is a SwiftUI Mac app (Casa/) paired with an embedded Swift Package CLI (CasaCLI/) that communicates with the app's local server. The core server (HomeKitServer.swift) uses Apple's Network framework (NWListener) to serve HTTP/1.1, with a custom HTTP request parser and JSON response builder. HomeKit access is gated behind an opt-in module system and requires the HomeKit entitlement. The app includes Sparkle for updates, an onboarding flow, settings persistence via UserDefaults, and a file-based rotating logger. The codebase demonstrates solid engineering practices: the HTTP server is hand-rolled without third-party dependencies, the request parser handles keep-alive and content-length correctly, the JSON envelope pattern is consistent, and the HomeKit mapping layer cleanly separates Apple's types from API DTOs. The test suite covers HTTP parsing, response encoding, schema payload generation, settings persistence, and CLI platform gating. SwiftLint is configured and CI/CD workflows exist for building and releasing. The README explicitly states deprecation and points to a successor (omarshahine/HomeClaw). The last commit was 2026-05-30, and the project uses Swift 5.0 with iOS 16.0 deployment target — both showing moderate drift. The Sparkle feed URL and public key are placeholder values in the pbxproj. The codebase is well-structured but no longer maintained.
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.