Skip to content

Commit bcf4683

Browse files
authored
Merge pull request #132 from srcfl/fix/one-identity-per-driver
Give every driver one id and one version
2 parents 4e6b5a8 + 740bff8 commit bcf4683

82 files changed

Lines changed: 545 additions & 995 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.

‎AGENTS.md‎

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,16 @@ by #27, and reached customer hardware a second time. See the entries for
5555
**pixii** 2.1.1 and **solaredge_legacy** 0.3.1 in `CHANGELOG.md`. Those copies
5656
have since been removed.
5757

58-
### Editing a driver that came from FTW
59-
60-
The 37 drivers promoted in #27 are exempt from this suite's catalog
61-
conventions for as long as they stay byte-identical to `baselines/ftw/drivers`
62-
— `drivers/tests/conftest.py` decides that by content, not by a list. The
63-
moment you edit one, every check in the suite starts applying to it, and
64-
`make check` may fail on rules that driver never had to meet. That is working
65-
as intended. Read the failure before assuming your change caused it: the
66-
rule may be right and the driver wrong, or the check itself may be wrong.
58+
### One id and one version
59+
60+
A driver's id is its file name and catalog name, and its `DRIVER` table says
61+
exactly that id and the manifest's version. FTW compares its bundled copy with
62+
the signed channel by that id and version, so they must be the same text. The
63+
channel build and `tests/test_driver_truth.py` refuse anything else. Change a
64+
version with `make bump-driver`, which moves both.
65+
66+
`baselines/ftw` records what was promoted from FTW in #27. Every promoted
67+
driver has since changed, so no check treats them differently.
6768

6869
## Source rules
6970

‎CHANGELOG.md‎

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,125 @@
11
# Changelog
22

