node-red-contrib-dmx-for-ha 0.3.4 → 0.3.5

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.
@@ -79,21 +79,6 @@ module.exports = function (RED) {
79
79
  node.warn('MQTT broker error: ' + (err.message || err));
80
80
  setStatus('red', 'dot', 'Broker error — check config');
81
81
  });
82
- // ── Debug mode safeguards ─────────────────────────────────────────
83
- if (S.debugMode) {
84
- // Permanent canvas warning so debug mode is obvious
85
- setStatus('red', 'dot', `ha-mqtt-button "${fixtureId}" ⚠ DEBUG MODE ON`);
86
- node.warn(`[DEBUG] ha-mqtt-button "${fixtureId}" — debug mode is enabled. Disable in production.`);
87
-
88
- // Auto-disable after 12 hours — safety net for forgotten debug sessions
89
- setTimeout(function () {
90
- if (S.debugMode) {
91
- S.debugMode = false;
92
- node.warn(`[DEBUG] ha-mqtt-button "${fixtureId}" — debug mode auto-disabled after 12 hours`);
93
- setStatus('yellow', 'ring', `${fixtureId} ready — awaiting HA`);
94
- }
95
- }, 12 * 60 * 60 * 1000);
96
- }
97
82
 
98
83
 
99
84
  // Fallback — if connect event already fired before listener registered
@@ -122,14 +107,18 @@ module.exports = function (RED) {
122
107
  debugMode: config.debugMode === true,
123
108
  };
124
109
 
125
- const fixtureId = `S-${S.uid}${S.uidPostfix}`;
126
- const objectId = `s_${S.uid}${S.uidPostfix}`.toLowerCase().replace(/[^a-z0-9_]/g, '_');
127
- const fixtureTopic = cfg.buildTopic(cfg.discoveryPrefix, 'binary_sensor', fixtureId);
128
- const uiBtnTopic = cfg.buildTopic(cfg.discoveryPrefix, 'button', fixtureId + '-BTN');
129
- const cfgTopic = `${fixtureTopic}/${cfg.configTopic}`;
130
- const statTopic = `${fixtureTopic}/${cfg.stateTopic}`;
131
- const uiBtnCfgTopic = `${uiBtnTopic}/${cfg.configTopic}`;
132
- const uiBtnCmdTopic = `${uiBtnTopic}/${cfg.commandTopic}`;
110
+ // ── Debug mode safeguards ─────────────────────────────────────────
111
+ if (S.debugMode) {
112
+ setStatus('red', 'dot', `ha-mqtt-button "${fixtureId}" ⚠ DEBUG MODE ON`);
113
+ node.warn(`[DEBUG] ha-mqtt-button "${fixtureId}" debug mode is enabled. Disable in production.`);
114
+ setTimeout(function () {
115
+ if (S.debugMode) {
116
+ S.debugMode = false;
117
+ node.warn(`[DEBUG] ha-mqtt-button "${fixtureId}" — debug mode auto-disabled after 12 hours`);
118
+ setStatus('yellow', 'ring', `${fixtureId} ready — awaiting HA`);
119
+ }
120
+ }, 12 * 60 * 60 * 1000);
121
+ }
133
122
 
134
123
  // ── Helpers ───────────────────────────────────────────────
135
124
  function pub(topic, payload, retain) {
@@ -82,21 +82,6 @@ module.exports = function (RED) {
82
82
  node.warn('MQTT broker error: ' + (err.message || err));
83
83
  setStatus('red', 'dot', 'Broker error — check config');
84
84
  });
