Skip to content

Add SPH inverter support#48

Closed
johanzander wants to merge 9 commits intomainfrom
feature/sph-inverter-support
Closed

Add SPH inverter support#48
johanzander wants to merge 9 commits intomainfrom
feature/sph-inverter-support

Conversation

@johanzander
Copy link
Copy Markdown
Owner

@johanzander johanzander commented Mar 10, 2026

Summary

Growatt SPH inverters use a fundamentally different scheduling model from MIN inverters — separate charge and discharge period lists (max 3 each) with global power/SOC settings per call, rather than 9 TOU segments with per-segment modes. This PR adds SphScheduleManager so BESS Manager can drive both inverter families from the same optimization engine.

SPH vs MIN Scheduling Model

MIN SPH
Schedule model 9 TOU segments (mode per segment) Separate charge periods (≤3) + discharge periods (≤3)
Config value inverter_type: "MIN" inverter_type: "SPH"
HA services used update_time_segment write_ac_charge_times / write_ac_discharge_times
Write strategy Differential (only changed future segments) Full rewrite each time

SPH Intent Mapping

Strategic Intent SPH Action
GRID_CHARGING Charge period — mains_enabled=True
SOLAR_STORAGE Idle — SPH charges from solar by default; no explicit period needed
LOAD_SUPPORT Discharge period
EXPORT_ARBITRAGE Discharge period
IDLE Nothing — inverter default

Changes

New Files

  • core/bess/sph_schedule.pySphScheduleManager implementing the SPH scheduling model with the same duck-typed interface as GrowattScheduleManager
  • core/bess/min_schedule.pyGrowattScheduleManager moved here from growatt_schedule.py; original file kept as a backward-compat re-export so existing imports are unaffected
  • core/bess/tests/unit/test_sph_schedule.py — 25 behavioural unit tests

Modified Files

  • core/bess/ha_api_controller.py — 4 new SPH service methods: write_ac_charge_times, read_ac_charge_times, write_ac_discharge_times, read_ac_discharge_times
  • core/bess/battery_system_manager.py — Factory selects MIN vs SPH manager based on inverter_type; _apply_schedule simplified to delegate hardware writes to write_schedule_to_hardware()
  • config.yaml — New growatt.inverter_type field ("MIN" or "SPH", defaults to "MIN")

Configuration

To enable SPH mode, add inverter_type: "SPH" under the growatt section in config.yaml:

growatt:
  inverter_type: "SPH"
  device_id: "your-device-id-here"

No other configuration changes are needed — device_id works for both inverter types.

Tests

  • All 22 existing MIN/Growatt TOU scheduling tests pass unchanged
  • 25 new SPH behavioural unit tests pass
  • Full unit suite: 211 passed, 1 pre-existing failure in test_weather.py (unrelated DST issue, not introduced by this PR)

Notes for Reviewers

The upstream growatt_server HA integration defines the SPH services and these are expected to land in HA Core. Two things may need adjusting once the final HA API is confirmed:

  1. Period parameter names — currently using period_1_start, period_1_end, period_1_enabled (up to period_3_*). Verify these match the final service schema.
  2. Power parameter formatcharge_power and discharge_power are currently sent as 100 (percentage). Verify whether the service expects a percentage or absolute kW value.

Growatt SPH inverters use a different scheduling model from MIN: separate
charge and discharge period lists (max 3 each) with global power/SOC
settings, rather than 9 TOU segments with per-segment modes.

Changes:
- New SphScheduleManager in sph_schedule.py implementing the SPH model
- GrowattScheduleManager moved to min_schedule.py; growatt_schedule.py
  kept as backward-compat re-export
- Both managers implement write_schedule_to_hardware() and
  read_and_initialize_from_hardware() so BatterySystemManager can use
  either interchangeably via duck typing
- 4 new SPH service methods on HomeAssistantAPIController:
  write_ac_charge_times, read_ac_charge_times,
  write_ac_discharge_times, read_ac_discharge_times
- config.yaml: new inverter_type field ("MIN" or "SPH") under growatt
- 25 behavioral unit tests for SphScheduleManager

SPH intent mapping:
  GRID_CHARGING      → charge period (mains_enabled=True)
  SOLAR_STORAGE      → idle (SPH charges from solar by default)
  LOAD_SUPPORT       → discharge period
  EXPORT_ARBITRAGE   → discharge period
  IDLE               → nothing (inverter default)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@johanzander
Copy link
Copy Markdown
Owner Author

GraemeDBlue - care to try this one out?

@johanzander johanzander marked this pull request as ready for review March 13, 2026 17:53
johanzander and others added 3 commits March 13, 2026 19:22
- growatt_schedule.py: keep re-export stub (implementation is in min_schedule.py)
- battery_system_manager.py: keep tou_intervals (both MIN and SPH managers use it;
  active_tou_intervals from main does not exist in this branch's architecture)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The merge of main (v7.9.3) into this branch introduced current_period and
previous_tou_intervals parameters to create_schedule, but min_schedule.py
and sph_schedule.py were missing those parameters causing a TypeError on
every schedule creation attempt.

Also fix _apply_schedule to use active_tou_intervals consistent with the
updated schedule manager interface from main.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
SPH battery control health check was incorrectly checking for MIN-style
HA entity sensors that don't exist on SPH installations. Replace with a
live read_ac_charge_times() call to verify Growatt service connectivity.

Add sync_soc_limits() to both schedule managers so SOC limits are synced
at startup regardless of inverter type. SPH reads current periods from
hardware first, then writes back only if charge/discharge stop SOC differs
from config. MIN uses existing entity-based set/verify calls.

Swap startup order so hardware init runs before SOC sync — required for
SPH since the write needs cached periods, and more logical in general.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@GraemeDBlue
Copy link
Copy Markdown

@johanzander I am seeing this in my logs if it helps

2026-03-17 09:06:21 | ERROR | log_config:127 - Error getting battery status: 404 Client Error: Not Found for url: http://supervisor/core/api/states/
2026-03-17 09:06:21 | INFO  | uvicorn.access:480 - 172.30.32.2:35228 - "GET /api/growatt/inverter_status HTTP/1.1" 200
2026-03-17 09:06:21 | ERROR | log_config:127 - Failed to get TOU intervals: 'SphScheduleManager' object has no attribute 'get_all_tou_segments'
2026-03-17 09:06:21 | ERROR | log_config:127 - Failed to get strategic intent summary: 'SphScheduleManager' object has no attribute 'get_strategic_intent_summary'
2026-03-17 09:06:21 | ERROR | log_config:127 - Error processing hour 0: No hourly settings for hour 0. Strategic intents: 0, Settings calculated: 0
2026-03-17 09:06:21 | ERROR | log_config:127 - Error processing hour 1: No hourly settings for hour 1. Strategic 
2026-03-17 09:06:21 | ERROR | log_config:127 - Error processing hour 10: No hourly settings for hour 10. Strategic 
2026-03-17 09:06:21 | ERROR | log_config:127 - Failed to get period groups: 'SphScheduleManager' object has no attribute 'get_detailed_period_groups'

@GraemeDBlue
Copy link
Copy Markdown

GraemeDBlue commented Mar 18, 2026

@johanzander great only 1 remaining sensor, which we don't seem to have in the growatt integration

Home-Assistant-03-18-2026_09_12_AM

@johanzander
Copy link
Copy Markdown
Owner Author

is there no import from grid sensors available? Seems weird that there is an export to grid but not import to grid. Or is it misconfigured?

@GraemeDBlue
Copy link
Copy Markdown

@johanzander looks like we can add this but for mix/sph

    GrowattSensorEntityDescription(
        key="tlx_import_from_grid_total",
        translation_key="tlx_import_from_grid_total",
        api_key="etoUserTotal",
        native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
        device_class=SensorDeviceClass.ENERGY,
        state_class=SensorStateClass.TOTAL_INCREASING,
        never_resets=True,
        precision=1,
    ),
Get-the-latest-real-time-data-of-SPH-ShowDoc-03-18-2026_09_22_AM

@GraemeDBlue
Copy link
Copy Markdown

@johanzander I know why I never noticed this as my system relies on a CT clamp for this, which is very out of sync so i use my smart meter itself to provide me with this data, in this instance it uses the Octopus meter data

@johanzander
Copy link
Copy Markdown
Owner Author

Do you have any idea if we should add the key only to SPH, or if it exist also for MIX, with the same API key etoUserTotal?

@GraemeDBlue
Copy link
Copy Markdown

Do you have any idea if we should add the key only to SPH, or if it exist also for MIX, with the same API key etoUserTotal?

if you add it to growatt_server/sensor/sph.py first I can verify that, and then I will check the legacy and see if it exists there , can't get it working for some reason atm using the latest PyPi version of the library

@johanzander
Copy link
Copy Markdown
Owner Author

sensor available now in the upstream version: https://github.com/johanzander/growatt_server_upstream/releases/tag/v2.5.0

@GraemeDBlue
Copy link
Copy Markdown

sensor available now in the upstream version: https://github.com/johanzander/growatt_server_upstream/releases/tag/v2.5.0

@johanzander yup trying it out now, updated as soon as I saw you did a new release

@GraemeDBlue
Copy link
Copy Markdown

The only thing now is I'm having issues with influx, cannot for the life of me get it to work, I dont see any data being stored in influx, not even a schema

Got the bess to work , but it took a while to generate it schedule and then it decided to dump my entire battery to export right when I needed it

I still have not actual data showing anyway as getting this error

2026-03-19 17:37:30 | WARNING | core.bess.daily_view_builder:134 - No data available for period 66 (16:30) - creating placeholder (HA sensor data unavailable)
2026-03-19 17:37:30 | WARNING | core.bess.daily_view_builder:134 - No data available for period 67 (16:45) - creating placeholder (HA sensor data unavailable)
2026-03-19 17:37:30 | WARNING | core.bess.daily_view_builder:151 - DailyView has 68 missing period(s) - sensor data was unavailable (e.g., HA restart)
2026-03-19 17:37:30 | INFO  | core.bess.daily_view_builder:156 - Built view: 96 periods (0 actual, 28 predicted, 68 missing), total savings: 8.96
2026-03-19 17:37:30 | ERROR | log_config:127 - Failed to get strategic intent summary: 'SphScheduleManager' object has no attribute 'get_strategic_intent_summary'
2026-03-19 17:37:30 | ERROR | log_config:127 - Error generating dashboard data: Strategic intent summary is required but failed to load: 'SphScheduleManager' object has no attribute 'get_strategic_intent_summary'
2026-03-19 17:32:36 | INFO  | uvicorn.access:480 - 172.30.32.2:46056 - "GET /api/dashboard?resolution=hourly HTTP/1.1" 500
2026-03-19 17:32:37 | INFO  | uvicorn.access:480 - 172.30.32.2:46072 - "GET /api/dashboard?resolution=hourly HTTP/1.1" 500
2026-03-19 17:32:38 | INFO  | uvicorn.access:480 - 172.30.32.2:46072 - "GET /api/dashboard?resolution=hourly HTTP/1.1" 500
2026-03-19 17:33:38 | INFO  | uvicorn.access:480 - 172.30.32.2:47608 - "GET /api/dashboard?resolution=hourly HTTP/1.1" 500
2026-03-19 17:34:21 | INFO  | uvicorn.access:480 - 172.30.32.2:41144 - "GET /api/dashboard?resolution=hourly HTTP/1.1" 500
2026-03-19 17:34:22 | INFO  | uvicorn.access:480 - 172.30.32.2:41158 - "GET /api/dashboard?resolution=hourly HTTP/1.1" 500
2026-03-19 17:37:23 | INFO  | uvicorn.access:480 - 172.30.32.2:60792 - "GET /api/dashboard?resolution=hourly HTTP/1.1" 500
2026-03-19 17:37:23 | INFO  | uvicorn.access:480 - 172.30.32.2:60792 - "GET /api/dashboard?resolution=hourly HTTP/1.1" 500
2026-03-19 17:37:26 | INFO  | uvicorn.access:480 - 172.30.32.2:60792 - "GET /api/dashboard?resolution=hourly HTTP/1.1" 500
2026-03-19 17:37:29 | INFO  | uvicorn.access:480 - 172.30.32.2:60792 - "GET /api/dashboard?resolution=quarter-hourly HTTP/1.1" 500
2026-03-19 17:37:30 | INFO  | uvicorn.access:480 - 172.30.32.2:60806 - "GET /api/dashboard?resolution=quarter-hourly HTTP/1.1" 500

@GraemeDBlue
Copy link
Copy Markdown

2026-03-19 17:40:00 | ERROR | core.bess.ha_api_controller:549 - API request to http://supervisor/core/api/states/ failed: Sensor not found (404). This indicates a missing or misconfigured sensor.
2026-03-19 17:40:00 | ERROR | apscheduler.executors.default:145 - Job "BatterySystemManager.adjust_charging_power (trigger: cron[minute='*/5'], next run at: 2026-03-19 17:45:00 GMT)" raised an exception

@GraemeDBlue
Copy link
Copy Markdown

Home-Assistant-03-19-2026_05_41_PM

@johanzander
Copy link
Copy Markdown
Owner Author

johanzander commented Mar 20, 2026

  1. Did the sensor work? In that case I'll add it to HA Core as well.

  2. I am using the influx HA AddOn https://github.com/hassio-addons/addon-influxdb with the following config in configuration.yaml:

influxdb:
  host: localhost
  port: 8086
  database: !secret influxdb_database
  username: !secret influxdb_username
  password: !secret influxdb_password
  max_retries: 3
  measurement_attr: entity_id
  include:
    domains:
      - sensor
      - climate

Would be good to get this working, as it takes some time to build the data for the optimization which you experienced, and not ideal during debug/development where one need to restart, install new version, etc.

  1. The power sensor are only to monitor total power usage and protect fuses, not mandatory for BESS, so I can make this feature configurable to get rid of the warning/errors (cron job and health check).

  2. Here is an error for SPH:

2026-03-19 17:37:30 | ERROR | log_config:127 - Failed to get strategic intent summary: 'SphScheduleManager' object has no attribute 'get_strategic_intent_summary'
2026-03-19 17:37:30 | ERROR | log_config:127 - Error generating dashboard data: Strategic intent summary is required but failed to load: 'SphScheduleManager' object has no attribute 'get_strategic_intent_summary'

will have a look at it.

  1. Dont know why it is discharging your battery, it is clearly not working correctly yet. We have an error above, one would have hoped that it didn't create any schedule upon failure, but guess it did. Do you have any logs from that as well? Probably separate issue from 4 above.

johanzander and others added 3 commits March 20, 2026 23:53
SphScheduleManager was missing three methods called by the API:
- get_all_tou_segments()
- get_strategic_intent_summary()
- get_detailed_period_groups()
These caused runtime errors on every Inverter page load for SPH users.
Also adds INTENT_TO_MODE class constant (was missing, needed by the above).

Power Monitoring health check now skips sensors with no entity ID
configured instead of reporting 404 errors. If no current sensors are
set up at all, returns a clean OK/not-configured result. Users without
phase current sensors no longer see false-alarm health warnings.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Power monitoring is now disabled by default. When disabled, the health
check returns a WARNING (not an error) and the cron job does not run.
When enabled, all phase current sensors are required — fully deterministic.

The 'message' field is now also shown in the health check UI for disabled/
warning states.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@johanzander
Copy link
Copy Markdown
Owner Author

New version available, fixed 3 (configurable, set it to false) and 4 .

Resolves conflicts between power_monitoring_enabled (this branch) and
consumption_strategy (main) — both fields kept in HomeSettings and
_apply_settings.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@GraemeDBlue
Copy link
Copy Markdown

@johanzander thanks, I'll try this tomorrow, Im away today.

@GraemeDBlue
Copy link
Copy Markdown

@johanzander not sure what has changed now as getting this error now
Home-Assistant-03-23-2026_11_17_AM

I can see data now in my influx database, but still getting a 500 error in bess when trying to access the db

2026-03-23 11:08:37 | ERROR | core.bess.ha_api_controller:552 - API request to http://supervisor/core/api/states/ failed: Sensor not found (404). This indicates a missing or misconfigured sensor.
2026-03-23 11:08:37 | ERROR | core.bess.ha_api_controller:552 - API request to http://supervisor/core/api/states/ failed: Sensor not found (404). This indicates a missing or misconfigured sensor.
2026-03-23 11:08:37 | ERROR | core.bess.ha_api_controller:552 - API request to http://supervisor/core/api/states/ failed: Sensor not found (404). This indicates a missing or misconfigured sensor.
2026-03-23 11:08:37 | ERROR | core.bess.ha_api_controller:552 - API request to http://supervisor/core/api/states/ failed: Sensor not found (404). This indicates a missing or misconfigured sensor.
2026-03-23 11:08:37 | ERROR | core.bess.ha_api_controller:552 - API request to http://supervisor/core/api/states/ failed: Sensor not found (404). This indicates a missing or misconfigured sensor.
2026-03-23 11:08:37 | ERROR | core.bess.ha_api_controller:552 - API request to http://supervisor/core/api/states/ failed: Sensor not found (404). This indicates a missing or misconfigured sensor.
2026-03-23 11:08:37 | ERROR | core.bess.ha_api_controller:552 - API request to http://supervisor/core/api/states/ failed: Sensor not found (404). This indicates a missing or misconfigured sensor.
2026-03-23 11:08:38 | ERROR | core.bess.influxdb_helper:155 - Error from InfluxDB: 500

@GraemeDBlue
Copy link
Copy Markdown

Home-Assistant-03-23-2026_11_23_AM

@johanzander
Copy link
Copy Markdown
Owner Author

can you export and share the debug logs instead? It in the upper right corner on the system health page.

@GraemeDBlue
Copy link
Copy Markdown

- Add energy provider configuration (Octopus entity IDs, Nordpool config)
  to debug report settings section, making it visible when users share logs
- Detect placeholder InfluxDB credentials and surface a clear WARNING in
  health check instead of failing with a connection error

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@johanzander
Copy link
Copy Markdown
Owner Author

Hi,

You are still running an old BESS version. The SPH support is on a branch, but the HA AddOn method does not support branches, it fetches from main.

I see two approaches. Either you install it from locally instead. Or I merge the SPH support to main, as experimental support.

The local installation has a few more steps:

To install the feature branch locally:

  1. On a computer, clone the feature branch:
  git clone -b feature/sph-inverter-support https://github.com/johanzander/bess-manager.git         
  cd bess-manager                                                                                   
  chmod +x package-addon.sh                                                                         
  ./package-addon.sh                                                                                
  2. Copy the build/bess_manager folder to /addons/bess_manager on your HA host (via SSH, Samba, or
  File Editor add-on)                                                                               
  3. In HA go to Settings → Add-ons → Reload (button in top right)
  4. Find "BESS Battery Manager" under Local add-ons and install it   

Maybe not the smoothest experience. Let me know what you prefer, happy to merge to main if that is easier.

@GraemeDBlue
Copy link
Copy Markdown

Hi,

You are still running an old BESS version. The SPH support is on a branch, but the HA AddOn method does not support branches, it fetches from main.

I see two approaches. Either you install it from locally instead. Or I merge the SPH support to main, as experimental support.

The local installation has a few more steps:

To install the feature branch locally:

  1. On a computer, clone the feature branch:
  git clone -b feature/sph-inverter-support https://github.com/johanzander/bess-manager.git         
  cd bess-manager                                                                                   
  chmod +x package-addon.sh                                                                         
  ./package-addon.sh                                                                                
  2. Copy the build/bess_manager folder to /addons/bess_manager on your HA host (via SSH, Samba, or
  File Editor add-on)                                                                               
  3. In HA go to Settings → Add-ons → Reload (button in top right)
  4. Find "BESS Battery Manager" under Local add-ons and install it   

Maybe not the smoothest experience. Let me know what you prefer, happy to merge to main if that is easier.

Hi, That's what I have been doing, it forced me to upgrade but then I did the instructions above to copy the sph branch over it, I can fully remove and try again to make sure

@GraemeDBlue
Copy link
Copy Markdown

@johanzander so the Inverter and Insights pages are now populating , but the the Dashboard and Savings still give me 500's
Home-Assistant-03-24-2026_09_46_AM

Home-Assistant-03-24-2026_09_46_AM (1) Home-Assistant-03-24-2026_09_46_AM (2)

@GraemeDBlue
Copy link
Copy Markdown

Home-Assistant-03-24-2026_09_49_AM Home-Assistant-03-24-2026_09_50_AM

@GraemeDBlue
Copy link
Copy Markdown

2026-03-24 09:51:17 | ERROR | core.bess.ha_api_controller:558 - API request to http://supervisor/core/api/states/ failed: Sensor not found (404). This indicates a missing or misconfigured sensor.
2026-03-24 09:51:17 | ERROR | core.bess.ha_api_controller:727 - Error fetching sensor local_load_power: 404 Client Error: Not Found for url: http://supervisor/core/api/states/
2026-03-24 09:51:17 | WARNING | core.bess.runtime_failure_tracker:91 - Runtime failure recorded [sensor_read]: Read sensor 'local_load_power' - 404 Client Error: Not Found for url: http://supervisor/core/api/states/
2026-03-24 09:51:17 | ERROR | core.bess.ha_api_controller:558 - API request to http://supervisor/core/api/states/ failed: Sensor not found (404). This indicates a missing or misconfigured sensor.
2026-03-24 09:51:17 | ERROR | core.bess.ha_api_controller:727 - Error fetching sensor self_power: 404 Client Error: Not Found for url: http://supervisor/core/api/states/
2026-03-24 09:51:17 | WARNING | core.bess.runtime_failure_tracker:91 - Runtime failure recorded [sensor_read]: Read sensor 'self_power' - 404 Client Error: Not Found for url: http://supervisor/core/api/states/
2026-03-24 09:51:17 | ERROR | log_config:127 - Error generating dashboard data: bad operand type for abs(): 'NoneType'
2026-03-24 09:51:17 | INFO  | uvicorn.access:480 - 172.30.32.2:40926 - "GET /api/dashboard?resolution=quarter-hourly HTTP/1.1" 500
2026-03-24 09:51:17 | INFO  | uvicorn.access:480 - 172.30.32.2:40934 - "GET /api/dashboard-health-summary HTTP/1.1" 200
2026-03-24 09:51:17 | INFO  | uvicorn.access:480 - 172.30.32.2:40936 - "GET /api/historical-data-status HTTP/1.1" 200
2026-03-24 09:51:37 | INFO  | core.bess.daily_view_builder:103 - Building view for 2026-03-24 at period 39 (09:45)
2026-03-24 09:51:37 | INFO  | core.bess.daily_view_builder:156 - Built view: 96 periods (39 actual, 57 predicted, 0 missing), total savings: -9.32
2026-03-24 09:51:37 | ERROR | core.bess.ha_api_controller:558 - API request to http://supervisor/core/api/states/ failed: Sensor not found (404). This indicates a missing or misconfigured sensor.
2026-03-24 09:51:37 | ERROR | core.bess.ha_api_controller:727 - Error fetching sensor local_load_power: 404 Client Error: Not Found for url: http://supervisor/core/api/states/
2026-03-24 09:51:37 | WARNING | core.bess.runtime_failure_tracker:91 - Runtime failure recorded [sensor_read]: Read sensor 'local_load_power' - 404 Client Error: Not Found for url: http://supervisor/core/api/states/
2026-03-24 09:51:37 | ERROR | core.bess.ha_api_controller:558 - API request to http://supervisor/core/api/states/ failed: Sensor not found (404). This indicates a missing or misconfigured sensor.
2026-03-24 09:51:37 | ERROR | core.bess.ha_api_controller:727 - Error fetching sensor self_power: 404 Client Error: Not Found for url: http://supervisor/core/api/states/
2026-03-24 09:51:37 | WARNING | core.bess.runtime_failure_tracker:91 - Runtime failure recorded [sensor_read]: Read sensor 'self_power' - 404 Client Error: Not Found for url: http://supervisor/core/api/states/
2026-03-24 09:51:37 | ERROR | log_config:127 - Error generating dashboard data: bad operand type for abs(): 'NoneType'

@GraemeDBlue
Copy link
Copy Markdown

this has now appeared

Home-Assistant-03-24-2026_10_32_AM

@johanzander
Copy link
Copy Markdown
Owner Author

@GraemeDBlue what I've done now is:

  1. merged the SPH support to main with experiemental support, meaning I know it does not fully work yet.
  2. Added a HA mock server with the possibility to replay a scenario with same system/sensor config and values from exported debug logs.

So to make the finalization of this feature faster I propose that you:

  1. Update and run the latest official version instead.
  2. Export your debug log after startup and share it with me.

Then I can replay your setup and hopefully make it work (or at least get the basics working) without having an SPH inverter!

@GraemeDBlue
Copy link
Copy Markdown

@GraemeDBlue what I've done now is:

  1. merged the SPH support to main with experiemental support, meaning I know it does not fully work yet.
  2. Added a HA mock server with the possibility to replay a scenario with same system/sensor config and values from exported debug logs.

So to make the finalization of this feature faster I propose that you:

  1. Update and run the latest official version instead.
  2. Export your debug log after startup and share it with me.

Then I can replay your setup and hopefully make it work (or at least get the basics working) without having an SPH inverter!

@johanzander great sounds like a good idea, I do think there might still need to be additional work on the Octopus bit for my particular product Flux as the schedule it predicted would have made me charge from grid during expensive slots , that I avoid, but let's get the mechanics working and then come back to the scheduler

@johanzander
Copy link
Copy Markdown
Owner Author

merged.

@johanzander johanzander closed this Apr 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants