Skip to content

Commit dc905c9

Browse files
author
Maksym Shtembuliak
committed
Initial public release
0 parents  commit dc905c9

199 files changed

Lines changed: 35457 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/CODEOWNERS‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* @groove-max
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
name: Bug Report
2+
description: Report a reproducible problem in a supported or partially supported flow.
3+
title: "bug: "
4+
labels:
5+
- bug
6+
body:
7+
- type: checkboxes
8+
id: preflight
9+
attributes:
10+
label: Preflight
11+
options:
12+
- label: I searched existing issues first.
13+
required: true
14+
- label: I am using the latest released version or current default branch.
15+
required: true
16+
- label: I included the relevant Home Assistant and integration versions below.
17+
required: true
18+
- label: If this is about unsupported hardware, onboarding evidence, or incomplete support, I will use the Support Archive template instead.
19+
required: true
20+
- type: input
21+
id: ha_version
22+
attributes:
23+
label: Home Assistant version
24+
placeholder: 2026.4.1
25+
validations:
26+
required: true
27+
- type: input
28+
id: integration_version
29+
attributes:
30+
label: EyeBond Local version
31+
placeholder: 0.1.43
32+
validations:
33+
required: true
34+
- type: input
35+
id: hardware
36+
attributes:
37+
label: Inverter / collector model
38+
placeholder: SMG 6200 + EyeBond Wi-Fi collector
39+
validations:
40+
required: true
41+
- type: dropdown
42+
id: area
43+
attributes:
44+
label: Area
45+
options:
46+
- Onboarding / discovery
47+
- Runtime polling
48+
- Entities / values
49+
- Controls / writes
50+
- Support archive / diagnostics
51+
- Documentation
52+
- Other
53+
validations:
54+
required: true
55+
- type: textarea
56+
id: summary
57+
attributes:
58+
label: Summary
59+
description: What is broken?
60+
placeholder: A concise description of the problem.
61+
validations:
62+
required: true
63+
- type: textarea
64+
id: steps
65+
attributes:
66+
label: Steps to reproduce
67+
placeholder: |
68+
1. Open ...
69+
2. Configure ...
70+
3. Observe ...
71+
validations:
72+
required: true
73+
- type: textarea
74+
id: expected
75+
attributes:
76+
label: Expected behavior
77+
placeholder: What should have happened?
78+
validations:
79+
required: true
80+
- type: textarea
81+
id: logs
82+
attributes:
83+
label: Logs, screenshots, or additional context
84+
description: Paste relevant logs or screenshots. Redact secrets if needed.
85+
render: shell

