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
- **`foxess_h3_smart` 0.9.3** — records the verifier and the last hardware-test date beside its existing production claim, so FTW can include it in the offline recovery bundle without rejecting incomplete verification metadata. The evidence is unchanged: four days on one 1K5-HI-10-V1; H3-Smart hardware remains untested
- **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

Expand Down
4 changes: 2 additions & 2 deletions SUPPORT_STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ Catalog source is not proof that a target can install or run a driver.
| 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.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 |
| foxess_h3_smart | 0.9.3 | ftw-core | not_assessed | 0.9.3 | — | not_recorded | — | not_assessed | yes |
| foxess_h3_smart | 0.9.3 | blixt-l1 | not_assessed | 0.9.3 | — | 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
4 changes: 2 additions & 2 deletions devices.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ manufacturers:
protocols:
- protocol: modbus
driver: "foxess_h3_smart"
version: "0.9.2"
version: "0.9.3"
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.2"
version: "0.9.3"
ders: [pv, battery, meter]
control: true
firmware_versions: ""
Expand Down
6 changes: 4 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.2",
version = "0.9.3",
host_api_min = 1,
host_api_max = 2,
protocols = { "modbus" },
Expand All @@ -140,6 +140,8 @@ DRIVER = {
authors = { "Sourceful Labs AB" },
tested_models = { "1K5-HI-10-V1" },
verification_status = "production",
verified_by = { "Leitet@1K5-HI-10-V1:4d" },
verified_at = "2026-08-06",
verification_notes = "Verified on 1K5-HI-10-V1 hardware over multi-day operation: telemetry (PV per-string, battery, per-phase grid CT, energy counters), battery dispatch in charge, discharge and hold, and PV curtailment. H3-Smart family shares the register map but has not been tested on H3-Smart hardware.",
read_only = false,
}
Expand All @@ -154,7 +156,7 @@ PROTOCOL = "modbus"
-- other field here.
DRIVER_MANIFEST = {
name = "foxess_h3_smart",
version = "0.9.2",
version = "0.9.3",
role = "inverter",
requires = {},
options = {},
Expand Down
6 changes: 3 additions & 3 deletions index.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -214,14 +214,14 @@ drivers:
size_bytes: 14450
sha256: "8be39a1d41b18b1e12fb9b669e6fe11c93775abfdb4f41338f9dc79fe66fd2d9"
- name: "foxess_h3_smart"
version: "0.9.2"
version: "0.9.3"
tier: community
protocol: modbus
connectivity: local
ders: [pv, battery, meter]
control: true
size_bytes: 33859
sha256: "5a99134a748d9c244983714a7d5ded5821a75a4c6c65178e26355939637fcf45"
size_bytes: 33935
sha256: "e7ab001ceb7e460fbe44439502e1546ee9eba3e9d8b0ba9de07cebd2400d7bfe"
- name: "fronius"
version: "2.1.1"
tier: core
Expand Down
6 changes: 3 additions & 3 deletions manifests/foxess_h3_smart.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: "foxess_h3_smart"
version: "0.9.2"
version: "0.9.3"
tier: community
author: "Sourceful Labs AB"
protocol: modbus
Expand Down Expand Up @@ -27,9 +27,9 @@ upstream_docs:
kind: register_map
url_stability: stable
min_host_version: "1.5.0"
size_bytes: 33859
size_bytes: 33935
dkb_id: ""
sha256: "5a99134a748d9c244983714a7d5ded5821a75a4c6c65178e26355939637fcf45"
sha256: "e7ab001ceb7e460fbe44439502e1546ee9eba3e9d8b0ba9de07cebd2400d7bfe"
signature: ""
bytecode_sha256: ""
bytecode_signature: ""
Expand Down
2 changes: 1 addition & 1 deletion packages/v1/foxess_h3_smart/package-source.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schema_version": "sourceful.driver-package-source/v1",
"package_id": "com.sourceful.driver.foxess-h3-smart",
"version": "0.9.2",
"version": "0.9.3",
"channel": "beta",
"display_name": "FoxESS H3-Smart / 1K5",
"identity": {
Expand Down
6 changes: 3 additions & 3 deletions support-status.json
Original file line number Diff line number Diff line change
Expand Up @@ -646,12 +646,12 @@
},
{
"catalog_source": true,
"catalog_version": "0.9.2",
"catalog_version": "0.9.3",
"driver_id": "foxess_h3_smart",
"package_id": "com.sourceful.driver.foxess-h3-smart",
"targets": {
"blixt-l1": {
"candidate_package_version": "0.9.2",
"candidate_package_version": "0.9.3",
"control_enabled": true,
"hil": "not_recorded",
"historical_signed_beta_version": null,
Expand All @@ -661,7 +661,7 @@
"target_conformance": "not_assessed"
},
"ftw-core": {
"candidate_package_version": "0.9.2",
"candidate_package_version": "0.9.3",
"control_enabled": true,
"hil": "not_recorded",
"historical_signed_beta_version": null,
Expand Down