Live Source Data
Live source status loading...Energy Resilience Forecast
Reading local telemetry and historical profiles.
Historical-profile forecast. No weather API is used in v1.
This data is not used in the Energy Resilience Forecast.
Stored weather forecasts are being matched to actual hourly PV production to build a site-specific evidence set. This evidence is not yet used to adjust the Energy Resilience Forecast.
Select an hour for its local evidence detail.
Recent completed physical hours
| Actual hour | Actual PV | Evidence | Lead buckets | Quality | Reason |
|---|
Controls are locked.
Did You Know?
Bite-sized facts from your solar, savings, live rollup, and tariff dataReading your local dashboard data.
Tariffs & Savings
Enter an import tariff to calculate historic and live savingsWaiting for calculation reconciliation.
Monthly Energy Balance
Solar, consumption, and grid importSelf-Sufficiency
Share of consumption not supplied by gridWeather Impact
Average solar kWh per dayMonthly Savings Trend
Baseline cost, actual bill estimate, and net savingsBattery Throughput
Monthly charge and discharge energySolar Condition Days
Number of days in each peak-sun-hour bandSolarman Energy Split
API ratio trends for generation, battery, use, and importYear-over-Year Solar
Monthly solar production compared by calendar monthMonthly Detail
--Monthly rollup table Workbook totals by month
| Month | Days | Solar | Consumption | Grid | Self-suff. | Weather |
|---|
Top Production Days
Highest daily solar readingsTop production days table Latest high-production days first
| Date | Solar | Peak h | Weather | Grid |
|---|
Low Production Days
Lowest daily solar readingsLow production days table Lowest solar days first
| Date | Solar | Peak h | Condition | Grid |
|---|
Monthly Savings Detail Baseline cost, actual cost, and net savings
| Month | Tariff plan | Tariff period | Baseline cost | Grid energy cost | Published fixed | Fixed VAT | Baseline fixed | Actual fixed | Fixed avoided | DSM levy | Actual bill est. | Net savings | Avoided grid | Export credit |
|---|
Battery Information
Configured battery facts, bank-level telemetry, and transparent historical estimates.
Estimated from bank-level energy allocation. Not an individual BMS cycle counter.
How these estimates are made
Completed daily bank charge and discharge history is allocated only to physical batteries active after their installation date and before any removal date. Shares are weighted by configured nominal kWh. Current bank SOC and power, where available, are bank-level telemetry only.
Reference cycle-life values are specification comparisons, not guarantees or direct health measurements. The current partial day is excluded.
Cycle and throughput trends
Monthly EFC added
Cumulative estimated EFC
Charge and discharge throughput
Rolling 30-day cycling rate
Seasonal bank EFC by calendar month
Battery addition timeline
Data quality and provenance
Live Data Reliability
Checking source freshness and rollup recoveryReliability health, recovered gaps, and generator sessions Daily recovery uses history without inventing missing hourly detail
Rollup gaps and recovery
| Date | Original coverage | Missing | Recovery | Source |
|---|
Source quality rates
| Source | Metric | Received | Accepted | Held | Discarded | Policy filtered | Faults / 1,000 |
|---|
Generator session ledger
| Started | Ended | Status | Source | Runtime | Energy | Fuel | Cost | Cost/kWh | Confidence |
|---|
Live Daily Totals
Waiting for live rollup dataDaily totals table PV, load, battery, grid, generator, fuel, and cost
| Date | Coverage | PV | Load | Grid import | Grid export | Battery charge | Battery discharge | SOC range | Generator | Generator runtime | Fuel | Cost | Cost/kWh | Generator states |
|---|
Live Hourly Rollups
Latest saved live-source hourly aggregatesHourly rollups table Expand for recent hourly detail
| Hour | Coverage | PV | Load | Grid import | Grid export | Battery charge | Battery discharge | SOC range | Generator | Generator runtime | Fuel | Cost | Cost/kWh | Generator states |
|---|
Live Source Messages
Latest raw values received from the selected live sourceMessages table Expand for the latest live source values
| Source | Topic | Value | Received |
|---|
Generator Control Events
No generator control events recordedSwitch commands and confirmations Relay, availability, and physical generator evidence
| Time | Event | Action | Outcome | Relay | Generator | Source | Detail |
|---|
Generator Automation Events
No generator automation events recordedForecasts, fuel warnings, and automated decisions Shadow, planned, emergency, skipped, and command events
| Time | Event | Outcome | Action | SOC | Target | Fuel | Reason |
|---|
Generator Maintenance & Fuel History
No maintenance or refill events recordedService, oil, refill, calibration, and readiness evidence Confirmed runtime only; missing runtime is never estimated
| Time | Event | Cycle | Result | Hours / litres | Cost / factor | Detail |
|---|
Live Quality Events
No live quality events recordedHeld and discarded messages table Out-of-bounds and confirmation-filtered live source samples
| Time | Source | Topic | Value | Type | Reason | Compensation |
|---|
Inverter State Events
No impossible inverter settings recordedPersistent setting alerts and investigation history Separate from brief live quality events; active errors remain until valid settings return
| Status | Setting | Reading | Register & integrity | Active context | Source & latest reading | Explanation & action | Checks & resolution | Expected range | Last valid reading | First seen | Latest / resolved | Count |
|---|
Dashboard write access
Unlock configuration changes for 15 minutes. Read-only dashboard use remains available without unlocking.
Dashboard changes are locked.
System Setup
Installation details, safety validation, and display preferences
User Preferences Battery bank details used by live rate calculations
The live +/- percentage compares battery power with stored-energy capacity. Ah is retained as useful battery-bank metadata and for a nominal-voltage check.
15.36 kWh and 300 Ah imply a 51.2 V nominal battery bank.
This only changes the visual panel. Sensor mappings, live source data, rollups, and calculations stay unchanged.
Battery Bank Configuration Physical batteries and estimated cycle analytics
Physical battery records supplement the current bank preferences. Existing capacity settings remain the compatibility source for live calculations.
Derived physical-bank summary
Loading physical battery records...
Physical batteries
Physical batteries are local configuration only.
Battery Cycle Analytics
Read-only estimateEstimated equivalent full cycles from discharge throughput. Daily bank throughput is allocated by the nominal capacity active on that date; this is not a BMS or warranty cycle counter.
Loading local Solarman history...
Weather/Solar Forecast Shadow Mode Optional Open-Meteo collection; not used by the resilience forecast yet
The dashboard server can collect weather and solar forecast snapshots for later calibration. This is advisory data only: it never controls equipment and does not change the current Energy Resilience Forecast.
Collection is disabled until a reviewed location is saved and enabled.
Did You Know Tone used for insight cards
Choose how the Did You Know cards should speak. The numbers and calculations stay exactly the same.
Inverter State Validation Explicit installation settings used consistently with or without SolarAssistant
Complete this one-time setup before persistent inverter-setting validation becomes active. These installation choices do not depend on SolarAssistant and remain authoritative when using either live source.
Validation setup is incomplete. Choose every installation setting, then save.
Live Connections
Choose and configure the source that powers live monitoring
Live Data Source SolarAssistant MQTT only; direct Solarman networking is safety-disabled
SolarAssistant MQTT Use when SolarAssistant is publishing MQTT state messages
Enter SolarAssistant MQTT details, then save to verify the broker.
MQTT receives messages published by SolarAssistant. It does not poll the inverter or Solarman dongle.
Deye Solarman Dongle Direct local networking disabled by IR-01
Direct Solarman dongle networking is disabled by inverter write-isolation. Cached history remains available.
Estimated request rate will appear here.
Live dongle diagnostics are safety-disabled by inverter write-isolation.
Generator Control Local active-low Tuya switch controlling the voltage-sensing ATS
Configure the local Tuya switch, then test and save.
Maintained active-low control: relay OFF removes ATS power and requests generator start; relay ON restores ATS power and requests generator stop. Dashboard startup only reads the relay and never changes it. Keep the Tuya app's relay status setting on Remember last status.
The control PIN starts and stops the generator. The configuration PIN saves switch details from this PC or another local-network device, such as your phone.
Generator Automation Overnight SOC guardian with fuel-aware start/stop decisions
Automation is disabled until configured and explicitly armed.
Historical Data
Select where long-term production and savings history comes from
Historic Data Source Use the workbook or imported Solarman OpenAPI history
Resolved Historical Data Approved per-field history used by local historical analytics
Loading approved resolved-history status...
Workbook Upload the active historic data workbook
Solarman OpenAPI History Cloud station history imported into the local dashboard cache
Waiting for Solarman API access.
Tracker waiting for API configuration.
Tariffs & Costs
Rates and fuel inputs used in savings and generator calculations
Tariff Application & Municipal Billing Choose which plan applies to each tariff year and when fixed charges stopped
The usual plan is applied across all available tariff years, using the rates published for each matching period. Add exceptions only for tariff years when another plan applied.
Tariff-year exceptions
Leave a row on Use usual plan unless another plan applied for most of that period| Tariff period | Assigned plan | Pricing status |
|---|
This is separate from live off-grid telemetry. Fixed charges are avoided only after the municipal account or supply is no longer billed.
Choose the plan normally used by this installation.
Tariff Profile Residential tariff periods used for historic and live savings calculations
Create or select a tariff plan, edit the selected tariff period, then save. Add tariff period is used when a new tariff year or schedule starts.
Consumption Blocks
Monthly progressive rates| From kWh | To kWh | Published rate R/kWh |
|---|
Generator Fuel Diesel price and current tank level
Fuel calibration needs three reliable refill intervals.
Generator Maintenance Service hours, oil changes, and backup readiness
Set the current hours remaining; the dashboard will count down only confirmed generator runtime.
Tariff Schedule Import Upload residential tariff PDFs, review extracted periods, then accept into tariff profiles
Advanced: local AI assistance Optional fallback for unusual PDFs
Local AI is optional. It may help interpret unusual PDFs, but deterministic extraction and validation remain the source of truth.
Installation Capability Profile
Record reviewed physical installation facts so the Configuration Audit can distinguish inactive options from settings that still need manual verification.
Choose Unknown rather than guessing. Unknown facts remain manual checks in the Configuration Audit. This profile is local evidence only and never connects to or changes equipment.
Loading...
View all active installation facts
Installation facts
Start from the server-provided initial candidate or a complete clone of the active profile. Changes remain in this browser until validation and explicit approval create a new immutable version.
Loading the local profile draft.
Installation profile candidate
Configuration Integrity Audit
Compare a later Deye Cloud settings export with a configuration you have verified as known good.
Files are processed locally by this dashboard server. No spreadsheet value is sent to the inverter, and the dashboard cannot apply corrections. Device identities are masked in this interface.
Start with a known-good export
- Export the settings from Deye Cloud.
- Review the validation summary.
- Approve the export as the baseline.
- Upload later exports to check for changes or corruption.
Loading...
Baseline candidate
Upload a local Deye Cloud export to begin a read-only review.
Review first
Configuration comparison
| Severity | Section | Setting | Current | Baseline | Status | Recommended manual action |
|---|
Verify and correct through the inverter LCD or an existing approved configuration application
Checkboxes are stored only in this browser for your own tracking. They do not call the server or change a baseline.
Solar System Dashboard
A local solar, battery, generator, tariff, savings, workbook, Solarman, and SolarAssistant dashboard built around practical daily operation rather than a generic report screen.
Workbook uploads, imported API history, tariff profiles, rollups, and configuration are stored locally on this machine.
Live monitoring uses receive-only SolarAssistant MQTT. Direct Deye/Solarman dongle networking is disabled by inverter write-isolation.
History can be loaded from an uploaded workbook or imported from Solarman OpenAPI where available.
Diesel use, tank estimates, generator runtime, tariffs, and savings are modelled together instead of separately.
Version History
Expandable project milestones and design direction changesv0.30.5 - Fail-closed generator automation starts 2026/08/01
Generator automation now rechecks and records the exact emergency or planned-evening Start condition immediately before any relay request. Starts outside the configured condition are rejected without reaching the relay path; manual controls, inverter isolation, and weather/resilience behaviour are unchanged.
v0.30.4 - Corrected generator readiness command outcome 2026/08/01
Generator Readiness now uses the final reconciled relay-command outcome rather than an intermediate empty TinyTuya acknowledgement. Raw transport evidence, uncertainty blocking, single-write safety, reconciliation, ownership, and all equipment-control behaviour remain unchanged.
v0.30.3 - Repaired generator relay write connection 2026/08/01
Corrected a TinyTuya retry-limit mismatch that prevented the relay write path from making its initial connection. The helper now makes one connection attempt before disabling write resends, retains bounded readback and uncertainty handling, and records secret-safe transport phases. No inverter-control path or automatic relay retry was added.
v0.30.2 - Reliable generator relay transport 2026/08/01
Serialised all TinyTuya relay reads and writes through one per-device transport coordinator, kept timed-out helpers reserved until process cleanup completes, and separated last-read online status from command readiness. Single-shot target writes, uncertainty blocking, active-low behaviour, and all inverter-isolation boundaries remain unchanged.
v0.30.1 - Seasonal battery EFC comparison 27/07/2026
Added a read-only completed-calendar-month EFC comparison across years and aligned Battery Information chart touch dragging with the History interaction. The figures remain bank-level estimates and do not connect to battery BMS devices or change equipment behaviour.
v0.30.0 - Battery Information analytics 26/07/2026
Added a read-only Battery Information tab with configured nameplate facts, bank-level live status, resolved-history provenance, estimated per-battery cycle and throughput trends, provisional reference-cycle comparisons, and usage-rate projections. It does not connect to battery BMS devices or change equipment behaviour.
v0.29.1 - Solarman refresh and resolved history 26/07/2026
Solarman Import history and Update to today now refresh the approved resolved-history view automatically. Raw source counts are distinct from resolved dates, approved reconstructions remain immutable, and material source collisions wait for review. Generator history before 21 June 2026 is labelled not installed, not measured zero.
v0.27.9 - Per-battery cycle estimation 25/07/2026
Added effective-dated physical battery records and local estimated equivalent full cycles from bank-level Solarman discharge throughput. Existing capacity settings remain compatible with live calculations; results are estimates, not BMS or warranty cycle counters, and no equipment-control behaviour changed.
v0.27.8 - Weather evidence progress monitor 24/07/2026
Expanded the local forecast-versus-actual PV evidence diagnostic into a read-only progress monitor with pipeline health, unique physical-hour queue states, a recent timeline, and an expandable completed-hours summary. It clarifies normal future collection work without adding calibration, provider-accuracy calculations, forecast changes, or equipment control.
v0.27.7 - Forecast versus actual PV evidence 23/07/2026
Added local, quality-classified retention of Open-Meteo forecast snapshots alongside completed hourly PV evidence for future calibration. The records are advisory only: they do not calculate provider accuracy or alter the Energy Resilience Forecast, generator, inverter, or other equipment behaviour.
v0.27.6 - Weather diagnostics and version display 23/07/2026
Improved Weather/Solar Forecast shadow-mode diagnostic readability and synchronised the About current-version display with canonical application metadata. Weather collection, resilience calculation, and equipment-control behaviour are unchanged.
v0.27.5 - Weather/solar shadow collection 23/07/2026
Added optional Open-Meteo weather and solar forecast collection in shadow mode, with provider-neutral local snapshots and freshness diagnostics. The data is not yet used by the Energy Resilience Forecast and no equipment-control behaviour changed.
v0.27.4 - Resilience timeline alignment 23/07/2026
The Energy Resilience Forecast timeline now begins at the measured current SOC and forecast generation time, then shows projected hourly endpoints through the full 24-hour horizon.
v0.27.3 - Responsive layout containment 22/07/2026
The dashboard navigation now keeps its own horizontal scroll on intermediate and landscape screens, preventing the page itself from overflowing.
v0.27.2 - Capability binding normalisation 22/07/2026
Configuration Audit now resolves harmless case and space, underscore, or hyphen differences in installation-profile enum bindings against the approved schema. Ambiguous values are rejected, raw rule-pack wording is retained for provenance, and the audit remains local and read-only.
v0.27.1 - Installation profile persistence 21/07/2026
Installation Profile versions now retain every reviewed fact, explicit Unknown selection, evidence type, verification date, and note. Replacement drafts start from a complete active-profile clone, show only genuine changes, and flag incomplete legacy profiles for review. The workflow remains local and cannot detect or control equipment.
v0.27.0 - Installation Capability Profile 21/07/2026
Added reviewed local installation facts with immutable profile versions. The Configuration Audit now uses approved capability evidence to identify inactive options while keeping unknown or ambiguous facts as manual checks. The profile never detects or controls equipment.
v0.26.1 - Configuration audit baseline validation 20/07/2026
Improved local Deye-export validation by reading masked Common Information metadata, preserving directional protection-setting names, and showing exact candidate blockers and warnings. Golden rule pack v1.2 accepts the approved 21–100% Time-of-Use SOC range while retaining Deye-range differences for review. Baseline approval and all recovery guidance remain manual and read-only.
v0.26.0 - Read-only configuration audit workflow 20/07/2026
Added local approval and immutable version storage for known-good Deye Cloud configuration exports, current-export comparison, optional hash-verified Golden rule-pack evaluation, visual discrepancy filtering, and a browser-only manual recovery checklist. Files remain local, identities are masked, and the dashboard cannot connect to or correct the inverter.
v0.25.4 - Read-only configuration integrity foundation 19/07/2026
Added a local, read-only foundation for comparing Deye Cloud configuration exports against a future approved baseline. It safely parses untrusted spreadsheets, normalizes values and ranges, detects duplicate or implausible entries, and supports an optional validated rule pack with manual-only recovery guidance. No upload UI, device contact, MQTT publish, inverter command, generator-control link, or automatic correction was added.
v0.25.3 - Telemetry verification and generator evidence 19/07/2026
MQTT setup verification now succeeds once the broker accepts every exact read-only telemetry subscription, without waiting for the next state update. Generator Control Events now include confirmed external physical start/stop evidence and recover recent confirmed sessions, while the Rollups payload presents that ledger correctly. The advisory resilience forecast remains above diesel and service resources on desktop.
v0.25.2 - Resilience forecast clarity and presentation 14/07/2026
Corrected forecast solar-transition meaning, separated expected and conservative outcomes, made generator-assistance wording scenario-aware, withheld impractical generator estimates, and clarified data-confidence meaning. Refined forecast chart selector labels and reusable mobile-friendly forecast cards, including compact accessible help controls, without adding any inverter or generator control path.
v0.25.1 - Quiet-hours backward generator scheduling 13/07/2026
Planned evening generator runs now calculate a start-by deadline backwards from configured quiet hours, using the greater of estimated charging duration and minimum runtime plus the existing startup allowance. The change preserves quiet-hours backstops, emergency/manual/external-run ownership, command safety, and the forecast's advisory-only boundary.
v0.25.0 - Energy Resilience Forecast 12/07/2026
Added a local, advisory-only 24-hour battery-resilience outlook using current telemetry, local rollups, and a historical PV/load profile provider. It presents projected SOC, reserve timing, solar-production windows, scenario-aware generator-assistance evidence, confidence, and a shared chart selector. No weather API, new MQTT topic, direct dongle access, inverter write, generator command, or automation link was introduced.
v0.24.1 - Review closure and operator clarity 11/07/2026
Closed T06 through T11 after read-only audits and focused improvements: Solarman polling policy verification, truthful inferred-routing presentation, a safe offline smoke runner, a redacted diagnostic snapshot, mobile/chart QA, and financial terminology aligned with the existing bill-estimate model. The optional T12 modularisation gate and curated future-ideas policy were also recorded.
v0.24.0 - Read-only telemetry commissioning 10/07/2026
Formally closed IR-01 after commissioning the dashboard through the local receive-only MQTT broker path. The dashboard no longer connects directly to SolarAssistant or the Solarman dongle; its inverter isolation, exact telemetry allowlist, publish denial, cloud restrictions, and external deployment evidence remain in force.
v0.23.2 - Final isolation assurance 08/07/2026
Corrected the one-way Mosquitto bridge reference to use supported operational password handling outside Git, separated remote bridge, local bridge, and dashboard MQTT identities and ACL responsibilities, added bridge-reference verification, hardened static scanner exceptions and network call-site inventory, removed dormant direct-Solarman live orchestration, tightened Solarman cloud URL/path checks, and strengthened loopback MQTT and fake-dongle isolation tests.
v0.23.1 - Isolation assurance hardening 08/07/2026
Hardened the inverter write-isolation assurance layer with full launcher-chain review, exact firewall-rule verification semantics, broader executable static scanning, loopback-only MQTT and fake-dongle transport tests, stricter Solarman cloud origin allowlisting, clearer isolation status layers, and complete one-way MQTT bridge/ACL reference material.
v0.23.0 - Inverter write isolation 07/07/2026
Introduced an absolute inverter write-isolation barrier: direct Solarman dongle networking is disabled, SolarAssistant MQTT is receive-only with an exact telemetry allowlist and blocked outbound PUBLISH packets, Solarman OpenAPI is restricted to read-only endpoints, and a new isolation status endpoint, firewall script, bridge example, static scan, and verification report document the safety boundary. The Tuya generator relay remains the sole intentional control-output exception.
v0.22.7 - Windows-protected credentials 06/07/2026
Migrated reusable MQTT and Solarman OpenAPI credentials into a Windows CurrentUser-protected store, removed plaintext secrets from active configuration, restricted reusable-secret entry over HTTP to localhost, pinned Solarman authentication against redirects, and reduced public configuration metadata.
v0.22.6 - Protected dashboard mutations 06/07/2026
Added short-lived configuration write sessions, centralized authorization for every state-changing route, same-origin and trusted-Host checks, strict mutation content types, PIN-change session revocation, and an MQTT identity rule that prevents a saved password from being redirected to a different broker.
v0.22.5 - Audit evidence integrity 06/07/2026
Separated startup observations from completed generator-command lifecycles, replaced routine MQTT keepalive noise with bounded summaries, made cache-recovery evidence durable, and added explicit calibration and duplicate-refill rejection evidence.
v0.22.4 - Maintenance integrity hardening 05/07/2026
Corrected absolute fuel-calibration proposals, merged overlapping generator runtime evidence, hardened refill eligibility and duplicate detection, and made backup readiness reflect command uncertainty and safety-critical persistence health without adding any generator command path.
v0.22.3 - Generator ownership safety 05/07/2026
Made manual suspension and generator run ownership restart-safe, serialized the complete relay-command lifecycle, prevented uncertain ownership from authorizing automatic stops, and separated emergency prerequisites from planned night-history requirements.
v0.22.2 - Quiet-hours automation evidence 05/07/2026
Prevented late planned generator starts when the minimum runtime would cross into quiet hours, added a quiet-hours stop boundary for planned runs, and prioritised command events in Rollups with relay and physical-session evidence.
v0.22.1 - Interactive History chart selectors 01/07/2026
Added the live-node style draggable selector to every History chart, aligned it to real data centres, gave new months automatic edge spacing, made axis labels responsive, and standardized the same touch-friendly slider used by the inverter popup. Chronological sorting keeps partially populated comparison series full width.
v0.22.0 - Generator maintenance & readiness 30/06/2026
Added independent service and oil-change hour counters, confirmed-runtime countdowns, explicit diesel refill history, approval-gated fuel calibration, backup-power readiness checks, and a visual hours-to-service gauge without adding any new generator command or inverter-write path.
v0.21.2 - Inverter traffic history 27/06/2026
Made the inverter node open a 24-hour routing overview that separates PV, generator, grid and battery sources from house, battery and grid destinations, with an interactive legend, five-minute selector, selected-time traffic summary, and compact energy totals.
v0.21.1 - SolarAssistant partial history backfill 25/06/2026
Added a supplemental SolarAssistant 15-minute sample backfill for the September/October 2023 history gap, recovering PV, load, grid, battery throughput, and battery SOC context while preserving the Solarman API history cache unchanged.
v0.21.0 - Live node history popups 25/06/2026
Added 24-hour history popups for the PV Array, Grid, House, Generator, and Battery live energy-flow nodes, using locally retained 5-minute power traces, signed grid and battery direction, and a draggable chart selector.
v0.20.1 - Crash-safe cache snapshots 23/06/2026
Added rotating verified snapshots and startup recovery for live rollups, reliability health, and inverter-state event caches so a future blue-screen or sudden power loss can recover from the newest valid local snapshot instead of wiping the live cache back to empty.
v0.20.0 - Generator Overnight Guardian 23/06/2026
Added a configurable shadow/armed generator automation layer that forecasts overnight battery need from recent night usage, respects quiet hours, watches diesel reserve, pauses after manual stops, and uses the existing protected Tuya generator-control path for any automated start or stop.
v0.19.6 - Power-loss rollup recovery 21/06/2026
Recovered durable daily and generator evidence after an unexpected host shutdown, changed rollup and generator-session saves to atomic replacement with last-known-good backups, and prevented a damaged cache from being silently replaced by an empty ledger.
v0.19.5 - Battery-setting incident hardening 21/06/2026
Made physically impossible battery charge-voltage settings alarm even under closed-loop BMS control, added forensic capture and validation for inverter battery-capacity/Ah settings, and retained a plain-language incident report without exposing credentials.
v0.19.4 - Generator runtime accuracy 21/06/2026
Stopped rounding every live generator sample interval, retained fractional runtime until presentation, and used the durable generator session ledger as recovery evidence for hourly and daily runtime affected by restarts.
v0.19.3 - Generator control session usability 21/06/2026
Kept the short-lived generator-control unlock available across page refreshes in the same browser tab, clarified locked and already-requested button states, and replaced the misleading loading cursor on disabled controls.
v0.19.2 - Tuya connection diagnostics 21/06/2026
Made generator-switch verification probe supported Tuya protocol versions without sending relay commands, detect Boolean switch DPS responses, retain the working protocol automatically, and return clearer connection, key, protocol, and DPS diagnostics.
v0.19.6 - Generator configuration PIN 23/06/2026
Allowed Generator Control configuration from local-network devices when authorised with a separate configuration PIN, while keeping the start/stop control PIN, encrypted Tuya local key storage, and forensic audit logging intact.
v0.19.1 - Live rollup restart resilience 21/06/2026
Changed live rollup and generator-session persistence from quiet-period debouncing to fixed-cadence checkpoints, and added graceful-shutdown flushing so continuous MQTT traffic and routine server restarts no longer discard accumulated runtime.
v0.19.0 - Local generator control 21/06/2026
Added protected local Tuya control for the active-low generator ATS switch, encrypted local-key storage, relay and physical generator confirmation, manual start/stop controls, cooldown protection, availability monitoring, and a retained command audit trail.
v0.18.1 - Fixed-charge VAT correction 21/06/2026
Restored 15% VAT on published municipal service and capacity charges, made VAT-exclusive the default for all fixed-charge tariff periods, and migrated existing profiles without baking VAT into their source amounts.
v0.18.0 - Live reliability and recovery 21/06/2026
Added single-instance server ownership, automatic completed-day gap detection and Solarman history recovery, visible data-reliability health, source-normalised quality rates, policy-filtered telemetry classification, and an auditable generator session ledger.
v0.17.0 - Auditable savings ledger and component VAT 20/06/2026
Reconciled imported history and live rollups into one date-based savings ledger, retained generator fuel costs across history refreshes, exposed missing and partial coverage, and separated energy, fixed-charge, and levy VAT treatment so mixed municipal schedules calculate correctly.
v0.16.0 - Historical tariff assignment and off-grid savings 20/06/2026
Separated the tariff catalogue from the installation's dated plan assignments, applied each tariff year's own rates to history, and added municipal billing status so avoided fixed charges are included after a supply or account is no longer billed.
v0.15.1 - Configuration organised by purpose 20/06/2026
Reorganised the growing Configuration tab into System Setup, Live Connections, Historical Data, and Tariffs & Costs so related settings are easier to find without changing any controls, integrations, or calculations.
v0.15.0 - VAT-aware tariff calculations 20/06/2026
Introduced tariff-period VAT handling and removed the previously baked-in Tshwane 2025/26 uplift. Version 0.17.0 later refined this into separate energy, fixed-charge, and levy treatment for mixed-VAT schedules.
v0.14.1 - Explicit inverter validation setup 19/06/2026
Retired unreliable Auto-detect choices from installation-level inverter validation, added a required one-time setup that works with or without SolarAssistant, and separated setup completeness from operational source-quality protection.
v0.14.0 - Inverter-state and dongle validation hardening 19/06/2026
Added full Solarman response-integrity validation, semantic snapshot quarantine, confirmed-sample critical alerts, canonical cross-source setting resolution, SOC-aware inactive voltage handling, and richer retained register evidence.
v0.13.1 - Live-source validation polish 19/06/2026
Verified safe Shared dongle polling against live data, corrected the live panel source heading, and reduced repeated forensic entries for unchanged review-only inverter settings while preserving state changes and periodic reminders.
v0.13.0 - Safe live-source polling 19/06/2026
Separated push-based SolarAssistant MQTT from active dongle polling, added dedicated and shared dongle safety profiles, slower context reads, adaptive backoff, a circuit pause, request diagnostics, subscriber-only MQTT enforcement, and stale-gap rollup protection.
v0.12.1 - Validation preference save reliability 19/06/2026
Improved Inverter State Validation saving with browser-side pending preferences that sync automatically after an older dashboard service is restarted, and preserved the selected 16S LiFePO4 battery chemistry preference.
v0.12.0 - Context-aware inverter safety 19/06/2026
Added context-aware inverter setting validation, Healthy/Review/Error safety states, configurable fallback context, read-only Solarman context polling, and richer retained investigation evidence.
v0.11.0 - Inverter safety and forensic auditing 19/06/2026
Added durable forensic audit logging, official Solarman API origin protection, persistent validation for impossible inverter setting states, a high-visibility Inverter State alarm, and retained investigation history in Rollups.
v0.10.1 - Live battery and savings refinements 18/06/2026
Added signed battery charge/discharge rate, configurable battery-bank capacity preferences, nominal-voltage validation, and negative live savings support while generator fuel costs accumulate.
v0.10.0 - Visual energy-flow control centre 17/06/2026
Shifted the Dashboard toward an animated energy-control-centre experience, with dark live nodes, directional flow particles, custom icons, compact node labels, and configurable inverter visibility.
v0.9.0 - Did You Know insights June 2026
Added a bite-sized insights tab with compact visuals, refreshable facts, and configurable narrative tone based on local history, live rollups, savings, and tariff data.
v0.8.0 - Residential tariff engine June 2026
Introduced residential tariff profiles, progressive blocks, fixed-charge treatment, carry-forward tariff periods, custom user-defined plans, and PDF tariff schedule import review.
v0.7.0 - Solarman history integration June 2026
Added Solarman OpenAPI configuration, connection testing, historical imports, update-to-today backfills, API call tracking, and API history export to Excel.
v0.6.0 - Generator fuel modelling June 2026
Added generator runtime estimates, fuel use by power band, diesel price capture, tank gauge estimates, generator cost, and generator cost per kWh in live and rollup views.
v0.5.0 - Live source options June 2026
Added SolarAssistant MQTT and Deye/Solarman dongle live-source support, quality events, source-switching protection, and live message visibility.
v0.4.0 - Workbook history dashboard June 2026
Started with uploaded workbook history, monthly rollups, top production days, charts, savings trends, and table accordions.
Ideas On The Horizon
Ordered by likely impact on future architecture and implementationPhase 1 is complete: reviewed local facts, immutable profile versions, and read-only Configuration Audit evidence are available. Future work may broaden capability coverage, add multiple installation profiles, and support profile import/export without equipment detection or control.
Verify provisional Shoto reference-cycle and design-life figures against authoritative documentation, retaining their comparison-only role and the read-only bank-level allocation boundary.
Evaluate append-only journals or a local SQLite WAL store for frequently updated rollups, reliability evidence, and inverter-state observations so completed evidence can be rebuilt after future forced restarts or storage damage.
The local parser, validated v1.3 rule pack, immutable approved baselines, installation-profile evidence, dashboard comparison, and manual checklist are complete. Future work may add report exports and generic rule-pack creation while preserving the permanent read-only inverter boundary.
Generalise the narrowly scoped Tuya generator switch adapter only for explicitly approved non-inverter devices, with provider-level capabilities, authentication, audit evidence, and fail-safe behaviour.
Optional status and telemetry export points for users who want this local dashboard to complement Home Assistant while preserving the dashboard's read-only inverter boundary.
Use read-only ATS relay evidence, generator voltage/frequency, or an optional run-state feed to distinguish physical engine runtime from periods when the inverter is receiving generator power.
Approved reconstruction and raw Solarman import/update now refresh one resolved view with provenance, corroboration, and collision markers. Future work may extend evidence coverage only through explicit package approval, dry-run review, rollback, and downstream recalculation.
Add source-backed conversion-efficiency analysis, operating-mode ribbons, BMS-limit context, Time-of-Use observation checks, and parallel-source disagreement detection while remaining observational only.
Build on completed quiet-hours backward scheduling with seasonal night-usage learning, maintenance-aware runtime limits, and failover guidance as more read-only operating evidence accumulates, without connecting the advisory resilience forecast or any inverter-facing path to generator control.
Add readiness transition history, calibration-model provenance, and clearer suppression of unstable cost-per-kWh values at near-zero generator output.
More automated annual tariff lookup, review, import, comparison, and municipality-specific handling.
What the same usage profile would cost or save under representative tariffs in other metros.
Build on the completed advisory forecast with forecast backtesting, condition evidence, outage-readiness evidence, and clearer planning assumptions based only on read-only data.
Forecast-versus-actual PV evidence retention is complete. Next, use only sufficient-quality evidence for curtailment-aware site calibration, then consider optional weather intervals in the advisory provider-neutral forecast contract. No equipment control may result.
Optional local AI for unusual tariff documents, plain-language insight polish, and guided read-only configuration review.
Additional energy-flow arrangements, mobile-first refinements, and optional visual themes that preserve the same read-only telemetry and safety semantics.