‎.github/ISSUE_TEMPLATE/config.yml‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Documentation
4+
url: https://github.com/groove-max/ha-eybond-local#readme
5+
about: Installation, setup, and project scope.
6+
- name: Support Workflow
7+
url: https://github.com/groove-max/ha-eybond-local#support-workflow
8+
about: Generate a Support Archive before filing unsupported-device or diagnostics issues.
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
name: Feature Request
2+
description: Propose a new capability, hardware family, UX improvement, or tooling enhancement.
3+
title: "feat: "
4+
labels:
5+
- enhancement
6+
body:
7+
- type: checkboxes
8+
id: preflight
9+
attributes:
10+
label: Preflight
11+
options:
12+
- label: I searched existing issues first.
13+
required: true
14+
- label: This request is scoped to EyeBond Local rather than generic Home Assistant behavior.
15+
required: true
16+
- type: dropdown
17+
id: category
18+
attributes:
19+
label: Category
20+
options:
21+
- New hardware support
22+
- New control capability
23+
- New sensor / diagnostics entity
24+
- Onboarding / setup UX
25+
- Fixture / tooling workflow
26+
- Documentation
27+
- Other
28+
validations:
29+
required: true
30+
- type: textarea
31+
id: problem
32+
attributes:
33+
label: Problem or use case
34+
description: Explain the user problem first, not just the implementation idea.
35+
placeholder: What is hard, missing, or inconvenient today?
36+
validations:
37+
required: true
38+
- type: textarea
39+
id: proposal
40+
attributes:
41+
label: Proposed change
42+
placeholder: What would you like to see added or changed?
43+
validations:
44+
required: true
45+
- type: textarea
46+
id: hardware_context
47+
attributes:
48+
label: Hardware or protocol context
49+
description: Include inverter family, model, collector type, or protocol details if relevant.
50+
placeholder: PI30 family, VMII-NXPW5KW, SmartESS collector, etc.
51+
- type: textarea
52+
id: evidence
53+
attributes:
54+
label: Available evidence
55+
description: If you already have fixtures, docs, or a Support Archive, note that here.
56+
placeholder: Fixture link, protocol PDF, support archive filename, screenshots, etc.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
name: Release Checklist
3+
about: Maintainer checklist for publishing a new GitHub release and keeping HACS metadata consistent.
4+
title: "release: "
5+
labels: maintenance
6+
assignees: groove-max
7+
---
8+
9+
## Version And Metadata
10+
11+
- [ ] Confirm the release scope and changelog summary.
12+
- [ ] Verify the version in `custom_components/eybond_local/manifest.json`.
13+
- [ ] Verify `hacs.json`, `README.md`, and public docs still reflect current installation/support guidance.
14+
- [ ] Verify `LICENSE` and repository metadata still match the intended publication state.
15+
16+
## Validation
17+
18+
- [ ] Run `python3 tools/quality_gate.py` locally.
19+
- [ ] If generated reports changed, run `python3 tools/quality_gate.py --refresh-generated` and commit the updated files under `docs/generated/`.
20+
- [ ] Confirm GitHub Actions are green for HACS validation, Hassfest, and Quality Gate.
21+
22+
## Release Notes
23+
24+
- [ ] Summarize user-visible changes.
25+
- [ ] Call out any breaking changes or required reconfiguration.
26+
- [ ] Mention newly supported hardware, controls, or diagnostics if applicable.
27+
- [ ] Mention known limitations that still require Support Archive reports.
28+
29+
## GitHub Release
30+
31+
- [ ] Create or verify the Git tag.
32+
- [ ] Publish the GitHub release.
33+
- [ ] Make sure the release title and tag are aligned.
34+
- [ ] Paste the release notes into the GitHub release body.
35+
36+
## Post-Release
37+
38+
- [ ] Confirm the repository still installs as a HACS custom repository.
39+
- [ ] Confirm issue templates and CODEOWNERS still match the current maintainer workflow.
40+
- [ ] Close or retarget any issues that were resolved by the release.
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
name: Support Archive / Hardware Diagnostics
2+
description: Report unsupported hardware, onboarding failures, incomplete support, or hard-to-debug runtime issues using a generated Support Archive.
3+
title: "support: "
4+
labels:
5+
- support
6+
body:
7+
- type: markdown
8+
attributes:
9+
value: |
10+
Use this template when the integration asks for a **Support Archive**, or when you need help with unsupported / partially supported hardware.
11+
12+
Before submitting:
13+
14+
1. Open the integration in Home Assistant.
15+
2. Run **Create Support Archive**.
16+
3. Download the generated ZIP.
17+
4. Submit this issue.
18+
5. Attach the ZIP to the issue description or to the first comment after opening it.
19+
20+
The archive is the preferred diagnostic artifact. It is more useful than screenshots alone.
21+
- type: checkboxes
22+
id: preflight
23+
attributes:
24+
label: Preflight
25+
options:
26+
- label: I generated a fresh Support Archive for this report.
27+
required: true
28+
- label: I will attach the ZIP file to this issue or the first follow-up comment.
29+
required: true
30+
- label: I searched existing issues first.
31+
required: true
32+
- type: input
33+
id: ha_version
34+
attributes:
35+
label: Home Assistant version
36+
placeholder: 2026.4.1
37+
validations:
38+
required: true
39+
- type: input
40+
id: integration_version
41+
attributes:
42+
label: EyeBond Local version
43+
placeholder: 0.1.43
44+
validations:
45+
required: true
46+
- type: input
47+
id: archive_filename
48+
attributes:
49+
label: Support Archive filename
50+
placeholder: abc123_20260411T153000000000Z.zip
51+
description: The actual ZIP filename helps correlate the uploaded archive with the report.
52+
validations:
53+
required: true
54+
- type: dropdown
55+
id: issue_type
56+
attributes:
57+
label: What kind of support issue is this?
58+
options:
59+
- Unsupported hardware
60+
- Partial support / missing entities
61+
- Incorrect readings
62+
- Onboarding / detection failure
63+
- Controls unavailable or blocked
64+
- Runtime disconnects / timeouts
65+
- Other
66+
validations:
67+
required: true
68+
- type: input
69+
id: hardware
70+
attributes:
71+
label: Inverter / collector model
72+
placeholder: SMG 6200 + EyeBond Wi-Fi collector
73+
validations:
74+
required: true
75+
- type: textarea
76+
id: observed
77+
attributes:
78+
label: What is missing or broken?
79+
description: Describe the visible symptom in Home Assistant.
80+
placeholder: The device is detected, but PV and battery entities never appear.
81+
validations:
82+
required: true
83+
- type: textarea
84+
id: context
85+
attributes:
86+
label: Extra context
87+
description: Include anything the archive does not capture well, such as screenshots, a known-good vendor app behavior, or a short reproduction note.
88+
placeholder: The vendor app shows values correctly; Home Assistant only gets collector metadata.

‎.github/workflows/validate.yml‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Validate
2+
3+
on:
4+
push:
5+
pull_request:
6+
schedule:
7+
- cron: "0 0 * * *"
8+
workflow_dispatch:
9+
10+
permissions:
11+
contents: read
12+
13+
jobs:
14+
validate-hacs:
15+
name: HACS Validation
16+
runs-on: ubuntu-latest
17+
steps:
18+
- name: HACS validation
19+
uses: hacs/action@main
20+
with:
21+
category: integration
22+
23+
hassfest:
24+
name: Hassfest
25+
runs-on: ubuntu-latest
26+
steps:
27+
- name: Check out repository
28+
uses: actions/checkout@v4
29+
- name: Hassfest validation
30+
uses: home-assistant/actions/hassfest@master
31+
32+
quality-gate:
33+
name: Quality Gate
34+
runs-on: ubuntu-latest
35+
steps:
36+
- name: Check out repository
37+
uses: actions/checkout@v4
38+
- name: Set up Python
39+
uses: actions/setup-python@v5
40+
with:
41+
python-version: "3.12"
42+
- name: Run project quality gate
43+
run: python3 tools/quality_gate.py

‎.gitignore‎

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Local-only publication prep artifacts
2+
.local/
3+
field_dumps/
4+
5+
# Python bytecode and caches
6+
__pycache__/
7+
*.py[cod]
8+
*.pyo
9+
10+
# Test and lint caches
11+
.pytest_cache/
12+
.mypy_cache/
13+
.ruff_cache/
14+
.coverage
15+
coverage.xml
16+
htmlcov/
17+
18+
# Build outputs
19+
build/
20+
dist/
21+
.eggs/
22+
*.egg-info/
23+
24+
# Virtual environments
25+
.venv/
26+
venv/
27+
.env
28+
29+
# Notebook metadata
30+
.ipynb_checkpoints/
31+
32+
# OS/editor noise
33+
.DS_Store

0 commit comments

Comments
 (0)