{"id":20825744,"url":"https://github.com/aspeakman/soliscontrol","last_synced_at":"2025-10-04T16:25:17.063Z","repository":{"id":232034046,"uuid":"783284074","full_name":"aspeakman/SolisControl","owner":"aspeakman","description":"Control Solis inverters using the Solis Cloud API - includes a Home Assistant pyscript app for the Octopus Flux tariff","archived":false,"fork":false,"pushed_at":"2025-04-29T07:08:42.000Z","size":1187,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-07T20:34:50.485Z","etag":null,"topics":["flux","hass","home-assistant","homeassistant","octopus","pyscript","solis","solis-pv-inverters","soliscloud"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aspeakman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-04-07T13:14:23.000Z","updated_at":"2025-04-29T07:08:48.000Z","dependencies_parsed_at":"2025-04-18T10:58:19.217Z","dependency_job_id":"7665a7e1-a634-4906-aaa6-5691175c8468","html_url":"https://github.com/aspeakman/SolisControl","commit_stats":null,"previous_names":["aspeakman/soliscontrol"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspeakman%2FSolisControl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspeakman%2FSolisControl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspeakman%2FSolisControl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspeakman%2FSolisControl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aspeakman","download_url":"https://codeload.github.com/aspeakman/SolisControl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252953718,"owners_count":21830891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flux","hass","home-assistant","homeassistant","octopus","pyscript","solis","solis-pv-inverters","soliscloud"],"created_at":"2024-11-17T23:06:41.460Z","updated_at":"2025-10-04T16:25:16.960Z","avatar_url":"https://github.com/aspeakman.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SolisControl\n\nA Python package **soliscontrol** which has modules for controlling a Solis battery/inverter setup using the Solis Cloud API. \nThis can be used to view key inverter parameters and to set daily charge times (within a cheap rate period) or discharge times (within a peak rate period). \nIt will also check that times are synchronised with the inverter and that charge currents do not exceed the configured maxima.\n\nThe project also includes **solis_flux_times** a [Pyscript](https://hacs-pyscript.readthedocs.io/en/latest/) Home Assistant app \nfor use with energy suppliers that offer cheap rate charging periods and peak rate discharging periods\nsuch as the [Octopus Flux](https://octopus.energy/smart/flux/) tariff. For details see [README2](./README2.md).\n\nThis project is based on the Solis API docs for \n[monitoring](https://oss.soliscloud.com/templet/SolisCloud%20Platform%20API%20Document%20V2.0.pdf)\nand [control](https://oss.soliscloud.com/doc/SolisCloud%20Device%20Control%20API%20V2.0.pdf)\t\n(and on the [solis_control](https://github.com/stevegal/solis_control) project which\nhas the practical details for constructing requests to the Solis API). \n\n## Installation\n\nSee `INSTALL.txt`\n\n## Pre-requisites\n\nYou should access the Solis Cloud API by following [these \ninstructions](https://solis-service.solisinverters.com/en/support/solutions/articles/44002212561-request-api-access-soliscloud).\nBased on the values returned you will need to create a `secrets.yaml` - replace xxxx in the following example:\n```\nsolis_key_id: \"xxxx\"\nsolis_key_secret: \"xxxx\"\nsolis_user_name: \"xxxx\"\nsolis_password: \"xxxx\"\nsolis_station_id: \"xxxx\"\n```\n\nOn your inverter you will also need to enable _Self Use_ mode and \nset _Time of Use: Optimal Income_ to _Run_ - see \u003chttps://www.youtube.com/watch?v=h1A80cSOrhA\u003e\n\n## Configuration\n\nPut your `secrets.yaml` in the _soliscontrol_ folder then use `example_main.yaml` as a template \nto create a `main.yaml` in the _soliscontrol_ folder too - an example as follows:\n\n```\nbattery_capacity: 7.1 # in kWh - nominal stored energy of battery at 100% SOC (eg 2 * Pylontech US3000C with Nominal Capacity of 3.55 kWh each)\nbattery_max_current: 74 # in amps (eg 2 * Pylontech US3000C with spec Recommend Charge Current of 37A each)\n# Also see https://www.youtube.com/watch?v=h1A80cSOrhA to view battery Dis/Charging Current Limits\ninverter_max_current: 62.5 # in amps - see inverter datasheet specs for 'Max. charge / discharge current'  (eg 62.5A or 100A)\n#api_url: = 'https://www.soliscloud.com:13333' # default\ncharge_period: # First period when energy can be imported from the grid at low rates\n  start: \"02:01\"\n  end: \"04:59\" \n  current: 50 # charge current setting in amps\n  sync: 'random' # if 'start', charging is tied to start of period or if 'end' it is tied to the end (otherwise it starts randomly)\ndischarge_period: # First period when energy can be exported to the grid at high rates\n  start: \"16:01\" # set both to \"00:00\" if no discharging\n  end: \"18:59\" # set both to \"00:00\" if no discharging\n  current: 50 # discharge current setting in amps\n  sync: 'start' # if 'start', discharging is tied to start of period or if 'end' it is tied to the end (otherwise it starts randomly)\n```\n\n**Note there can be up to 3 charge_periods and 3 discharge periods** with different start and end times. \nAs well as _charge_period_ and _discharge_period_ you could also define _charge_period2_, _charge_period3_,\n_discharge_period2_ and _discharge_period3_ in the example above.\n\n## Actions\nUse the `solis_run.py` module. You should save your `main.yaml` and `secrets.yaml` in the same folder.\n\nTo get help:\n\n\u003e python solis_run.py -h\n\nTo get inverter status information:\n\n\u003e python solis_run.py\n\nTo set inverter charge and discharge times for the periods above to one hour per day:\n\n\u003e python solis_run.py -c1 60 -d1 60\n\nTo turn inverter charge and discharge times off:\n\n\u003e python solis_run.py -c1 0 -d1 0\n\nIf _charge_period3_ was configured, you could clear all existing settings and then set timeslot 3 to charge for one hour like this:\n\n\u003e python solis_run.py -r -c3 60\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faspeakman%2Fsoliscontrol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faspeakman%2Fsoliscontrol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faspeakman%2Fsoliscontrol/lists"}