85
- // ── Debug mode safeguards ─────────────────────────────────────────
86
- if (S.debugMode) {
87
- // Permanent canvas warning so debug mode is obvious
88
- setStatus('red', 'dot', `ha-mqtt-dmx-group "${groupId}" ⚠ DEBUG MODE ON`);
89
- node.warn(`[DEBUG] ha-mqtt-dmx-group "${groupId}" — debug mode is enabled. Disable in production.`);
90
-
91
- // Auto-disable after 12 hours — safety net for forgotten debug sessions
92
- setTimeout(function () {
93
- if (S.debugMode) {
94
- S.debugMode = false;
95
- node.warn(`[DEBUG] ha-mqtt-dmx-group "${groupId}" — debug mode auto-disabled after 12 hours`);
96
- setStatus('yellow', 'ring', `${groupId} ready — awaiting HA`);
97
- }
98
- }, 12 * 60 * 60 * 1000);
99
- }
100
85
 
101
86
 
102
87
  // Fallback — if connect event already fired before listener registered
@@ -129,12 +114,18 @@ module.exports = function (RED) {
129
114
  diskDelay: cfg.diskDelay,
130
115
  };
131
116
 
132
- const groupId = `LG-${S.uid}${S.uidPostfix}`;
133
- const objectId = `lg_${S.uid}${S.uidPostfix}`.toLowerCase().replace(/[^a-z0-9_]/g, '_');
134
- const groupTopic = cfg.buildTopic(cfg.discoveryPrefix, 'light', groupId);
135
- const cfgTopic = `${groupTopic}/${cfg.configTopic}`;
136
- const statTopic = `${groupTopic}/${cfg.stateTopic}`;
137
- const cmdTopic = `${groupTopic}/${cfg.commandTopic}`;
117
+ // ── Debug mode safeguards ─────────────────────────────────────────
118
+ if (S.debugMode) {
119
+ setStatus('red', 'dot', `ha-mqtt-dmx-group "${groupId}" ⚠ DEBUG MODE ON`);
120
+ node.warn(`[DEBUG] ha-mqtt-dmx-group "${groupId}" — debug mode is enabled. Disable in production.`);
121
+ setTimeout(function () {
122
+ if (S.debugMode) {
123
+ S.debugMode = false;
124
+ node.warn(`[DEBUG] ha-mqtt-dmx-group "${groupId}" — debug mode auto-disabled after 12 hours`);
125
+ setStatus('yellow', 'ring', `${groupId} ready — awaiting HA`);
126
+ }
127
+ }, 12 * 60 * 60 * 1000);
128
+ }
138
129
 
139
130
  // ── Context helpers ───────────────────────────────────────
140
131
  // Check disk store available once on startup
@@ -89,21 +89,6 @@ module.exports = function (RED) {
89
89
  node.warn('MQTT broker error: ' + (err.message || err));
90
90
  setStatus('red', 'dot', 'Broker error — check config');
91
91
  });
92
- // ── Debug mode safeguards ─────────────────────────────────────────
93
- if (S.debugMode) {
94
- // Permanent canvas warning so debug mode is obvious
95
- setStatus('red', 'dot', `ha-mqtt-dmx "${fixtureId}" ⚠ DEBUG MODE ON`);
96
- node.warn(`[DEBUG] ha-mqtt-dmx "${fixtureId}" — debug mode is enabled. Disable in production.`);
97
-
98
- // Auto-disable after 12 hours — safety net for forgotten debug sessions
99
- setTimeout(function () {
100
- if (S.debugMode) {
101
- S.debugMode = false;
102
- node.warn(`[DEBUG] ha-mqtt-dmx "${fixtureId}" — debug mode auto-disabled after 12 hours`);
103
- setStatus('yellow', 'ring', `${fixtureId} ready — awaiting HA`);
104
- }
105
- }, 12 * 60 * 60 * 1000);
106
- }
107
92
 
108
93
 
109
94
  // Fallback — if connect event already fired before listener registered
@@ -153,13 +138,18 @@ module.exports = function (RED) {
153
138
  diskDelay: cfg.diskDelay,
154
139
  };
155
140
 
156
- const fixtureId = `${S.uidPrefix}-${S.uid}${S.uidPostfix}`;
157
- const objectId = `${S.uidPrefix}_${S.uid}${S.uidPostfix}`.toLowerCase().replace(/[^a-z0-9_]/g, '_');
158
- const fixtureTopic = cfg.buildTopic(cfg.discoveryPrefix, 'light', fixtureId);
159
- const cfgTopic = `${fixtureTopic}/${cfg.configTopic}`;
160
- const statTopic = `${fixtureTopic}/${cfg.stateTopic}`;
161
- const cmdTopic = `${fixtureTopic}/${cfg.commandTopic}`;
162
- const dmxTopic = cfg.buildTopic(cfg.siteId, cfg.zone, 'dmx', S.universe);
141
+ // ── Debug mode safeguards ─────────────────────────────────────────
142
+ if (S.debugMode) {
143
+ setStatus('red', 'dot', `ha-mqtt-dmx "${fixtureId}" ⚠ DEBUG MODE ON`);
144
+ node.warn(`[DEBUG] ha-mqtt-dmx "${fixtureId}" — debug mode is enabled. Disable in production.`);
145
+ setTimeout(function () {
146
+ if (S.debugMode) {
147
+ S.debugMode = false;
148
+ node.warn(`[DEBUG] ha-mqtt-dmx "${fixtureId}" — debug mode auto-disabled after 12 hours`);
149
+ setStatus('yellow', 'ring', `${fixtureId} ready — awaiting HA`);
150
+ }
151
+ }, 12 * 60 * 60 * 1000);
152
+ }
163
153
 
164
154
  // ── Context helpers ───────────────────────────────────────
165
155
  // Check disk store available once on startup
@@ -79,21 +79,6 @@ module.exports = function (RED) {
79
79
  node.warn('MQTT broker error: ' + (err.message || err));
80
80
  setStatus('red', 'dot', 'Broker error — check config');
81
81
  });
82
- // ── Debug mode safeguards ─────────────────────────────────────────
83
- if (S.debugMode) {
84
- // Permanent canvas warning so debug mode is obvious
85
- setStatus('red', 'dot', `ha-mqtt-pir "${fixtureId}" ⚠ DEBUG MODE ON`);
86
- node.warn(`[DEBUG] ha-mqtt-pir "${fixtureId}" — debug mode is enabled. Disable in production.`);
87
-
88
- // Auto-disable after 12 hours — safety net for forgotten debug sessions
89
- setTimeout(function () {
90
- if (S.debugMode) {
91
- S.debugMode = false;
92
- node.warn(`[DEBUG] ha-mqtt-pir "${fixtureId}" — debug mode auto-disabled after 12 hours`);
93
- setStatus('yellow', 'ring', `${fixtureId} ready — awaiting HA`);
94
- }
95
- }, 12 * 60 * 60 * 1000);
96
- }
97
82
 
98
83
 
99
84
  // Fallback — if connect event already fired before listener registered
@@ -123,13 +108,18 @@ module.exports = function (RED) {
123
108
  debugMode: config.debugMode === true,
124
109
  };
125
110
 
126
- const fixtureId = `S-${S.uid}${S.uidPostfix}`;
127
- const objectId = `s_${S.uid}${S.uidPostfix}`.toLowerCase().replace(/[^a-z0-9_]/g, '_');
128
- const fixtureTopic = cfg.buildTopic(cfg.discoveryPrefix, 'binary_sensor', fixtureId);
129
- const cmdTopic = `${fixtureTopic}/${cfg.commandTopic}`;
130
- const cfgTopic = `${fixtureTopic}/${cfg.configTopic}`;
131
- const statTopic = `${fixtureTopic}/${cfg.stateTopic}`;
132
- const avtyTopic = `${fixtureTopic}/${cfg.availTopic}`;
111
+ // ── Debug mode safeguards ─────────────────────────────────────────
112
+ if (S.debugMode) {
113
+ setStatus('red', 'dot', `ha-mqtt-pir "${fixtureId}" ⚠ DEBUG MODE ON`);
114
+ node.warn(`[DEBUG] ha-mqtt-pir "${fixtureId}" — debug mode is enabled. Disable in production.`);
115
+ setTimeout(function () {
116
+ if (S.debugMode) {
117
+ S.debugMode = false;
118
+ node.warn(`[DEBUG] ha-mqtt-pir "${fixtureId}" — debug mode auto-disabled after 12 hours`);
119
+ setStatus('yellow', 'ring', `${fixtureId} ready — awaiting HA`);
120
+ }
121
+ }, 12 * 60 * 60 * 1000);
122
+ }
133
123
 
134
124
  // ── Helpers ───────────────────────────────────────────────
135
125
  function pub(topic, payload, retain) {
@@ -82,21 +82,6 @@ module.exports = function (RED) {
82
82
  node.warn('MQTT broker error: ' + (err.message || err));
83
83
  setStatus('red', 'dot', 'Broker error — check config');
84
84
  });
85
- // ── Debug mode safeguards ─────────────────────────────────────────
86
- if (S.debugMode) {
87
- // Permanent canvas warning so debug mode is obvious
88
- setStatus('red', 'dot', `ha-mqtt-relay "${fixtureId}" ⚠ DEBUG MODE ON`);
89
- node.warn(`[DEBUG] ha-mqtt-relay "${fixtureId}" — debug mode is enabled. Disable in production.`);
90
-
91
- // Auto-disable after 12 hours — safety net for forgotten debug sessions
92
- setTimeout(function () {
93
- if (S.debugMode) {
94
- S.debugMode = false;
95
- node.warn(`[DEBUG] ha-mqtt-relay "${fixtureId}" — debug mode auto-disabled after 12 hours`);
96
- setStatus('yellow', 'ring', `${fixtureId} ready — awaiting HA`);
97
- }
98
- }, 12 * 60 * 60 * 1000);
99
- }
100
85
 
101
86
 
102
87
  // Fallback — if connect event already fired before listener registered
@@ -129,13 +114,18 @@ module.exports = function (RED) {
129
114
  diskDelay: cfg.diskDelay,
130
115
  };
131
116
 
132
- const fixtureId = `${S.uidPrefix}-${S.uid}${S.uidPostfix}`;
133
- const objectId = `${S.uidPrefix}_${S.uid}${S.uidPostfix}`.toLowerCase().replace(/[^a-z0-9_]/g, '_');
134
- const fixtureTopic = cfg.buildTopic(cfg.discoveryPrefix, 'light', fixtureId);
135
- const cfgTopic = `${fixtureTopic}/${cfg.configTopic}`;
136
- const statTopic = `${fixtureTopic}/${cfg.stateTopic}`;
137
- const cmdTopic = `${fixtureTopic}/${cfg.commandTopic}`;
138
- const relayTopic = cfg.buildTopic(cfg.siteId, cfg.zone, S.controllerNum, S.mqttSegment, S.relayNum);
117
+ // ── Debug mode safeguards ─────────────────────────────────────────
118
+ if (S.debugMode) {
119
+ setStatus('red', 'dot', `ha-mqtt-relay "${fixtureId}" ⚠ DEBUG MODE ON`);
120
+ node.warn(`[DEBUG] ha-mqtt-relay "${fixtureId}" — debug mode is enabled. Disable in production.`);
121
+ setTimeout(function () {
122
+ if (S.debugMode) {
123
+ S.debugMode = false;
124
+ node.warn(`[DEBUG] ha-mqtt-relay "${fixtureId}" — debug mode auto-disabled after 12 hours`);
125
+ setStatus('yellow', 'ring', `${fixtureId} ready — awaiting HA`);
126
+ }
127
+ }, 12 * 60 * 60 * 1000);
128
+ }
139
129
 
140
130
  // ── Context helpers ───────────────────────────────────────
141
131
  // Check disk store available once on startup
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-red-contrib-dmx-for-ha",
3
- "version": "0.3.4",
3
+ "version": "0.3.5",
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",