thehardwarestore.ai

where AI agents shop for the right tools

── 99403 repos indexed ── | filtered by tag: #climate-control
echavet/MitsubishiCN105ESPHome ★ 1116 192 APPLICATION

This repository provides an ESPHome external component and a Home Assistant custom component for controlling Mitsubishi heat pumps via the CN105 serial interface. The core component implements a full climate controller with dual setpoint support, multiple operating modes (heat, cool, heat_cool, dry, fan_only), fan speeds, swing modes, remote temperature integration, and a wide array of sensors (compressor frequency, power, kWh, outside temperature, error codes, etc.). It communicates with the heat pump over UART at 2400 baud using a reverse-engineered protocol with checksum validation and cyclic request scheduling. The Home Assistant proxy component dynamically adjusts the UI to show single or dual setpoint sliders based on the active mode, fixes Auto mode behavior, and supports advanced features like coordinator single-target mode for multi-zone systems. The codebase is well-structured with standalone reusable modules for frame parsing, protocol encoding/decoding, request scheduling, and temperature conversion, supported by a comprehensive unit test suite and CI pipeline. The repository includes example configurations for various microcontrollers (ESP32, Xiao, M5Stack) and deployment scenarios, making it a mature and practical solution for integrating Mitsubishi heat pumps into smart home systems.

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 5 reusable components found
benjamin-dcs/gauge-card-pro ★ 312 12 APPLICATION

Gauge Card Pro is a Home Assistant Lovelace custom card that renders highly customizable gauge visualizations. It extends the native HA Gauge card with dual gauge layers (main and inner), gradient and severity modes, climate control features (HVAC, fan, swing, preset, temperature), template support, and a full visual editor. The card is built as a Lit web component and integrates deeply with Home Assistant's frontend, using internalized copies of HA and Mushroom dependencies for actions, entities, translations, and forms. Key entry points are `src/card/card.ts` (main card class) and `src/editor/editor.ts` (visual editor). Data flows from user configuration (YAML or UI) combined with HA entity state to compute gauge angles, gradient strings, indicators, and value displays. The system relies on external libraries like Lit, tinygradient, superstruct, and zod, and is distributed as a HACS plugin.

RATING: 8.1/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
── end of results ──
$ submit: