node-red-contrib-dmx-for-ha 0.6.27 → 0.6.30
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/nodes/ha-mqtt-button.html +1 -1
- package/nodes/ha-mqtt-button.js +2 -1
- package/nodes/ha-mqtt-dmx-group.html +1 -1
- package/nodes/ha-mqtt-dmx-group.js +2 -1
- package/nodes/ha-mqtt-dmx.html +18 -6
- package/nodes/ha-mqtt-dmx.js +3 -2
- package/nodes/ha-mqtt-pir.html +1 -1
- package/nodes/ha-mqtt-pir.js +2 -1
- package/nodes/ha-mqtt-relay.html +1 -1
- package/nodes/ha-mqtt-relay.js +2 -1
- package/package.json +1 -1
|
@@ -313,7 +313,7 @@
|
|
|
313
313
|
</div>
|
|
314
314
|
|
|
315
315
|
<div style="margin-top:16px; padding-top:8px; border-top:1px solid #444; color:#666; font-size:0.8em; text-align:right;">
|
|
316
|
-
node-red-contrib-dmx-for-ha v0.6.
|
|
316
|
+
node-red-contrib-dmx-for-ha v0.6.30
|
|
317
317
|
</div>
|
|
318
318
|
|
|
319
319
|
</script>
|
package/nodes/ha-mqtt-button.js
CHANGED
|
@@ -137,7 +137,7 @@ module.exports = function (RED) {
|
|
|
137
137
|
if (S.debugMode) {
|
|
138
138
|
setStatus('red', 'dot', `ha-mqtt-button "${_debugId}" ⚠ DEBUG MODE ON`);
|
|
139
139
|
node.warn(`[DEBUG] ha-mqtt-button "${_debugId}" — debug mode is enabled. Disable in production.`);
|
|
140
|
-
setTimeout(function () {
|
|
140
|
+
S._debugTimer = setTimeout(function () {
|
|
141
141
|
if (S.debugMode) {
|
|
142
142
|
S.debugMode = false;
|
|
143
143
|
node.warn(`[DEBUG] ha-mqtt-button "${_debugId}" — debug mode auto-disabled after 12 hours`);
|
|
@@ -315,6 +315,7 @@ module.exports = function (RED) {
|
|
|
315
315
|
|
|
316
316
|
// ── Cleanup ───────────────────────────────────────────────
|
|
317
317
|
node.on('close', function (done) {
|
|
318
|
+
if (S._debugTimer) clearTimeout(S._debugTimer);
|
|
318
319
|
broker.unsubscribe(S._activeBtnTopic || S.subscribeTopic, node.id);
|
|
319
320
|
broker.unsubscribe(uiBtnCmdTopic, node.id);
|
|
320
321
|
broker.deregister(node, done);
|
|
@@ -317,7 +317,7 @@
|
|
|
317
317
|
</div>
|
|
318
318
|
|
|
319
319
|
<div style="margin-top:16px; padding-top:8px; border-top:1px solid #444; color:#666; font-size:0.8em; text-align:right;">
|
|
320
|
-
node-red-contrib-dmx-for-ha v0.6.
|
|
320
|
+
node-red-contrib-dmx-for-ha v0.6.30
|
|
321
321
|
</div>
|
|
322
322
|
|
|
323
323
|
</script>
|
|
@@ -142,7 +142,7 @@ module.exports = function (RED) {
|
|
|
142
142
|
if (S.debugMode) {
|
|
143
143
|
setStatus('red', 'dot', `ha-mqtt-dmx-group "${_debugId}" ⚠ DEBUG MODE ON`);
|
|
144
144
|
node.warn(`[DEBUG] ha-mqtt-dmx-group "${_debugId}" — debug mode is enabled. Disable in production.`);
|
|
145
|
-
setTimeout(function () {
|
|
145
|
+
S._debugTimer = setTimeout(function () {
|
|
146
146
|
if (S.debugMode) {
|
|
147
147
|
S.debugMode = false;
|
|
148
148
|
node.warn(`[DEBUG] ha-mqtt-dmx-group "${_debugId}" — debug mode auto-disabled after 12 hours`);
|
|
@@ -417,6 +417,7 @@ module.exports = function (RED) {
|
|
|
417
417
|
|
|
418
418
|
// ── Cleanup ───────────────────────────────────────────────
|
|
419
419
|
node.on('close', function (done) {
|
|
420
|
+
if (S._debugTimer) clearTimeout(S._debugTimer);
|
|
420
421
|
if (diskTimer) clearTimeout(diskTimer);
|
|
421
422
|
broker.unsubscribe(cmdTopic, node.id);
|
|
422
423
|
broker.deregister(node, done);
|
package/nodes/ha-mqtt-dmx.html
CHANGED
|
@@ -169,6 +169,7 @@
|
|
|
169
169
|
defaultState: { value: 'OFF' },
|
|
170
170
|
// Advanced
|
|
171
171
|
dmxLimiter: { value: '255' },
|
|
172
|
+
dmxFloor: { value: '' },
|
|
172
173
|
minOutput: { value: '1' },
|
|
173
174
|
brightBump: { value: '50' },
|
|
174
175
|
ticksPerSec: { value: '31' },
|
|
@@ -177,11 +178,13 @@
|
|
|
177
178
|
|
|
178
179
|
label: function () {
|
|
179
180
|
if (this.name) return this.name;
|
|
180
|
-
const id
|
|
181
|
-
const type
|
|
182
|
-
const sit
|
|
183
|
-
const area
|
|
184
|
-
|
|
181
|
+
const id = `${this.uidPrefix || 'L'}-${this.uid || '?'}${this.uidPostfix || ''}`;
|
|
182
|
+
const type = this.deviceType || '';
|
|
183
|
+
const sit = this.situation || 'in';
|
|
184
|
+
const area = this.area || '';
|
|
185
|
+
const sub = this.subLocation || '';
|
|
186
|
+
const loc = sub ? `${area} - ${sub}` : area;
|
|
187
|
+
return `(${id}) - ${type} ${sit} the ${loc}`.trim();
|
|
185
188
|
},
|
|
186
189
|
|
|
187
190
|
labelStyle: function () {
|
|
@@ -544,6 +547,15 @@
|
|
|
544
547
|
<span style="margin-left:8px; color:#999; font-size:0.85em;">Caps all DMX channel values (0–255)</span>
|
|
545
548
|
</div>
|
|
546
549
|
|
|
550
|
+
<div class="form-row">
|
|
551
|
+
<label for="node-input-dmxFloor">
|
|
552
|
+
<i class="fa fa-arrow-up"></i> DMX floor
|
|
553
|
+
</label>
|
|
554
|
+
<input type="number" id="node-input-dmxFloor"
|
|
555
|
+
min="0" max="20" step="1" style="width:70px" placeholder="config default" />
|
|
556
|
+
<span style="margin-left:8px; color:#999; font-size:0.85em;">Override config floor for this fixture (blank = use config default)</span>
|
|
557
|
+
</div>
|
|
558
|
+
|
|
547
559
|
<div class="form-row">
|
|
548
560
|
<label for="node-input-minOutput">
|
|
549
561
|
<i class="fa fa-sort-numeric-asc"></i> Min output when ON
|
|
@@ -584,7 +596,7 @@
|
|
|
584
596
|
</div>
|
|
585
597
|
|
|
586
598
|
<div style="margin-top:16px; padding-top:8px; border-top:1px solid #444; color:#666; font-size:0.8em; text-align:right;">
|
|
587
|
-
node-red-contrib-dmx-for-ha v0.6.
|
|
599
|
+
node-red-contrib-dmx-for-ha v0.6.30
|
|
588
600
|
</div>
|
|
589
601
|
|
|
590
602
|
</script>
|
package/nodes/ha-mqtt-dmx.js
CHANGED
|
@@ -164,7 +164,7 @@ module.exports = function (RED) {
|
|
|
164
164
|
flashShort: cfg.flashShort,
|
|
165
165
|
flashLong: cfg.flashLong,
|
|
166
166
|
diskDelay: cfg.diskDelay,
|
|
167
|
-
dmxFloor: cfg.dmxFloor !== undefined ? cfg.dmxFloor : 3,
|
|
167
|
+
dmxFloor: config.dmxFloor !== '' && config.dmxFloor !== undefined && config.dmxFloor !== null ? parseInt(config.dmxFloor) : (cfg.dmxFloor !== undefined ? cfg.dmxFloor : 3),
|
|
168
168
|
};
|
|
169
169
|
|
|
170
170
|
// ── Debug mode safeguards ─────────────────────────────────────────
|
|
@@ -172,7 +172,7 @@ module.exports = function (RED) {
|
|
|
172
172
|
if (S.debugMode) {
|
|
173
173
|
setStatus('red', 'dot', `ha-mqtt-dmx "${_debugId}" ⚠ DEBUG MODE ON`);
|
|
174
174
|
node.warn(`[DEBUG] ha-mqtt-dmx "${_debugId}" — debug mode is enabled. Disable in production.`);
|
|
175
|
-
setTimeout(function () {
|
|
175
|
+
S._debugTimer = setTimeout(function () {
|
|
176
176
|
if (S.debugMode) {
|
|
177
177
|
S.debugMode = false;
|
|
178
178
|
node.warn(`[DEBUG] ha-mqtt-dmx "${_debugId}" — debug mode auto-disabled after 12 hours`);
|
|
@@ -881,6 +881,7 @@ module.exports = function (RED) {
|
|
|
881
881
|
|
|
882
882
|
// ── Cleanup ───────────────────────────────────────────────
|
|
883
883
|
node.on('close', function (done) {
|
|
884
|
+
if (S._debugTimer) clearTimeout(S._debugTimer);
|
|
884
885
|
clearChannelRegistry();
|
|
885
886
|
stopEffect();
|
|
886
887
|
if (diskTimer) clearTimeout(diskTimer);
|
package/nodes/ha-mqtt-pir.html
CHANGED
|
@@ -318,7 +318,7 @@
|
|
|
318
318
|
</div>
|
|
319
319
|
|
|
320
320
|
<div style="margin-top:16px; padding-top:8px; border-top:1px solid #444; color:#666; font-size:0.8em; text-align:right;">
|
|
321
|
-
node-red-contrib-dmx-for-ha v0.6.
|
|
321
|
+
node-red-contrib-dmx-for-ha v0.6.30
|
|
322
322
|
</div>
|
|
323
323
|
|
|
324
324
|
</script>
|
package/nodes/ha-mqtt-pir.js
CHANGED
|
@@ -135,7 +135,7 @@ module.exports = function (RED) {
|
|
|
135
135
|
if (S.debugMode) {
|
|
136
136
|
setStatus('red', 'dot', `ha-mqtt-pir "${_debugId}" ⚠ DEBUG MODE ON`);
|
|
137
137
|
node.warn(`[DEBUG] ha-mqtt-pir "${_debugId}" — debug mode is enabled. Disable in production.`);
|
|
138
|
-
setTimeout(function () {
|
|
138
|
+
S._debugTimer = setTimeout(function () {
|
|
139
139
|
if (S.debugMode) {
|
|
140
140
|
S.debugMode = false;
|
|
141
141
|
node.warn(`[DEBUG] ha-mqtt-pir "${_debugId}" — debug mode auto-disabled after 12 hours`);
|
|
@@ -349,6 +349,7 @@ module.exports = function (RED) {
|
|
|
349
349
|
|
|
350
350
|
// ── Cleanup ───────────────────────────────────────────────
|
|
351
351
|
node.on('close', function (done) {
|
|
352
|
+
if (S._debugTimer) clearTimeout(S._debugTimer);
|
|
352
353
|
cancelWarmup();
|
|
353
354
|
broker.unsubscribe(S._activePirTopic || S.subscribeTopic, node.id);
|
|
354
355
|
broker.deregister(node, done);
|
package/nodes/ha-mqtt-relay.html
CHANGED
|
@@ -301,7 +301,7 @@
|
|
|
301
301
|
</div>
|
|
302
302
|
|
|
303
303
|
<div style="margin-top:16px; padding-top:8px; border-top:1px solid #444; color:#666; font-size:0.8em; text-align:right;">
|
|
304
|
-
node-red-contrib-dmx-for-ha v0.6.
|
|
304
|
+
node-red-contrib-dmx-for-ha v0.6.30
|
|
305
305
|
</div>
|
|
306
306
|
|
|
307
307
|
</script>
|
package/nodes/ha-mqtt-relay.js
CHANGED
|
@@ -159,7 +159,7 @@ module.exports = function (RED) {
|
|
|
159
159
|
if (S.debugMode) {
|
|
160
160
|
setStatus('red', 'dot', `ha-mqtt-relay "${_debugId}" ⚠ DEBUG MODE ON`);
|
|
161
161
|
node.warn(`[DEBUG] ha-mqtt-relay "${_debugId}" — debug mode is enabled. Disable in production.`);
|
|
162
|
-
setTimeout(function () {
|
|
162
|
+
S._debugTimer = setTimeout(function () {
|
|
163
163
|
if (S.debugMode) {
|
|
164
164
|
S.debugMode = false;
|
|
165
165
|
node.warn(`[DEBUG] ha-mqtt-relay "${_debugId}" — debug mode auto-disabled after 12 hours`);
|
|
@@ -453,6 +453,7 @@ module.exports = function (RED) {
|
|
|
453
453
|
|
|
454
454
|
// ── Cleanup ───────────────────────────────────────────────
|
|
455
455
|
node.on('close', function (done) {
|
|
456
|
+
if (S._debugTimer) clearTimeout(S._debugTimer);
|
|
456
457
|
stopEffect();
|
|
457
458
|
if (diskTimer) clearTimeout(diskTimer);
|
|
458
459
|
broker.unsubscribe(cmdTopic, node.id);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-red-contrib-dmx-for-ha",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.30",
|
|
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",
|