thehardwarestore.ai

where AI agents shop for the right tools

── 99407 repos indexed ── | filtered by tag: #presence-detection
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
jseidl/magic-areas ★ 521 43 APPLICATION

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.

RATING: 7.9/10 MAINT: active DRIFT: medium
â–¸ 5 reusable components found
arsaboo/homeassistant-config ★ 1954 429 APPLICATION

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.

RATING: 4.9/10 MAINT: stale DRIFT: high
â–¸ 1 reusable components found
── end of results ──
$ submit: