node-red-contrib-ccu 4.4.0 → 4.4.2

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/AGENTS.md CHANGED
@@ -1,96 +1,3 @@
1
- # Agent Instructions
1
+ # Agent instructions
2
2
 
3
- Instructions for AI coding agents (Claude Code, etc.) working in this repository.
4
-
5
- ## Project overview
6
-
7
- `node-red-contrib-ccu` provides Node-RED nodes to connect to a Homematic CCU
8
- (BidCos/HmIP/CUxD home automation hardware from eQ-3). It talks to the CCU
9
- via BINRPC/XMLRPC (`nodes/ccu-connection.js` holds the bulk of the connection
10
- and RPC logic) and via ReGaHSS remote scripts.
11
-
12
- Layout:
13
-
14
- - `nodes/` — one `.js` (server-side logic) + `.html` (editor UI/registration)
15
- pair per node type. `nodes/lib/` has shared helpers, `nodes/icons/` and
16
- `nodes/locales/` are editor assets/i18n.
17
- - `test/` — mocha specs (`*_spec.js`), plus `test/simulator-data` and
18
- `test/simulator-behaviors` used with `hm-simulator` to fake a CCU for tests.
19
- - `tools/` — one-off scripts, not part of the published package.
20
- - `paramsets.json` — large generated/vendored data file describing CCU device
21
- paramsets (datapoints). Treat as data, not something to hand-edit.
22
- - `docs/` — images referenced from README.md.
23
-
24
- ## Roadmap
25
-
26
- Planned work lives in ROADMAP.md (stable IDs: `D-n` decisions, `B-n`
27
- backlog, `OQ-n` open questions — never reuse an ID). When an item is
28
- completed, move its content to `roadmap-archive/<ID>.md` (one file per
29
- item), list it in `roadmap-archive/README.md`, and mark its line in the
30
- ROADMAP.md contents with ✅ linking to the archive file. Read ROADMAP.md
31
- before starting work that might overlap with a decision recorded there.
32
-
33
- ## Reference documentation
34
-
35
- For anything involving HomematicIP (HmIP) devices, channels, or datapoints
36
- (paramset names, value ranges, units, ENUM meanings, which channel a
37
- datapoint belongs to, etc.), consult the official eQ-3 documentation:
38
-
39
- https://www.eq-3.de/Downloads/eq3/download%20bereich/hm_web_ui_doku/HmIP_Device_Documentation.pdf
40
-
41
- This PDF is the authoritative source for HmIP device/channel/datapoint
42
- definitions — prefer it over guessing when adding or fixing paramset
43
- handling, value casting, or device-specific logic.
44
-
45
- For CUxD-specific devices/channels/datapoints, consult the docs in the
46
- cuxd project itself:
47
-
48
- https://github.com/jens-maus/cuxd/tree/master/docs
49
-
50
- ## Related fork worth checking
51
-
52
- https://github.com/ptweety/node-red-contrib-ccu is an active fork of this
53
- repo (currently at v3.6.2 vs. our v3.4.2). Not all of its direction is
54
- necessarily wanted here, but it has diverged with changes that may be worth
55
- cherry-picking individually — evaluate case by case rather than bulk-merging.
56
- Known differences as of 2026-07:
57
-
58
- - Added CCU-Jack as a supported interface.
59
- - Dropped dependencies: `mqtt-wildcard`, `nextport`, `hm-discover`, and a
60
- `promise.prototype.finally` polyfill.
61
- - Split build into separate JS/HTML build steps; moved node help texts into
62
- a restructured `locales/` layout.
63
- - Tooling churn: `nyc` → `c8` for coverage, bumped `xo`/`eslint`/`mocha`/
64
- `husky`/`node-red` devDependency versions, added `auto-changelog`.
65
- - Added `MIGRATION.md`/contribution guidelines docs.
66
-
67
- When a task here touches an area also changed upstream in that fork (e.g.
68
- interface handling, build/lint tooling, locale structure), check what they
69
- did before implementing from scratch — but confirm it still fits this
70
- repo's compatibility floors (Node >= 20, Node-RED >= 4.0) before porting.
71
-
72
- ## Conventions
73
-
74
- - Code style: ESLint 9 (flat config, `eslint.config.js`) + Prettier
75
- (`.prettierrc`, 4-space, 120 cols). `npm run lint` checks both,
76
- `npm run format` auto-fixes. Let a failing lint stop you.
77
- - Tests: `npm run test:unit` runs mocha over `test/**/*_spec.js` against
78
- `hm-simulator`; `npm test` = lint + tests; `npm run test:cov` adds c8
79
- coverage.
80
- - Each node's `.js` and `.html` files must stay in sync — the `.html`
81
- defines the editor palette entry, config form, and help text; the `.js`
82
- registers the runtime node type with the same name.
83
- - `nodes/ccu-switch.js`/`.html` and `tools/paramsets-join.js` are excluded
84
- from linting (see `eslint.config.js` ignores and `.prettierignore`) —
85
- legacy exclusions to burn down.
86
-
87
- ## Working here
88
-
89
- - Do not hand-edit `paramsets.json`; if it needs updating, look at how
90
- `tools/paramsets-join.js` produces it.
91
- - This addon is also shipped inside RedMatic (a Node-RED distribution for
92
- CCU3/RaspberryMatic) — avoid breaking changes to node config schemas
93
- without considering migration for existing flows.
94
- - Supported floors as of 4.0: Node.js >= 20, Node-RED >= 4.0; the primary
95
- target is Node-RED 5 on Node 24 (see ROADMAP.md D-1). Stay CommonJS
96
- (D-2).
3
+ Agent working documents for this repository (roadmap, handoff, bugs) are kept outside it, in the maintainer's private agents repository, checked out next to this one as `../openccu-lite-agents/node-red-contrib-ccu/`. Read them first. Nothing in this repository links to them.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,55 @@ Notable changes to node-red-contrib-ccu. Format follows
5
5
  user-visible symptom and the cause, not the commit list (the release notes
6
6
  append commits automatically).
