{"id":50804832,"url":"https://github.com/remontsuri/ev-qa-framework","last_synced_at":"2026-06-13T00:01:22.588Z","repository":{"id":332857148,"uuid":"1135255991","full_name":"remontsuri/EV-QA-Framework","owner":"remontsuri","description":"ML-powered QA framework for EV battery systems — telemetry validation, anomaly detection, SOH prediction, CAN bus (2.0B + J1939) emulation, DBC parser, Prometheus metrics, Grafana dashboard","archived":false,"fork":false,"pushed_at":"2026-06-05T09:36:58.000Z","size":876,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-05T12:10:43.697Z","etag":null,"topics":["anomaly-detection","battery","bms","can-bus","dbc","electric-vehicle","ev","grafana","j1939","lstm","machine-learning","prometheus","python","quality-assurance","soh-prediction"],"latest_commit_sha":null,"homepage":"https://remontsuri.github.io/EV-QA-Framework/","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/remontsuri.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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},"funding":{"github":["remontsuri"]}},"created_at":"2026-01-15T21:14:42.000Z","updated_at":"2026-06-05T09:50:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/remontsuri/EV-QA-Framework","commit_stats":null,"previous_names":["remontsuri/ev-qa-framework"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/remontsuri/EV-QA-Framework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remontsuri%2FEV-QA-Framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remontsuri%2FEV-QA-Framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remontsuri%2FEV-QA-Framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remontsuri%2FEV-QA-Framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/remontsuri","download_url":"https://codeload.github.com/remontsuri/EV-QA-Framework/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remontsuri%2FEV-QA-Framework/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34266916,"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"}},"keywords":["anomaly-detection","battery","bms","can-bus","dbc","electric-vehicle","ev","grafana","j1939","lstm","machine-learning","prometheus","python","quality-assurance","soh-prediction"],"created_at":"2026-06-13T00:00:45.516Z","updated_at":"2026-06-13T00:01:22.577Z","avatar_url":"https://github.com/remontsuri.png","language":"Python","funding_links":["https://github.com/sponsors/remontsuri"],"categories":[],"sub_categories":[],"readme":"# EV-QA-Framework\r\n\r\n![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)\r\n![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)\r\n![Tests](https://img.shields.io/badge/tests-948%20passed-brightgreen.svg)\r\n![Coverage](https://img.shields.io/badge/coverage-93%25-brightgreen.svg)\r\n![Version](https://img.shields.io/badge/version-2.1.0-blue.svg)\r\n[![GitHub Release](https://img.shields.io/github/v/release/remontsuri/EV-QA-Framework)](https://github.com/remontsuri/EV-QA-Framework/releases)\r\n[![CI](https://github.com/remontsuri/EV-QA-Framework/workflows/CI%20%E2%80%94%20Lint%20%C2%B7%20Test%20%C2%B7%20Coverage/badge.svg)](https://github.com/remontsuri/EV-QA-Framework/actions/workflows/test.yml)\r\n\r\n**EV Battery QA Framework — detect thermal runaway, validate BMS telemetry, comply with UN 38.3 / IEC 62660 / GB 38031, and ship with 948 passing tests and a Docker-ready pipeline.**\r\n\r\n22 modules. MIT licensed. Python 3.9+.\r\n\r\n---\r\n\r\n## 30-second value\r\n\r\n```bash\r\ngit clone https://github.com/remontsuri/EV-QA-Framework.git\r\ncd EV-QA-Framework\r\ndocker compose up -d\r\nopen http://localhost:8081\r\n```\r\n\r\nDone. You now have a running battery QA workstation:\r\n- telementry validation\r\n- ML anomaly detection\r\n- thermal runaway early warning\r\n- cell imbalance analysis\r\n- SOH prediction\r\n- compliance testing against 6 international standards\r\n- live dashboard with Prometheus metrics\r\n\r\nNo cloud account required. No external dependencies. Just a CSV and a terminal.\r\n\r\n---\r\n\r\n## What you get\r\n\r\n**Input safety layer.** Pydantic schemas for voltage, current, temperature, SOC, SOH. Bad VINs, out-of-range values, and malformed rows are rejected before they reach your models.\r\n\r\n**Anomaly detection.** Isolation Forest on voltage/current/temperature streams. Configurable contamination, severity thresholds, estimator count.\r\n\r\n**Thermal runaway prediction.** Rule-based heuristics (dT/dt, temperature, anomaly score) and ML mode. CRITICAL trigger at \\\u003e85 °C or heating rate \\\u003e10 °C/min. Catches overheating before cascade. Confidence score clamped to [0, 1].\r\n\r\n**SOH prediction.** LSTM-based State of Health forecasting from historical telemetry. Transformer-based prediction via `soh_transformer` for longer sequences.\r\n\r\n**Cell imbalance analysis.** Statistical analysis of cell group voltages with configurable thresholds, outlier detection, linear regression trend.\r\n\r\n**Battery scoring.** Composite health score (0–100) with letter grades (A+ through F). Combines SOH, internal resistance, cell balance, and thermal history.\r\n\r\n**CAN bus \u0026 DBC.** CAN 2.0B and J1939 simulation and reception. DBC parser supports Vector CANdb, SavvyCAN exports, Intel/Motorola byte order.\r\n\r\n**Fleet analytics.** Aggregate analysis across vehicle fleets: degradation curves, anomaly distribution, SOH histograms.\r\n\r\n**Digital twin.** Real-time battery simulation mirroring physical pack behavior. Charge/discharge what-if scenarios and aging projections.\r\n\r\n**V2G scenarios.** Vehicle-to-Grid simulation: bidirectional energy flow, grid demand response, cycling impact on battery health, revenue estimation.\r\n\r\n**AutoML.** Automated model selection and hyperparameter optimization for SOH prediction and anomaly detection.\r\n\r\n**HIL integration.** Hardware-in-the-Loop interface for physical BMS hardware and test stands via TCP/Serial.\r\n\r\n**Compliance testing.** UN 38.3, IEC 62660, SAE J2464, ISO 12405, GB/T 31484, GB/T 31486, GB 38031.\r\n\r\n**Observability.** Prometheus `/metrics` endpoint, Grafana dashboard, HTML coverage reports, JUnit XML.\r\n\r\n---\r\n\r\n## Quick start\r\n\r\n```bash\r\n# Python CLI (direct)\r\nuv run pytest -v\r\nuv run python run_factory_inspection.py\r\n\r\n# Docker Compose (recommended for fresh environments)\r\ndocker compose up --build\r\n```\r\n\r\n- Tests + HTML coverage: http://localhost:8081/coverage/\r\n- Prometheus metrics: http://localhost:8081/metrics\r\n\r\n---\r\n\r\n## One-liners\r\n\r\nAnalyze a CSV:\r\n\r\n```bash\r\nuv run python -m ev_qa_framework.cli analyze -i examples/tesla_model_s_defective.csv -o report.json\r\n```\r\n\r\nEmulate CAN traffic:\r\n\r\n```bash\r\nuv run python -m ev_qa_framework.cli emulate --dbc my_battery.dbc --duration 60\r\n```\r\n\r\nTrain SOH model:\r\n\r\n```bash\r\nuv run python -m ev_qa_framework.cli train-soh -d examples/tesla_battery_qa_test.py\r\n```\r\n\r\n---\r\n\r\n## Project structure\r\n\r\n```\r\nev_qa_framework/\r\n  framework.py         # core QA engine\r\n  models.py            # Pydantic models + telemetry validation\r\n  config.py            # thresholds and ML config\r\n  analysis.py          # Isolation Forest, EVBatteryAnalyzer\r\n  soh_predictor.py     # LSTM for SOH (TensorFlow optional)\r\n  soh_transformer.py   # Transformer SOH predictor\r\n  can_bus.py           # CAN 2.0B + J1939 simulation\r\n  dbc_parser.py        # .dbc file parser (Vector CANdb + SavvyCAN)\r\n  cell_balance.py      # cell voltage imbalance analysis\r\n  thermal_runaway.py   # thermal runaway prediction (rule + ML)\r\n  battery_scoring.py   # composite battery health scoring\r\n  physics_features.py  # electrochemical/thermal feature extraction\r\n  fleet_analytics.py   # fleet-wide analytics and benchmarking\r\n  digital_twin.py      # real-time battery digital twin\r\n  v2g_scenarios.py     # Vehicle-to-Grid simulation\r\n  automl.py            # automated model selection and HPO\r\n  hil.py               # Hardware-in-the-Loop interface\r\n  metrics.py           # Prometheus metrics\r\n  cli.py               # CLI entry point\r\n  chemistries.py       # battery chemistry definitions (LFP, NMC, NCA)\r\ntests/                  # 948 tests\r\nexamples/               # sample telemetry and demos\r\nrun_factory_inspection.py  # end-to-end factory QA demo\r\n```\r\n\r\n---\r\n\r\n## Status\r\n\r\n| Artifact | Value |\r\n|---|---|\r\n| Tests | 948 passed |\r\n| Coverage | ~93% |\r\n| CI | Docker Compose |\r\n| License | MIT |\r\n| Python | 3.9+ |\r\n\r\nRegression risk is tracked in `tests/`. Coverage artifacts (`coverage/`, `junit.xml`) are present in the release pipeline.\r\n\r\n---\r\n\r\n## Roadmap\r\n\r\n- [x] GitHub Actions CI badge + nightly coverage job\r\n- [x] Grafana dashboard import JSON + provisioning\r\n- [ ] public PyPI release\r\n- [ ] real BMS telemetry adapters (Tesla, BYD, Nio)\r\n- [ ] V2S + charging-station scenarios\r\n- [ ] integration with Vector CANoe / CANalyzer\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremontsuri%2Fev-qa-framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fremontsuri%2Fev-qa-framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremontsuri%2Fev-qa-framework/lists"}