node-red-contrib-ccu 4.6.2 → 4.7.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 +73 -0
- package/README.md +16 -2
- package/nodes/ccu-connection.html +28 -7
- package/nodes/ccu-connection.js +397 -23
- package/nodes/lib/initretry.js +72 -17
- package/nodes/lib/lite.js +363 -0
- package/nodes/locales/de/ccu-connection.html +3 -1
- package/nodes/locales/en-US/ccu-connection.html +3 -1
- package/package.json +4 -3
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,79 @@ 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.7.1 (2026-10-28)
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **On openccu-lite every write of a decimal value failed** - a dimmer's or a
|
|
13
|
+
blind's `LEVEL`, a thermostat's set point, an `ON_TIME`, through _value_,
|
|
14
|
+
_set value_, _rpc_ and the other nodes alike. A `FLOAT` datapoint is sent as
|
|
15
|
+
a typed double, which over XML-RPC is homematic-xmlrpc's
|
|
16
|
+
`{explicitDouble: n}`; the lite-rpc connection of 4.7.0 passed that object
|
|
17
|
+
on as it was, so the interface process got a struct where a number belongs
|
|
18
|
+
and refused it (`Failure` from rfd and hs485d,
|
|
19
|
+
`-5 Invalid parameter or value` from hmipserver). The lite-rpc connection
|
|
20
|
+
now sends lite-rpc's own typed double, `{double: n}` (or the plain number
|
|
21
|
+
on a system that does not announce it) - in `setValue`, in a paramset of
|
|
22
|
+
`putParamset` and in a multicall. The direct connection to a CCU is unchanged. Until this version
|
|
23
|
+
the workaround was _CCU_ in the connection node's _openccu-lite interfaces_.
|
|
24
|
+
- **Errors of the lite-rpc connection said less than they should:** a fault
|
|
25
|
+
of the interface process was logged as `fault -1 undefined` and reached the
|
|
26
|
+
flow as `OccuLiteError: Failure`, and a token without the needed rights did
|
|
27
|
+
not say which right it lacks. The fault now carries its code and text, and a
|
|
28
|
+
refused call names the missing scope.
|
|
29
|
+
|
|
30
|
+
## 4.7.0 (2026-10-27)
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
|
|
34
|
+
- **On openccu-lite the interfaces are reached through the system's lite-rpc**
|
|
35
|
+
(with [occulite-client](https://www.npmjs.com/package/occulite-client))
|
|
36
|
+
instead of XML-RPC/BIN-RPC clients and callback servers of this node's own -
|
|
37
|
+
the requests over the system's web port, the events from a stream the
|
|
38
|
+
connection opens, replayed after a break and re-read after a restart of the
|
|
39
|
+
system; one subscriber at the interface processes serves every program on
|
|
40
|
+
the system, and nothing registers with `init`. The credential is the
|
|
41
|
+
openccu-lite token of the connection node, or on the system itself
|
|
42
|
+
RedMatic's own token, which the system mints for it. A new setting
|
|
43
|
+
_openccu-lite interfaces_ in the connection node chooses: _auto_ (the
|
|
44
|
+
default; the CCU way on a CCU), _openccu-lite_ (lite-rpc only) or _CCU_ (the
|
|
45
|
+
direct connection with callbacks, on openccu-lite too). An existing
|
|
46
|
+
connection is moved to lite-rpc once, at its first start on openccu-lite,
|
|
47
|
+
and the log says so; a choice made in the node is never changed by a later
|
|
48
|
+
version. The value cache is filled from the system's state store at deploy,
|
|
49
|
+
so nodes with _cache_ get a value on openccu-lite as well. CUxD and CCU-Jack
|
|
50
|
+
keep their own connections. On a CCU, RaspberryMatic and OpenCCU nothing
|
|
51
|
+
changes.
|
|
52
|
+
|
|
53
|
+
### Changed
|
|
54
|
+
|
|
55
|
+
- **An interface process that is not up yet is tried every 3 s for the first
|
|
56
|
+
90 s, then every 15 s.** The 1, 2, 4, 8 s steps and the 15 s after them
|
|
57
|
+
missed hmipserver's ready moment on a booting system by up to 15 s (measured
|
|
58
|
+
on an openccu-lite Pi 4: hmipserver answers 50-55 s after the boot, the next
|
|
59
|
+
attempt came at 61 s). The same holds after a process went away. When one
|
|
60
|
+
interface appears, the others still waiting are tried at once, and the log
|
|
61
|
+
line that reports the connection says how long after the start (or after the
|
|
62
|
+
outage) it came. The metadata API's re-detection on openccu-lite follows the
|
|
63
|
+
same schedule.
|
|
64
|
+
- **The port of each interface can be set in the connection node**, beside its
|
|
65
|
+
checkbox: blank is the CCU's port for the transport as before (2001/42001 and
|
|
66
|
+
so on, the 3xxxx ports on the CCU itself), a number replaces it - for a CCU
|
|
67
|
+
behind port forwarding, or a simulator on another port.
|
|
68
|
+
- The test suite runs hm-simulator 1.4 on free ports, so it runs beside a CCU
|
|
69
|
+
or another suite, and drives the simulator's scenario API: devices paired
|
|
70
|
+
and removed while Node-RED runs, a ramp-time write, a service message, an
|
|
71
|
+
interface process that restarts and forgets its clients, TLS with basic
|
|
72
|
+
auth.
|
|
73
|
+
- **On openccu-lite the metadata stream reports as `Metadata`, not as
|
|
74
|
+
"Interface ReGaHSS".** The system has no ReGaHSS; the connection borrowed
|
|
75
|
+
that slot for the stream's state, so the log said "Interface ReGaHSS
|
|
76
|
+
connected" at every start and reconnect, right next to "this box has no
|
|
77
|
+
ReGaHSS". The log now says "Metadata stream connected", the nodes' status
|
|
78
|
+
counts the stream under that name, and the editors' interface lists do not
|
|
79
|
+
offer it.
|
|
80
|
+
|
|
8
81
|
## 4.6.2 (2026-10-23)
|
|
9
82
|
|
|
10
83
|
### Fixed
|
package/README.md
CHANGED
|
@@ -36,8 +36,22 @@ BINRPC/XMLRPC works unchanged. Device, channel, room and function names come fro
|
|
|
36
36
|
ReGaHSS; the connection node detects this at start (`GET /api/meta/v1/version`), nothing has to be configured, and
|
|
37
37
|
`msg.channelName`, `msg.rooms`, `msg.functions` and the room/function filters keep their shape.
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
-
|
|
39
|
+
Since 4.7.0 the interface processes are reached through the system's **lite-rpc** as well, with
|
|
40
|
+
[occulite-client](https://www.npmjs.com/package/occulite-client): the requests over the system's web port, the events
|
|
41
|
+
from a stream the connection opens (replayed after a break, re-read after a restart of the system), one subscriber at
|
|
42
|
+
the processes for every program on the system, no callback server and no `init` of this node's own; the value cache is
|
|
43
|
+
filled from the system's state store at deploy. The connection node's **openccu-lite interfaces** setting chooses
|
|
44
|
+
_auto_ (the default: lite-rpc on openccu-lite, the CCU way on a CCU), _openccu-lite_ (lite-rpc only) or _CCU_ (the
|
|
45
|
+
direct connection with callbacks, on openccu-lite too); an existing connection is moved to lite-rpc once at its first
|
|
46
|
+
start on openccu-lite, the log says so, and a choice made in the node is never changed by a later version. CUxD and
|
|
47
|
+
CCU-Jack keep their own connections.
|
|
48
|
+
|
|
49
|
+
- Node-RED **on the system** (RedMatic from its addon catalogue): lite-rpc with RedMatic's own token, which the system
|
|
50
|
+
mints for it from RedMatic's manifest (RedMatic 9.13 or later); the names come with the system's read-only token.
|
|
51
|
+
Nothing to configure. An older RedMatic has no such token and connects the CCU way, the log says so.
|
|
52
|
+
- Node-RED **elsewhere**: an API token of the system goes into the connection node's **openccu-lite token** field -
|
|
53
|
+
for lite-rpc it needs the `rpc:*` scope of what the flow does (`rpc:read` for events and reads, `rpc:operate` for
|
|
54
|
+
`setValue`, `rpc:configure` for paramsets and links, `rpc:admin` for the rest; the rpc node may call anything).
|
|
41
55
|
- **System variables, programs and HM-Script do not exist there.** The `ccu-sysvar`, `ccu-program`, `ccu-script` and
|
|
42
56
|
`ccu-poll` nodes stay in the flows and answer every message with an error.
|
|
43
57
|
|
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
cuxdEnabled: {value: false},
|
|
14
14
|
jackEnabled: {value: false},
|
|
15
15
|
jackPort: {value: 2121},
|
|
16
|
+
regaPort: {value: ''},
|
|
17
|
+
bcrfPort: {value: ''},
|
|
18
|
+
bcwiPort: {value: ''},
|
|
19
|
+
iprfPort: {value: ''},
|
|
20
|
+
virtPort: {value: ''},
|
|
21
|
+
cuxdPort: {value: ''},
|
|
16
22
|
|
|
17
23
|
regaPoll: {value: true},
|
|
18
24
|
regaInterval: {value: 30},
|
|
@@ -31,6 +37,7 @@
|
|
|
31
37
|
username: {value: ''},
|
|
32
38
|
|
|
33
39
|
metaPort: {value: ''},
|
|
40
|
+
connectionType: {value: 'auto'},
|
|
34
41
|
|
|
35
42
|
queueTimeout: {value: 5000, required: true},
|
|
36
43
|
queuePause: {value: 250, required: true},
|
|
@@ -223,12 +230,18 @@
|
|
|
223
230
|
<div class="form-row">
|
|
224
231
|
<label for="node-input-rfdEnabled"><i class="icon-tag"></i> Interfaces</label>
|
|
225
232
|
<div style="width: 70%; display: inline-block; vertical-align: text-top;">
|
|
226
|
-
<label class="ccu-checkbox"><input type="checkbox" id="node-config-input-regaEnabled"> ReGaHSS</label
|
|
227
|
-
<
|
|
228
|
-
<label class="ccu-checkbox"><input type="checkbox" id="node-config-input-
|
|
229
|
-
<
|
|
230
|
-
<label class="ccu-checkbox"><input type="checkbox" id="node-config-input-
|
|
231
|
-
<
|
|
233
|
+
<label class="ccu-checkbox"><input type="checkbox" id="node-config-input-regaEnabled"> ReGaHSS</label>
|
|
234
|
+
<input type="text" id="node-config-input-regaPort" class="ccu-port" style="width: 70px;" placeholder="8181"><br>
|
|
235
|
+
<label class="ccu-checkbox"><input type="checkbox" id="node-config-input-bcrfEnabled"> BidCos-RF</label>
|
|
236
|
+
<input type="text" id="node-config-input-bcrfPort" class="ccu-port" style="width: 70px;" placeholder="2001"><br>
|
|
237
|
+
<label class="ccu-checkbox"><input type="checkbox" id="node-config-input-bcwiEnabled"> BidCos-Wired</label>
|
|
238
|
+
<input type="text" id="node-config-input-bcwiPort" class="ccu-port" style="width: 70px;" placeholder="2000"><br>
|
|
239
|
+
<label class="ccu-checkbox"><input type="checkbox" id="node-config-input-iprfEnabled"> HmIP-RF</label>
|
|
240
|
+
<input type="text" id="node-config-input-iprfPort" class="ccu-port" style="width: 70px;" placeholder="2010"><br>
|
|
241
|
+
<label class="ccu-checkbox"><input type="checkbox" id="node-config-input-virtEnabled"> VirtualDevices</label>
|
|
242
|
+
<input type="text" id="node-config-input-virtPort" class="ccu-port" style="width: 70px;" placeholder="9292"><br>
|
|
243
|
+
<label class="ccu-checkbox"><input type="checkbox" id="node-config-input-cuxdEnabled"> CUxD</label>
|
|
244
|
+
<input type="text" id="node-config-input-cuxdPort" class="ccu-port" style="width: 70px;" placeholder="8701"><br>
|
|
232
245
|
<label class="ccu-checkbox"><input type="checkbox" id="node-config-input-jackEnabled"> CCU-Jack</label>
|
|
233
246
|
<input type="text" id="node-config-input-jackPort" style="width: 70px;" placeholder="2121">
|
|
234
247
|
</div>
|
|
@@ -300,10 +313,18 @@
|
|
|
300
313
|
<label for="node-config-input-password"><i class="icon-tag"></i> Password</label>
|
|
301
314
|
<input type="password" id="node-config-input-password">
|
|
302
315
|
</div>
|
|
316
|
+
<div class="form-row">
|
|
317
|
+
<label for="node-config-input-connectionType"><i class="icon-tag"></i> openccu-lite interfaces</label>
|
|
318
|
+
<select id="node-config-input-connectionType" style="width: 70%;">
|
|
319
|
+
<option value="auto">auto: through the system's lite-rpc on openccu-lite (the default), the CCU way elsewhere</option>
|
|
320
|
+
<option value="openccu-lite">openccu-lite: lite-rpc only</option>
|
|
321
|
+
<option value="ccu">CCU: directly, with callbacks (XML-RPC/BIN-RPC) - on openccu-lite too</option>
|
|
322
|
+
</select>
|
|
323
|
+
</div>
|
|
303
324
|
<div class="form-row">
|
|
304
325
|
<label for="node-config-input-metaToken"><i class="icon-tag"></i> openccu-lite token</label>
|
|
305
326
|
<input type="password" id="node-config-input-metaToken" placeholder="olt_...">
|
|
306
|
-
<small>Only for openccu-lite (a CCU ignores this). Leave empty when Node-RED runs on the
|
|
327
|
+
<small>Only for openccu-lite (a CCU ignores this). Leave empty when Node-RED runs on the system itself (RedMatic).</small>
|
|
307
328
|
</div>
|
|
308
329
|
<div class="form-row">
|
|
309
330
|
<label for="node-config-input-metaPort"><i class="icon-tag"></i> openccu-lite port</label>
|