node-red-contrib-velbus-2026 0.9.2 → 0.9.3

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.
@@ -14,6 +14,41 @@ All feedback via GitHub issues, with examples and debug captures where possible.
14
14
 
15
15
  ---
16
16
 
17
+ ## v0.9.3 — 09/07/2026
18
+
19
+ ### velbus-scan — VMBGPOD still showed "unknown_0x28" after the v0.9.2 fix
20
+
21
+ - **Reported by Stuart:** re-ran a scan against v0.9.2 pulled fresh from npm,
22
+ `VMBGPOD` still showed as `unknown_0x28`.
23
+ - **Root cause:** `velbus-scan.js` has its **own, third, independent copy**
24
+ of the type table — `ALL_TYPES`, `NODE_SUGGESTION`, and `MODULE_CHANNELS`
25
+ — entirely separate from `lib/glass-panel-types.js` (used by
26
+ `velbus-glass-panel` at runtime) and the duplicate list inside
27
+ `velbus-glass-panel.html` (used for the editor dropdown), both already
28
+ fixed in v0.9.2. The v0.9.2 fix genuinely worked for the glass-panel node
29
+ itself; the bus scanner simply had no idea `VMBGPOD` existed, since it
30
+ never reads either of the other two files at all.
31
+ - **This is now the third type table found in this codebase.** Searched
32
+ exhaustively this time (`grep -rln "VMBGPO'"` across the whole `nodes/`
33
+ and `lib/` tree) rather than assume these three are the only ones — they
34
+ are, confirmed by the search coming back with exactly these three files
35
+ and no others.
36
+ - Added `0x28: 'VMBGPOD'` to all three tables in `velbus-scan.js`.
37
+ - **Verified end-to-end this time, not just by inspecting the table.** Built
38
+ a full mock-harness test that triggers a real scan, feeds a simulated
39
+ `0xFF` response for `VMBGPOD` (using the exact build/serial from Stuart's
40
+ own scan output), and confirms the emitted `module_found` payload reports
41
+ `"module":"VMBGPOD"`, the correct suggested node, and the correct channel
42
+ count — not just that the table lookup would theoretically work.
43
+ - **Worth remembering for any future module type addition:** check all
44
+ three of `lib/<family>-types[-20].js`, the corresponding node's own
45
+ `.html` (editor dropdown), and `velbus-scan.js` (bus-wide discovery).
46
+ Missing any one of the three produces a real, user-visible symptom in a
47
+ different part of the palette than wherever the fix was actually made —
48
+ exactly what happened here.
49
+
50
+ ---
51
+
17
52
  ## v0.9.2 — 09/07/2026
18
53
 
19
54
  ### velbus-glass-panel — VMBGPOD (0x28) registry gap fixed
package/HANDOVER.md CHANGED
@@ -6,7 +6,7 @@ you're a new contributor, a new maintainer, or an AI assistant starting a fresh
6
6
  with no memory of previous work — this document should be sufficient on its own, together
7
7
  with the source code in this repository, to continue development competently.
8
8
 
9
- Current state at time of writing: **v0.9.2, 19 nodes, published on npm.**
9
+ Current state at time of writing: **v0.9.3, 19 nodes, published on npm.**
10
10
 
11
11
  ---
12
12
 
@@ -144,6 +144,24 @@ boilerplate (bridge lookup, packet registration, status bar handling, firmware c
144
144
  V2 nodes) is consistent across every node and easy to get subtly wrong if rebuilt from
145
145
  scratch.
146
146
 
