Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
362ce6b
Add CTS700 Compact P Modbus TCP MVP support.
master3395 Aug 4, 2026
097a60d
Add Contributing tab docs and per-device guides.
master3395 Aug 4, 2026
f6c0823
Clean README with per-model doc links.
master3395 Aug 4, 2026
16d1af8
Fix nilan manifest requirements and hub type.
master3395 Aug 4, 2026
0929e7d
Document Compact P live test and fix HVAC/fan mapping.
master3395 Aug 4, 2026
07f7f94
Release v1.3.2: auto-detect, issue fixes, HACS docs.
master3395 Aug 7, 2026
72776ef
feat(cts700): add 2015 legacy Modbus map
master3395 Aug 7, 2026
42dccde
feat(catalog): full bolig+naering coverage matrices (1.3.4)
master3395 Aug 7, 2026
e4a2ced
feat(cts700): Nordic XL era + per-board Modbus YAML (1.3.5)
master3395 Aug 9, 2026
5f50a08
docs: add changelog folder for fork releases
master3395 Aug 9, 2026
d2f9828
feat(cts700): align Nordic XL with Polar/Arctic LC v4 hardware (1.3.6)
master3395 Aug 9, 2026
1d4ae88
fix(cts700): Nordic UX from mark007 feedback (1.3.7)
master3395 Aug 9, 2026
aa7901b
fix(cts700): Nordic HVAC Auto/Off only (1.3.8)
master3395 Aug 9, 2026
afc3721
fix(cts700): Nordic room/DHW setpoints via Modbus FC6 (1.3.9)
master3395 Aug 9, 2026
f0feb4c
fix(ux): config coexistence, firmware field, Nordic T8 (1.3.10)
master3395 Aug 10, 2026
e5bf03a
fix: drop hardcoded Boiler Room suggested_area
Martsola Aug 13, 2026
86f4e60
fix: scope entity unique_id per device (multi-unit support)
Martsola Aug 13, 2026
7382911
fix: scope unique_id by stable entry-derived hub name
Martsola Aug 13, 2026
9733c9e
fix(ha): non-blocking setup + multi-unit ids (1.3.11)
master3395 Aug 13, 2026
1c76da1
Merge pull request #1 from Martsola/fix/device-name-prefix
master3395 Aug 13, 2026
62d3c97
merge: master after PR #1
master3395 Aug 13, 2026
3720a59
docs: add CONTRIBUTORS log for Martsola and mark007
master3395 Aug 13, 2026
fba5448
Merge pull request #2 from master3395/fix/1.3.11-startup-unique-ids
master3395 Aug 13, 2026
52a0e5b
docs: add controller and map year eras to README
master3395 Aug 13, 2026
6fcf556
Update FUNDING.yml
master3395 Aug 13, 2026
02950a2
fix(cts602): port VP 18comp entity map from upstream #234 (1.3.12)
master3395 Aug 13, 2026
f17968c
Update FUNDING.yml
master3395 Aug 13, 2026
e0f3c07
docs: show contrib.rocks avatars on README
master3395 Aug 15, 2026
e5f8d2d
docs: register probe + filter entity design spec
Martsola Aug 16, 2026
4082097
docs: register probe + filter entity implementation plan
Martsola Aug 16, 2026
f1ea03a
feat: setup-time register probe with per-board spec tables
Martsola Aug 16, 2026
d93cc6c
feat(nordic): probe wiring + dead-register guards
Martsola Aug 16, 2026
a610f63
fix(nordic): guard probe failure + probe after core sanity read
Martsola Aug 16, 2026
ef75f79
feat(nordic): filter interval/remaining/days-since entities
Martsola Aug 16, 2026
949fbb3
feat: disable unsupported-register entities by default
Martsola Aug 16, 2026
200c464
feat: probe wiring + guards on CTS602, CTS700 2018+, legacy
Martsola Aug 16, 2026
7e93e19
docs: test deps + changelog 1.3.11
Martsola Aug 16, 2026
155e728
fix: gate Nordic T8 20296, pytest-socket dep, CTS602 guard tests
Martsola Aug 16, 2026
ba63869
fix(nordic): gate days-to 20103 fallback + spec/registers doc cleanup
Martsola Aug 16, 2026
be5d8b4
feat(nordic): inlet/exhaust filter day entities + translations
Martsola Aug 16, 2026
6880e4d
feat: persist probe results, probe only on device add
Martsola Aug 16, 2026
fa8c415
fix: setup() load-branch tests + guard malformed stored probe data
Martsola Aug 16, 2026
b54e6b3
fix: replace deprecated CONCENTRATION_PARTS_PER_MILLION
Martsola Aug 16, 2026
e3620ed
docs: plan conftest modbus stub + gitignore scratch
Martsola Aug 16, 2026
a576a4e
docs: changelog 1.3.13 (register probe + filter days)
Martsola Aug 16, 2026
54fcab9
fix: only mark probe-ran on success; remove dev test suite and superp…
Martsola Aug 16, 2026
6e76962
feat: merge PR #4 register probe, sync YAML dual-path (1.3.13)
master3395 Sep 1, 2026
4b2e78f
docs: CTS700 site probe audit, dashboard map, issue #3 comment
master3395 Sep 1, 2026
108b00e
docs: CTS700 site validation checklist
master3395 Sep 1, 2026
151a2bd
fix: stabilize CTS700 Nordic Modbus reads under load
master3395 Sep 2, 2026
ab519fb
docs: add official Nilan manual download index
master3395 Sep 2, 2026
6034786
chore: release 1.3.14 changelog and version bump
master3395 Sep 2, 2026
a991c75
docs: clarify 1.3.14 upgrade path vs release notes page
master3395 Sep 2, 2026
118bf14
fix: filter alarm logging and binary/switch last-good reads
master3395 Sep 2, 2026
459e44d
docs: publish reusable CTS700 AI packages without site-specific names
master3395 Oct 4, 2026
fd7f128
feat: expose CTS700 20464 as electrical supplement switch
master3395 Oct 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
github: veista
custom: ["https://www.buymeacoffee.com/veista", "https://www.paypal.me/veista" ]
github: master3395
custom: ["https://www.paypal.com/paypalme/KimBS", "https://www.paypal.me/veista", "https://www.buymeacoffee.com/veista" ]
41 changes: 41 additions & 0 deletions .github/ISSUE_TEMPLATE/accessibility.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Accessibility
description: Barrier in docs, translations, or entity naming
labels: ["accessibility"]
body:
- type: markdown
attributes:
value: |
Accessibility reports are welcome. Most Lovelace UI comes from Home Assistant core; focus on this integration's docs, translations, and entity or config-flow strings when possible.
- type: textarea
id: barrier
attributes:
label: What blocked you?
validations:
required: true
- type: textarea
id: expected
attributes:
label: What did you expect?
validations:
required: true
- type: dropdown
id: severity
attributes:
label: Severity
options:
- Critical (cannot complete a core task)
- High
- Medium
- Low
validations:
required: true
- type: input
id: environment
attributes:
label: Environment
description: OS, browser or companion app, assistive technology and version if any.
- type: textarea
id: extra
attributes:
label: Extra context
description: Screenshots, entity ids, language setting.
63 changes: 63 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Bug report
description: Something does not work as expected with the Nilan integration
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to report a bug. Do **not** include secrets, installer passwords, or real LAN IPs (use `192.168.1.50` as an example).
- type: textarea
id: description
attributes:
label: Description
description: What went wrong?
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
description: Numbered steps help a lot.
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
validations:
required: true
- type: input
id: ha_version
attributes:
label: Home Assistant version
placeholder: "2026.8.0"
validations:
required: true
- type: input
id: integration_version
attributes:
label: Integration version
placeholder: "1.3.2"
validations:
required: true
- type: dropdown
id: board
attributes:
label: Board type
options:
- CTS602
- CTS700
- Unknown / auto-detect
validations:
required: true
- type: input
id: device
attributes:
label: Device / HMI type
description: Plate or HMI type string if known (example Compact P, VP18).
- type: textarea
id: logs
attributes:
label: Relevant logs
description: Enable debug for custom_components.nilan if possible. Redact secrets.
render: shell
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: true
contact_links:
- name: Upstream veista/nilan issues
url: https://github.com/veista/nilan/issues
about: Prefer upstream for general CTS602 discussions when using the default HACS package.
- name: Security report
url: https://github.com/master3395/veista-nilan/security/advisories/new
about: Report security issues privately (do not file a public issue).
80 changes: 80 additions & 0 deletions .github/ISSUE_TEMPLATE/device_support.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Unsupported device / register dump
description: Request support for a Nilan model or share a Modbus dump (bolig or næring)
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Use this when install fails with unsupported device, or when adding catalog coverage.
Never paste real LAN IPs (use `192.168.1.50`). Never paste installer passwords.
Checklist: [CONTRIBUTING.md](https://github.com/master3395/veista-nilan/blob/master/CONTRIBUTING.md#register-dump-checklist)
- type: dropdown
id: segment
attributes:
label: Catalog segment
options:
- Bolig (residential)
- Næring (commercial)
- Unknown
validations:
required: true
- type: input
id: plate
attributes:
label: Device plate / marketing model
description: e.g. Compact P2 AIR, Comfort 600, VPM 240 M2
validations:
required: true
- type: input
id: type_id
attributes:
label: CTS602 type id (if known)
description: From debug log "Device Type X" or HMI SHOW DATA -> TYPE.
- type: dropdown
id: board
attributes:
label: Board
options:
- CTS602
- CTS700 (2018+ / 20xxx)
- CTS700 (2015 legacy)
- CTS400
- Unknown
validations:
required: true
- type: input
id: firmware
attributes:
label: Firmware / software / bus version
- type: input
id: unit_id
attributes:
label: Modbus unit id
placeholder: "1 or 30"
- type: dropdown
id: link
attributes:
label: Connection
options:
- Modbus TCP
- Serial / USB-RS485
- TCP via RS485 bridge
- Unknown
- type: textarea
id: dump
attributes:
label: Register dump or Modbus YAML
description: 20–30 key registers with labels (temps, fan, humidity, DHW, alarms).
render: yaml
validations:
required: true
- type: textarea
id: photos
attributes:
label: Photos
description: Describe or attach plate / HMI type photos (no personal home details).
- type: textarea
id: notes
attributes:
label: What works / fails
description: Entities or HMI values you need in Home Assistant.
18 changes: 18 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 5

# pymodbus is declared in custom_components/nilan/manifest.json.
# Dependabot does not parse HA manifests; review pymodbus advisories
# periodically and bump the requirements string when needed.
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
allow:
- dependency-name: "pymodbus"
18 changes: 18 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
## Summary

Briefly describe what this PR changes and why.

## Checklist

- [ ] CTS602 behavior unchanged unless this PR is explicitly about CTS602
- [ ] Docs updated under `docs/` when device support or setup steps change
- [ ] No secrets, credentials, or real LAN IPs (use `192.168.1.50` in examples)
- [ ] No em dash (U+2014) in user-facing docs or README copy for this fork
- [ ] Docs/strings reviewed for clarity; meaning is not conveyed by color alone
- [ ] Shared Lovelace under `dashboards/` stays **Nilan-only** if touched

## Test plan

- [ ] Config flow / auto-detect (if changed)
- [ ] Live or simulated Modbus read/write for affected entities
- [ ] Hassfest / validate workflows pass
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
__pycache__/
*.pyc
.superpowers/
tests/
docs/superpowers/
to-do/*.local.md
to-do/live-site-*
to-do/site-*
to-do/register-probe-matrix.md
27 changes: 27 additions & 0 deletions ACCESSIBILITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Accessibility

This project is a Home Assistant **custom integration** (backend + config flow strings). Most of the visual UI is Home Assistant core. We still treat documentation, translations, and entity naming as accessibility-relevant.

## Goals

- Keep README and docs readable: clear headings, descriptive links, plain language.
- Ship translations so users can run Home Assistant in their language (see `custom_components/nilan/translations/`).
- Use clear entity and config-flow names so screen readers announce accurate labels.
- Prefer text status over color-only meaning in shared Lovelace examples.

## Known limits

- Lovelace card layout and keyboard focus are largely controlled by Home Assistant.
- Not every Nilan register or language is translated yet.
- Shared dashboards under `dashboards/` are examples; entity ids may need adjusting after install.

## Reporting accessibility issues

Please open a GitHub issue with the **accessibility** label (or the accessibility issue template when available) and include:

- What you tried to do
- What happened instead
- OS, browser or HA companion app, and assistive technology (if any)
- Severity: Critical (blocked), High, Medium, or Low

Thank you for reports that help more people use the integration and docs.
Loading
Loading