44 lines
3.3 KiB
Markdown
44 lines
3.3 KiB
Markdown
# Home Assistant Green Smart UPS Monitor
|
|
|
|
## Overview
|
|
This project provides a DIY Uninterruptible Power Supply (UPS) with smart monitoring for a Home Assistant Green (HAG) hub. It leverages an ESP32-H2 microcontroller utilizing the Thread protocol to relay mains power status and battery levels back to Home Assistant.
|
|
|
|
By using the "Hardware Cutoff" configuration, the system avoids the need for relays. It strictly relies on the HW-465C UPS module's internal low-voltage cutoff to power down the HAG, allowing the HAG to automatically reboot when grid power restores the 12V rail.
|
|
|
|
## Core Components
|
|
* **Home Assistant Green:** The main smart home hub (Load).
|
|
* **ESP32-H2 Super Mini:** Acts as the Thread end-device sensor node.
|
|
* **SLZB-MR5U:** Serves as the OpenThread Border Router (OTBR) connecting the Thread network to Home Assistant.
|
|
* **HW-465C UPS Module:** 12V Step-up boost converter and battery charger.
|
|
* **2x 18650 Battery Cells:** Wired in parallel (1S2P).
|
|
* **MAX17043 I2C Fuel Gauge:** Monitors 1S battery state of charge (SoC).
|
|
* **EL817 Optocoupler:** Detects mains 5V presence safely.
|
|
* **Mini360 Buck Converter:** Steps down the 12V output to 5.0V for the ESP32.
|
|
|
|
## Implementation & Wiring
|
|
The ESP32-H2 is powered via the Mini360 buck converter from the 12V output. This guarantees that when the HW-465C battery protection trips (~2.5V), the ESP32 cleanly loses power alongside the HA Green, preventing deep-discharge battery damage.
|
|
|
|
### Power Path Connections
|
|
1. **5V Wall Charger** -> Connects to `IN+` / `IN-` on HW-465C.
|
|
2. **18650 Parallel Pack** -> Connects to `B+` / `B-` on HW-465C.
|
|
3. **HW-465C 12V Output** -> Splits to HA Green Barrel Jack **and** Mini360 `IN+` / `IN-`.
|
|
4. **Mini360 5.0V Output** -> Connects to ESP32-H2 `5V` and `GND` pins.
|
|
|
|
### ESP32-H2 Super Mini Pinout Map
|
|
| Component | ESP32-H2 Pin | Description |
|
|
| :--- | :--- | :--- |
|
|
| **Mini360 (5V Power)** | `5V` & `GND` | Main power input for ESP32. |
|
|
| **MAX17043 (Fuel Gauge)** | `3V3` & `GND` | Power out to MAX17043 module. |
|
|
| **MAX17043 (I2C SDA)** | `GPIO 10` | I2C Data Line. |
|
|
| **MAX17043 (I2C SCL)** | `GPIO 11` | I2C Clock Line. |
|
|
| **EL817 (Outage Sensor)** | `GPIO 4` | Pull-up input for mains detection. Emitter connects to `GND`. |
|
|
|
|
### Sensor Detection Logic (EL817)
|
|
* **Input Side:** 5V Mains (Before UPS) -> 330Ω Resistor -> EL817 Anode (Pin 1). Cathode (Pin 2) -> Mains GND.
|
|
* **Output Side:** EL817 Collector (Pin 4) -> ESP32 GPIO 4. EL817 Emitter (Pin 3) -> ESP32 GND.
|
|
* **Logic:** When 5V mains is active, the optocoupler pulls GPIO 4 to GND (LOW). ESPHome inverts this so `LOW` = `ON` (Mains present).
|
|
|
|
## Network & Controls
|
|
* **Thread Protocol:** The ESP32 is configured in ESPHome using the `openthread` component.
|
|
* **End-Device Mode:** The `device_type` is set to `MTD` (Minimal Thread Device). This explicitly disables the router/repeater functionality, ensuring the module operates efficiently as an end-device node routing through the SLZB-MR5U.
|
|
* **Auto-Boot Operation:** Because there is no active software shutdown command sent to Home Assistant, the HA Green stays active until the battery triggers the physical HW-465C shutoff. Once mains voltage returns, the 12V rail steps up from 0V to 12V, initiating an automatic cold boot of the Home Assistant Green. |