📊 Energy Analytics

Comprehensive energy flow analysis with battery, solar, and consumption metrics

No analytics data available. Battery data will appear after running smart_merge.php

🔋 Battery Storage

Solar battery storage system • Watten, Scottish Highlands

🔧
Duracell Battery System
Battery integration in progress • API connectivity being established
🔋

Battery Storage System

Installation Scheduled: February 2026


Warning: Undefined variable $hanchuConnected in /var/www/html/index.php on line 2504
Battery Capacity
15 kWh
3× Duracell Dura5 5.12kWh
Solar System
12.6 kW
28 × 450W Panels
Inverters
2× Dura-i
Hybrid Master/Slave
📊 Battery Simulation (Based on Last 30 Days)

What would an 18.8kWh battery save you based on your actual usage patterns?

💷 Projected Savings
£28.34
Per Month
£344.79/year
⚡ Grid Avoided
8.0 kWh
Per Day (avg)
241.1 kWh over 30 days
☀️ Solar Captured
8.9 kWh
Per Day (avg)
Currently exported, would be stored
🌱 Self-Sufficiency
30%
45%
Current → With Battery
📅 Est. Payback
14.5 years
At ~£5,000 system cost
📈 Simulation Details
Assumptions:
  • 15kWh capacity (3× Duracell Dura5 5.12kWh)
  • 90% usable capacity (10-100% DoD)
  • 90% round-trip efficiency
  • Blended rate: 28.42p/kWh
Notes:
  • Based on your actual 30-day history
  • Real savings may be higher with Flux tariff optimisation
  • Doesn't account for seasonal variation
  • Summer months will show better returns
⚡ Flux Tariff Arbitrage

Extra savings by charging during Cheap period (16.93p) and discharging during Peak (39.51p)

💰 Arbitrage Spread
29.5p/kWh
Peak (39.51p) - Cheap (16.93p)
After 90% efficiency: 20.3p/kWh profit
🔄 Daily Arbitrage
£1.40
Per Day (est.)
Using ~6.9 kWh for arbitrage
🎯 Combined Savings
£70.48
Per Month
Solar + Arbitrage: £857.49/year
📅 Improved Payback
5.8 years
With Arbitrage
vs 14.5 years solar only
📊 Monthly Savings Breakdown
Solar Storage: £28.34
Flux Arbitrage: £42.14
Total: £70.48/month
⏰ Optimal Battery Schedule for Flux
🔋 CHARGE (Cheap: 16.93p)
  • 04:00 - 07:00 (3 hours)
  • 13:00 - 16:00 (3 hours)
  • 22:00 - 00:00 (2 hours)
⚡ DISCHARGE (Peak: 39.51p)
  • 16:00 - 19:00 (3 hours)
  • Power home from battery
  • Avoid expensive peak grid
☀️ SOLAR PRIORITY
  • Daytime: Store excess solar
  • Evening: Use solar first
  • Export only when full
💷 Battery Savings by Tariff

Compare potential battery savings across different Octopus tariffs

✓ Your Current Tariff
Octopus Flux
Battery savings: £96.73/month
🏆 Best for Battery
Octopus Flux
Battery savings: £96.73/month
Tariff Spread Arbitrage Solar Monthly Payback
🥇 Octopus Flux
Best for battery export
22.6p £42.14 £68.04 £96.73 4.2 yrs
🥈 Octopus Go
Best for EV charging
22.6p £42.25 £47.79 £90.04 4.6 yrs
💡
Key Insights:
  • Flux has a 22.58p arbitrage spread plus 28.73p peak export rate
  • Go has cheap overnight rates but smaller spread for arbitrage
  • Flux offers better export rates which boosts returns if you export
  • Agile rates vary - can be very profitable on high-spread days
  • Flexible has no arbitrage benefit (flat rate)
📅 Seasonal Projections

Projected battery savings across seasons based on Scottish Highlands solar potential and heating patterns

