{"adoption": {"forks": 318, "observed_at": "2026-09-03T02:15:18.367067+00:00", "stars": 1004}, "canonical_url": "https://ross.abutalabs.com/products/esphome-jk-bms", "card": {"archived": false, "artifact_type": "plugin", "description": "ESPHome component to monitor and control a Jikong Battery Management System (JK-BMS) via UART-TTL or BLE", "domain": ["iot", "self-hosted", "hardware"], "enriched": true, "function": ["monitoring", "iot", "embedded"], "health_score": 99, "homepage": null, "language": "C++", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["syssi/esphome-jk-bms"], "name": "syssi/esphome-jk-bms", "platform": ["embedded", "iot"], "pushed_at": "2026-09-01T16:11:29+00:00", "repo": "syssi/esphome-jk-bms", "stars": 1004, "tags": ["esphome", "jk-bms", "battery-management-system", "ble", "uart", "home-assistant", "solar-battery", "diy-battery"], "topics": ["esphome", "esphome-component", "jkbms", "jikong-bms", "heltec-balancer", "neey-balancer", "bluetooth", "uart", "hacktoberfest"], "urls": [], "use_cases": ["monitor JK-BMS battery cells from Home Assistant", "read BMS telemetry over BLE with ESP32", "control JK battery management system settings remotely", "log lithium battery cell voltages and temperatures", "integrate DIY solar battery BMS into home automation", "monitor JK-BMS via UART-TTL serial connection"], "what_it_is": "An ESPHome external component that monitors and controls Jikong (JK) Battery Management Systems over UART-TTL or Bluetooth LE. It exposes BMS telemetry such as cell voltages, temperature, and state of charge to ESPHome and Home Assistant.", "when_to_avoid": ["your BMS is not a Jikong/JK model or runs software older than 6.0", "you don't use ESPHome and prefer a standalone MQTT bridge or vendor app", "you need a different balancer brand like Heltec or Neey (separate components exist)"], "when_to_choose": ["you run ESPHome/Home Assistant and own a JK-BMS with software version 6.0 or newer", "you want local, wireless-free (UART) or BLE monitoring without vendor cloud apps", "you need cell-level telemetry and BMS control in your automation setup"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/esphome-jk-bms", "repo": "syssi/esphome-jk-bms", "role": "main", "score": 91}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.367067+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:14:07.736681+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f5496b034b3c2c980232e09daaa1516eefcce934e3d7b782b635cf249746e35", "fetched_at": "2026-09-03T02:15:18.367067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/syssi/esphome-jk-bms"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.367067+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:14:07.736681+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f5496b034b3c2c980232e09daaa1516eefcce934e3d7b782b635cf249746e35", "fetched_at": "2026-09-03T02:15:18.367067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/syssi/esphome-jk-bms"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:14:07.736681+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f5496b034b3c2c980232e09daaa1516eefcce934e3d7b782b635cf249746e35", "fetched_at": "2026-09-03T02:15:18.367067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/syssi/esphome-jk-bms"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.367067+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.367067+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.367067+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:14:07.736681+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f5496b034b3c2c980232e09daaa1516eefcce934e3d7b782b635cf249746e35", "fetched_at": "2026-09-03T02:15:18.367067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/syssi/esphome-jk-bms"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.367067+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.367067+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:14:07.736681+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f5496b034b3c2c980232e09daaa1516eefcce934e3d7b782b635cf249746e35", "fetched_at": "2026-09-03T02:15:18.367067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/syssi/esphome-jk-bms"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.367067+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.367067+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.367067+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:14:07.736681+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f5496b034b3c2c980232e09daaa1516eefcce934e3d7b782b635cf249746e35", "fetched_at": "2026-09-03T02:15:18.367067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/syssi/esphome-jk-bms"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.367067+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:18.367067+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:14:07.736681+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f5496b034b3c2c980232e09daaa1516eefcce934e3d7b782b635cf249746e35", "fetched_at": "2026-09-03T02:15:18.367067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/syssi/esphome-jk-bms"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:14:07.736681+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f5496b034b3c2c980232e09daaa1516eefcce934e3d7b782b635cf249746e35", "fetched_at": "2026-09-03T02:15:18.367067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/syssi/esphome-jk-bms"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:14:07.736681+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f5496b034b3c2c980232e09daaa1516eefcce934e3d7b782b635cf249746e35", "fetched_at": "2026-09-03T02:15:18.367067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/syssi/esphome-jk-bms"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:14:07.736681+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f5496b034b3c2c980232e09daaa1516eefcce934e3d7b782b635cf249746e35", "fetched_at": "2026-09-03T02:15:18.367067+00:00", "kind": "readme", "missing": false, "url": "https://github.com/syssi/esphome-jk-bms"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 100, "rhythm": 73}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1851, "days_push": 1, "days_rel": 100, "gap_med": 80.5, "n_releases_24m": 5}, "score": 91, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}