node-red-contrib-dmx-for-ha 0.6.9 → 0.6.11

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.
@@ -207,8 +207,9 @@ module.exports = function (RED) {
207
207
  const gamma = GAMMA_TABLE[Math.max(0, Math.min(255, limited))];
208
208
  // DMX floor — if source is ON but output is below floor, snap up
209
209
  // Prevents flickering at low DMX values that decoders can't handle cleanly
210
- // Exception: if colorValue is 0, light is intentionally OFF — send 0
211
- if (colorValue > 0 && gamma < S.dmxFloor) return S.dmxFloor;
210
+ // colorValue AND brightness both > 0 = light intentionally on
211
+ // brightness = 0 means light is OFF always send 0
212
+ if (colorValue > 0 && brightness > 0 && gamma < S.dmxFloor) return S.dmxFloor;
212
213
  return gamma;
213
214
  }
214
215
 
@@ -396,8 +397,8 @@ module.exports = function (RED) {
396
397
  const to = toChannels[i] ? toChannels[i][1] : 0;
397
398
  const raw = Math.round(from + (to - from) * progress);
398
399
  // Apply floor during transition — never send flicker values
399
- // Exception: if target is 0, allow 0 (light intentionally off)
400
- const floored = (raw > 0 && raw < S.dmxFloor) ? S.dmxFloor : raw;
400
+ // Exception: if target is 0 (intentionally off) allow it to reach 0
401
+ const floored = (raw > 0 && raw < S.dmxFloor && to > 0) ? S.dmxFloor : raw;
401
402
  return [ch, floored];
402
403
  });
403
404
  sendDmxChannels(channels);
@@ -433,7 +434,12 @@ module.exports = function (RED) {
433
434
  const r = color.r !== undefined ? color.r : recall('red', 'red_disk', 255);
434
435
  const g = color.g !== undefined ? color.g : recall('green', 'green_disk', 255);
435
436
  const b = color.b !== undefined ? color.b : recall('blue', 'blue_disk', 255);
436
- const w = color.w !== undefined ? color.w : recall('white', 'white_disk', 255);
437
+ // Colour wheel sends RGB only no white value means white should be 0
438
+ // If no colour sent at all (brightness/scene cmd) — keep stored white value
439
+ const w = color.w !== undefined ? color.w
440
+ : (color.r !== undefined || color.g !== undefined || color.b !== undefined)
441
+ ? 0
442
+ : recall('white', 'white_disk', 255);
437
443
  const ww = color.ww!== undefined ? color.ww: recall('warmWhite','warmWhite_disk', 0);
438
444
 
439
445
  const toChannels = buildColorChannels(brightness, r, g, b, w, ww);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-red-contrib-dmx-for-ha",
3
- "version": "0.6.9",
3
+ "version": "0.6.11",
4
4
  "description": "DMX lighting control for Home Assistant via Node-RED and MQTT. Place a node, fill in the settings, deploy. Full HA device registry integration with RGBW/RGBWW/CCT/brightness colour modes, transitions, effects, and group control.",
5
5
  "keywords": [
6
6
  "node-red",