diff --git a/CHANGELOG.md b/CHANGELOG.md index 19f1953..90e22d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## esphome_dsmr 1.0.5 + +Each field of the `DRIVER` table is on its own line, `host_api_min` and `host_api_max` included. FTW reads these fields line by line, so with both on the `DRIVER = {` line its bundled copy could not state its host API. No behaviour change. + ## ctek 0.3.3 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. diff --git a/SUPPORT_STATUS.md b/SUPPORT_STATUS.md index c6ab9b1..780b7f4 100644 --- a/SUPPORT_STATUS.md +++ b/SUPPORT_STATUS.md @@ -50,8 +50,8 @@ Catalog source is not proof that a target can install or run a driver. | easee_cloud | 1.3.4 | blixt-l1 | not_assessed | — | not_recorded | not_assessed | | esphome-dsmr | 1.0.3 | ftw-core | not_assessed | — | not_recorded | not_assessed | | esphome-dsmr | 1.0.3 | blixt-l1 | not_assessed | — | not_recorded | not_assessed | -| esphome_dsmr | 1.0.4 | ftw-core | not_assessed | — | not_recorded | not_assessed | -| esphome_dsmr | 1.0.4 | blixt-l1 | not_assessed | — | not_recorded | not_assessed | +| esphome_dsmr | 1.0.5 | ftw-core | not_assessed | — | not_recorded | not_assessed | +| esphome_dsmr | 1.0.5 | blixt-l1 | not_assessed | — | not_recorded | not_assessed | | etrel | 1.0.3 | ftw-core | not_assessed | — | not_recorded | not_assessed | | etrel | 1.0.3 | blixt-l1 | not_assessed | — | not_recorded | not_assessed | | ferroamp | 2.1.2 | ftw-core | not_assessed | — | not_recorded | not_assessed | diff --git a/devices.yaml b/devices.yaml index 624f96d..821da48 100644 --- a/devices.yaml +++ b/devices.yaml @@ -319,7 +319,7 @@ manufacturers: control: false - protocol: http driver: "esphome_dsmr" - version: "1.0.4" + version: "1.0.5" ders: [meter] control: false firmware_versions: "DSMR 2022.10.1 on SlimmeLezer+; Sourceful Zap open firmware" diff --git a/drivers/lua/esphome_dsmr.lua b/drivers/lua/esphome_dsmr.lua index e0f4aea..f7bd39c 100644 --- a/drivers/lua/esphome_dsmr.lua +++ b/drivers/lua/esphome_dsmr.lua @@ -58,11 +58,13 @@ -- just re-reads the same numbers — default 5 s keeps the meter fresh -- without hammering the ESP32's tiny TCP stack. -DRIVER = { host_api_min = 1, host_api_max = 1, +DRIVER = { id = "esphome_dsmr", name = "ESPHome DSMR (P1)", manufacturer = "ESPHome", - version = "1.0.4", + version = "1.0.5", + host_api_min = 1, + host_api_max = 1, protocols = { "http" }, capabilities = { "meter" }, description = "Smart meter via ESPHome web_server v3 + dsmr component (Sourceful Zap on open firmware, DIY ESP32+P1, etc.).", diff --git a/drivers/tests/lua_harness/test_esphome_dsmr_aliases.lua b/drivers/tests/lua_harness/test_esphome_dsmr_aliases.lua index bf7e4d2..00624b4 100644 --- a/drivers/tests/lua_harness/test_esphome_dsmr_aliases.lua +++ b/drivers/tests/lua_harness/test_esphome_dsmr_aliases.lua @@ -28,7 +28,7 @@ end dofile("drivers/lua/esphome_dsmr.lua") -if type(DRIVER) ~= "table" or DRIVER.id ~= "esphome_dsmr" or DRIVER.version ~= "1.0.4" then +if type(DRIVER) ~= "table" or DRIVER.id ~= "esphome_dsmr" or DRIVER.version ~= "1.0.5" then error("ESPHome DSMR identity metadata is wrong") end if DRIVER.host_api_min ~= 1 or DRIVER.host_api_max ~= 1 or DRIVER.read_only ~= true then diff --git a/index.yaml b/index.yaml index 43341ad..38895ac 100644 --- a/index.yaml +++ b/index.yaml @@ -213,15 +213,15 @@ drivers: size_bytes: 16772 sha256: "f91e7c1769c239020b94aa75555dcaf830449d60d2bbbe54d09a969d2a423382" - name: "esphome_dsmr" - version: "1.0.4" + version: "1.0.5" tier: core protocol: http connectivity: local setup: [bridge] ders: [meter] control: false - size_bytes: 16772 - sha256: "4c51414c0eaa02d5d6e1319337e0355e4ea8af5ada3390604544ea152156b400" + size_bytes: 16776 + sha256: "cae8f72ad3ddf56e8c5be28fcbfa7218801f87bfe7552c4f04394a60ef55bb3f" - name: "etrel" version: "1.0.3" tier: community diff --git a/manifests/esphome_dsmr.yaml b/manifests/esphome_dsmr.yaml index 6e537e2..b098aad 100644 --- a/manifests/esphome_dsmr.yaml +++ b/manifests/esphome_dsmr.yaml @@ -1,5 +1,5 @@ name: "esphome_dsmr" -version: "1.0.4" +version: "1.0.5" tier: core author: "Sourceful Labs AB" protocol: http @@ -16,9 +16,9 @@ tested_devices: notes: "Name-derived phase object_ids live-validated on SlimmeLezer+; explicit Sourceful aliases retained." min_driver_version: "1.0.1" min_host_version: "2.0.0" -size_bytes: 16772 +size_bytes: 16776 dkb_id: "esphome_dsmr" -sha256: "4c51414c0eaa02d5d6e1319337e0355e4ea8af5ada3390604544ea152156b400" +sha256: "cae8f72ad3ddf56e8c5be28fcbfa7218801f87bfe7552c4f04394a60ef55bb3f" signature: "" bytecode_sha256: "" diff --git a/support-status.json b/support-status.json index 09fa830..a2be65d 100644 --- a/support-status.json +++ b/support-status.json @@ -485,7 +485,7 @@ }, { "catalog_source": true, - "catalog_version": "1.0.4", + "catalog_version": "1.0.5", "driver_id": "esphome_dsmr", "targets": { "blixt-l1": { diff --git a/tests/test_ftw_repository.py b/tests/test_ftw_repository.py index 2ddf42b..0bd1fe3 100644 --- a/tests/test_ftw_repository.py +++ b/tests/test_ftw_repository.py @@ -210,8 +210,10 @@ def test_esphome_dsmr_artifact_declares_one_ftw_host_api_range( artifact = output / Path(driver["url"]).name source = artifact.read_text(encoding="utf-8") - assert re.findall(r"(?m)^\s*host_api_min\s*=\s*([0-9]+)", source) == ["1"] - assert re.findall(r"(?m)^\s*host_api_max\s*=\s*([0-9]+)", source) == ["1"] + # The channel's header and the driver's own table may both state the + # range; every statement must agree. + assert set(re.findall(r"(?m)^\s*host_api_min\s*=\s*([0-9]+)", source)) == {"1"} + assert set(re.findall(r"(?m)^\s*host_api_max\s*=\s*([0-9]+)", source)) == {"1"} def test_publication_is_deterministic(