Added
- Dynamic node configuration through
msg.config(roadmap B-2). Put
an object inmsg.configand its properties override that node's own
configuration for that one message; the stored configuration is never
modified, so the next message starts from the dialog settings again.
Supported by the value, set-value, switch, sysvar, signal and display
nodes; each node's help panel lists the keys it accepts, and anything
else is ignored.msg.ccucould not be used for this because it
already carries the CCU host name. (#172, #71, #103, #80, #56, #148,
#185) - signal node: every command field is reachable that way, including
soundListanddimmerList, which now also accept a plain array of
values (msg.config.soundList = [1, 2]) instead of the editor's
list-of-objects shape. (#148, #80) - sysvar node: a typed input selects where the value to write comes from
(msg/flow/global/env). Computing a value and storing it in a variable
no longer needs a change node to move it intomsg.payloadfirst.
(#56) - sysvar and rpc-event nodes show the last value and how long ago it
arrived under the node — the sysvar node also when "emit value on
start" is off, since the connection knows the value either way. (#54,
#52) - value and rpc-event nodes: new option discard uncertain values,
which drops values the ReGa could not timestamp (msg.uncertain).
Off by default, so existing flows are unaffected. (#96) - ccu-mqtt: new get topic (
hm/get/<channel>/<datapoint>by
default) republishes the last known value on its status topic, so a
refresh can be triggered over MQTT. An empty datapoint republishes the
whole channel. (#115) - ccu-mqtt: the RPC topics are implemented and visible in the editor.
The dispatcher recognised the RPC topic before but the node had no
handler for it, so such messages were silently dropped and the
response topic was never used — which is why both fields were
commented out. The result (or the error) is published on the response
topic. (#22) - switch node: rule values accept the bool type, as core Node-RED's
switch node does. Without ittruehad to be entered as a string, and
true == "true"is false in JavaScript, so boolean datapoints could
only be compared by writing 0/1. (#51) - connection node: RPC ping can be switched off, which disables the
periodic ping and the timeout-triggered re-init for that connection.
Setting the ping timeout to 0 never did this — it fell back to 60
seconds. (#44) - connection node: names/rooms refresh interval (default 15 minutes,
0 = off). Channel names, rooms and functions used to be read once when
the connection started, so anything added in the CCU WebUI stayed
invisible until the flow was redeployed. (#167)
Fixed
- set-value node: only the first message ever configured the node.
Message properties were written into the node's own configuration, so
every later message hit the "already configured" guard and was
ignored, and the node kept acting on the first message's rooms,
functions or channel. Each message is now evaluated on its own. (#133) - set-value node: the device-name filter tested whether the channel
had a ReGa name while comparing the device name, so channels without
a name of their own were dropped even when their device matched. - Enum names never worked: the CCU sends them in
VALUE_LIST, but the
code readENUM, which no interface process sends.msg.datapointEnum
andmsg.valueEnumwere alwaysundefined, and writing an enum
datapoint by name (AUTO-MODErather than0) fell back to0. - ccu-mqtt: the "is this parameter writeable" check was
!(desc.OPERATIONS) && 2, which is always false — it never fired, and
read-only parameters were written anyway. - ccu-mqtt:
putParamsetcast every value against the description of a
parameter that does not exist in that call, so the whole paramset went
out uncast. Its private copy of the cast logic is gone; the shared one
gained the MIN/MAX clamping that copy did. Unparseable numbers become
0 instead of NaN, which XML-RPC cannot encode. - Running on the CCU itself was not detected any more, so local installs
(RedMatic) silently talked to the interface processes through the
CCU's lighttpd proxy instead of their direct ports. The check grepped
/etc/lighttpd/conf.d/proxy.conffor a port number; on current
firmware that file is a one-line include and the port markers live two
levels down. It now looks for a listener on the direct port instead.
(Roadmap B-4) - Writing several system variables at once left all but the first
invisible until the next scheduled ReGa poll (30 s by default): the
immediate re-poll each write triggers was dropped while another poll
was still running. It is remembered and run once afterwards. (#166) - RSSI values from the ReGa poll were converted from the unsigned byte
unconditionally, so a value that was already negative, or the 0 that
means "never received", became -318 or -256. (#183) - Editor: the Channel and Datapoint fields were cleared whenever their
content was not a known channel address, which also wiped
${PARAMETER}placeholders every time the dialog was opened — so a
node inside a subflow lost its subflow parameter. Placeholders are
left alone now. (#158) - The German help texts of the rpc-event node never loaded:
locales/de/ccu-rpc-event.jsonhad a trailing comma and was not valid
JSON.
Commits since v4.2.0
- Merge branch b-2-b-5: 4.3.0 (B-2 dynamic config, B-3 mqtt, B-4 local detection, B-5) (ac097f4)
- 4.3.0 (7b2cc88)
- roadmap: B-2, B-3, B-4 and B-5 done and archived (67955b2)
- docs + editor: document msg.config, keep subflow placeholders (5b03836)
- B-3, B-4, B-5: mqtt node, local detection, connection fixes (917e867)
- B-2: dynamic configuration via msg across the nodes (0180273)
- B-2: per-message config for ccu-set-value (#133, #71) (df44114)
- docs: issue triage second pass (B-7 done) (9c6b602)
- HANDOFF: 4.2.0 released, branch merged and deleted (113a7fb)