{"id":314822,"name":"Homeassistant E3DC Integration","description":"Monitor and control various Battery management systems (BMS) over Bluetooth and send the results to Home Assistant.","url":"https://github.com/fl4p/batmon-ha","last_synced_at":"2026-07-03T21:30:29.920Z","repository":{"id":53875748,"uuid":"445289350","full_name":"fl4p/batmon-ha","owner":"fl4p","description":"Add-on for Home Assistant to connect JK, JBD, Daly, ANT, SOK, Supervolt and other BMS via Bluetooth","archived":false,"fork":false,"pushed_at":"2026-06-19T13:40:14.000Z","size":1040,"stargazers_count":490,"open_issues_count":48,"forks_count":112,"subscribers_count":21,"default_branch":"master","last_synced_at":"2026-06-21T19:28:26.491Z","etag":null,"topics":["ant-bms","battery-management-system","battery-monitor","ble","bluetooth","bluetooth-low-energy","daly-bms","dalybms","home-assistant","jbd-bms","jikong-bms","jk-bms","jkbms","mqtt","seplos-bms","smart-bms","smartshunt","sok-bms","victron","xiaoxiang"],"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/fl4p.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-01-06T19:36:55.000Z","updated_at":"2026-06-20T10:28:33.000Z","dependencies_parsed_at":"2023-09-28T21:51:38.637Z","dependency_job_id":"13e56734-5a52-44d0-a726-5ddbd83aafaf","html_url":"https://github.com/fl4p/batmon-ha","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/fl4p/batmon-ha","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fl4p","download_url":"https://codeload.github.com/fl4p/batmon-ha/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34981391,"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-30T02:00:05.919Z","response_time":92,"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":"fl4p","name":"Fabian","uuid":"2705942","kind":"user","description":"","email":"gh@fabi.me","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/2705942?u=f8788047690a17c48315e5cc8c870529e5efe329\u0026v=4","repositories_count":117,"last_synced_at":"2026-06-21T19:21:55.841Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/fl4p","funding_links":[],"total_stars":694,"followers":54,"following":9,"created_at":"2022-11-04T09:24:14.611Z","updated_at":"2026-06-21T19:21:55.841Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fl4p","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fl4p/repositories"},"packages":[{"id":11733006,"name":"github.com/fl4p/batmon-ha","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/fl4p/batmon-ha","keywords_array":[],"namespace":null,"versions_count":2,"first_release_published_at":"2023-03-28T17:39:34.000Z","latest_release_published_at":"2023-03-28T17:39:34.000Z","latest_release_number":"v0.0.54","last_synced_at":"2026-06-09T17:01:26.612Z","created_at":"2025-06-05T11:14:22.264Z","updated_at":"2026-06-09T17:01:26.612Z","registry_url":"https://pkg.go.dev/github.com/fl4p/batmon-ha","install_command":"go get github.com/fl4p/batmon-ha","documentation_url":"https://pkg.go.dev/github.com/fl4p/batmon-ha#section-documentation","metadata":{},"repo_metadata":{"id":53875748,"uuid":"445289350","full_name":"fl4p/batmon-ha","owner":"fl4p","description":"Add-on for Home Assistant to connect JK, JBD, Daly, ANT, SOK, Supervolt and other BMS via Bluetooth","archived":false,"fork":false,"pushed_at":"2025-12-13T16:48:37.000Z","size":674,"stargazers_count":435,"open_issues_count":79,"forks_count":91,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-12-15T10:10:09.271Z","etag":null,"topics":["ant-bms","battery-management-system","battery-monitor","ble","bluetooth","bluetooth-low-energy","daly-bms","dalybms","home-assistant","jbd-bms","jikong-bms","jk-bms","jkbms","mqtt","seplos-bms","smart-bms","smartshunt","sok-bms","victron","xiaoxiang"],"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/fl4p.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-01-06T19:36:55.000Z","updated_at":"2025-12-13T16:48:41.000Z","dependencies_parsed_at":"2023-09-28T21:51:38.637Z","dependency_job_id":"13e56734-5a52-44d0-a726-5ddbd83aafaf","html_url":"https://github.com/fl4p/batmon-ha","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/fl4p/batmon-ha","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fl4p","download_url":"https://codeload.github.com/fl4p/batmon-ha/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27756569,"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","status":"online","status_checked_at":"2025-12-15T02:00:09.782Z","response_time":96,"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_record":{"login":"fl4p","name":"Fabian","uuid":"2705942","kind":"user","description":"","email":"gh@fabi.me","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/2705942?u=f8788047690a17c48315e5cc8c870529e5efe329\u0026v=4","repositories_count":104,"last_synced_at":"2025-10-31T01:25:54.879Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/fl4p","funding_links":[],"total_stars":615,"followers":48,"following":11,"created_at":"2022-11-04T09:24:14.611Z","updated_at":"2025-10-31T01:25:54.879Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fl4p","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fl4p/repositories"},"tags":[{"name":"shared-scanner","sha":"95df98647cd22471be6c2e99ff8892f485ee355c","kind":"commit","published_at":"2025-11-13T18:37:10.000Z","download_url":"https://codeload.github.com/fl4p/batmon-ha/tar.gz/shared-scanner","html_url":"https://github.com/fl4p/batmon-ha/releases/tag/shared-scanner","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/fl4p/batmon-ha@shared-scanner","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/tags/shared-scanner","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/tags/shared-scanner/manifests"},{"name":"v1.83","sha":"e953f5d4f94a9d4bbaabdd76d81d5b6bea943398","kind":"commit","published_at":"2025-08-30T13:41:56.000Z","download_url":"https://codeload.github.com/fl4p/batmon-ha/tar.gz/v1.83","html_url":"https://github.com/fl4p/batmon-ha/releases/tag/v1.83","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/fl4p/batmon-ha@v1.83","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/tags/v1.83","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/tags/v1.83/manifests"},{"name":"v1.79","sha":"686955bbab093ba776026c6ccef2f7b87952dde9","kind":"commit","published_at":"2024-12-09T19:33:28.000Z","download_url":"https://codeload.github.com/fl4p/batmon-ha/tar.gz/v1.79","html_url":"https://github.com/fl4p/batmon-ha/releases/tag/v1.79","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/fl4p/batmon-ha@v1.79","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/tags/v1.79","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/tags/v1.79/manifests"},{"name":"v0.0.60-bleak-0.20.2","sha":"754990ba41d36dd3a2120642ff413905661efc65","kind":"commit","published_at":"2023-04-21T15:33:17.000Z","download_url":"https://codeload.github.com/fl4p/batmon-ha/tar.gz/v0.0.60-bleak-0.20.2","html_url":"https://github.com/fl4p/batmon-ha/releases/tag/v0.0.60-bleak-0.20.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/fl4p/batmon-ha@v0.0.60-bleak-0.20.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/tags/v0.0.60-bleak-0.20.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/tags/v0.0.60-bleak-0.20.2/manifests"},{"name":"release-v0.0.57","sha":"66b34e5f6b26817bea57d7ca701a02a9369e9c6a","kind":"commit","published_at":"2023-04-07T13:02:20.000Z","download_url":"https://codeload.github.com/fl4p/batmon-ha/tar.gz/release-v0.0.57","html_url":"https://github.com/fl4p/batmon-ha/releases/tag/release-v0.0.57","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/fl4p/batmon-ha@release-v0.0.57","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/tags/release-v0.0.57","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/tags/release-v0.0.57/manifests"},{"name":"v0.0.54","sha":"45946b9e89cc2cb124444bd91f5c76120ec77306","kind":"commit","published_at":"2023-03-28T17:39:34.000Z","download_url":"https://codeload.github.com/fl4p/batmon-ha/tar.gz/v0.0.54","html_url":"https://github.com/fl4p/batmon-ha/releases/tag/v0.0.54","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/fl4p/batmon-ha@v0.0.54","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/tags/v0.0.54","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/tags/v0.0.54/manifests"},{"name":"release0.0.46","sha":"53ef876eb2d1403a72f4a51fe9412cbf0f24502e","kind":"commit","published_at":"2022-11-04T16:35:33.000Z","download_url":"https://codeload.github.com/fl4p/batmon-ha/tar.gz/release0.0.46","html_url":"https://github.com/fl4p/batmon-ha/releases/tag/release0.0.46","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/fl4p/batmon-ha@release0.0.46","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/tags/release0.0.46","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/tags/release0.0.46/manifests"}]},"repo_metadata_updated_at":"2025-12-18T06:28:33.869Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":5.757538697138725,"dependent_packages_count":5.395053785167736,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":5.57629624115323},"purl":"pkg:golang/github.com/fl4p/batmon-ha","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/fl4p/batmon-ha","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/fl4p/batmon-ha","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/fl4p/batmon-ha/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-12-15T20:07:02.280Z","issues_count":132,"pull_requests_count":20,"avg_time_to_close_issue":16058765.431818182,"avg_time_to_close_pull_request":613553.4166666666,"issues_closed_count":44,"pull_requests_closed_count":12,"pull_request_authors_count":11,"issue_authors_count":118,"avg_comments_per_issue":2.9015151515151514,"avg_comments_per_pull_request":0.85,"merged_pull_requests_count":8,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":51,"past_year_pull_requests_count":7,"past_year_avg_time_to_close_issue":3479467.0,"past_year_avg_time_to_close_pull_request":1638113.5,"past_year_issues_closed_count":14,"past_year_pull_requests_closed_count":4,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":44,"past_year_avg_comments_per_issue":2.2549019607843137,"past_year_avg_comments_per_pull_request":1.7142857142857142,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":4,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/issues","maintainers":[{"login":"fl4p","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/fl4p"},{"login":"fl4p-old","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/fl4p-old"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Ffl4p%2Fbatmon-ha/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Ffl4p%2Fbatmon-ha/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Ffl4p%2Fbatmon-ha/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Ffl4p%2Fbatmon-ha/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Ffl4p%2Fbatmon-ha/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Ffl4p%2Fbatmon-ha/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2195487,"maintainers_count":0,"namespaces_count":792747,"keywords_count":113213,"github":"golang","metadata":{"funded_packages_count":53976},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-06-10T05:03:23.672Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}}],"commits":{"id":9752336,"full_name":"fl4p/batmon-ha","default_branch":"master","total_commits":694,"total_committers":14,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":49.57142857142857,"dds":0.047550432276657006,"past_year_total_commits":189,"past_year_total_committers":6,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":31.5,"past_year_dds":0.04761904761904767,"last_synced_at":"2026-06-28T06:13:16.512Z","last_synced_commit":"33ad3ebf82af07f1c303de0b7847b3d9ef0368da","created_at":"2025-04-22T00:01:56.511Z","updated_at":"2026-06-28T06:13:03.383Z","committers":[{"name":"Fabian","email":"fabian@schlieper.email","login":"fl4p","count":661},{"name":"Matt Shirley","email":"mdshw5@gmail.com","login":"mdshw5","count":8},{"name":"Matt Shirley","email":"matt@shirley-macbook-pro.local","login":null,"count":7},{"name":"KOSSQII","email":"KOSSQII@Gmail.com","login":"KOSSOII","count":3},{"name":"patman15","email":"14628713+patman15","login":"patman15","count":3},{"name":"Jonas Savimbi","email":"gmail@joagonca.com","login":"joagonca","count":3},{"name":"p-zander","email":"philipp.zander91@gmail.com","login":"p-zander","count":2},{"name":"lathsharma1999-arch","email":"lathsharma1999@gmail.com","login":"lathsharma1999-arch","count":1},{"name":"irokezzz","email":"irokez2000@gmail.com","login":"irokezzz","count":1},{"name":"Vladimir Pchelko","email":"34769611+VladimirPchelko","login":"VladimirPchelko","count":1},{"name":"Timor Morrien","email":"timor.morrien@tum.de","login":"Hialus","count":1},{"name":"Menno van Gangelen","email":"menno@vangangelen.nl","login":"Confushion","count":1},{"name":"Brian Webb","email":"webbbn@gmail.com","login":"webbbn","count":1},{"name":"Peter Armstrong","email":"pete@pop-os.localdomain","login":null,"count":1}],"past_year_committers":[{"name":"Fabian","email":"fabian@schlieper.email","login":"fl4p","count":180},{"name":"KOSSQII","email":"KOSSQII@Gmail.com","login":"KOSSOII","count":3},{"name":"Jonas Savimbi","email":"gmail@joagonca.com","login":"joagonca","count":3},{"name":"lathsharma1999-arch","email":"lathsharma1999@gmail.com","login":"lathsharma1999-arch","count":1},{"name":"irokezzz","email":"irokez2000@gmail.com","login":"irokezzz","count":1},{"name":"Vladimir Pchelko","email":"34769611+VladimirPchelko","login":"VladimirPchelko","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-30T00:00:13.248Z","repositories_count":6277018,"commits_count":874347357,"contributors_count":35208412,"owners_count":1176520,"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":"fl4p/batmon-ha","html_url":"https://github.com/fl4p/batmon-ha","last_synced_at":"2026-05-27T21:39:40.634Z","status":null,"issues_count":148,"pull_requests_count":20,"avg_time_to_close_issue":15519025.260869564,"avg_time_to_close_pull_request":613553.4166666666,"issues_closed_count":46,"pull_requests_closed_count":12,"pull_request_authors_count":11,"issue_authors_count":133,"avg_comments_per_issue":2.8986486486486487,"avg_comments_per_pull_request":0.9,"merged_pull_requests_count":8,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":44,"past_year_pull_requests_count":5,"past_year_avg_time_to_close_issue":3133566.272727273,"past_year_avg_time_to_close_pull_request":2667389.0,"past_year_issues_closed_count":11,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":4,"past_year_issue_authors_count":39,"past_year_avg_comments_per_issue":2.9772727272727275,"past_year_avg_comments_per_pull_request":1.6,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"created_at":"2025-04-22T00:02:01.650Z","updated_at":"2026-05-27T21:39:40.634Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/fl4p%2Fbatmon-ha/issues","issue_labels_count":{"new-bms":7},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":144,"OWNER":2,"CONTRIBUTOR":1,"COLLABORATOR":1},"pull_request_author_associations_count":{"NONE":15,"CONTRIBUTOR":5},"issue_authors":{"typxxi":3,"ISanteiI":3,"erlendoyen":3,"7wells":2,"Delphinus44":2,"timoburggraf":2,"geozar":2,"jeybee74":2,"arzaman":2,"fl4p":2,"Macrisu":2,"snipah":2,"JPFOLLEGOT":1,"restaun":1,"dgrenterp":1,"alexeyklots":1,"rintintin17":1,"domescape":1,"VladimirPchelko":1,"nightcat91":1,"stanfordcg":1,"janicek7":1,"neluvarvas":1,"hansstobbe2812":1,"marlb64":1,"rajcooool":1,"FFJacot":1,"daubman":1,"bisoft":1,"leelists":1,"seiton":1,"9812ga98sd":1,"matbogdan79":1,"jariojose":1,"esther1112":1,"tammof":1,"sanitariu":1,"WolwX":1,"TheKorn2":1,"Alex-DeIt":1,"jandej":1,"wimg":1,"giorgiopistola":1,"dajpereira":1,"asd343":1,"kpush":1,"candidotsa":1,"slvDev":1,"danbi":1,"Off-Grid-Garage":1,"DeadmaroZ-TLOTL":1,"Ampakinetic":1,"leblancexplores":1,"Ensferi":1,"dowermyr":1,"xeongreg":1,"Busak007":1,"KidrashVr":1,"poligor84":1,"kruisdraad":1,"test3210-d":1,"git-greatguy":1,"ashipaek0":1,"fl4p-old":1,"kikuman":1,"one1973":1,"darrenjackson72":1,"andersongulao":1,"Robifz":1,"LarryPost1":1,"k2dp2k":1,"JanStry":1,"LifeofDan-EL":1,"Karatzie":1,"Pleeriezer":1,"as4tik":1,"karlduffell":1,"m0jek":1,"andymike171087":1,"oduled":1,"elarl":1,"peteretep":1,"n4rrOx":1,"heibertelf":1,"Ferrari2":1,"aletmp":1,"Serebrin":1,"mmeudy":1,"XDGFX":1,"AstroR44":1,"atticushome":1,"kmoreau893":1,"RW-7":1,"phoenixckua":1,"Gruni22":1,"the-butterfry":1,"Quickred":1,"coconup":1,"dhorsler":1,"klugev303":1,"yawamdam":1,"AndyHAssistant":1,"stambo98":1,"yue31":1,"RoySalisbury":1,"Didierp31":1,"tm4dev":1,"Alfred-Richter":1,"Simon-Kasper":1,"Qweua":1,"EricGrosfeld":1,"Homekit-Josh":1,"irokezzz":1,"ThomasCr":1,"gptech2444":1,"Moormerlander":1,"jcottis":1,"ligius-":1,"slundell":1,"prezes210":1,"paalkr":1,"silviudc":1,"scotthernandez":1,"leolionart":1,"Ordiproxi":1,"wowawabba":1,"jeremyjoslin":1,"gopalreddylakki":1,"kzajac83":1,"Arnix11":1,"goldriver2":1,"pkacp1":1,"phildarwin":1},"pull_request_authors":{"coconup":5,"joosthb":3,"patman15":2,"irokezzz":2,"Confushion":2,"webbbn":1,"bentolor":1,"peteretep":1,"hape1985":1,"KOSSOII":1,"wmgm183":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-30T00:00:19.664Z","repositories_count":14850351,"issues_count":32861164,"pull_requests_count":108456936,"authors_count":11326380,"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":{"new-bms":2},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"NONE":39,"CONTRIBUTOR":1},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":2,"NONE":2},"past_year_issue_authors":{"ISanteiI":3,"timoburggraf":2,"erlendoyen":2,"kpush":1,"leblancexplores":1,"leelists":1,"Macrisu":1,"marlb64":1,"mmeudy":1,"neluvarvas":1,"one1973":1,"pkacp1":1,"slvDev":1,"stambo98":1,"tammof":1,"TheKorn2":1,"tm4dev":1,"VladimirPchelko":1,"yawamdam":1,"Alfred-Richter":1,"andersongulao":1,"andymike171087":1,"atticushome":1,"bisoft":1,"darrenjackson72":1,"daubman":1,"DeadmaroZ-TLOTL":1,"dgrenterp":1,"Ferrari2":1,"geozar":1,"giorgiopistola":1,"gptech2444":1,"hansstobbe2812":1,"irokezzz":1,"JPFOLLEGOT":1,"KidrashVr":1},"past_year_pull_request_authors":{"irokezzz":2,"KOSSOII":1,"wmgm183":1},"maintainers":[{"login":"fl4p","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/fl4p"},{"login":"fl4p-old","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/fl4p-old"}],"active_maintainers":[]},"events":{"total":{"DeleteEvent":3,"PullRequestEvent":4,"ForkEvent":27,"DiscussionEvent":1,"IssuesEvent":82,"WatchEvent":117,"IssueCommentEvent":242,"PushEvent":52,"PullRequestReviewEvent":2,"CreateEvent":4},"last_year":{"DeleteEvent":2,"PullRequestEvent":2,"ForkEvent":12,"DiscussionEvent":1,"IssuesEvent":31,"WatchEvent":28,"IssueCommentEvent":108,"PushEvent":34,"PullRequestReviewEvent":2,"CreateEvent":3}},"keywords":["ant-bms","battery-management-system","battery-monitor","ble","bluetooth","bluetooth-low-energy","daly-bms","dalybms","home-assistant","jbd-bms","jikong-bms","jk-bms","jkbms","mqtt","seplos-bms","smart-bms","smartshunt","sok-bms","victron","xiaoxiang"],"dependencies":[{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-13T03:10:54.632Z","updated_at":"2022-08-13T03:10:54.632Z","repository_link":"https://github.com/fl4p/batmon-ha/blob/master/requirements.txt","dependencies":[{"id":1393923098,"package_name":"paho-mqtt","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"docker","filepath":"Dockerfile","sha":null,"kind":"manifest","created_at":"2023-02-18T06:35:18.209Z","updated_at":"2023-02-18T06:35:18.209Z","repository_link":"https://github.com/fl4p/batmon-ha/blob/master/Dockerfile","dependencies":[{"id":7755660947,"package_name":"$BUILD_FROM","ecosystem":"docker","requirements":"latest","direct":true,"kind":"build","optional":false}]}],"score":null,"created_at":"2025-04-22T00:01:51.385Z","updated_at":"2026-07-03T21:30:29.930Z","avatar_url":"https://github.com/fl4p.png","language":"Python","category":"Energy Storage","sub_category":"Battery","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# Home Assistant Add-on: BatMON\n\n[![Analytics][install-shield]]()\n\n![Home Assistant Dashboard Screenshot](https://repository-images.githubusercontent.com/445289350/03f3d531-37cf-48be-84c8-e6c75270fc87)\n\nMonitor and control various Battery management systems (BMS) over Bluetooth. This add-on reads the BMS and sends sensor\ndata through MQTT to Home Assistant. Using bluetooth on the Home Assistant host system, it does not need any additional\nhardware (no USB, Serial, RS485 or ESP32). It can also run without HA on Linux, macOS and Windows.\n\nI created this to compare BMS readings for a detailed evaluation of BMS reliability and accuracy.\n\n## Features\n\n* Uses Bluetooth Low-Energy (BLE) for wireless communication\n* Captures SoC, Current, Power, individual cell voltages and temperatures\n* Monitor multiple devices at the same time\n* Energy consumption meters (using trapezoidal power integrators)\n* Integrates with Home Assistant Energy dashboard and [Utility Meter](doc/HA%20Energy%20Dashboard.md) sensor helper\n* Control BMS charging and discharging switches\n* Home Assistant MQTT Discovery\n* Can run as stand-alone app without Home-Assistant and directly write to [InfluxDB](doc/InfluxDB.md)\n* Battery Groups for parallel batteries, see [doc/Groups.md](doc/Groups.md)\n* Charge Algorithms, see [doc/Algorithms.md](doc/Algorithms.md)\n* Low latency for responsive automation (fast load shedding)\n* Experimental serial communication for JK and Daly BMS\n* Current sensor gain calibration\n* Custom bluetooth stack for increased reliability\n\n### Supported BLE Devices\n\nBatmon comes with connectors for some popular BMS. It also wraps `aiobmsble`, which includes many other BMS for\nread-only access.\n\nbatmon device connectors:\n\n* JK BMS / jikong with JK02 protocol (`jk` over BLE, `jk_uart` over RS485 — see [Serial / RS485](#serial--rs485))\n* Daly BMS (`daly`, `daly2`, `daly_ble` over BLE, `daly_uart` over RS485 — see [Serial / RS485](#serial--rs485))\n* JBD / Jiabaida/ Xiaoxiang / Overkill Solar BMS (`jbd`)\n* ANT BMS (`ant`)\n* Supervolt BMS (`supervolt`)\n* SOK BMS (`sok`)\n* LiTime BMS (`litime`)\n* Generic no-name Chinese BMS with Modbus RTU over Nordic UART (`noname_modbus`) — see [issue #131](https://github.com/fl4p/batmon-ha/issues/131)\n* Victron SmartShunt (make sure to update to the latest firmware\n  and [enable GATT](https://community.victronenergy.com/questions/93919/victron-bluetooth-ble-protocol-publication.html)\n  in the VictronConnect app) (`victron`)\n\nMore `aiobmsble` device connectors:\n\n* CBT Power / Creabest smart BMS (`cbtpwr`)\n* Seplos smart BMS V3 (`seplos`), Seplos smart BMS V2 (`seplos_v2`)\n* TianPwr smart BMS (`tianpwr`)\n* ATORCH CW20 DC Meter (`cw20`)\n* TDT smart BMS (`tdt`)\n* E\u0026J Technology smart BMS (`ej`)\n* Chunguang Song ABC-BMS (`abc`)\n* D-powercore smart BMS (`dpwrcore`)\n* ECO-WORTHY BW02 (`ecoworthy`)\n* Ective smart BMS (`ective`)\n* Felicity Solar LiFePo4 battery (`felicity`)\n* Offgridtec LiFePo4 Smart Pro (`ogt`)\n* Redodo Bluetooth battery (`redodo`)\n* RoyPow smart BMS (`roypow`)\n* Braun Power smart BMS (`braunpwr`)\n* Neey Balancer (`neey`)\n* Pro BMS Smart Shunt (`pro`)\n* Renogy Bluetooth battery (`renogy`), Renogy BT battery pro (`renogy_pro`)\n* all other devices [aiobmsble](https://github.com/patman15/aiobmsble/?tab=readme-ov-file#supported-devices) supports\n\nYou can switch from the batmon to the aiobmsble connectors, just append a `_ble` to the `type` field, e.g. instead\nof `type: daly` (batmon), write `type: daly_ble` (aiobmsble). This can help if you experience connection issues, because\nsome of the `aiobmsble` connectors are more up to date.\n\nI tested the add-on on a Raspberry Pi 4 and 5 using Home Assistant Operating System.\n\n## Installation\n\n* Go to your Home Assistant Add-on store and add this\n  repository: [`https://github.com/fl4p/home-assistant-addons`](https://github.com/fl4p/home-assistant-addons)\n  [![Open your Home Assistant instance and show the dashboard of a Supervisor add-on.](https://my.home-assistant.io/badges/supervisor_addon.svg)](https://my.home-assistant.io/redirect/supervisor_addon/?addon=2af0a32d_batmon\u0026repository_url=https%3A%2F%2Fgithub.com%2Ffl4p%2Fhome-assistant-addons)\n* Install Batmon add-on\n* Install, configure and start Mosquitto MQTT broker (don't forget to configure the MQTT integration)\n\n## Configuration\n\nThe add-on can read multiple BMS at the same time.\nAdd an entry for each device, such as:\n\n```\n- address: CC:44:8C:F7:AD:BB\n  type: jk\n  alias: battery1            # MQTT topic prefix (regex [\\w_.-/])\n  pin: \"12345\"               # pairing PSK, victron only (optional)\n  adapter: \"hci0\"            # switch the bluetooth hw adapter (optional)\n  debug: true                # verbose log for this device only (optional)\n  current_calibration: 1.0   # current [I] correction factor (optional)\n```\n\n`address` is the MAC address of the Bluetooth device. If you don't know the MAC address start the add-on, and you'll\nfind a list of visible Bluetooth devices in the add-on log. Alternatively you can enter the device name here as\ndisplayed in the discovery list.\n\n`type` can be `jk`, `jk_24s`, `jk_32s`, `jk_uart`, `jbd`, `ant`, `daly`, `daly2`, `daly_ble`, `daly_uart`,\n`supervolt`, `sok`, `litime`, `victron`, or any tag listed under [Supported BLE Devices](#supported-ble-devices).\nFor a mock BMS use `dummy`.\n\nWith the `alias` field you can set the MQTT topic prefix and the name as displayed in Home Assistant.\nOtherwise, the name as found in Bluetooth discovery is used.\n\nIf the device requires a PIN when pairing (currently Victron SmartShunt only) add `pin: \"123456\"` (and replace 123456\nwith device's PIN).\n\nAdd `adapter: \"hci1\"` to select a bluetooth adapter other than the default one.\n\nWith `current_calibration` you can calibrate the current sensor. The current reading is multiplied by this factor. Set\nit to `-1` to flip the sign if you experience wrong charge/discharge meters.\n\nFor verbose logs of particular BMS add `debug: true`.\n\n* Set MQTT user and password. MQTT broker is usually `core-mosquitto`.\n* `concurrent_sampling` tries to read all BMSs at the same time (instead of a serial read one after another). This can\n  increase sampling rate for more timely-accurate data. Might cause Bluetooth connection issues if `keep_alive` is\n  disabled.\n* `keep_alive` will never close the bluetooth connection. Use for higher sampling rate. You will not be able to connect\n  to the BMS from your phone anymore while the add-on is running.\n* `sample_period` is the time in seconds to wait between BMS reads. Small periods generate more data points per time.\n* Set `publish_period` to a higher value than `sample_period` to throttle MQTT data, while sampling BMS for accurate\n  energy meters. On publish, samples since previous publish are averaged. Periods shorter than 2s can slow down history\n  plots in HA.\n* `invert_current` changes the sign of the current. Normally it is positive during discharge, inverted its negative.\n* `expire_values_after` time span in seconds when sensor values become \"Unavailable\"\n* `watchdog` stops the program on too many errors (make sure to enable the Home Assistant watchdog to restart the add-on\n  after it exits)\n* For JK bms: set `type` to `jk_24s` for the older 24s version (firmware\u003c11.x), `jk_32s` for the newer 32s version (fw\u003e\n  =11.x), or `jk` if you don't know (might cause invalid battery data when detection fails)\n* type `daly2` is for a newer Daly BMS version which is untested\n\n## Serial / RS485\n\nSome BMS expose an RS485 (or TTL UART) port in addition to BLE. Batmon can\nread those directly using a USB-to-RS485 adapter, no Bluetooth needed.\n\nCurrently supported:\n\n* `jk_uart` — JK / Jikong BMS over RS485. Speaks the genuine UART TLV\n  protocol (`4E 57 …`), which is a different wire format from the BLE one\n  (`55 AA EB 90 …`). Cross-referenced against `syssi/esphome-jk-bms`,\n  `jblance/mpp-solar`, and `Louisvdw/dbus-serialbattery`.\n\n* `daly_uart` — Daly BMS over RS485 / USB-UART (**9600 8N1**, per the Daly\n  protocol PDF + `maland16/daly-bms-uart`). Same `A5 …` 13-byte frame\n  format as Daly BLE; the only on-wire difference is the host-address byte\n  (4 = USB/RS485, 8 = BLE). Cross-referenced against\n  `maland16/daly-bms-uart`, `dreadnought/python-daly-bms`, and\n  `syssi/esphome-daly-bms`.\n\nExample config:\n\n```yaml\n- address: serial\n  adapter: /dev/ttyUSB0   # serial port path; required when address=serial\n  type: jk_uart\n  alias: battery1\n```\n\nNotes:\n\n* `address: serial` tells batmon to use the wired transport instead of\n  Bluetooth. `adapter` is then the serial port path (`/dev/ttyUSB0`,\n  `/dev/ttyAMA0`, `COM3`, …) rather than a Bluetooth HCI index.\n* The baud rate is picked per BMS — `jk_uart` uses 115200, `daly_uart`\n  uses 9600 8N1 (both match the respective vendor protocol docs).\n* As an HA add-on this works out of the box: the add-on manifest sets\n  `uart: true`, which maps the host's serial devices (`/dev/ttyUSB*`,\n  `/dev/ttyACM*`, `/dev/ttyAMA*` and their `/dev/serial/by-id/*` symlinks)\n  into the container. Prefer the stable `/dev/serial/by-id/...` path so the\n  port survives re-plugging. Running standalone (outside the add-on) on Linux,\n  add your user to the `dialout` group to read `/dev/ttyUSB*`.\n* This path is independent of the BLE backend selected by `ble_stack`, so\n  it works even when Bluetooth is disabled.\n\nIf you'd like another BMS family added over RS485, open an issue with a\ncaptured frame (`tcpdump` of the USB-serial line, or a wireshark log from\nthe vendor's PC tool).\n\n## Adding a new BMS\n\nIf your BMS isn't supported yet, set `type: snoop` (optionally\n`type: snoop:jbd,jk,daly,ant,sok,supervolt` to also write known probe\nframes) on the device entry. Batmon will connect, dump the GATT tree, and\nlog every notification byte the device sends — enough to reverse-engineer\nthe protocol or share with us in an issue. See\n[doc/SNOOP.md](doc/SNOOP.md).\n\n## BLE Stack\n\nBatmon can talk to your BMS through one of four Bluetooth backends. Pick one with the global\n`ble_stack` option:\n\n* **`bleak`** (default) — uses [bleak](https://pypi.org/project/bleak/), a cross-platform Python\n  BLE library that wraps the OS's native stack: BlueZ on Linux, CoreBluetooth on macOS, WinRT on\n  Windows. On Linux (and therefore inside the HA add-on) it talks to `bluetoothd` over D-Bus and\n  coexists with Home Assistant's Bluetooth integration — the adapter stays in the HA Bluetooth\n  pool and is shared. This is the most compatible option and what you want unless you're chasing a\n  specific problem.\n* **`bumble`** — uses [bumble](https://github.com/google/bumble), a pure-Python BLE stack that\n  talks HCI directly (no BlueZ, no D-Bus). Cross-platform (Linux/macOS/Windows via HCI socket,\n  USB dongle, or serial transports). Always needs **exclusive HCI access** to its controller —\n  on Linux that means bumble brings the BlueZ-managed adapter down, so it leaves the HA\n  Bluetooth pool. You need to dedicate one adapter to it and disable it in HA under Integrations / Bluetooth;\n  Use it for best reliability and if you have many BMS.\n* **`bluek`** — talks to the kernel BlueZ stack directly over L2CAP and `mgmt` sockets (no D-Bus).\n  Coexists with `bluetoothd`, so the adapter stays in the HA Bluetooth pool. Useful when D-Bus is\n  the bottleneck but you don't want to take the adapter away from HA. **Linux only** (BlueZ is\n  Linux-specific). [fl4p/bluek](https://github.com/fl4p/bluek/)\n* **`esphome`** — routes all BLE through one or more\n  [ESPHome Bluetooth Proxy](https://esphome.io/components/bluetooth_proxy.html) devices\n  (typically a cheap ESP32 flashed with the upstream\n  [bluetooth-proxies](https://github.com/esphome/bluetooth-proxies) firmware). The add-on\n  doesn't touch any local Bluetooth adapter — you can extend BLE reach to wherever your BMSes\n  physically live (other rooms, outdoors) just by powering an ESP32 there. Coexists with HA's\n  Bluetooth integration; each proxy can host multiple clients but BLE connection slots are shared\n  (default 3 per proxy, see [esphome_proxy/README.md](bmslib/esphome_proxy/bootstrap.py) for\n  notes on bumping). Configure the proxies under the `bluetooth_proxies:` add-on option:\n\n  ```yaml\n  ble_stack: esphome\n  bluetooth_proxies:\n    - host: garage-proxy.local\n      noise_psk: \"\u003cbase64 Noise key from the proxy's ESPHome config\u003e\"\n      name: \"garage\"          # diagnostic label only\n    - host: 192.168.1.43\n      noise_psk: \"\u003canother key\u003e\"\n  ```\n\n  Proxy firmware should set `bluetooth_proxy: { active: true, cache_services: false }` — see\n  [bmslib/esphome_proxy/README.md](bmslib/esphome_proxy/README.md) for the rationale and a known\n  incompatibility (ANT-BLE20PHUB BMS).\n\n`bumble`, `bluek` and `esphome` are experimental — try `bleak` first. Users have already reported\nthat `bluek` helps in case of connection timeouts.\n\n### `adapter:` per BMS\n\nThe per-device `adapter:` option only applies to backends that have a notion of a local Bluetooth\nadapter:\n\n| `ble_stack` | What `adapter:` accepts | If omitted |\n|---|---|---|\n| `bleak` | A BlueZ adapter name like `hci0`, `hci1`. | Uses BlueZ's `[default]` adapter |\n| `bluek` | Same as `bleak` — kernel adapter name. | Uses the first available |\n| `bumble` | Same — pick one adapter (bumble will take it exclusively). | First available |\n| `esphome` | **Leave unset.** There's no local adapter; the proxy host stack picks the best-RSSI proxy automatically per connect. | n/a — auto-routed |\n\n(For `address: serial` / RS-485 BMSes, `adapter:` is the serial port path like `/dev/ttyUSB0`,\nindependent of `ble_stack`.)\n\n## Energy Meters\n\nBatmon implements energy metering by computing the integral of power values from the BMS with the trapezoidal rule. You\ncan add theses meters to your Home Assistant Energy Dashboard or use them with the HA Helper *Utility Meter*,\nsee [doc/HA Energy Dashboard.md](doc/HA%20Energy%20Dashboard.md).\n\n* `Total Energy Discharge` Meter: total Energy out of the battery (increasing only, use this for the Energy Dashboard)\n* `Total Energy Charge`: total Energy into the battery (increasing only, use this for the Energy Dashboard)\n* `Total Energy`: The total energy flow into and out of the battery (decreasing and increasing).\n  This equals to `(Total Energy Charge) - (Total Energy Discharge)`. It will increase over time because batteries are\n  not ideal. You can create a derivative helper to compute energy flow within e.g. 24h.\n* `Total Cycles`: Total full cycles of the battery. One complete discharge and charge is a full cycle: SoC 100%-0%-100%.\n  This is not a value provided by the BMS, Batmon computes this by differentiating the SoC (\n  e.g. `integrate(abs(diff(SoC% / 100 / 2)))`).\n\nThe accuracy depends on the accuracy of the voltage and current readings from the BMS.\nConsider these having an error of 2~5%. Some BMS do not detect small currents (\u003c200mA) and can miss high frequency\npeaks, leading to even greater error.\n\n## Troubleshooting\n\n* Power cycle (turn off and on) the BMS Bluetooth hardware/dongle (or BMS)\n* Enable `bt_power_cycle`. If it doesn't work, manually power cycle Bluetooth on the host you are running batmon\n  on [#91](https://github.com/fl4p/batmon-ha/discussions/91).\n* When experiencing unstable connection enable `keep_alive`\n* `TimeoutError: timeout waiting`: put BT devices closer, disable inverters and other EMI sources\n* Try another `ble_stack`: `bumble` for exclusive adapter access (you need to remove it from HA Integration first), or\n  `bluek` to bypass D-Bus on Linux (has helped with timeouts)\n* Enable `verbose_log` and check the logs. If that is too noisy set `debug: true` in the BMS configuration as described\n  above\n* Try to find the BMS with a BLE\n  scan ([Chrome Browser](chrome://bluetooth-internals/#devices), [linux](https://ukbaz.github.io/howto/beacon_scan_cmd_line.html))\n* After a long-lasting bluetooth connection is lost both Daly and JBD dongles occasionally refuse to accept new\n  connections and disappear from bluetooth discovery. Remove wires from the dongle and reconnect for a restart.\n* Some users reported unstable Bluetooth connection with Raspberry Pi 4 onboard bluetooth hardware and WiFi enabled. It\n  appears that disabling WiFi helps. ([#42](https://github.com/fl4p/batmon-ha/issues/42))\n* Cheap inverters might cause heavy EMI (electromagnetic interference). Turn them off or keep them away from the\n  bluetooth\n  hardware\n* Either bleak or bluetooth support in HA docker seems unstable. see related\n  issues [106](https://github.com/fl4p/batmon-ha/issues/106) [109](https://github.com/fl4p/batmon-ha/issues/109)\n* Try another bluetooth hardware. Note you can choose the adapter with `adapter` parameter for each BMS individually\n* [doc/Downgrade.md](doc/Downgrade.md) to an earlier version\n* to see more log entries, run this in the Terminal add-on: `ha host logs --identifier addon_\u003cslug\u003e_batmon`. You'll find\n  the slug in the URL of the add-on page.\n* to see logs during installation: Settings / System / Logs / Supervisor (choose from the menu at the top-right\n  corner), [link](`http://homeassistant.local:8123/config/logs?provider=supervisor`)\n\n## TODO\n\n* Implement daly2 [#33](https://github.com/fl4p/batmon-ha/issues/33)\n* Port to MicroPython for MCU (ESP32 etc.)\n* make this a custom\n  integration? [home-assistant-bms-tools-integration](https://github.com/ElD4n1/home-assistant-bms-tools-integration)\n* use the new [Bluetooth integration since HA 2022.8 ](https://www.home-assistant.io/integrations/bluetooth/) ?\n* Implement BMS data push (JK)\n* Read device bt info [see](https://www.bluetooth.com/specifications/specs/device-information-service-1-1/)\n* Implement RS485 for more BMS families [#22](https://github.com/fl4p/batmon-ha/issues/22) — JK (`jk_uart`) and Daly (\n  `daly_uart`) are done; JBD, ANT still TODO\n* Implement old JK04?\n* web interface (export, import bms meter data)\n\n## Stand-alone\n\nYou can run the add-on outside of Home Assistant (e.g. on a remote RPI sending MQTT data of WiFI).\nAll you need is an operating system supported by [bleak](https://pypi.org/project/bleak/).\nSee [doc/Standalone.md](doc/Standalone.md)\n\n# Contribute / Donate\n\n* [PayPal](https://www.paypal.com/donate/?hosted_button_id=6LACACFHQMR3C)\n* [Patreon](patreon.com/user?u=88448325) (Donations \u0026 News)\n\n## References\n\n* [daly bms: similar add-on](https://github.com/MindFreeze/dalybms)\n* [JK-BMS: similar add-on using ESP-Home](https://github.com/syssi/esphome-jk-bms) (needs extra hardware)\n* [Daly_RS485_UART_Protocol.pdf](https://github.com/jblance/mpp-solar/blob/master/docs/protocols/DALY-Daly_RS485_UART_Protocol.pdf)\n* [JK-bms esphome](https://github.com/syssi/esphome-jk-bms/blob/main/components/jk_bms_ble/jk_bms_ble.cpp#L336)\n* [JK02 protocol](https://github.com/jblance/mpp-solar/blob/master/mppsolar/protocols/jk02.py)\n\n[install-shield]: https://img.shields.io/badge/dynamic/json?style=for-the-badge\u0026color=green\u0026label=Analytics\u0026suffix=%20Installs\u0026cacheSeconds=15600\u0026url=https://analytics.home-assistant.io/addons.json\u0026query=$.2af0a32d_batmon.total\n","funding_links":["https://www.paypal.com/donate/?hosted_button_id=6LACACFHQMR3C"],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/314822","html_url":"https://ost.ecosyste.ms/projects/314822"}