homebridge-plugin-klares4 2.0.1-beta2 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.0.1] - 2026-03-13
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- KSA import pipeline (`ksaImport`) with deterministic derivation for thermostat command routing, Domus sensor mapping, room mapping, and optional custom names.
|
|
15
|
+
- Sanitized KSA runtime cache (`klares4-ksa-cache.json`) with whitelist-only structural metadata (no raw backup persistence).
|
|
16
|
+
- Bilingual technical documentation under `docs/en` and `docs/it` covering architecture, websocket behavior, Domus routing, config, and troubleshooting.
|
|
17
|
+
- CI/CD upgrade:
|
|
18
|
+
- Node 20/22 CI validation matrix with strict type-check + tests + build artifact
|
|
19
|
+
- npm publish workflow via GitHub Actions (tag/manual release path, provenance, and publish guards).
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
- Thermostat authoritative state alignment on Domus installations using `STATUS_TEMPERATURES` for realtime mode/setpoint/current state.
|
|
24
|
+
- Thermostat routing mismatch on systems where output IDs, Domus sensor IDs, and `CFG_THERMOSTATS.ID` are not numerically aligned.
|
|
25
|
+
- Startup synchronization robustness by preloading thermostat structural mapping from sanitized KSA cache when `PRG_THERMOSTATS` is not exposed by firmware.
|
|
26
|
+
- Degraded routing behavior now evaluates mapped Domus sensor candidates before raw output fallback in non-PRG environments.
|
|
27
|
+
|
|
10
28
|
## [2.0.1-beta2] - 2026-03-13
|
|
11
29
|
|
|
12
30
|
### Added
|
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2025 Paolo
|
|
3
|
+
Copyright (c) 2025-26 Paolo Trivisonno
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
18
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -8,6 +8,13 @@ Complete plugin for Ksenia Lares4 systems integrating security zones, lights, co
|
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
+
## Full Documentation
|
|
12
|
+
|
|
13
|
+
- English docs: `docs/en/`
|
|
14
|
+
- Documentazione italiana: `docs/it/`
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
11
18
|
## English Documentation
|
|
12
19
|
|
|
13
20
|
### Features
|
|
@@ -252,11 +259,31 @@ npm run verify
|
|
|
252
259
|
|
|
253
260
|
This runs:
|
|
254
261
|
|
|
255
|
-
- max file size gate (`src/**/*.ts` <=
|
|
262
|
+
- max file size gate (`src/**/*.ts` <= 350 lines),
|
|
256
263
|
- strict TypeScript checks (`--noUnusedLocals --noUnusedParameters`),
|
|
257
264
|
- full test suite,
|
|
258
265
|
- build compatibility gate.
|
|
259
266
|
|
|
267
|
+
### CI/CD
|
|
268
|
+
|
|
269
|
+
GitHub Actions workflows:
|
|
270
|
+
|
|
271
|
+
- `CI` (`.github/workflows/ci.yml`): Node 20/22 validation, strict type-checks, tests, build artifact.
|
|
272
|
+
- `Release Publish` (`.github/workflows/release-publish.yml`): npm publish with provenance from tags (`v*`) or manual dispatch.
|
|
273
|
+
|
|
274
|
+
Trusted publishing:
|
|
275
|
+
|
|
276
|
+
- `Release Publish` uses GitHub OIDC trusted publishing (`id-token: write`).
|
|
277
|
+
- No `NPM_TOKEN` secret is required.
|
|
278
|
+
|
|
279
|
+
Release policy:
|
|
280
|
+
|
|
281
|
+
- tag push `v<package.json version>` triggers publish;
|
|
282
|
+
- npm dist-tag auto-derived from version:
|
|
283
|
+
- `*-beta*` -> `beta`
|
|
284
|
+
- `*-rc*` -> `rc`
|
|
285
|
+
- stable -> `latest`
|
|
286
|
+
|
|
260
287
|
### Roadmap
|
|
261
288
|
|
|
262
289
|
#### Planned for v1.2.0
|
package/config.schema.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"singular": true,
|
|
5
5
|
"customUi": false,
|
|
6
6
|
"headerDisplay": "<div style='margin-bottom:12px;'><h3 style='margin:0 0 6px 0;'>Klares4 - Ksenia Lares4 per Homebridge</h3><p style='margin:0 0 12px 0;'>Plugin Homebridge per controllo locale della centrale Ksenia Lares4.</p><div style='padding:10px 12px;border:1px solid currentColor;border-radius:8px;'><strong>Prerequisiti:</strong><ul style='margin:8px 0 0 18px;padding:0;'><li>Centrale raggiungibile in rete locale</li><li>Interfaccia WebSocket abilitata</li><li>PIN utente valido (4-8 cifre)</li></ul></div></div>",
|
|
7
|
-
"footerDisplay": "<div style='margin-top:16px;padding-top:12px;border-top:1px solid currentColor;'><p style='margin:0 0 8px 0;'>Versione 2.0.1
|
|
7
|
+
"footerDisplay": "<div style='margin-top:16px;padding-top:12px;border-top:1px solid currentColor;'><p style='margin:0 0 8px 0;'>Versione 2.0.1 • Sviluppato da Paolo Trivisonno</p><p style='margin:0;'><a href='https://github.com/paolo-trivi/homebridge-plugin-klares4' target='_blank' rel='noopener noreferrer'>Documentazione</a> | <a href='https://github.com/paolo-trivi/homebridge-plugin-klares4/issues' target='_blank' rel='noopener noreferrer'>Segnala Bug</a> | <a href='https://github.com/sponsors/paolo-trivi' target='_blank' rel='noopener noreferrer'>Supporta</a></p></div>",
|
|
8
8
|
"schema": {
|
|
9
9
|
"type": "object",
|
|
10
10
|
"properties": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thermostat-status-updater.d.ts","sourceRoot":"","sources":["../../src/websocket-client/thermostat-status-updater.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,YAAY,EACZ,0BAA0B,
|
|
1
|
+
{"version":3,"file":"thermostat-status-updater.d.ts","sourceRoot":"","sources":["../../src/websocket-client/thermostat-status-updater.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,YAAY,EACZ,0BAA0B,EAC7B,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,UAAU,2BAA2B;IACjC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,sBAAsB,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CAC1D;AAED,qBAAa,uBAAuB;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,2BAA2B;IAEvD,yBAAyB,CAAC,OAAO,EAAE,0BAA0B,EAAE,GAAG,IAAI;IA2BtE,+BAA+B,IAAI,IAAI;IAQ9C,OAAO,CAAC,0BAA0B;IA0BlC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,sBAAsB;CAkBjC;AAED,wBAAgB,+BAA+B,CAC3C,KAAK,EAAE,oBAAoB,EAC3B,kBAAkB,EAAE,MAAM,GAC3B,OAAO,CAMT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thermostat-status-updater.js","sourceRoot":"","sources":["../../src/websocket-client/thermostat-status-updater.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"thermostat-status-updater.js","sourceRoot":"","sources":["../../src/websocket-client/thermostat-status-updater.ts"],"names":[],"mappings":";;;AA0GA,0EASC;AAnHD,4CAAiD;AAEjD,0DAA6D;AAK7D,gFAAwE;AAQxE,MAAa,uBAAuB;IAChC,YAA6B,IAAiC;QAAjC,SAAI,GAAJ,IAAI,CAA6B;IAAG,CAAC;IAE3D,yBAAyB,CAAC,OAAqC;QAClE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,mBAAmB,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtE,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBAChE,SAAS;YACb,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC1C,KAAK,MAAM,kBAAkB,IAAI,mBAAmB,EAAE,CAAC;gBACnD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,kBAAkB,EAAE,CAAC,CAAC;gBACzF,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC9D,SAAS;gBACb,CAAC;gBAED,MAAM,OAAO,GAAG,IAAA,yCAAsB,EAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;gBAChE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;gBAChF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACjF,IAAI,OAAO,EAAE,CAAC;oBACV,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;gBACvD,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAEM,+BAA+B;QAClC,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,CAAC;QAChF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;QACX,CAAC;QACD,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;IACnD,CAAC;IAEO,0BAA0B,CAAC,QAAgB;QAC/C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC/B,SAAS;YACb,CAAC;YAED,MAAM,kBAAkB,GAAG,IAAA,6BAAiB,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxD,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;YACpE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC/F,MAAM,UAAU,GAAG;gBACf,eAAe;gBACf,gBAAgB;gBAChB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,GAAG,CAAC,kBAAkB,CAAC;aACxE,CAAC;YACF,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACnD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC3E,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;IACxB,CAAC;IAEO,kBAAkB,CAAC,kBAA0B;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CACtE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,6BAAiB,EAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,kBAAkB,CAC9E,CAAC;QACF,OAAO,IAAI,CAAC,CAAC,CAAC,IAAA,6BAAiB,EAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,CAAC;IAEO,sBAAsB,CAAC,KAAiC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAG;YACT,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC;YAChC,iBAAiB,EAAE,IAAA,0CAAiB,EAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YACvE,gBAAgB,EAAE,2BAA2B,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC;YACtE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACxB,CAAC;QACF,IACI,QAAQ;eACL,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;eAC3B,QAAQ,CAAC,iBAAiB,KAAK,IAAI,CAAC,iBAAiB;eACrD,QAAQ,CAAC,gBAAgB,KAAK,IAAI,CAAC,gBAAgB,EACxD,CAAC;YACC,OAAO;QACX,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;CACJ;AAzFD,0DAyFC;AAED,SAAgB,+BAA+B,CAC3C,KAA2B,EAC3B,kBAA0B;IAE1B,MAAM,UAAU,GAAG,KAAK,CAAC,4BAA4B,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC9E,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,IAAI,KAAK,CAAC,qBAAqB,CAAC,iBAAiB,CAAC;AACpF,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAiC;IAM3D,OAAO;QACH,kBAAkB,EAAE,IAAA,0CAAiB,EAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC;QAC3D,iBAAiB,EAAE,IAAA,0CAAiB,EAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACvE,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC;QAChC,gBAAgB,EAAE,2BAA2B,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC;KACzE,CAAC;AACN,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAiC;IAC1D,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;IACvD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3E,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,2BAA2B,CAAC,SAAkB;IACnD,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClD,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACnF,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAClF,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "homebridge-plugin-klares4",
|
|
3
|
-
"version": "2.0.1
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "Plugin completo per sistemi Ksenia Lares4 - Zone, Luci, Tapparelle, Termostati, Sensori",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "tsc",
|
|
8
|
-
"check:max-lines": "node scripts/check-max-lines.js src
|
|
8
|
+
"check:max-lines": "node scripts/check-max-lines.js src 350",
|
|
9
9
|
"verify": "npm run check:max-lines && npx tsc --noEmit --noUnusedLocals --noUnusedParameters && npm test",
|
|
10
10
|
"release:dry-run": "npm publish --tag rc --dry-run",
|
|
11
11
|
"release:rc": "npm publish --tag rc",
|