3+
## ctek 0.3.3
4+
5+
The `DRIVER` table's id is now `ctek`, the catalog id, instead of `ctek-chargestorm`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
6+
7+
## ctek_hybrid 0.3.2
8+
9+
The `DRIVER` table's id is now `ctek_hybrid`, the catalog id, instead of `ctek-chargestorm-hybrid`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
10+
11+
## ctek_v2 0.3.3
12+
13+
The `DRIVER` table's id is now `ctek_v2`, the catalog id, instead of `ctek-chargestorm-v2`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
14+
15+
## easee_cloud 1.3.4
16+
17+
The `DRIVER` table's id is now `easee_cloud`, the catalog id, instead of `easee-cloud`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
18+
19+
## ferroamp_modbus 2.1.3
20+
21+
The `DRIVER` table's id is now `ferroamp_modbus`, the catalog id, instead of `ferroamp-modbus`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
22+
23+
## fronius_smart_meter 2.1.3
24+
25+
The `DRIVER` table's id is now `fronius_smart_meter`, the catalog id, instead of `fronius-smart-meter`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
26+
27+
## huawei 2.1.3
28+
29+
The `DRIVER` table's id is now `huawei`, the catalog id, instead of `huawei-sun2000`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
30+
31+
## nibe_local 1.2.1
32+
33+
The `DRIVER` table's id is now `nibe_local`, the catalog id, instead of `nibe-local`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
34+
35+
## pixii_pv 0.3.2
36+
37+
The `DRIVER` table's id is now `pixii_pv`, the catalog id, instead of `pixii-pv`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
38+
39+
## solaredge_legacy 0.3.3
40+
41+
The `DRIVER` table's id is now `solaredge_legacy`, the catalog id, instead of `solaredge-legacy`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
42+
43+
## solaredge_pv 1.2.2
44+
45+
The `DRIVER` table's id is now `solaredge_pv`, the catalog id, instead of `solaredge-pv`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
46+
47+
## solis_string 1.1.3
48+
49+
The `DRIVER` table's id is now `solis_string`, the catalog id, instead of `solis-string`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
50+
51+
## sungrow 1.5.9
52+
53+
The `DRIVER` table's id is now `sungrow`, the catalog id, instead of `sungrow-shx`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
54+
55+
## tesla_vehicle 0.2.3
56+
57+
The `DRIVER` table's id is now `tesla_vehicle`, the catalog id, instead of `tesla-vehicle`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
58+
59+
## tesla_wall_connector 0.1.1
60+
61+
The `DRIVER` table's id is now `tesla_wall_connector`, the catalog id, instead of `tesla-wall-connector`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
62+
63+
## zap 3.1.1
64+
65+
The `DRIVER` table's id is now `zap`, the catalog id, instead of `sourceful-zap`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
66+
67+
## zaptec_cloud 0.1.1
68+
69+
The `DRIVER` table's id is now `zaptec_cloud`, the catalog id, instead of `zaptec-cloud`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
70+
71+
## zuidwijk_p1 1.1.2
72+
73+
The `DRIVER` table's id is now `zuidwijk_p1`, the catalog id, instead of `zuidwijk-p1`. FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
74+
75+
## heishamon 0.5.1
76+
77+
The `DRIVER` table's version now matches the catalog. It said 0.4.0 while the manifest said 0.5.0, because the file was kept byte-identical to the copy promoted from FTW. No behaviour change.
78+
79+
## sdm630 2.0.2
80+
81+
The `DRIVER` table's version now matches the catalog; it said 1.1.1 while the manifest said 2.0.1. Drop the Blixt L1 `DRIVER_MANIFEST` table. FTW never read it, and this repository no longer builds packages for other products. No behaviour change.
82+
83+
## esphome_dsmr 1.0.4
84+
85+
The source is now the ESPHome DSMR driver itself. `drivers/lua/esphome_dsmr.lua` held a generated channel artifact committed as source, so the channel wrapped its header twice and the published file reported id `esphome-dsmr` 1.0.2. The tested hardware now matches the `esphome-dsmr` entry, and the manifest says `control: false`, since the driver is read-only. The separate catalog entry `esphome-dsmr` stays for installs that use it.
86+
87+
## ambibox_v2x 1.1.1
88+
89+
The `DRIVER` table's id is now `ambibox_v2x` instead of `ambibox-v2x`, and its version matches the catalog (it said 1.0.0 while the manifest said 1.1.0). FTW compares the id of its bundled copy with the signed channel's to decide which file runs; the old spelling kept them from matching. No behaviour change.
90+
91+
## ferroamp_dc2_v2x 2.1.1
92+
93+
The `DRIVER` table's id is now `ferroamp_dc2_v2x` instead of `ferroamp-dc2-v2x`, and its version matches the catalog (it said 1.1.0 while the manifest said 2.1.0). JSON payloads are decoded through `pcall`, like every other MQTT driver; a bad payload is still logged and ignored. Control logic is unchanged. Hardware-in-the-loop testing is still pending before stable.
94+
95+
## 50-125k-svk 0.2.4
96+
97+
Drop the Blixt L1 `DRIVER_MANIFEST` table. FTW never read it, and this repository no longer builds packages for other products. No behaviour change.
98+
99+
## 50-125k-svk-ac-slew 0.2.5
100+
101+
Drop the Blixt L1 `DRIVER_MANIFEST` table. FTW never read it, and this repository no longer builds packages for other products. No behaviour change.
102+
103+
## 50-125k-svk-slew 0.1.13
104+
105+
Drop the Blixt L1 `DRIVER_MANIFEST` table. FTW never read it, and this repository no longer builds packages for other products. No behaviour change.
106+
107+
## acuvim 0.4.3
108+
109+
Drop the Blixt L1 `DRIVER_MANIFEST` table. FTW never read it, and this repository no longer builds packages for other products. No behaviour change.
110+
111+
## deye-svk 0.2.2
112+
113+
Drop the Blixt L1 `DRIVER_MANIFEST` table. FTW never read it, and this repository no longer builds packages for other products. No behaviour change.
114+
115+
## foxess_h3_smart 0.9.6
116+
117+
Drop the Blixt L1 `DRIVER_MANIFEST` table. FTW never read it, and this repository no longer builds packages for other products. No behaviour change.
118+
119+
## konja-261-svk 0.3.2
120+
121+
Drop the Blixt L1 `DRIVER_MANIFEST` table. FTW never read it, and this repository no longer builds packages for other products. No behaviour change.
122+
3123
## easee_cloud 1.3.3
4124

5125
Omit `power_observed_at` when the power is unchanged since the last poll, so the host stamps the reading on arrival. Easee records TotalPower only when it changes, so a steady charge kept an old timestamp; FTW took it as a stale charger after three minutes and stopped the car every few minutes all night ([srcfl/ftw#1417](https://github.com/srcfl/ftw/pull/1417)). A new value still carries Easee's source time, and an offline charger (op_mode 0) still emits no sample.

0 commit comments

Comments
 (0)