46 lines
3.6 KiB
Markdown
46 lines
3.6 KiB
Markdown
# GREE Controller v0.5.0 - build and validation report
|
|
|
|
## Scope
|
|
|
|
Version 0.5.0 focuses on dashboard thermostat control, metric retention/archiving, quieter GREE commands, diagnostics, configuration backup and a machine-readable automation plan shared by the Web UI and Home Assistant.
|
|
|
|
## Implemented changes
|
|
|
|
- Quick Thermostat cards on the dashboard can enable/disable a zone directly; the edit dialog is no longer required for this action.
|
|
- SQLite history housekeeping is tiered to chart resolution: full recent data, 10-minute buckets after 24 hours and 30-minute buckets after 7 days.
|
|
- Optional long-term InfluxDB archive supports both InfluxDB 1.x (database/basic auth) and 2.x (org/bucket/token), from persisted settings or environment variables.
|
|
- New samples are written to SQLite and InfluxDB in parallel when the archive is enabled.
|
|
- Maintenance backfills compacted legacy SQLite samples older than the configured Influx handoff age. A local row is deleted only after the Influx batch succeeds; archive failures keep the SQLite copy.
|
|
- History requests crossing the handoff age merge old InfluxDB data with recent SQLite data and fall back to SQLite when the archive query fails.
|
|
- Device commands are reduced to fields that actually changed. Optional GREE buzzer suppression uses `Buzzer_ON_OFF`/`BuzzerCtrl`; incompatible devices automatically fall back to normal frames and are remembered for the running process.
|
|
- Toast progress indicators have horizontal inset so they stay inside rounded toast corners.
|
|
- Settings can be exported/imported as JSON. Metrics, event logs and generated API-token records are preserved during import. Exported configuration contains configured secrets and must be protected.
|
|
- Optional on-screen debug overlay is available on every Web UI route, can be changed through `/api/debug`, shows controller events plus live HTTP method/path/status timing and can include sanitized decrypted GREE request/response payloads.
|
|
- `/api/control-plan` exposes house state, current zone decisions, schedules, upcoming transitions and automation rules/time events.
|
|
- The dashboard renders the control plan as blocks with current targets/demand and upcoming actions.
|
|
- Home Assistant integration now also exposes whole-house/per-zone plan sensors, writable per-zone target-temperature `number` entities and per-zone enable `switch` entities via the restricted integration API.
|
|
|
|
## Validation performed in packaging environment
|
|
|
|
- `node --check web/app.js`.
|
|
- Python syntax validation for the Home Assistant integration and helper scripts.
|
|
- Shell syntax validation for all `scripts/*.sh` files.
|
|
- JSON validation for EN/PL language packs, PWA manifest, Home Assistant manifest and HA translations.
|
|
- EN/PL UI translation-key parity and literal UI translation-reference validation.
|
|
- SQLite schema execution plus tiered compaction tests.
|
|
- SQLite archive-selection query tests for device, zone and Home Assistant histories.
|
|
- Configuration-clear behavior verified to preserve metric history, event logs and API tokens.
|
|
- Version consistency checked for Cargo package, Cargo lock root package, README and Home Assistant manifest.
|
|
- Archive ZIP integrity and SHA-256 manifest are verified during final packaging.
|
|
|
|
## Rust compiler note
|
|
|
|
The packaging environment does not contain `rustc`, `cargo` or `rustfmt`, so a Rust compile cannot be executed here. Regression tests were added for unchanged-command filtering and history compaction; the target LXC update/install scripts remain the authoritative compile gate and run:
|
|
|
|
```bash
|
|
cargo test --all-targets
|
|
cargo build --release
|
|
```
|
|
|
|
The update script must complete those commands before replacing the running binary.
|