Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Driver versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html
- **`foxess` (H1/H3 11000-range map) — removed untested.** Every tested_devices entry said "Community driver, untested", and no hardware has ever validated the map. This is not a clean supersession: `foxess_h3_smart` covers the 1K5-HI and H3-Smart families, not the H1 / H3 / H3-PRO / AIO-H3 families the old driver claimed — those lose their only, unvalidated, listing. The removal is still right on this vendor's hardware behaviour: a Fox ESS inverter answers unknown registers with silence, so a wrong-map driver produces no error, only timeouts — a real 1K5 answered none of the 11000-range map, and the catalog offering it anyway cost that operator a full "device not supported" detour. A catalog that reports what is known must not list a map nobody has seen answer. H1-range coverage can return the way H3-Smart did: a driver written against hardware someone actually has.

### Changed
- **The channel now repeats a reviewed verification claim instead of stamping every artifact "untested".** `tools/ftw_repository.py` hardcoded `verification_status: experimental` into every published artifact — a sound default when 80 unverified community ports were imported wholesale, and wrong the moment a driver earned a hardware-validated `production` status the review accepted. The builder now carries the DRIVER block's status (and its notes) into the artifact when the declared status is `production` or `beta` — a checkable claim a reviewer gated — and keeps the conservative default for everything else, which also keeps every already-published untested driver's bytes unchanged. A published version names a set of bytes, so the nine drivers whose artifacts change get patch bumps: `ctek` 0.3.2, `ctek_v2` 0.3.2, `easee_cloud` 1.1.1, `ferroamp` 2.1.1, `foxess_h3_smart` 0.9.2, `nibe_local` 1.1.2, `sungrow` 1.5.8, `tesla_vehicle` 0.2.1, `zap` 2.0.2
- **`foxess_h3_smart` 0.9.1** — `verification_status` moves `experimental` → `production` ("verified on hardware" in the FTW UI), with `verification_notes` recording exactly what was verified and on what: telemetry, battery dispatch in all three regimes, and PV curtailment on a 1K5-HI-10-V1 over multi-day operation — and that the H3-Smart family shares the map but remains untested on H3-Smart hardware. Header and description drop the "local control build" framing that stopped being true when the channel shipped it

