4.3 KiB
4.3 KiB
GREE Controller v0.4.5 - build and validation report
v0.4.5 compile fix
- Fixed Rust borrow-checker error
E0502inGreeProtocol::poll. - The bound device key is now cloned into an owned
Stringbefore mutating theDevicewithapply_status. - Subsequent full/core/
OutEnvTemstatus requests borrow that owned key, so no immutable borrow ofdevice.keysurvives across the mutable device update.
Scope
Version 0.4.4 fixes empty/under-populated history views and expands climate telemetry across GREE devices, zones and Home Assistant sensors. It also adds URL-addressable UI pages, History sub-pages, a saved/shareable custom chart composer, redesigned toasts and optimistic Quick Thermostat controls that no longer clear the active preset.
History and chart changes
readingsremains the independent history source for every GREE device, whether or not the device belongs to a zone.- Added bucketed device-history queries for indoor temperature, available GREE
OutEnvTem, target and power. - Added
ha_readingsfor configured HA room/outdoor sensors. - Existing
zone_readingsremains the rich thermostat timeline with GREE temperature, HA room temperature, control temperature, target, actual device setpoint, outdoor temperature, power, mode, fan, demand, source and preset. /api/history?scope=overviewreturns device, zone and HA streams together plus row counts.- If a zone has no
zone_readingsyet, the API reconstructs a compatibility timeline from its existing devicereadingsinstead of returning an empty chart. - Older rich zone samples can be exposed as compatibility HA history when the dedicated HA table has not accumulated samples yet.
- GREE polling now probes
OutEnvTemseparately after a core-property fallback so models that expose outdoor temperature can contribute that series without making the main poll fail. - History UI is split into Overview, Zones, GREE devices, HA sensors and Custom chart sub-pages.
- Overview includes common charts for all GREE indoor temperatures, available outdoor temperatures and all zone control temperatures.
- The custom chart composer can mix GREE device, zone and HA sensor series, save chart definitions in browser storage and serialize them into a shareable URL.
Browser navigation and feedback
- Main application views use stable paths such as
/dashboard,/devices,/zones,/schedules,/automations,/settingsand/events. - History uses
/history/overview,/history/zones,/history/devices,/history/sensorsand/history/custom. - Browser Back/Forward and direct page refresh are handled by History API routing plus the server-side index fallback.
- Toasts are now stacked, theme-aware success/error cards with close controls and progress indicators.
Quick Thermostat fix
+/-updates the displayed target immediately and batches rapid taps with a short debounce.- Stale HTTP responses cannot overwrite a newer tap.
- Added
manual_setpointseparately frommanual_preset. - A temperature nudge no longer changes Auto/Comfort/Sleep/Away to
customor clears the active preset. - Manual temperature correction still expires at the next schedule boundary.
SQLite / compatibility
- Added
ha_readingsand indexes through idempotentCREATE TABLE IF NOT EXISTSschema initialization. - All SQL remains centralized in
src/queries.rs. - Existing
readings, devices, zones, schedules, automations and settings are preserved. - No database reset is required.
Validation performed in packaging environment
- JavaScript syntax:
node --check web/app.js. - JSON validation for EN/PL language packs, PWA manifest and HA manifest.
- Shell syntax validation for every
scripts/*.shfile. - Python syntax validation for helper scripts.
- SQLite execution tests for the schema, device bucket queries, zone bucket queries, HA bucket queries and history counts.
- EN/PL translation-key parity check.
- Verified project SQL statements remain centralized in
src/queries.rs. - Verified no Node/npm/Tailwind runtime or build dependency exists.
- ZIP integrity and SHA-256 manifest verification.
A Rust toolchain is not installed in the packaging environment. The authoritative Rust compile/tests are therefore intentionally performed on the target LXC by scripts/update.sh before it replaces the running binary:
cargo test --all-targets
cargo build --release