☀️ Annual Solar
6,325 kWh
Projected generation
🔥 Annual Heat Pump
6,552 kWh
Projected usage
💷 Annual Battery Savings
£389.43
Projected total
📅 Realistic Payback
12.8 years
Seasonal adjusted
❄️ Winter
Dec - Feb
Minimal solar, high heating
Solar
3.5 kWh/day
Heat Pump
35.0 kWh/day
Grid Avoided
16 kWh
Battery Savings
£129.75
Solar vs Demand 8%
🌸 Spring
Mar - May
Good solar, moderate heating
Solar
19.0 kWh/day
Heat Pump
15.0 kWh/day
Grid Avoided
246 kWh
Battery Savings
£113.95
Solar vs Demand 83%
☀️ Summer
Jun - Aug
Peak solar, minimal heating
Solar
35.0 kWh/day
Heat Pump
2.0 kWh/day
Grid Avoided
0 kWh
Battery Savings
£27.74
Solar vs Demand 350%
🍂 Autumn
Sep - Nov
Declining solar, rising heating
Solar
12.0 kWh/day
Heat Pump
20.0 kWh/day
Grid Avoided
123 kWh
Battery Savings
£118.00
Solar vs Demand 43%
📊 Seasonal Comparison
£130
❄️
Winter
£114
🌸
Spring
£28
☀️
Summer
£118
🍂
Autumn
🌍
Scottish Highlands Factors:
  • Summer: Up to 18+ hours daylight, solar panels can generate 15+ kWh/day. Battery captures excess for evening use.
  • Winter: Only ~7 hours daylight with low sun angle. Battery value comes mainly from tariff arbitrage, not solar storage.
  • Heat Pump: Major consumer in winter (~35 kWh/day), minimal in summer (~2 kWh for hot water only).
  • Best ROI: Summer months provide best battery returns due to excess solar capture.
