HA PowerFlow Plugin Documentation
Content
Real-time Home Assistant power-flow dashboard for WordPress
Version 2.2.0 · Christopher Wilmot — chriswilmot.co.uk
1. Overview
HA PowerFlow is a WordPress plugin that displays a real-time animated power-flow diagram on your website, fed with live data from your Home Assistant installation. Energy values — solar generation, grid import/export, home consumption, battery charging/discharging, and EV charging — are shown as moving dots along SVG paths overlaid on a custom background image.
Key features in v2.2.0:
- Live data refreshed every 5–300 seconds from Home Assistant (configurable)
- Animated flow dots whose direction and speed reflect power levels
- Fully configurable background image, colours, label positions and flow paths
- Your Home Assistant token is AES-256 encrypted server-side and never exposed to the browser
- Optional Solar, Battery and EV sections toggled on or off
- Battery Gauge Widget — a two-ring SVG gauge showing state of charge and charge/discharge state
- EV Gauge Widget — the same two-ring gauge for your electric vehicle’s SOC
- Custom Entity Labels — add any Home Assistant sensor to the dashboard with its own name, unit, font size, position and visibility
- Label Colour Thresholds — automatically recolour any label when its value crosses a threshold
- Grid Energy Out hidden automatically when Solar and Battery are both disabled
- Configuration automatically backed up to YAML on every save (last 50 kept)
- Restore from a backup file or server snapshot directly from the settings page
- Test Connection button to verify your Home Assistant URL and token
- Built-in click-to-coordinate tool for positioning labels without guesswork
- Live status bar on the dashboard showing last-updated time and connection health
2. Requirements
| Field | Description |
| WordPress | 5.0 or later with Administrator access |
| PHP | 7.4 or later with the OpenSSL extension enabled (for AES token encryption) |
| Home Assistant | Any recent version with a Long-Lived Access Token |
| HTTPS | Your WordPress site and Home Assistant instance should both be accessible over HTTPS from the WordPress server |
| PHP OpenSSL | Required for AES-256 token encryption. Available on virtually all modern hosting. |
3. Installation
3.1 Upload and Activate
- Log in to your WordPress admin dashboard.
- Go to Plugins → Add New Plugin.
- Click Upload Plugin and select the ha-powerflow.zip file.
- Click Install Now, then Activate Plugin.
| 💡 Tip After activation the plugin automatically creates two folders: wp-content/uploads/ha-powerflow/ (for background images) and wp-content/uploads/ha-powerflow/config/ (for configuration backups). You do not need to create these manually. |
3.2 Verify Installation
Once activated, a new menu item called HA PowerFlow will appear in the left-hand WordPress admin sidebar. Click it to open the settings page.
4. Connecting to Home Assistant
The plugin communicates with Home Assistant from your WordPress server — not from the visitor’s browser. This means your Home Assistant token is never exposed in the page source.
4.1 Get a Long-Lived Access Token
- In Home Assistant, click your profile icon (bottom left).
- Click the Security tab, scroll to the very bottom to the Long-Lived Access Tokens section.
- Click Create Token, give it a name (e.g. “WordPress PowerFlow”), and click OK.
- Copy the token immediately — it will not be shown again.
| ⚠ Warning Store the token somewhere safe before closing the dialog. If you lose it you will need to delete it and create a new one. |
4.2 Configure the Connection in WordPress
- Go to HA PowerFlow in the WordPress admin sidebar.
- In the Connection panel, enter your Home Assistant URL in the HA URL field.
Examples: https://homeassistant.local:8123 • https://ha.yourdomain.com
- HA Token: Paste your Long-Lived Access Token. The token is encrypted with AES-256 before being stored in the database.
- SSL Verify: If your Home Assistant uses a self-signed SSL certificate, untick this. Leave it ticked for any publicly trusted certificate.
- Refresh Interval: Choose how often the dashboard fetches new data from Home Assistant. Options: 5 s, 10 s, 15 s, 30 s, 1 min, 2 min, 5 min. Default is 5 seconds.
- Click Save Settings.
4.3 Testing the Connection
After saving, click the Test Connection button in the Connection panel. The plugin will attempt to reach your Home Assistant API using the saved URL and token, then report success or an error message. Save Settings first if you have made recent changes, since the test uses the saved values.
4.4 Home Assistant Firewall / CORS
Because the plugin makes server-to-server requests, Home Assistant does not need CORS configured for most installations. If you receive 403 Forbidden errors, add your WordPress domain to configuration.yaml:
http:
cors_allowed_origins:
– https://your-wordpress-site.com
| 💡 Tip Restart Home Assistant after editing configuration.yaml for changes to take effect. |
5. Adding the Dashboard to a Page
The plugin works via a WordPress shortcode. You can place it on any page or post.
- Create or edit a WordPress page.
- In the block editor, add a Shortcode block (search for “Shortcode” in the block inserter).
- Type the following into the block:
- Publish or update the page.
- Visit the page on the front end — the dashboard will appear, sized to the full width of the content area up to a maximum of 1000 px.
| 💡 Tip You can place the shortcode in a full-width page template or inside a Gutenberg Group block set to full width for best visual results. |
5.1 Dashboard Status Bar
A thin status bar appears below the SVG dashboard and updates every second. It shows when data was last successfully received from Home Assistant:
| State | Appearance | Meaning |
| Connecting… | Grey text | Dashboard has loaded but no data received yet |
| Last updated: just now | Green text | Data received within the last refresh cycle |
| Last updated: N seconds ago — connection may be slow | Amber text on yellow background | Data is older than 2× the refresh interval |
| Connection lost — last data N seconds ago | Red bold text on red background | Data is older than 3× the refresh interval |
6. Changing the Background Image
The dashboard overlays flow paths and data labels on top of a background image. The default image ships with the plugin, but you can replace it with any PNG image — typically a diagram of your energy system.
6.1 Image Requirements
- Format: PNG (recommended for transparency support)
- The SVG canvas is 1000 × 750 pixels. Your image should match this aspect ratio for best results.
- The image is scaled to fill the canvas — exact pixel dimensions are not critical.
6.2 Uploading a New Image
- Go to HA PowerFlow → Settings.
- In the Connection panel, locate the Background Image section.
- Click Select Image. The WordPress media library will open.
- Upload a new image or select an existing one, then click Use this image.
- The image is copied into wp-content/uploads/ha-powerflow/ and the URL is saved automatically.
- Click Save Settings to apply.
| 💡 Tip The image is copied to the plugin’s own upload folder so it is not affected if the original media library entry is deleted. |
7. Using the Click-to-Coordinate Tool
The plugin includes a built-in tool to help you find the correct x/y coordinates for positioning text labels, custom entities, gauge widgets, and flow paths. When enabled, clicking anywhere on the dashboard reports the exact SVG coordinates.
7.1 Enable the Tool
- Go to HA PowerFlow → Settings.
- Scroll down to the Advanced section and open the Developer Tools card.
- Tick Enable click-to-coordinate tool.
- Click Save Settings.
7.2 Using the Tool
- Navigate to the page on your website that contains the
shortcode.
- Open your browser’s developer tools (F12 or right-click → Inspect) and switch to the Console tab.
- Click anywhere on the dashboard. Two things happen immediately:
- A red dot appears at the exact point you clicked, with the coordinates printed next to it in red text on the diagram.
- A log entry appears in the console: [HA PowerFlow] Clicked at x: 740, y: 210
- Use these coordinates to fill in the X and Y fields in the settings.
- Double-click anywhere on the diagram to clear all red marker dots.
- When finished, return to Settings, untick the tool, and click Save.
| ⚠ Warning Leave the tool disabled on a live site. While harmless, it changes the cursor to a crosshair and places red markers when visitors click the diagram. |
7.3 Understanding SVG Coordinates
The dashboard uses an SVG canvas of 1000 × 750 units. The origin (0, 0) is the top-left corner. X increases to the right; Y increases downward. These are not pixel coordinates — they remain consistent regardless of the displayed size of the dashboard on screen.
8. Positioning Text Labels
Each entity (Grid Power, PV Power, Battery SOC, etc.) has a text label drawn directly onto the SVG. You can control the x position, y position, and rotation of each label independently.
8.1 Position Fields
| Field | Description |
| Rot | Rotation in degrees. Positive = clockwise; negative = anti-clockwise. 0 = horizontal. Use small values such as −9 to align labels with diagonal flow lines. |
| X | Horizontal position of the label’s left edge on the SVG canvas (0–1000). Use the click-to-coordinate tool. |
| Y | Vertical position of the label’s baseline on the SVG canvas (0–750). Use the click-to-coordinate tool. |
8.2 Workflow for Positioning a Label
- Enable the click-to-coordinate tool (see Section 7.1).
- Click approximately where you want the label to appear on the dashboard.
- Note the x and y values from the console or the red marker.
- Return to HA PowerFlow → Settings and enter those values into the X and Y fields for that entity.
- If the label should follow a diagonal line, add a Rot value matching the angle of the line.
- Click Save Settings and check the result. Repeat until satisfied.
- Disable the click-to-coordinate tool when done.
| 💡 Tip The rotation pivot point is the label’s own x/y position. Adjust X and Y first, then add rotation. |
9. Custom Entity Labels
Custom Entity Labels let you add any Home Assistant sensor to the dashboard — for example battery temperature, inverter frequency, house water temperature, or any other value your HA installation tracks. Unlike the built-in entities, custom entities are fully user-defined and unlimited in number.
9.1 Adding a Custom Entity
- Go to HA PowerFlow → Settings.
- Scroll to the Custom Entities section (between Configuration and Thresholds).
- Click Add Entity. A new row appears with empty fields.
- Fill in the fields for your entity (see Section 9.2).
- Tick the Visible checkbox to show it on the dashboard.
- Click Save Settings.
9.2 Custom Entity Fields
| Field | Description |
| Display Name | The label shown before the value on the dashboard, e.g. Temp or Freq. Keep it short — it appears in full capitals before the value. |
| Entity ID | The full Home Assistant entity ID, e.g. sensor.battery_temperature. Must match exactly, including capitalisation. |
| Unit | Optional unit of measurement override. If blank, the unit returned by Home Assistant is used. If set to W or w, the value is automatically formatted as power (e.g. 1.23 kW instead of 1230 W). Otherwise the value and unit are shown as-is (e.g. 23.4 °C). |
| Size | Font size of the label in SVG units. Default: 14. The built-in entity labels use size 18. Use a smaller value (e.g. 10–12) for secondary readings so they do not compete visually with primary figures. |
| Rot | Label rotation in degrees. Negative = anti-clockwise. |
| X | Horizontal position in SVG coordinate units. |
| Y | Vertical position in SVG coordinate units. |
| Visible | Tick to show this entity on the dashboard. Untick to hide it without deleting its configuration. Only visible entities are fetched from Home Assistant. |
9.3 Removing a Custom Entity
Click the trash icon on the right of the row you want to remove, then click Save Settings. The entity is permanently deleted from the configuration.
9.4 Notes
- There is no hard limit on the number of custom entities. Each visible entity adds one Home Assistant API call per refresh cycle. Keeping the total under 20 entities (built-in plus custom) works comfortably for most HA instances.
- Custom entity IDs are generated automatically from the Display Name when you type it. Changing the Display Name after saving generates a new internal ID — the entity will appear as a new entry. To rename a label without losing its position, edit the Display Name field and save.
- Custom entities support Label Colour Thresholds (see Section 10) — their entries appear in the Custom group of the threshold entity dropdown.
- Custom entities are included in configuration backups and are fully restored when importing a backup file.
10. Label Colour Thresholds
Label Colour Thresholds let you automatically change the colour of any entity’s text label when its value crosses a numeric boundary. For example, you can turn the Solar Power label red when output drops below 3000 W, or make Battery SOC amber when it falls below 20%.
10.1 Adding a Threshold Rule
- Go to HA PowerFlow → Settings.
- Scroll to the Thresholds section (between Custom Entities and Appearance).
- Click Add Rule. A new row appears.
- Select the entity from the dropdown (built-in entities and Custom entities are both listed).
- Choose the comparison operator (see Section 10.2).
- Enter the numeric threshold value.
- Click the colour swatch and choose the colour to apply when the condition is met.
- Click Save Settings.
10.2 Threshold Fields
| Field | Description |
| Entity | The entity whose label colour to change. All built-in entities and visible custom entities are available. Custom entities appear in the Custom group at the bottom of the dropdown. |
| When (operator) | The comparison to apply: is below (<), ≤, is above (>), ≥, equals (==). |
| Value | The numeric threshold. The entity’s raw Home Assistant state value is compared against this number. |
| Colour | The colour to apply to the label text when the condition is true. Click the swatch to open a colour picker. |
10.3 How Rules Are Evaluated
- Rules are re-evaluated on every data refresh cycle.
- All matching rules for an entity are applied in order — the last matching rule wins. This allows layered conditions (e.g. green above 50%, amber 20–50%, red below 20%) by adding multiple rules for the same entity.
- If no rule matches, the label reverts to the default text colour set in Appearance → Colours.
- Non-numeric entity states (e.g. “unavailable”) are ignored — the label shows in the default colour.
10.4 Example: Solar Power colour by output level
| Entity | When | Value | Colour | Effect |
| Solar Power | is below | 500 | Red | Red when nearly no output |
| Solar Power | is above | 499 | Amber | Amber overrides red above 500 W |
| Solar Power | is above | 2999 | Green | Green overrides amber above 3000 W |
| 💡 Tip Because the last matching rule wins, rules are evaluated in the order they were added. Place broader conditions first and more specific conditions last. |
10.5 Removing a Rule
Click the trash icon on the right of the rule row, then click Save Settings.
11. Battery Gauge Widget
The Battery Gauge is an optional two-ring circular gauge drawn directly on the dashboard SVG. It provides an at-a-glance visual indicator of your battery’s state of charge and whether it is currently charging or discharging.
11.1 Enabling the Battery Gauge
- Go to HA PowerFlow → Settings.
- In the Configuration section, expand the Battery Entities panel (requires Battery to be enabled in Features).
- Scroll to the Battery Gauge Widget sub-section.
- Tick Show battery gauge.
- Set the X and Y fields to the desired centre-point of the gauge on the SVG canvas (use the click-to-coordinate tool to find the right position).
- Click Save Settings.
11.2 What the Gauge Shows
| Element | Description |
| Outer ring | Fills proportionally to the battery state of charge (0–100%). Colour changes based on SOC level: green at 20% or above, amber between 10–20%, red below 10%. |
| Inner circle | Indicates charge direction. Green (semi-transparent) when the battery is charging (positive watts), red (semi-transparent) when discharging (negative watts), dark grey when idle (0 W). |
| SOC label | The current battery percentage displayed in white in the upper half of the inner circle. |
| Power label | The current battery power in W or kW displayed in the lower half of the inner circle. Positive values (charging) are shown in green; negative values (discharging) in red. |
| X / Y | Centre point of the gauge in SVG coordinate units. Use the click-to-coordinate tool to find the right values for your background image. |
| ℹ Note The Battery Gauge requires the Battery SOC and Battery Power entity IDs to be configured. It will not render if these are missing. |
12. EV Gauge Widget
The EV Gauge is identical in design to the Battery Gauge but shows your electric vehicle’s state of charge and current charge rate. It is only available when the EV feature is enabled.
12.1 Enabling the EV Gauge
- Go to HA PowerFlow → Settings.
- Ensure EV is enabled in the Features section.
- In the Configuration section, expand the EV Entities panel.
- Scroll to the EV Gauge Widget sub-section.
- Tick Show EV gauge.
- Set the X and Y fields for the gauge centre-point.
- Click Save Settings.
12.2 What the Gauge Shows
| Element | Description |
| Outer ring | Fills proportionally to the EV state of charge (0–100%). Uses the same colour thresholds as the Battery Gauge: green ≥ 20%, amber 10–20%, red < 10%. |
| Inner circle | Green (semi-transparent) when the EV is charging (positive watts), red when power is negative, dark grey when idle. |
| SOC label | The current EV SOC percentage displayed in white. |
| Power label | The current EV power in W or kW. Positive = charging (green), negative = discharging (red). |
| X / Y | Centre point of the gauge in SVG coordinate units. |
| ℹ Note The EV Gauge requires both EV Power and EV SOC entity IDs to be configured. |
13. Customising Flow Paths
Flow paths are the lines along which the animated dots travel. Each flow (Grid, Load, PV, Battery, EV) has a Forward path (energy flowing in the normal direction) and a Reverse path (energy flowing back — e.g. exporting to the grid or a battery discharging).
13.1 Dot Animation Speed
The animated dot speed is automatically adjusted based on the power level. This gives an at-a-glance indication of how much energy is flowing:
| Power (absolute value) | Animation duration |
| 0 W | Paused (no animation) |
| 1 – 100 W | 12 seconds per loop |
| 101 – 500 W | 8 seconds per loop |
| 501 – 1000 W | 5 seconds per loop |
| 1001 – 2000 W | 3 seconds per loop |
| > 2000 W | 1.5 seconds per loop |
13.2 Default Paths
If you leave the path fields blank, the plugin uses its built-in defaults, which are matched to the default background image. Only change these if you are using a custom background.
| Flow | Direction | Default Path |
| Grid | Forward | M 787 366 L 805 375 L 633 439 |
| Grid | Reverse | M 633 439 L 805 375 L 787 366 |
| Load | Forward | M 590 427 L 673 396 L 612 369 |
| Load | Reverse | M 590 427 L 673 396 L 612 369 |
| PV | Forward | M 331 417 L 510 486 |
| PV | Reverse | M 510 486 L 331 417 |
| Battery | Forward | M 532 500 L 364 563 |
| Battery | Reverse | M 364 563 L 532 500 |
| EV | Forward | M 618 497 L 713 532 L 786 499 |
| EV | Reverse | M 786 499 L 713 532 L 618 497 |
13.3 Path Syntax
| Command | Description |
| M x y | Move to the starting point. Every path must start with M. |
| L x y | Draw a straight line to this point. |
| C x1 y1 x2 y2 x y | Draw a cubic Bézier curve (for smooth curves). |
13.4 Workflow for Custom Paths
- Enable the click-to-coordinate tool (Section 7).
- Click on your background image at the start of where you want the flow line to begin. Note the coordinates.
- Click at any intermediate waypoints. Note the coordinates.
- Click at the end of the flow line. Note the coordinates.
- Build the path string. Example for start (331, 417) to end (510, 486): M 331 417 L 510 486
- Paste this into the Forward path field for the relevant flow.
- For the Reverse path, list the same points in reverse order: M 510 486 L 331 417
- Click Save Settings and verify the dots travel along the correct line.
14. Changing Colours
The Colour Settings panel (in the Appearance section) lets you change the three main colours used across the dashboard.
| Field | Description |
| Text Colour | The fill colour of all data label text (entity names and values). Default: #5EC766 (green). |
| Line Colour | The stroke colour of all flow path lines. Default: #5EC766 (green). |
| Dot Colour | The fill colour of the animated dots that travel along flow paths. Default: #5EC766 (green). |
14.1 Changing a Colour
- Go to HA PowerFlow → Settings.
- Scroll down to the Appearance section and open the Colours panel.
- Click the colour swatch next to the setting you want to change. A colour picker will open.
- Choose your colour. The hex value updates automatically.
- To revert to the default green (#5EC766), click the Reset button next to the swatch.
- Click Save Settings.
| 💡 Tip All three colours default to the same green (#5EC766). For a more distinct look, consider a lighter colour for lines and a brighter colour for dots so the animation stands out from the static lines. |
15. Configuration Backups
Every time you press Save Settings, the plugin automatically writes a complete snapshot of your current configuration to a YAML file. This happens in the background — you do not need to do anything to trigger it.
15.1 Where Backups Are Stored
wp-content/uploads/ha-powerflow/config/
Each file is named using the date and time of the save: 260222-143000-config.yaml (format: YYMMDD-hhmmss-config.yaml)
You can access this folder via FTP, SFTP, or your hosting control panel’s file manager. Files are plain text and can be opened in any text editor.
15.2 What Is Saved
The backup file contains every plugin setting, including:
- Plugin version and export timestamp
- Home Assistant URL and token (AES-256 encrypted — see note below)
- Feature toggles (Solar, Battery, EV)
- Background image URL and all three colour settings
- All flow path overrides (forward and reverse for each flow)
- All entity IDs with their label position (X, Y, rotation)
- Battery Gauge and EV Gauge widget settings (enabled state and X/Y position)
- Custom entity labels (all rows including hidden ones)
- Label Colour Threshold rules
- Refresh interval setting
- Preferences (SSL verify, delete uploads on uninstall)
| ℹ Note The HA token is stored as ENC:<encrypted-value> in the YAML file. The encryption key is derived from your WordPress site’s AUTH_KEY, so the token can only be decrypted by the same WordPress installation that created the file. If you copy the YAML to a different site, you will need to re-enter the token manually. |
15.3 Backup Retention
The plugin keeps the 50 most recent backup files. When a new file is written and there are already 50 files in the folder, the oldest file is automatically deleted. If you want to keep a particular backup permanently, copy it out of the config folder before it is pruned.
16. Restoring from a Backup
You can restore settings in two ways: by uploading a YAML backup file from your computer, or by selecting a server-side snapshot directly from the settings page. Both methods are available from the Settings page without requiring FTP or database access.
16.1 Restore from a Local Backup File
- Go to HA PowerFlow → Settings.
- In the sticky save bar at the bottom of the page, click Restore from Backup….
- Your operating system’s file picker will open, filtered to .yaml and .yml files. Select the backup file you want to restore.
- A confirmation dialog appears showing the filename and a description of what will be overwritten.
- Read the warning carefully, then click Yes, Restore Settings.
- The page reloads automatically and all fields reflect the restored values.
16.2 Restore from a Server Snapshot
The Restore from Server Snapshot card in the Advanced section lets you pick and restore any of the last 50 automatically-saved snapshots directly — no file download required.
- Go to HA PowerFlow → Settings.
- Scroll to the Advanced section and find the Restore from Server Snapshot card.
- Select a snapshot from the dropdown list. Snapshots are named by date and time.
- Click Restore Selected.
- Confirm the action in the dialog that appears.
- The page reloads with the restored settings.
16.3 What Happens During a Restore
- All current settings are overwritten with the values from the backup file.
- Before applying the backup, your current settings are automatically saved as a new backup snapshot, so you can undo the restore if needed.
- The HA token is restored only if the backup was created on the same WordPress installation (same AUTH_KEY). If it was created on a different site, all other settings will be restored but you will need to re-enter the token manually.
| ⚠ Warning Restoring a backup overwrites ALL current settings, including entity IDs, positions, colours, custom entities, threshold rules, and gauge configuration. This action cannot be undone except by restoring another backup. |
17. Advanced Settings
17.1 Unsaved Changes Indicator
The sticky save bar at the bottom of the settings page displays an Unsaved changes badge with a pulsing dot whenever you modify any field. This prevents accidentally navigating away without saving. The badge disappears after you click Save Settings.
17.2 Uninstall Preference
In the Advanced section, the Uninstall card contains a single option:
| Option | Description |
| Delete uploaded images on uninstall | When enabled, background images stored in wp-content/uploads/ha-powerflow/ will be permanently deleted when the plugin is removed via the WordPress Plugins screen. All plugin database options are always removed on uninstall regardless of this setting. |
| ℹ Note This setting only affects the uploaded images folder. Plugin database options (entity IDs, positions, token, etc.) are always deleted on uninstall. |
18. Entity Reference
This table lists every built-in entity the plugin can display, the label shown on the dashboard, its expected unit, and the default text position. All entity IDs expect a Home Assistant sensor in the format domain.entity_name.
18.1 Mandatory Entities (always required)
| Setting Field | Label | Unit | Default X | Default Y | Default Rot |
| grid_power | |||||
| grid_energy_in | |||||
| grid_energy_out | |||||
| load_power | |||||
| load_energy |
| 💡 Tip Grid Energy Out is only shown in the settings when Solar or Battery is enabled. Without generation capability there is no grid export, so the field is hidden to keep the interface uncluttered. |
18.2 Solar Entities (require Enable Solar toggle)
| Setting Field | Label | Unit | Default X | Default Y | Default Rot |
| pv_power | |||||
| pv_energy |
18.3 Battery Entities (require Enable Battery toggle)
| Setting Field | Label | Unit | Default X | Default Y | Default Rot |
| battery_power | |||||
| battery_energy_in | |||||
| battery_energy_out | |||||
| battery_soc |
18.4 EV Entities (require Enable EV toggle)
| Setting Field | Label | Unit | Default X | Default Y | Default Rot |
| ev_power | |||||
| ev_soc |
18.5 Custom Entities
Custom entities have no fixed field names, labels, or positions — these are all defined by you in the Custom Entities section of the settings page (see Section 9). They are stored as a single JSON blob and included in all configuration backups.
19. Change Log
Version 2.2.0
- Added Battery Gauge Widget — two-ring SVG gauge showing state of charge and charge/discharge state
- Added EV SOC Gauge Widget — same two-ring layout as the battery gauge
- Added Custom Entity Labels — add any HA sensor with display name, unit, font size, position and visibility control
- Added Size field to custom entities so secondary labels can be smaller than primary figures
- Added Label Colour Thresholds — automatically recolour any label (built-in or custom) when its value crosses a numeric boundary
- Added configurable Refresh Interval (5 s to 5 min)
- Added Test Connection button to verify HA URL and token without leaving the settings page
- Added Restore from Server Snapshot card — restore any of the 50 most recent auto-saved backups directly from the settings page without downloading files
- Added Unsaved changes indicator in the sticky save bar
- Added live status bar on the front-end dashboard showing last-updated time and connection health
- Added dot animation speed proportional to power level
- Added Reset button for each colour swatch to revert to the default green
- Grid Energy Out now hidden in the settings when neither Solar nor Battery is enabled
- Fixed config snapshot to cover 100% of registered options (gauge widgets and custom entities were previously missing)
- Fixed label/position/rotation defaults being ignored when a previous version had saved 0 to the database
- Fixed config import YAML parser: list items (custom entities) were silently skipped due to the parser not handling the – key: value YAML list syntax
Version 2.1.0
- Added click-to-coordinate developer tool for positioning labels
- Added automatic YAML configuration backup on every save
- Redesigned settings page with collapsible, icon-led panels
- Added sticky save bar with unsaved-changes indicator
- Added Developer Tools and Uninstall preference cards
Version 2.0.0
- Complete plugin rewrite with full security audit
- Server-side proxy — HA token never sent to browser
- AES-256 token encryption in the WordPress database
- All inputs sanitised on save; all outputs escaped on render
Version 1.0.1
- Minor bug fixes
Version 1.0.0
- Initial release
HA PowerFlow v2.2.0 — chriswilmot.co.uk