{"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-06-24T04:01:17.147Z","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-05-04T09:01:22.000Z","size":4632,"stargazers_count":181,"open_issues_count":10,"forks_count":81,"subscribers_count":31,"default_branch":"main","last_synced_at":"2026-06-10T22:03:02.303Z","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,"dco":null,"cla":null}},"created_at":"2016-08-02T12:03:35.000Z","updated_at":"2026-06-08T02:38:44.000Z","dependencies_parsed_at":"2023-02-12T21:01:43.960Z","dependency_job_id":"b4c56ac0-14fa-4348-a41a-c0c975be1d1f","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":34265491,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"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":504,"total_committers":12,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":42.0,"dds":0.12896825396825395,"past_year_total_commits":4,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":4.0,"past_year_dds":0.0,"last_synced_at":"2026-06-15T00:00:45.462Z","last_synced_commit":"575ae8ba46c977beab54b6106195a53776c9633a","created_at":"2023-03-27T10:47:44.937Z","updated_at":"2026-06-15T00:00:42.500Z","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":"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}],"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-06-17T00:00:13.021Z","repositories_count":6260530,"commits_count":877413056,"contributors_count":35041043,"owners_count":1167188,"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-06-08T21:01:09.635Z","status":"error","issues_count":50,"pull_requests_count":81,"avg_time_to_close_issue":8879144.829268293,"avg_time_to_close_pull_request":443100.8375,"issues_closed_count":41,"pull_requests_closed_count":80,"pull_request_authors_count":14,"issue_authors_count":9,"avg_comments_per_issue":3.96,"avg_comments_per_pull_request":1.7037037037037037,"merged_pull_requests_count":63,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":135629.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":1,"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":1,"created_at":"2023-05-09T10:37:57.043Z","updated_at":"2026-06-08T21:01:09.635Z","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,"MEMBER":18,"CONTRIBUTOR":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,"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-06-17T00:00:21.091Z","repositories_count":14812496,"issues_count":33149476,"pull_requests_count":109445683,"authors_count":11308636,"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":{"MEMBER":1},"past_year_issue_authors":{},"past_year_pull_request_authors":{"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":7,"CreateEvent":1},"last_year":{"DeleteEvent":3,"ForkEvent":2,"WatchEvent":10,"PushEvent":7,"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.73718007783463,"created_at":"2023-09-11T14:52:07.052Z","updated_at":"2026-06-24T04:01:17.359Z","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"}