{"id":19776,"name":"Charge Controller Firmware","description":"Firmware for LibreSolar MPPT/PWM charge controllers.","url":"https://github.com/LibreSolar/charge-controller-firmware","last_synced_at":"2026-08-30T01:03:07.379Z","repository":{"id":10919991,"uuid":"64753326","full_name":"LibreSolar/charge-controller-firmware","owner":"LibreSolar","description":"Firmware for Libre Solar MPPT/PWM charge controllers","archived":false,"fork":false,"pushed_at":"2026-07-20T09:37:54.000Z","size":4635,"stargazers_count":186,"open_issues_count":10,"forks_count":83,"subscribers_count":31,"default_branch":"main","last_synced_at":"2026-08-24T22:37:20.357Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://libre.solar/charge-controller-firmware/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LibreSolar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2016-08-02T12:03:35.000Z","updated_at":"2026-08-21T11:12:53.000Z","dependencies_parsed_at":"2026-08-10T13:44:00.502Z","dependency_job_id":null,"html_url":"https://github.com/LibreSolar/charge-controller-firmware","commit_stats":{"total_commits":499,"total_committers":12,"mean_commits":"41.583333333333336","dds":0.1302605210420842,"last_synced_commit":"e175ad0fdb1efc7ca0c7e75a947c1cfec49023cd"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/LibreSolar/charge-controller-firmware","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LibreSolar%2Fcharge-controller-firmware","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LibreSolar%2Fcharge-controller-firmware/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LibreSolar%2Fcharge-controller-firmware/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LibreSolar%2Fcharge-controller-firmware/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LibreSolar","download_url":"https://codeload.github.com/LibreSolar/charge-controller-firmware/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LibreSolar%2Fcharge-controller-firmware/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36907688,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-22T15:14:58.755Z","status":"online","status_checked_at":"2026-08-25T02:00:06.831Z","response_time":104,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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"}},"owner":{"login":"LibreSolar","name":"Libre Solar Project","uuid":"17674115","kind":"organization","description":"","email":null,"website":"https://libre.solar","location":"Hamburg, Germany","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/17674115?v=4","repositories_count":46,"last_synced_at":"2024-04-14T08:13:49.584Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/LibreSolar","funding_links":[],"total_stars":1105,"followers":112,"following":0,"created_at":"2022-11-06T05:38:10.395Z","updated_at":"2024-04-14T08:14:02.001Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LibreSolar","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LibreSolar/repositories"},"packages":[],"commits":{"id":1253893,"full_name":"LibreSolar/charge-controller-firmware","default_branch":"main","total_commits":505,"total_committers":13,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":38.84615384615385,"dds":0.1306930693069307,"past_year_total_commits":5,"past_year_total_committers":2,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":2.5,"past_year_dds":0.19999999999999996,"last_synced_at":"2026-08-26T23:31:13.878Z","last_synced_commit":"b65f274541b1589d84c9ef30a567589d5f521539","created_at":"2023-03-27T10:47:44.937Z","updated_at":"2026-08-26T23:31:13.833Z","committers":[{"name":"Martin Jäger","email":"martin@libre.solar","login":"martinjaeger","count":439},{"name":"hogthrob","email":"hogthrob","login":"hogthrob","count":24},{"name":"Hogthrob","email":"hogthrob@github.com","login":null,"count":12},{"name":"Jordan Silverman","email":"jordanjsilverman@gmail.com","login":"JordanSilverman","count":9},{"name":"azeemshatp","email":"azeemsha.tp@scene.community","login":"azeemshatp","count":7},{"name":"Daniel Fanache","email":"daniel@connectedenergy.net","login":"daniel-connectedenergy","count":5},{"name":"mulles","email":"mulles","login":"mulles","count":2},{"name":"hoijui","email":"hoijui.quaero@gmail.com","login":"hoijui","count":2},{"name":"xsider","email":"xsider@majox.de","login":"xsider","count":1},{"name":"maclow92","email":"48244314+maclow92","login":"maclow92","count":1},{"name":"Wieland Schopohl","email":"w.schopohl@gmail.com","login":"wschopohl","count":1},{"name":"Rhushabh","email":"rhushabhraghavendrarr@gmail.com","login":"RhushabhRR","count":1},{"name":"Leonard Möller","email":"leonard.moeller@live.com","login":"Gretel5X","count":1}],"past_year_committers":[{"name":"Martin Jäger","email":"martin@libre.solar","login":"martinjaeger","count":4},{"name":"xsider","email":"xsider@majox.de","login":"xsider","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/LibreSolar%2Fcharge-controller-firmware/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-08-28T00:00:07.607Z","repositories_count":6819499,"commits_count":987481644,"contributors_count":41656385,"owners_count":1371459,"committers_count":3377938,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"LibreSolar/charge-controller-firmware","html_url":"https://github.com/LibreSolar/charge-controller-firmware","last_synced_at":"2026-08-29T00:32:11.232Z","status":null,"issues_count":50,"pull_requests_count":83,"avg_time_to_close_issue":8879144.829268293,"avg_time_to_close_pull_request":2082700.9146341463,"issues_closed_count":41,"pull_requests_closed_count":82,"pull_request_authors_count":15,"issue_authors_count":9,"avg_comments_per_issue":3.96,"avg_comments_per_pull_request":1.6626506024096386,"merged_pull_requests_count":64,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":3,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":92521.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"created_at":"2023-05-09T10:37:57.043Z","updated_at":"2026-08-29T00:32:11.232Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/LibreSolar%2Fcharge-controller-firmware","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/LibreSolar%2Fcharge-controller-firmware/issues","issue_labels_count":{"enhancement":14,"bug":5,"help wanted":1,"question":1},"pull_request_labels_count":{},"issue_author_associations_count":{"MEMBER":29,"COLLABORATOR":12,"NONE":7,"CONTRIBUTOR":2},"pull_request_author_associations_count":{"COLLABORATOR":39,"CONTRIBUTOR":20,"MEMBER":18,"NONE":6},"issue_authors":{"martinjaeger":29,"hogthrob":12,"DeeFuse":3,"tasiek30":1,"JordanSilverman":1,"luizvilla":1,"itofficeeu":1,"azeemshatp":1,"fhlb-tech":1},"pull_request_authors":{"hogthrob":36,"martinjaeger":18,"azeemshatp":5,"mulles":4,"Gretel5X":3,"maclow92":3,"JordanSilverman":3,"xsider":2,"hoijui":2,"luizvilla":2,"RhushabhRR":1,"trillerpfeife":1,"hugueslarrive":1,"foldedtoad":1,"mikelovic":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-08-30T00:00:07.555Z","repositories_count":16608838,"issues_count":43504909,"pull_requests_count":138576936,"authors_count":11574686,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":2,"MEMBER":1},"past_year_issue_authors":{},"past_year_pull_request_authors":{"xsider":2,"martinjaeger":1},"maintainers":[{"login":"hogthrob","count":48,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/hogthrob"},{"login":"martinjaeger","count":47,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/martinjaeger"},{"login":"Gretel5X","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Gretel5X"}],"active_maintainers":[{"login":"martinjaeger","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/martinjaeger"}]},"events":{"total":{"DeleteEvent":3,"ForkEvent":3,"WatchEvent":21,"PushEvent":8,"CreateEvent":1},"last_year":{"DeleteEvent":3,"ForkEvent":2,"WatchEvent":7,"PushEvent":8,"CreateEvent":1}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"docs/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-07T06:00:51.326Z","updated_at":"2022-08-07T06:00:51.326Z","repository_link":"https://github.com/LibreSolar/charge-controller-firmware/blob/main/docs/requirements.txt","dependencies":[{"id":588153901,"package_name":"breathe","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":588153902,"package_name":"Sphinx","ecosystem":"pypi","requirements":"\u003c4","direct":true,"kind":"runtime","optional":false},{"id":588153903,"package_name":"sphinx-notfound-page","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":588153904,"package_name":"sphinx-rtd-theme","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":588153905,"package_name":"sphinx-tabs","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/docs.yml","sha":null,"kind":"manifest","created_at":"2023-01-11T17:59:25.708Z","updated_at":"2023-01-11T17:59:25.708Z","repository_link":"https://github.com/LibreSolar/charge-controller-firmware/blob/main/.github/workflows/docs.yml","dependencies":[{"id":6870052885,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6870052886,"package_name":"peaceiris/actions-gh-pages","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/zephyr.yml","sha":null,"kind":"manifest","created_at":"2023-01-11T17:59:25.735Z","updated_at":"2023-01-11T17:59:25.735Z","repository_link":"https://github.com/LibreSolar/charge-controller-firmware/blob/main/.github/workflows/zephyr.yml","dependencies":[{"id":6870052888,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6870052889,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]}],"score":7.843064016692054,"created_at":"2023-09-11T14:52:07.052Z","updated_at":"2026-08-30T01:03:07.380Z","avatar_url":"https://github.com/LibreSolar.png","language":"C++","category":"Renewable Energy","sub_category":"Photovoltaics and Solar Energy","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# Libre Solar Charge Controller Firmware\n\n![build badge](https://github.com/LibreSolar/charge-controller-firmware/actions/workflows/zephyr.yml/badge.svg)\n\nThis repository contains the firmware for the different Libre Solar Charge Controllers based on [Zephyr RTOS](https://www.zephyrproject.org/).\n\nCoding style is described [here](https://github.com/LibreSolar/coding-style).\n\n## Development and release model\n\nThe `main` branch is used for ongoing development of the firmware.\n\nReleases are created from `main` after significant updates have been introduced to the firmware. Each release has to pass tests with multiple boards.\n\nA release is tagged with a version number consisting of the release year and a release count for that year (starting at zero). For back-porting of bug-fixes, a branch named after the release followed by `-branch` is created, e.g. `v21.0-branch`.\n\n## Documentation\n\nThe firmware documentation including build instructions and API reference can be found under [libre.solar/charge-controller-firmware](https://libre.solar/charge-controller-firmware/).\n\nIn order to build the documentation locally you need to install Doxygen, Sphinx and Breathe and run `make html` in the `docs` folder.\n\n## License\n\nThis firmware is released under the [Apache-2.0 License](LICENSE).\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/19776","html_url":"https://ost.ecosyste.ms/projects/19776"}