7
7
 
8
+ ## 4.4.2 (2026-09-09)
9
+
10
+ ### Fixed
11
+
12
+ - **`getRegaVariables Error: socket hang up` every few minutes on a CCU**
13
+ (B-18, [RedMatic #601](https://github.com/rdmtc/RedMatic/issues/601)
14
+ follow-up). Since 4.3.0 a local install talks to ReGaHSS itself on port 8183. ReGaHSS answers HTTP/1.1 without `Connection: close` — and then
15
+ closes the connection 0.4–7 ms after every response (measured on a
16
+ CCU3 3.89.8, median 0.55 ms). `homematic-rega` 2.0 (since 4.0.0) sent
17
+ its requests through Node's `http.globalAgent`, which pools connections
18
+ (`keepAlive: true` since Node 19), so the next request on such a socket —
19
+ `regaPoll` right after a `setVariable`, or `getRegaPrograms` right after
20
+ `getRegaVariables` — could land in that window and die with
21
+ `ECONNRESET` / `socket hang up`; the sysvar nodes then showed
22
+ "disconnected" until the next poll. lighttpd on 8181 (the remote path,
23
+ and the local path before 4.3.0) keeps connections alive properly, which
24
+ is why nobody saw it before. In the lab (CCU3 3.89.8, Node 24.18.1, ReGaHSS kept busy by a script loop) a poll every 10 s preceded by a write, timed as the addon does it, lost 20 of 810 requests in 45 minutes with the pooled socket (27 per hour; the reporter's log shows about 6), 7 of 807 with a few milliseconds of client-side jitter, and 0 of 807 without keep-alive. Fixed in
25
+ `homematic-rega` 2.0.1, which uses an agent without keep-alive (the 1.x
26
+ behaviour) and takes an `agent` option; this release requires it. No
27
+ change to the addon's own code paths.
28
+
29
+ ## 4.4.1 (2026-09-07)
30
+
31
+ ### Fixed
32
+
33
+ - **Node-RED could be killed by a failed ReGaHSS write, seconds after
34
+ start** ([RedMatic #601](https://github.com/rdmtc/RedMatic/issues/601)).
35
+ A write to a system variable that arrives before the variable list is
36
+ known is deferred into a queue and flushed once the first
37
+ `getRegaVariables` completes. That flush dropped the resulting promise,
38
+ so a rejected write — ReGaHSS closing the connection, `Error: socket
39
+ hang up` — became an **unhandled rejection**, which Node >= 15 turns
40
+ into an uncaught exception: the whole Node-RED process exited with
41
+ status 1 and its supervisor restarted it into the same crash. The
42
+ rejection is now caught and logged.
43
+
44
+ This became reachable in 4.3.0: the rewritten local-CCU detection made
45
+ `isLocal` true again on RedMatic boxes (it had silently stopped
46
+ matching on current firmware), which moves ReGa traffic from lighttpd
47
+ on 8181 to ReGaHSS directly on 8183. lighttpd absorbed a busy ReGaHSS;
48
+ the direct port simply closes the connection.
49
+
50
+ - The same floating-promise pattern in `ccu-mqtt`: `setVariable`,
51
+ `programActive` and `programExecute` triggered over MQTT dropped their
52
+ promises too, and now report through the node's error output instead of
53
+ taking the process down.
54
+ - `regaPoll`'s `finally` chain is caught as well, so a throw in the
55
+ follow-up scheduling cannot escape as an unhandled rejection.
56
+
8
57
  ## 4.4.0 (2026-09-06)
9
58
 
10
59
  ### Added
@@ -1593,7 +1593,10 @@ module.exports = function (RED) {
1593
1593
  this.regaPollAgain = false;
1594
1594
  this.refreshRegaDataIfDue();
1595
1595
  }
1596
- });
1596
+ })
1597
+ // a throw inside the finally above would otherwise be an
1598
+ // unhandled rejection, see #601
1599
+ .catch((error) => this.logger.error('regaPoll', error));
1597
1600
  }
1598
1601
  }
1599
1602
 
@@ -1784,10 +1787,17 @@ module.exports = function (RED) {
1784
1787
  Object.keys(this.setVariableQueueTimeout).forEach((name) =>
1785
1788
  clearTimeout(this.setVariableQueueTimeout[name]),
1786
1789
  );
1787
- Object.keys(this.setVariableQueue).reduce(
1788
- (p, name) => p.then((_) => this.setVariable(name, this.setVariableQueue[name])),
1789
- Promise.resolve(),
1790
- );
1790
+ // #601: a rejected write here used to be an
1791
+ // unhandled rejection, which Node >= 15 turns into
1792
+ // an uncaught exception - it killed the whole
1793
+ // process seconds after start whenever ReGaHSS
1794
+ // dropped the connection (RedMatic #601).
1795
+ Object.keys(this.setVariableQueue)
1796
+ .reduce(
1797
+ (p, name) => p.then((_) => this.setVariable(name, this.setVariableQueue[name])),
1798
+ Promise.resolve(),
1799
+ )
1800
+ .catch((error) => this.logger.error('deferred setVariable', error));
1791
1801
  }
1792
1802
 
1793
1803
  resolve();
package/nodes/ccu-mqtt.js CHANGED
@@ -405,13 +405,22 @@ module.exports = function (RED) {
405
405
  return;
406
406
  }
407
407
 
408
+ // #601: these promises used to float - a rejection (e.g. ReGaHSS
409
+ // closing the connection) became an unhandled rejection and took
410
+ // the whole Node-RED process down.
408
411
  if (this.ccu.sysvar[filter.name]) {
409
- this.ccu.setVariable(filter.name, payload);
412
+ this.ccu
413
+ .setVariable(filter.name, payload)
414
+ .catch((error) => this.error('setVariable ' + filter.name + ': ' + error.message));
410
415
  } else if (this.ccu.program[filter.name]) {
411
416
  if (typeof payload === 'boolean') {
412
- this.ccu.programActive(filter.name, payload);
417
+ this.ccu
418
+ .programActive(filter.name, payload)
419
+ .catch((error) => this.error('programActive ' + filter.name + ': ' + error.message));
413
420
  } else {
414
- this.ccu.programExecute(filter.name);
421
+ this.ccu
422
+ .programExecute(filter.name)
423
+ .catch((error) => this.error('programExecute ' + filter.name + ': ' + error.message));
415
424
  }
416
425
  } else {
417
426
  this.error('no sysvar or program with name ' + filter.name + ' found');
package/nodes/ccu-poll.js CHANGED
@@ -23,7 +23,8 @@ module.exports = function (RED) {
23
23
  return;
24
24
  }
25
25
 
26
- this.ccu.regaPoll(); // TODO catch errors
26
+ // regaPoll() returns nothing and handles its own errors (#601)
27
+ this.ccu.regaPoll();
27
28
  done();
28
29
  });
29
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-red-contrib-ccu",
3
- "version": "4.4.0",
3
+ "version": "4.4.2",
4
4
  "license": "MIT",
5
5
  "main": "none",
6
6
  "keywords": [
@@ -51,7 +51,7 @@
51
51
  ],
52
52
  "dependencies": {
53
53
  "binrpc": "^4.2.0",
54
- "homematic-rega": "^2.0.0",
54
+ "homematic-rega": "^2.0.1",
55
55
  "homematic-xmlrpc": "^2.0.0",
56
56
  "mqtt-wildcard": "^3.0.9"
57
57
  },
package/HANDOFF.md DELETED
@@ -1,187 +0,0 @@
1
- # Session handoff — 2026-09-04
2
-
3
- Context for continuing on another machine. Delete this file once its
4
- content is consumed (state that outlives the day belongs in ROADMAP.md).
5
- Lab addresses and credentials are intentionally **not** in this file
6
- (nor in the wiki or issues).
7
-
8
- ## State
9
-
10
- - **4.0.0 released 2026-09-02, 4.1.0 released 2026-09-04** (npm latest
11
- = 4.1.0, OIDC provenance, GitHub releases). 4.1.0 = binrpc 4.2.0, B-14
12
- (LEVEL_2 → COMBINED_PARAMETER, unverified on hardware by decision),
13
- paramsets fetch/join tooling and the regenerated `paramsets.json`
14
- (+605 keys from the production CCU and two lab CCUs). Phase 3:
15
- cast/topic/message/castSysvar extracted, 43 unit tests
16
- (`npm run test:pure`, 71 on the B-16 branch).
17
- - **4.2.0 released 2026-09-04** (tag v4.2.0, npm latest = 4.2.0): the
18
- ccu-homeassistant node (B-16, archived). Branch `b-16-homeassistant`
19
- merged with `--no-ff` and deleted. The lab CCUs run the equivalent
20
- `4.2.0-dev.1` build with the "B-16 Home Assistant" flow tabs; reporters
21
- of #136/#154/#175 were asked (2026-09-04) to confirm the LEVEL_2 fix
22
- on their hardware.
23
- - **4.3.0 released 2026-09-04** (tag v4.3.0, npm latest = 4.3.0):
24
- B-2 (dynamic configuration via `msg.config`), B-3 (ccu-mqtt fixes plus
25
- the `get` and `rpc` commands and the VALUE_LIST enum names), B-4
26
- (local-CCU detection via a /proc/net/tcp listener probe) and B-5
27
- (ping toggle, value+age status lines, uncertain filter, trailing sysvar
28
- re-poll, RSSI guard). All four archived. Branch `b-2-b-5` merged with
29
- `--no-ff`; 145 pure tests, 23 integration specs green on all four CI
30
- legs.
31
- - Issue tracker: 36 → **19 open**. The 17 issues 4.3.0 fixes were
32
- commented and closed after the release (#172 #71 #103 #80 #56 #148
33
- #133 #115 #22 #167 #44 #54 #52 #96 #166 #183 #51, plus comments on the
34
- already-closed #185 and #158). B-6/B-7/B-14/B-16 archived; roadmap is
35
- current.
36
- - **Not done for 4.3.0: the editor smoke test in a browser.** The inline
37
- editor scripts are syntax-checked by a new unit test and the runtime
38
- was verified on a lab CCU, but the dialogs themselves have not been
39
- clicked through — and 4.3.0 adds fields to ccu-connection (RPC ping,
40
- names/rooms refresh), ccu-sysvar (Value from), ccu-mqtt (get + the two
41
- RPC topics) and ccu-value/ccu-rpc-event (discard uncertain values).
42
- - Lab CCU `ccu-charly` runs 4.3.0-dev.1 (identical to the release) with a
43
- flow tab **"B-2..B-5 test"**: three inject nodes driving one
44
- ccu-set-value through different `msg.config` filters, an rpc-event
45
- debug, and an mqtt rig on the `hm2test/` prefix (mqtt in → ccu-mqtt →
46
- mqtt out) used to verify the new `get` and `rpc` commands. The relays
47
- were left switched off.
48
-
49
- ## Decisions (2026-09-04)
50
-
51
- - **The production CCU3 stays on firmware 3.87.6.** No update for the
52
- sake of the paramsets regeneration. The regen runs against it as-is;
53
- what matters is the set of _paired_ device types, and 3.87.6 already
54
- reports the current descriptions for those (verified for the heating
55
- group / eTRV in docs/paramsets.md §4).
56
- - **Two lab systems exist** (set up for the RedMatic 9.0.0 work, see
57
- `../RedMatic/HANDOFF.md`): x86_64 OpenCCU 3.89.8 and an armv7l CCU3
58
- on original firmware 3.89.8, both running a RedMatic dev install with
59
- node-red-contrib-ccu 4.0.0. Use them for anything risky or
60
- destructive (firmware-3.89 behavior, install/update paths, B-14
61
- style hardware pokes if a suitable device gets paired there). They
62
- have few/no devices paired, so they **cannot replace the production
63
- dump** — at most they add the group-type (VirtualDevices) keys on
64
- 3.89.8 and serve as a diff reference.
65
-
66
- ## Plan (blocks 4.1.0)
67
-
68
- 1. ~~Full paramsets regeneration~~ **done 2026-09-04** (4.1.0-dev.7):
69
- lab CCUs (3.89.8) joined first (+58 keys), then the production CCU
70
- (3.87.6, fetched read-only from WSL with `--delay 600`, ~25 min for
71
- 962 keys: +547 new, 32 refreshed — BidCos-RF, BidCos-Wired, HmIP and
72
- the HmIP-HEATING 2.0.0 group). Rules for the production box, given by
73
- the user: read-only, slow request rate (it overloads easily), and its
74
- RPC callbacks only reach the Node-RED test box (firewall) — a live
75
- node-red-contrib-ccu connection against it must run there, never from
76
- WSL or a lab CCU. Procedure: docs/paramsets.md §3.
77
- 2. ~~B-14 hardware check~~ **skipped by user decision 2026-09-04** — no
78
- test on the production blind for now; the CHANGELOG says so and the
79
- reporters of #136/#154/#175 are asked for confirmation. The recipe
80
- (ccu-value node writing LEVEL_2 to the HmIP-FBL's `:4` channel on
81
- the Node-RED test box, log shows the COMBINED_PARAMETER remap) stays
82
- valid if it is ever wanted.
83
- 3. ~~Release 4.1.0~~ **done 2026-09-04** (tag v4.1.0, release.yml green,
84
- npm latest 4.1.0). Follow-up worth doing: comment on #136/#154/#175
85
- that 4.1.0 contains the LEVEL_2 fix and ask for confirmation on real
86
- hardware (needs the user's go — outward-facing).
87
- 4. **Release 4.2.0 = B-16** — editor smoke test done by the user
88
- 2026-09-04 (ok), released the same day: branch merged into master
89
- with `--no-ff` (never rebase with `-X theirs` — it silently keeps the
90
- branch side of conflicting doc hunks, which bit twice today), CHANGELOG
91
- dated, version 4.2.0, tag v4.2.0. B-16 archived. B-2 is 4.3.0.
92
-
93
- ## B-16 branch `b-16-homeassistant` (2026-09-04, target 4.2.0)
94
-
95
- - Implemented and committed on the branch (not pushed): ccu-homeassistant
96
- node + `lib/haroles.js` + `lib/hadiscovery.js` (ported from hm2mqtt.js;
97
- channel TYPE is the primary role key because only ~45 % of the shipped
98
- VALUES descriptions carry CONTROL hints), 24 unit tests, ccu-mqtt HA
99
- command words + empty-name
100
- topic fix, ccu-connection `deregister` fix and `type=devices` admin
101
- endpoint, README section, `examples/home-assistant.json`, CHANGELOG
102
- "Unreleased (4.2.0)". Details in ROADMAP B-16.
103
- - Local `npm test`: lint + 71 pure tests green. The mocha integration
104
- suite cannot run on this WSL machine (hm-simulator's port 8181 →
105
- EADDRINUSE, identical on master) — push the branch and let CI run it.
106
- - **Lab test done 2026-09-04** on the CCU3 lab box (branch build
107
- installed into RedMatic, `node-red-contrib-aedes` as broker inside
108
- Node-RED, flow tab "B-16 Home Assistant" left deployed there) against
109
- Home Assistant 2026.9.0 in docker on WSL: 3 wired devices discovered
110
- (232 entities, 47 enabled), switch round trip on/off, DRI16 event
111
- entities, removal on untick — all good after fixing three payload
112
- defects HA had rejected (see ROADMAP B-16). Scripts for the whole setup
113
- (install, deploy, HA onboarding, status via comms websocket) are in
114
- this session's scratchpad; the lab hand-over note lists the HA
115
- container and login.
116
- - Second round on the OpenCCU lab box (branch build installed there too,
117
- flow tab "B-16 Home Assistant" with topic prefix `hm2/` and plain
118
- payloads, publishing to the CCU3 box's broker): HmIP-PDT light round
119
- trip with brightness verified, HmIP-WRC2 events discovered, no HA
120
- warnings.
121
- - she (Smart Home Engine) as consumer: the user moved their she dev
122
- instance to the test broker, and both lab flows now publish there as
123
- well (second mqtt-broker config in each flow), so that instance's
124
- HA-discovery view lists the 5 lab devices (no orphaned/duplicate
125
- flags) — the quick check for future B-16 changes; a private she on the
126
- lab broker exists too. Details and addresses in the lab hand-over note.
127
- - Still open: editor smoke test in a browser on a lab box (device table,
128
- ccu-mqtt select), a real key press (event entity), CI. Cover/climate
129
- payloads have no lab hardware — unit tests only.
130
- - Merge after 4.1.0 is released (rebase onto master; the CHANGELOG has
131
- separate Unreleased sections, so this is trivial).
132
-
133
- ## Infrastructure (this does not travel via git; addresses live outside the repo)
134
-
135
- - **Node-RED test box** (Debian bookworm, Node 24, Node-RED 5.0.6, ssh as
136
- root with key auth): `systemctl {restart,status} node-red`,
137
- `journalctl -u node-red`, user dir `/root/.node-red`, nginx TLS in
138
- front with internal CA certs. Deploy: `npm pack` → scp tarball →
139
- `cd /root/.node-red && npm install /tmp/<tarball> && systemctl restart
140
- node-red`. Verify: `curl -s http://localhost:1880/nodes -H "Accept:
141
- application/json"`.
142
- - **Production CCU3** (fw 3.87.6, stays there, other VLAN): read-only ssh
143
- as root works; XML-RPC 2001/2010/9292 answer client calls from WSL.
144
- Contrary to the earlier note it is _not_ HmIP-only: the 2026-09-04
145
- dump lists ~35 BidCos-RF, 3 BidCos-Wired and ~30 HmIP device types
146
- plus heating groups. Gotcha that cost hours: the CCU firewall must
147
- allow the CCU → Node-RED callback port, otherwise inits hang for
148
- minutes and metadata never arrives — only the Node-RED test box is
149
- allowed through.
150
- - **Lab CCUs**: see Decisions above and `../RedMatic/HANDOFF.md`
151
- ("Building and testing locally") for the scripted-check recipes
152
- (Node-RED token via `POST /addons/red/auth/token`, CCU session via the
153
- JSON-API).
154
- - **Firmware image** `ccu3-3.89.8.tgz` lives in a temp dir on the old
155
- Mac only — if needed again, re-download from the official CCU3
156
- firmware page. Its analysis is preserved in docs/paramsets.md.
157
- - **gh CLI**: needs auth on the new machine (`gh auth login`,
158
- account hobbyquaker). Issue/PR comments are signed
159
- "Claude (Fable 5) … on behalf of @hobbyquaker" (German or English
160
- matching the issue).
161
-
162
- ## Waiting on externals (do not gate 4.1.0)
163
-
164
- - Reporter dumps: #177 (BSL-V2), #144 (WRCD), #159 (CuxD) — for B-15 +
165
- paramsets; requested in the issues 2026-09-02.
166
- - Retest answers: #111, #145, #146, #151 (close ~2026-12 if silent);
167
- #112, #117 (retest comments posted).
168
- - Hardware confirmation for B-14 from reporters (#136/#154/#175).
169
-
170
- ## After 4.3.0 (queue)
171
-
172
- 1. Browser smoke test of the config dialogs changed in 4.3.0 (see above).
173
- 2. Editor loader consolidation (Phase 3 §6.4 + §8.1 defect 3, shared
174
- `resources/` script for the 9 dialogs) — needs a user smoke test on
175
- the Node-RED test box afterwards.
176
- 3. Remaining Phase 3: split rpc/rega/queue out of ccu-connection.js,
177
- async/await as touched, i18n/help consolidation (#58). `lib/` grew
178
- `dynconfig`, `channelfilter`, `valuestatus` and `localccu` in 4.3.0;
179
- `ccu-connection.js` is still ~3100 lines.
180
- 4. Remaining Phase 4: B-11 (re-init robustness — the `rpcCheckInit`
181
- early return for device-less interfaces is still there, deliberately
182
- left alone in 4.3.0 to keep its scope), B-12 (auth/TLS, #27), B-13
183
- (party mode, #161/#156), B-15 (new HmIP channel types, #177/#144),
184
- B-8/B-9/B-10.
185
- 5. Still open from §8.3: the stale device-table cache (#181 — 4.3.0's
186
- refresh covers names/rooms/functions only) and the internal system
187
- variables (#184, needs a `homematic-rega` release).