/* Battery chart disabled - awaiting Duracell integration const last7Bat = [{"id":"6a976701c492a","date":"2026-09-01","timestamp":1788220800,"solar_kwh":8.327,"grid_kwh":45.85,"solar_export_kwh":19.852,"heat_pump_kwh":16.409,"rest_of_house_kwh":29.44,"battery_kwh":0,"battery_soc":0,"shelly_solar_kwh":8.327,"shelly_battery_kwh":0,"octopus_consumption_kwh":null,"octopus_cost":null,"meter_variance_kwh":null,"meter_variance_percent":null,"notes":"Auto-imported: tigo_api, shelly_em, shelly_205","sources":["tigo_api","shelly_em","shelly_205"],"from_shelly":true,"weather_code":55,"temp_max":15.3,"temp_min":10.6,"temperature":12.95,"sunrise":"06:12","sunset":"20:14","sunshine_hours":4.33,"precipitation":4.1,"uv_index":3,"cloud_cover":82,"daylight_hours":14.03,"usage_by_rate":{"cheap_kwh":17.924,"peak_kwh":2.636,"day_kwh":25.289},"solar_source":"shelly_205","net_grid_kwh":25.998,"self_sufficiency":0,"tariff":"Octopus Flux","rates":{"day":28.22,"cheap":16.93,"peak":39.51},"standing_charge":0.6168,"export_rate":9.98,"energy_cost":11.21,"export_income":1.98,"cost_method":"half-hourly","total_cost":9.85,"cost_without_solar":13.56,"savings":3.71,"blended_rate":28.22},{"id":"6a98b88181e00","date":"2026-09-02","timestamp":1788307200,"solar_kwh":11.431,"grid_kwh":32.013,"solar_export_kwh":23.955,"heat_pump_kwh":15.953,"rest_of_house_kwh":16.059,"battery_kwh":0,"battery_soc":0,"shelly_solar_kwh":11.431,"shelly_battery_kwh":0,"octopus_consumption_kwh":null,"octopus_cost":null,"meter_variance_kwh":null,"meter_variance_percent":null,"notes":"Auto-imported: tigo_api, shelly_em, shelly_205","sources":["tigo_api","shelly_em","shelly_205"],"from_shelly":true,"weather_code":61,"temp_max":13.7,"temp_min":8.7,"temperature":11.2,"sunrise":"06:14","sunset":"20:11","sunshine_hours":3.31,"precipitation":1.8,"uv_index":2.5,"cloud_cover":96,"daylight_hours":13.95,"usage_by_rate":{"cheap_kwh":11.559,"peak_kwh":0.152,"day_kwh":20.302},"solar_source":"shelly_205","net_grid_kwh":8.058,"self_sufficiency":0,"tariff":"Octopus Flux","rates":{"day":28.22,"cheap":16.93,"peak":39.51},"standing_charge":0.6168,"export_rate":9.98,"energy_cost":7.75,"export_income":2.39,"cost_method":"half-hourly","total_cost":5.98,"cost_without_solar":9.65,"savings":3.67,"blended_rate":28.22},{"id":"6a9a0a0145bde","date":"2026-09-03","timestamp":1788393600,"solar_kwh":6.145,"grid_kwh":37.064,"solar_export_kwh":22.645,"heat_pump_kwh":10.335,"rest_of_house_kwh":26.729,"battery_kwh":0,"battery_soc":0,"shelly_solar_kwh":6.145,"shelly_battery_kwh":0,"octopus_consumption_kwh":null,"octopus_cost":null,"meter_variance_kwh":null,"meter_variance_percent":null,"notes":"Auto-imported: tigo_api, shelly_em, shelly_205","sources":["tigo_api","shelly_em","shelly_205"],"from_shelly":true,"weather_code":63,"temp_max":17.9,"temp_min":12.2,"temperature":15.049999999999999,"sunrise":"06:16","sunset":"20:08","sunshine_hours":10.97,"precipitation":12.3,"uv_index":2.9,"cloud_cover":62,"daylight_hours":13.87,"usage_by_rate":{"cheap_kwh":16.526,"peak_kwh":1.13,"day_kwh":19.408},"solar_source":"shelly_205","net_grid_kwh":14.419,"self_sufficiency":0,"tariff":"Octopus Flux","rates":{"day":28.22,"cheap":16.93,"peak":39.51},"standing_charge":0.6168,"export_rate":9.98,"energy_cost":8.72,"export_income":2.26,"cost_method":"half-hourly","total_cost":7.08,"cost_without_solar":11.08,"savings":4,"blended_rate":28.22},{"id":"6a9b5b817d598","date":"2026-09-04","timestamp":1788480000,"solar_kwh":9.189,"grid_kwh":37.32,"solar_export_kwh":11.903,"heat_pump_kwh":21.134,"rest_of_house_kwh":16.186,"battery_kwh":0,"battery_soc":0,"shelly_solar_kwh":9.189,"shelly_battery_kwh":0,"octopus_consumption_kwh":null,"octopus_cost":null,"meter_variance_kwh":null,"meter_variance_percent":null,"notes":"Auto-imported: tigo_api, shelly_em, shelly_205","sources":["tigo_api","shelly_em","shelly_205"],"from_shelly":true,"weather_code":51,"temp_max":15.8,"temp_min":11.6,"temperature":13.7,"sunrise":"06:18","sunset":"20:05","sunshine_hours":3.64,"precipitation":1.3,"uv_index":2.9,"cloud_cover":81,"daylight_hours":13.78,"usage_by_rate":{"cheap_kwh":10.17,"peak_kwh":3.672,"day_kwh":23.477},"solar_source":"shelly_205","net_grid_kwh":25.417,"self_sufficiency":0,"tariff":"Octopus Flux","rates":{"day":28.22,"cheap":16.93,"peak":39.51},"standing_charge":0.6168,"export_rate":9.98,"energy_cost":9.8,"export_income":1.19,"cost_method":"half-hourly","total_cost":9.23,"cost_without_solar":11.15,"savings":1.92,"blended_rate":28.22},{"id":"6a9cad015a101","date":"2026-09-05","timestamp":1788566400,"solar_kwh":18.888,"grid_kwh":48.671,"solar_export_kwh":17.695,"heat_pump_kwh":12.081,"rest_of_house_kwh":36.59,"battery_kwh":0,"battery_soc":0,"shelly_solar_kwh":18.888,"shelly_battery_kwh":0,"octopus_consumption_kwh":null,"octopus_cost":null,"meter_variance_kwh":null,"meter_variance_percent":null,"notes":"Auto-imported: tigo_api, shelly_em, shelly_205","sources":["tigo_api","shelly_em","shelly_205"],"from_shelly":true,"weather_code":63,"temp_max":14.6,"temp_min":10.2,"temperature":12.399999999999999,"sunrise":"06:21","sunset":"20:02","sunshine_hours":5.14,"precipitation":8.1,"uv_index":2.85,"cloud_cover":82,"daylight_hours":13.68,"usage_by_rate":{"cheap_kwh":24.95,"peak_kwh":0.971,"day_kwh":22.75},"solar_source":"shelly_205","net_grid_kwh":30.976,"self_sufficiency":2.39,"tariff":"Octopus Flux","rates":{"day":28.22,"cheap":16.93,"peak":39.51},"standing_charge":0.6168,"export_rate":9.98,"energy_cost":11.03,"export_income":1.77,"cost_method":"half-hourly","total_cost":9.88,"cost_without_solar":14.69,"savings":4.81,"blended_rate":28.22},{"id":"6a9dfe8142714","date":"2026-09-06","timestamp":1788652800,"solar_kwh":42.737,"grid_kwh":53.844,"solar_export_kwh":1.687,"heat_pump_kwh":15.431,"rest_of_house_kwh":38.413,"battery_kwh":0,"battery_soc":0,"shelly_solar_kwh":42.737,"shelly_battery_kwh":0,"octopus_consumption_kwh":null,"octopus_cost":null,"meter_variance_kwh":null,"meter_variance_percent":null,"notes":"Auto-imported: tigo_api, shelly_em, shelly_205","sources":["tigo_api","shelly_em","shelly_205"],"from_shelly":true,"weather_code":63,"temp_max":18.2,"temp_min":10.8,"temperature":14.5,"sunrise":"06:23","sunset":"19:59","sunshine_hours":3.27,"precipitation":14.5,"uv_index":1.65,"cloud_cover":90,"daylight_hours":13.6,"solar_source":"shelly_205","net_grid_kwh":52.157000000000004,"self_sufficiency":43.26,"tariff":"Octopus Flux","rates":{"day":28.22,"cheap":16.93,"peak":39.51},"standing_charge":0.6168,"export_rate":9.98,"energy_cost":15.19,"export_income":0.17,"cost_method":"estimated","total_cost":15.64,"cost_without_solar":27.4,"savings":11.76,"blended_rate":28.22},{"id":"6a9f50016dafb","date":"2026-09-07","timestamp":1788739200,"solar_kwh":18.769,"grid_kwh":56.511,"solar_export_kwh":18.999,"heat_pump_kwh":22.174,"rest_of_house_kwh":34.336,"battery_kwh":0,"battery_soc":0,"shelly_solar_kwh":18.769,"shelly_battery_kwh":0,"octopus_consumption_kwh":null,"octopus_cost":null,"meter_variance_kwh":null,"meter_variance_percent":null,"notes":"Auto-imported: tigo_api, shelly_em, shelly_205","sources":["tigo_api","shelly_em","shelly_205"],"from_shelly":true,"weather_code":3,"temp_max":16.7,"temp_min":11.2,"temperature":13.95,"sunrise":"06:25","sunset":"19:56","sunshine_hours":7.82,"precipitation":0,"uv_index":2.95,"cloud_cover":80,"daylight_hours":13.52,"usage_by_rate":{"cheap_kwh":26.018,"peak_kwh":3.019,"day_kwh":27.473},"solar_source":"shelly_205","net_grid_kwh":37.512,"self_sufficiency":0,"tariff":"Octopus Flux","rates":{"day":28.22,"cheap":16.93,"peak":39.51},"standing_charge":0.6168,"export_rate":9.98,"energy_cost":13.35,"export_income":1.9,"cost_method":"half-hourly","total_cost":12.07,"cost_without_solar":16.57,"savings":4.5,"blended_rate":28.22}]; const datesBat = last7Bat.map(e => new Date(e.date).toLocaleDateString('en-GB', { day: 'numeric', month: 'short' })); const batData = last7Bat.map(e => e.battery_kwh || 0); new Chart(document.getElementById('batteryChart'), { type: 'bar', data: { labels: datesBat, datasets: [{ label: 'Battery kWh', data: batData, backgroundColor: '#8b5cf6', borderRadius: 4 }] }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { display: false } }, scales: { x: { ticks: { color: '#6b6b6b' }, grid: { display: false } }, y: { ticks: { color: '#6b6b6b' }, grid: { color: '#333333' }, title: { display: true, text: 'kWh', color: '#6b6b6b' } } } } }); */