### Added
Expand Down
36 changes: 18 additions & 18 deletions SUPPORT_STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,32 +26,32 @@ Catalog source is not proof that a target can install or run a driver.
| chint | 1.0.5 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| circutor | 1.0.5 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| circutor | 1.0.5 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ctek | 0.3.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ctek | 0.3.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ctek | 0.3.2 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ctek | 0.3.2 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ctek_hybrid | 0.3.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ctek_hybrid | 0.3.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ctek_v2 | 0.3.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ctek_v2 | 0.3.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ctek_v2 | 0.3.2 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ctek_v2 | 0.3.2 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| deye | 2.1.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| deye | 2.1.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| easee | 1.0.4 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| easee | 1.0.4 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| easee_cloud | 1.1.0 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| easee_cloud | 1.1.0 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| easee_cloud | 1.1.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| easee_cloud | 1.1.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| esphome-dsmr | 1.0.3 | ftw-core | not_assessed | 1.0.2 | — | not_recorded | — | not_assessed | no |
| esphome-dsmr | 1.0.3 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| esphome_dsmr | 1.0.3 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| esphome_dsmr | 1.0.3 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| etrel | 1.0.3 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| etrel | 1.0.3 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ferroamp | 2.1.0 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ferroamp | 2.1.0 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ferroamp | 2.1.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ferroamp | 2.1.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ferroamp_dc2_v2x | 2.1.0 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ferroamp_dc2_v2x | 2.1.0 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ferroamp_modbus | 2.1.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| ferroamp_modbus | 2.1.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| foxess_h3_smart | 0.9.1 | ftw-core | not_assessed | 0.9.1 | — | not_recorded | — | not_assessed | yes |
| foxess_h3_smart | 0.9.1 | blixt-l1 | not_assessed | 0.9.1 | — | not_recorded | — | not_assessed | yes |
| foxess_h3_smart | 0.9.2 | ftw-core | not_assessed | 0.9.2 | — | not_recorded | — | not_assessed | yes |
| foxess_h3_smart | 0.9.2 | blixt-l1 | not_assessed | 0.9.2 | — | not_recorded | — | not_assessed | yes |
| fronius | 2.1.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| fronius | 2.1.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| fronius_api | 1.0.2 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
Expand Down Expand Up @@ -86,8 +86,8 @@ Catalog source is not proof that a target can install or run a driver.
| mennekes | 1.0.3 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| myuplink | 1.1.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| myuplink | 1.1.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| nibe_local | 1.1.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| nibe_local | 1.1.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| nibe_local | 1.1.2 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| nibe_local | 1.1.2 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| opendtu | 1.0.2 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| opendtu | 1.0.2 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| opendtu_mqtt | 1.0.3 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
Expand Down Expand Up @@ -144,10 +144,10 @@ Catalog source is not proof that a target can install or run a driver.
| solis_string | 1.1.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| sonnen | 2.0.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| sonnen | 2.0.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| sungrow | 1.5.7 | ftw-core | observe_only_profile_blocked | 1.3.3 | 1.3.0 | exact_model_firmware_required | — | not_assessed | no |
| sungrow | 1.5.7 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| tesla_vehicle | 0.2.0 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| tesla_vehicle | 0.2.0 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| sungrow | 1.5.8 | ftw-core | observe_only_profile_blocked | 1.3.3 | 1.3.0 | exact_model_firmware_required | — | not_assessed | no |
| sungrow | 1.5.8 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| tesla_vehicle | 0.2.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| tesla_vehicle | 0.2.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| tibber | 1.1.0 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| tibber | 1.1.0 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| varta | 1.1.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
Expand All @@ -158,8 +158,8 @@ Catalog source is not proof that a target can install or run a driver.
| victron_mqtt | 1.0.3 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| wallbox | 1.0.3 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| wallbox | 1.0.3 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| zap | 2.0.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| zap | 2.0.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| zap | 2.0.2 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| zap | 2.0.2 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| zaptec | 1.0.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
| zaptec | 1.0.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no |
| zuidwijk_p1 | 1.1.0 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no |
Expand Down
28 changes: 14 additions & 14 deletions devices.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ manufacturers:
protocols:
- protocol: modbus
driver: "ctek"
version: "0.3.1"
version: "0.3.2"
ders: [ev]
control: true
firmware_versions: ""
Expand All @@ -181,7 +181,7 @@ manufacturers:
protocols:
- protocol: modbus
driver: "ctek_v2"
version: "0.3.1"
version: "0.3.2"
ders: [ev]
control: true
firmware_versions: ""
Expand Down Expand Up @@ -325,7 +325,7 @@ manufacturers:
protocols:
- protocol: http
driver: "easee_cloud"
version: "1.1.0"
version: "1.1.1"
ders: [ev]
control: true
firmware_versions: ""
Expand Down Expand Up @@ -375,7 +375,7 @@ manufacturers:
protocols:
- protocol: mqtt
driver: "ferroamp"
version: "2.1.0"
version: "2.1.1"
ders: [battery, meter, pv]
control: true
- protocol: modbus
Expand All @@ -393,7 +393,7 @@ manufacturers:
protocols:
- protocol: modbus
driver: "foxess_h3_smart"
version: "0.9.1"
version: "0.9.2"
ders: [pv, battery, meter]
control: true
firmware_versions: ""
Expand All @@ -404,7 +404,7 @@ manufacturers:
protocols:
- protocol: modbus
driver: "foxess_h3_smart"
version: "0.9.1"
version: "0.9.2"
ders: [pv, battery, meter]
control: true
firmware_versions: ""
Expand Down Expand Up @@ -956,7 +956,7 @@ manufacturers:
protocols:
- protocol: http
driver: "nibe_local"
version: "1.1.1"
version: "1.1.2"
ders: [heatpump]
control: false
firmware_versions: ""
Expand Down Expand Up @@ -1676,7 +1676,7 @@ manufacturers:
protocols:
- protocol: http
driver: "zap"
version: "2.0.1"
version: "2.0.2"
ders: [meter, pv, battery, v2x_charger]
control: true
firmware_versions: ""
Expand All @@ -1689,7 +1689,7 @@ manufacturers:
protocols:
- protocol: modbus
driver: "sungrow"
version: "1.5.7"
version: "1.5.8"
ders: [battery, meter, pv]
control: true
firmware_versions: ""
Expand All @@ -1700,7 +1700,7 @@ manufacturers:
protocols:
- protocol: modbus
driver: "sungrow"
version: "1.5.7"
version: "1.5.8"
ders: [battery, meter, pv]
control: true
firmware_versions: ""
Expand All @@ -1711,7 +1711,7 @@ manufacturers:
protocols:
- protocol: modbus
driver: "sungrow"
version: "1.5.7"
version: "1.5.8"
ders: [battery, meter, pv]
control: true
firmware_versions: ""
Expand All @@ -1722,7 +1722,7 @@ manufacturers:
protocols:
- protocol: modbus
driver: "sungrow"
version: "1.5.7"
version: "1.5.8"
ders: [battery, meter, pv]
control: true
firmware_versions: ""
Expand All @@ -1733,7 +1733,7 @@ manufacturers:
protocols:
- protocol: modbus
driver: "sungrow"
version: "1.5.7"
version: "1.5.8"
ders: [battery, meter, pv]
control: true
firmware_versions: ""
Expand All @@ -1746,7 +1746,7 @@ manufacturers:
protocols:
- protocol: http
driver: "tesla_vehicle"
version: "0.2.0"
version: "0.2.1"
ders: [vehicle]
control: true
firmware_versions: ""
Expand Down
2 changes: 1 addition & 1 deletion drivers/lua/ctek.lua
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ DRIVER = {
id = "ctek-chargestorm",
name = "CTEK Chargestorm (API v1)",
manufacturer = "CTEK",
version = "0.3.1",
version = "0.3.2",
protocols = { "modbus" },
capabilities = { "ev" },
description = "CTEK Chargestorm Connected 2/3 via Modbus/TCP Automation API v1 (CSOS ≥ 4.9.3). Full telemetry + current-limit control.",
Expand Down
2 changes: 1 addition & 1 deletion drivers/lua/ctek_v2.lua
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ DRIVER = {
id = "ctek-chargestorm-v2",
name = "CTEK Chargestorm (API v2)",
manufacturer = "CTEK",
version = "0.3.1",
version = "0.3.2",
protocols = { "modbus" },
capabilities = { "ev" },
description = "CTEK Chargestorm Connected 2/3 via Modbus/TCP Automation API v2 (CSOS ≥ 4.9.3). Full telemetry + current-limit control.",
Expand Down
4 changes: 2 additions & 2 deletions drivers/lua/foxess_h3_smart.lua
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ DRIVER = {
id = "foxess_h3_smart",
name = "FoxESS H3-Smart / 1K5",
manufacturer = "Fox ESS",
version = "0.9.1",
version = "0.9.2",
host_api_min = 1,
host_api_max = 2,
protocols = { "modbus" },
Expand All @@ -154,7 +154,7 @@ PROTOCOL = "modbus"
-- other field here.
DRIVER_MANIFEST = {
name = "foxess_h3_smart",
version = "0.9.1",
version = "0.9.2",
role = "inverter",
requires = {},
options = {},
Expand Down
2 changes: 1 addition & 1 deletion drivers/lua/sungrow.lua
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ DRIVER = {
id = "sungrow-shx",
name = "Sungrow SH Hybrid Inverter",
manufacturer = "Sungrow",
version = "1.5.7",
version = "1.5.8",
protocols = { "modbus" },
capabilities = { "meter", "pv", "battery", "pv-curtail" },
description = "Sungrow SH-series hybrid inverters with LFP battery, via Modbus TCP.",
Expand Down
26 changes: 13 additions & 13 deletions index.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -100,15 +100,15 @@ drivers:
size_bytes: 4749
sha256: "7ebfe010a41f380885b59976d1a4a6d27db4abec08844cd3c553d4cf754e6aa3"
- name: "ctek"
version: "0.3.1"
version: "0.3.2"
tier: core
protocol: modbus
connectivity: local
setup: [device_ui]
ders: [ev]
control: true
size_bytes: 14921
sha256: "34cf0492da22354658ae1bfa71cb3e72f94623740d12792d3f2f9ebd9daa709e"
sha256: "a1c2cf0c7c543952214175ace3e957e2e8ecb9de760c1f73b2981d6c5bbf6c1a"
- name: "ctek_hybrid"
version: "0.3.1"
tier: core
Expand All @@ -120,15 +120,15 @@ drivers:
size_bytes: 27291
sha256: "1104d42fe705d43220b2ae282bc2a00d2b713a03b82e6d18fd1c6db17c747d02"
- name: "ctek_v2"
version: "0.3.1"
version: "0.3.2"
tier: core
protocol: modbus
connectivity: local
setup: [device_ui]
ders: [ev]
control: true
size_bytes: 12072
sha256: "81b4a0862a6d0928d3e3781e3955916638cb2015306a61baa0a344cd611d10e2"
sha256: "186d1e7b2009cd34c2b58a1e29fea5fbdd3b5a896722d41108b77ed6ec7fd3dd"
- name: "deye"
version: "2.1.1"
tier: core
Expand All @@ -148,7 +148,7 @@ drivers:
size_bytes: 4054
sha256: "4a2cd1efb4a5583468ce897ebd88a000e348917295c40210e86ecf834c0ba543"
- name: "easee_cloud"
version: "1.1.0"
version: "1.1.1"
tier: core
protocol: http
connectivity: cloud
Expand Down Expand Up @@ -187,7 +187,7 @@ drivers:
size_bytes: 3545
sha256: "fdf3c3cae6ca45f9b546a97cf16a34b047172293711db2dfa759286f065d77c8"
- name: "ferroamp"
version: "2.1.0"
version: "2.1.1"
tier: core
protocol: mqtt
connectivity: local
Expand All @@ -214,14 +214,14 @@ drivers:
size_bytes: 14450
sha256: "8be39a1d41b18b1e12fb9b669e6fe11c93775abfdb4f41338f9dc79fe66fd2d9"
- name: "foxess_h3_smart"
version: "0.9.1"
version: "0.9.2"
tier: community
protocol: modbus
connectivity: local
ders: [pv, battery, meter]
control: true
size_bytes: 33859
sha256: "1b6769f4e2583866603ba2fa71f6d3eaa972cc14f5556f99fe9b04c9a194a0b5"
sha256: "5a99134a748d9c244983714a7d5ded5821a75a4c6c65178e26355939637fcf45"
- name: "fronius"
version: "2.1.1"
tier: core
Expand Down Expand Up @@ -379,7 +379,7 @@ drivers:
size_bytes: 15278
sha256: "d754fd4af96c2047f9d9e458a776ad8f10510569836618f4631dd70e2510f404"
- name: "nibe_local"
version: "1.1.1"
version: "1.1.2"
tier: core
protocol: http
connectivity: local
Expand Down Expand Up @@ -645,16 +645,16 @@ drivers:
size_bytes: 6158
sha256: "92163e4356b895e16b0205e849aa42a2dcea0d799f8cc6bcbce60b5e2cd92285"
- name: "sungrow"
version: "1.5.7"
version: "1.5.8"
tier: core
protocol: modbus
connectivity: local
ders: [battery, meter, pv]
control: true
size_bytes: 48889
sha256: "b549ad08470d6fe1600c3dec2eff8fc972dbb87aded9f15181cfa598b4b4ac42"
sha256: "a11ddc8de433c527a3d63cd014d243b09f3393ee3afa9b8e1594d4de8de37562"
- name: "tesla_vehicle"
version: "0.2.0"
version: "0.2.1"
tier: core
protocol: http
connectivity: local
Expand Down Expand Up @@ -710,7 +710,7 @@ drivers:
size_bytes: 2842
sha256: "1c0362e0a25f1fe297de838a85089eb7676b25e78a7d6d1d03ccea1258b94403"
- name: "zap"
version: "2.0.1"
version: "2.0.2"
tier: core
protocol: http
connectivity: local
Expand Down
4 changes: 2 additions & 2 deletions manifests/ctek.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: "ctek"
version: "0.3.1"
version: "0.3.2"
tier: core
author: "Sourceful Labs AB"
protocol: modbus
Expand All @@ -18,7 +18,7 @@ tested_devices:
min_host_version: "2.0.0"
size_bytes: 14921
dkb_id: "ctek"
sha256: "34cf0492da22354658ae1bfa71cb3e72f94623740d12792d3f2f9ebd9daa709e"
sha256: "a1c2cf0c7c543952214175ace3e957e2e8ecb9de760c1f73b2981d6c5bbf6c1a"
signature: ""

bytecode_sha256: ""
4 changes: 2 additions & 2 deletions manifests/ctek_v2.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: "ctek_v2"
version: "0.3.1"
version: "0.3.2"
tier: core
author: "Sourceful Labs AB"
protocol: modbus
Expand All @@ -18,7 +18,7 @@ tested_devices:
min_host_version: "2.0.0"
size_bytes: 12072
dkb_id: "ctek_v2"
sha256: "81b4a0862a6d0928d3e3781e3955916638cb2015306a61baa0a344cd611d10e2"
sha256: "186d1e7b2009cd34c2b58a1e29fea5fbdd3b5a896722d41108b77ed6ec7fd3dd"
signature: ""

bytecode_sha256: ""
Loading