147
+ **Adding or fixing a module type touches three separate files, not one — confirmed
148
+ the hard way (v0.9.2 → v0.9.3).** A module type used to exist in exactly one place per
149
+ node family; it doesn't. Check all three every time:
150
+ 1. `lib/<family>-types[-20].js` — used by the actual node at runtime (`velbus-glass-panel`,
151
+ `velbus-sensor`, etc.)
152
+ 2. The corresponding node's own `.html` file — a **separate, duplicate** copy used only
153
+ to populate the editor's address dropdown and type hint. Not read by the running node
154
+ at all.
155
+ 3. `nodes/velbus-scan/velbus-scan.js` — has its **own, third, entirely independent** copy
156
+ (`ALL_TYPES`, `NODE_SUGGESTION`, `MODULE_CHANNELS`), used only for bus-discovery
157
+ reporting. Doesn't read either of the other two files.
158
+
159
+ Missing any one of the three produces a real, user-visible symptom in a *different* part
160
+ of the palette than wherever the fix actually needs to happen — a scan reporting
161
+ `unknown_0x28` while the glass-panel node itself handles that type perfectly correctly,
162
+ for instance. When in doubt, `grep -rln "<ModuleName>'" nodes/ lib/` to find every file
163
+ that mentions a given type by name, rather than assume you've found all the copies.
164
+
147
165
  ---
148
166
 
149
167
  ## 4. Architecture overview
@@ -894,6 +912,10 @@ git push --tags
894
912
  exceptions — see section 4.3 if this isn't already second nature.
895
913
  - **Numbers are always numbers in payloads, never strings.**
896
914
  - **`results.modules`, not `results`,** when reading the scan endpoint.
915
+ - **A module type lives in three separate files, not one** (per-node `lib/` registry,
916
+ that node's own `.html` dropdown copy, and `velbus-scan.js`'s independent copy) —
917
+ see section 3 for the full explanation. Missing one produces a symptom in a
918
+ different part of the palette than wherever the type was actually added.
897
919
  - **Thermostat commands go to the primary address only,** never a subaddress.
898
920
  - **Respect the 20ms minimum between `0xFC` writes** on original-series modules — this
899
921
  is real EEPROM wear, not an arbitrary rate limit.
@@ -21,6 +21,7 @@ const ALL_TYPES = {
21
21
  // Glass panels - original
22
22
  0x1E: 'VMBGP1', 0x1F: 'VMBGP2', 0x20: 'VMBGP4',
23
23
  0x21: 'VMBGPO', 0x2D: 'VMBGP4PIR',
24
+ 0x28: 'VMBGPOD',
24
25
  0x34: 'VMBEL1', 0x35: 'VMBEL2', 0x36: 'VMBEL4',
25
26
  0x37: 'VMBELO', 0x38: 'VMBELPIR', 0x39: 'VMBSIG',
26
27
  0x47: 'VMBEL2PIR',
@@ -78,6 +79,7 @@ const NODE_SUGGESTION = {
78
79
  // Glass panels - all via single node
79
80
  0x1E: 'velbus-glass-panel', 0x1F: 'velbus-glass-panel', 0x20: 'velbus-glass-panel',
80
81
  0x21: 'velbus-glass-panel', 0x2D: 'velbus-glass-panel',
82
+ 0x28: 'velbus-glass-panel',
81
83
  0x34: 'velbus-glass-panel', 0x35: 'velbus-glass-panel', 0x36: 'velbus-glass-panel',
82
84
  0x37: 'velbus-glass-panel', 0x38: 'velbus-glass-panel', 0x47: 'velbus-glass-panel',
83
85
  0x3A: 'velbus-glass-panel', 0x3B: 'velbus-glass-panel', 0x3C: 'velbus-glass-panel',
@@ -114,6 +116,7 @@ const MODULE_CHANNELS = {
114
116
  // Glass panels - original
115
117
  0x1E: 1, 0x1F: 2, 0x20: 4,
116
118
  0x21: 32, 0x2D: 8,
119
+ 0x28: 4,
117
120
  0x34: 1, 0x35: 2, 0x36: 4,
118
121
  0x37: 4, 0x38: 8, 0x47: 6,
119
122
  0x3A: 1, 0x3B: 2, 0x3C: 4,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-red-contrib-velbus-2026",
3
- "version": "0.9.2",
3
+ "version": "0.9.3",
4
4
  "description": "Node-RED palette for Velbus building automation \u2014 relay, dimmer, glass panel, PIR, blind, sensor, meteo, clock nodes. Original and V2 (-20) series.",
5
5
  "keywords": [
6
6
  "node-red",
Binary file
Binary file