matterbridge-mqtt-gateway 1.0.21 → 1.0.22

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.
@@ -2,7 +2,8 @@
2
2
  * matterbridge-mqtt-gateway — MqttPlatform
3
3
  * Compatible Matterbridge v3.x
4
4
  */
5
- import { MatterbridgeDynamicPlatform } from 'matterbridge';
5
+ import * as matterbridge from 'matterbridge';
6
+ declare const MatterbridgeDynamicPlatform: typeof matterbridge.MatterbridgeDynamicPlatform;
6
7
  import type { PlatformMatterbridge, PlatformConfig } from 'matterbridge';
7
8
  import { AnsiLogger } from 'node-ansi-logger';
8
9
  export declare class MqttPlatform extends MatterbridgeDynamicPlatform {
@@ -34,4 +35,5 @@ export declare class MqttPlatform extends MatterbridgeDynamicPlatform {
34
35
  private parseFloatPayload;
35
36
  private parseOnOff;
36
37
  }
38
+ export {};
37
39
  //# sourceMappingURL=platform.d.ts.map
package/dist/platform.js CHANGED
@@ -3,7 +3,8 @@
3
3
  * Compatible Matterbridge v3.x
4
4
  */
5
5
  // ── Matterbridge ──────────────────────────────────────────────────────────────
6
- import { MatterbridgeDynamicPlatform, MatterbridgeEndpoint, onOffOutlet, onOffSwitch, dimmableLight, colorTemperatureLight, contactSensor, temperatureSensor, humiditySensor, occupancySensor, coverDevice, fanDevice, thermostat as thermostatDevice, aggregator, powerSource, getAttribute, setAttribute, } from 'matterbridge';
6
+ import * as matterbridge from 'matterbridge';
7
+ const { MatterbridgeDynamicPlatform, onOffOutlet, onOffSwitch, dimmableLight, colorTemperatureLight, contactSensor, temperatureSensor, humiditySensor, occupancySensor, coverDevice, fanDevice, thermostat: thermostatDevice, aggregator, bridgedNode, powerSource, getAttribute, setAttribute, } = matterbridge;
7
8
  // ── MQTT ──────────────────────────────────────────────────────────────────────
8
9
  import mqtt from 'mqtt';
9
10
  // ── Cluster IDs Matter ───────────────────────────────────────────────────────
@@ -152,7 +153,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
152
153
  async createOnOff(cfg, devType, pid) {
153
154
  const ON = cfg.payloadOn ?? 'ON';
154
155
  const OFF = cfg.payloadOff ?? 'OFF';
155
- const ep = new MatterbridgeEndpoint([devType, powerSource]);
156
+ const ep = new matterbridge.MatterbridgeEndpoint([devType, powerSource]);
156
157
  this.initEp(ep, cfg, pid);
157
158
  ep.createDefaultOnOffClusterServer();
158
159
  this.onCmd(ep, 'on', async () => {
@@ -188,7 +189,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
188
189
  async createDimmable(cfg) {
189
190
  const ON = cfg.payloadOn ?? 'ON';
190
191
  const OFF = cfg.payloadOff ?? 'OFF';
191
- const ep = new MatterbridgeEndpoint([dimmableLight, powerSource]);
192
+ const ep = new matterbridge.MatterbridgeEndpoint([dimmableLight, powerSource]);
192
193
  this.initEp(ep, cfg, 0x8002);
193
194
  ep.createDefaultOnOffClusterServer();
194
195
  ep.createDefaultLevelControlClusterServer();
@@ -231,7 +232,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
231
232
  async createColor(cfg) {
232
233
  const ON = cfg.payloadOn ?? 'ON';
233
234
  const OFF = cfg.payloadOff ?? 'OFF';
234
- const ep = new MatterbridgeEndpoint([colorTemperatureLight, powerSource]);
235
+ const ep = new matterbridge.MatterbridgeEndpoint([colorTemperatureLight, powerSource]);
235
236
  this.initEp(ep, cfg, 0x8003);
236
237
  ep.createDefaultOnOffClusterServer();
237
238
  ep.createDefaultLevelControlClusterServer();
@@ -302,7 +303,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
302
303
  async createContact(cfg) {
303
304
  const OPEN = cfg.payloadOpen ?? 'OPEN';
304
305
  const CLOSED = cfg.payloadClosed ?? 'CLOSED';
305
- const ep = new MatterbridgeEndpoint([contactSensor, powerSource]);
306
+ const ep = new matterbridge.MatterbridgeEndpoint([contactSensor, powerSource]);
306
307
  this.initEp(ep, cfg, 0x8004);
307
308
  ep.createDefaultBooleanStateClusterServer(true);
308
309
  if (cfg.stateTopic) {
@@ -326,7 +327,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
326
327
  }
327
328
  // ── Temperature sensor ─────────────────────────────────────────────────────
328
329
  async createTemp(cfg) {
329
- const ep = new MatterbridgeEndpoint([temperatureSensor, powerSource]);
330
+ const ep = new matterbridge.MatterbridgeEndpoint([temperatureSensor, powerSource]);
330
331
  this.initEp(ep, cfg, 0x8005);
331
332
  ep.createDefaultTemperatureMeasurementClusterServer(2000);
332
333
  if (cfg.stateTopic) {
@@ -351,7 +352,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
351
352
  }
352
353
  // ── Humidity sensor ────────────────────────────────────────────────────────
353
354
  async createHumidity(cfg) {
354
- const ep = new MatterbridgeEndpoint([humiditySensor, powerSource]);
355
+ const ep = new matterbridge.MatterbridgeEndpoint([humiditySensor, powerSource]);
355
356
  this.initEp(ep, cfg, 0x8006);
356
357
  ep.createDefaultRelativeHumidityMeasurementClusterServer(5000);
357
358
  if (cfg.stateTopic) {
@@ -381,7 +382,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
381
382
  const STOP = cfg.payloadStop ?? 'STOP';
382
383
  // Alias courants pour l'état fermé reçu en retour du broker
383
384
  const CLOSED_ALIASES = [CLOSE.toUpperCase(), 'CLOSED', 'CLOSE'];
384
- const ep = new MatterbridgeEndpoint([coverDevice, powerSource]);
385
+ const ep = new matterbridge.MatterbridgeEndpoint([coverDevice, powerSource]);
385
386
  this.initEp(ep, cfg, 0x8008);
386
387
  ep.createDefaultWindowCoveringClusterServer();
387
388
  // ── Commandes Matter → MQTT ──────────────────────────────────────────────
@@ -478,7 +479,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
478
479
  const lvToPct = (lv, max) => Math.round(Math.max(0, Math.min(max, lv)) / max * 100);
479
480
  const pctToLv = (pct, max) => Math.round(Math.max(0, Math.min(100, pct)) / 100 * max);
480
481
  // ── Endpoint racine (aggregator) ────────────────────────────────────────
481
- const ep = new MatterbridgeEndpoint([aggregator, powerSource]);
482
+ const ep = new matterbridge.MatterbridgeEndpoint([aggregator, powerSource]);
482
483
  this.initEp(ep, cfg, 0x8009);
483
484
  // ── Child 1 : switch (marche/arrêt) ─────────────────────────────────────
484
485
  const swChild = ep.addChildDeviceTypeWithClusterServer(`${cfg.id}-switch`, onOffSwitch, [CID.OnOff]);
@@ -598,7 +599,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
598
599
  async createOccupancy(cfg) {
599
600
  const ON = cfg.payloadOn ?? 'ON';
600
601
  const OFF = cfg.payloadOff ?? 'OFF';
601
- const ep = new MatterbridgeEndpoint([occupancySensor, powerSource]);
602
+ const ep = new matterbridge.MatterbridgeEndpoint([occupancySensor, powerSource]);
602
603
  this.initEp(ep, cfg, 0x8007);
603
604
  ep.createDefaultOccupancySensingClusterServer();
604
605
  if (cfg.stateTopic) {
@@ -614,7 +615,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
614
615
  }
615
616
  // ── Thermostat ─────────────────────────────────────────────────────────────
616
617
  async createThermostat(cfg) {
617
- const ep = new MatterbridgeEndpoint([
618
+ const ep = new matterbridge.MatterbridgeEndpoint([
618
619
  thermostatDevice,
619
620
  powerSource
620
621
  ]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "matterbridge-mqtt-gateway",
3
- "version": "1.0.21",
3
+ "version": "1.0.22",
4
4
  "description": "Matterbridge dynamic platform plugin — expose MQTT topics as Matter devices (outlet, switch, light, sensors, cover, stove)",
5
5
  "author": "Jean-Yves VERN <jyv@ik.me>",
6
6
  "license": "MIT",
package/src/platform.ts CHANGED
@@ -4,9 +4,9 @@
4
4
  */
5
5
 
6
6
  // ── Matterbridge ──────────────────────────────────────────────────────────────
7
- import {
7
+ import * as matterbridge from 'matterbridge';
8
+ const {
8
9
  MatterbridgeDynamicPlatform,
9
- MatterbridgeEndpoint,
10
10
  onOffOutlet,
11
11
  onOffSwitch,
12
12
  dimmableLight,
@@ -17,15 +17,15 @@ import {
17
17
  occupancySensor,
18
18
  coverDevice,
19
19
  fanDevice,
20
- thermostat as thermostatDevice,
20
+ thermostat: thermostatDevice,
21
21
  aggregator,
22
22
  bridgedNode,
23
23
  powerSource,
24
24
  getAttribute,
25
25
  setAttribute,
26
- } from 'matterbridge';
26
+ } = matterbridge;
27
27
 
28
- import type { PlatformMatterbridge, PlatformConfig } from 'matterbridge';
28
+ import type { PlatformMatterbridge, PlatformConfig, MatterbridgeEndpoint } from 'matterbridge';
29
29
 
30
30
  // ── Logger ────────────────────────────────────────────────────────────────────
31
31
  import { AnsiLogger } from 'node-ansi-logger';
@@ -250,7 +250,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
250
250
  const ON = cfg.payloadOn ?? 'ON';
251
251
  const OFF = cfg.payloadOff ?? 'OFF';
252
252
 
253
- const ep = new MatterbridgeEndpoint([devType, powerSource]);
253
+ const ep = new matterbridge.MatterbridgeEndpoint([devType, powerSource]);
254
254
  this.initEp(ep, cfg, pid);
255
255
  ep.createDefaultOnOffClusterServer();
256
256
 
@@ -289,7 +289,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
289
289
  const ON = cfg.payloadOn ?? 'ON';
290
290
  const OFF = cfg.payloadOff ?? 'OFF';
291
291
 
292
- const ep = new MatterbridgeEndpoint([dimmableLight, powerSource]);
292
+ const ep = new matterbridge.MatterbridgeEndpoint([dimmableLight, powerSource]);
293
293
  this.initEp(ep, cfg, 0x8002);
294
294
  ep.createDefaultOnOffClusterServer();
295
295
  ep.createDefaultLevelControlClusterServer();
@@ -334,7 +334,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
334
334
  const ON = cfg.payloadOn ?? 'ON';
335
335
  const OFF = cfg.payloadOff ?? 'OFF';
336
336
 
337
- const ep = new MatterbridgeEndpoint([colorTemperatureLight, powerSource]);
337
+ const ep = new matterbridge.MatterbridgeEndpoint([colorTemperatureLight, powerSource]);
338
338
  this.initEp(ep, cfg, 0x8003);
339
339
  ep.createDefaultOnOffClusterServer();
340
340
  ep.createDefaultLevelControlClusterServer();
@@ -405,7 +405,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
405
405
  const OPEN = cfg.payloadOpen ?? 'OPEN';
406
406
  const CLOSED = cfg.payloadClosed ?? 'CLOSED';
407
407
 
408
- const ep = new MatterbridgeEndpoint([contactSensor, powerSource]);
408
+ const ep = new matterbridge.MatterbridgeEndpoint([contactSensor, powerSource]);
409
409
  this.initEp(ep, cfg, 0x8004);
410
410
  ep.createDefaultBooleanStateClusterServer(true);
411
411
 
@@ -428,7 +428,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
428
428
  // ── Temperature sensor ─────────────────────────────────────────────────────
429
429
 
430
430
  private async createTemp(cfg: MqttDeviceConfig): Promise<void> {
431
- const ep = new MatterbridgeEndpoint([temperatureSensor, powerSource]);
431
+ const ep = new matterbridge.MatterbridgeEndpoint([temperatureSensor, powerSource]);
432
432
  this.initEp(ep, cfg, 0x8005);
433
433
  ep.createDefaultTemperatureMeasurementClusterServer(2000);
434
434
 
@@ -454,7 +454,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
454
454
  // ── Humidity sensor ────────────────────────────────────────────────────────
455
455
 
456
456
  private async createHumidity(cfg: MqttDeviceConfig): Promise<void> {
457
- const ep = new MatterbridgeEndpoint([humiditySensor, powerSource]);
457
+ const ep = new matterbridge.MatterbridgeEndpoint([humiditySensor, powerSource]);
458
458
  this.initEp(ep, cfg, 0x8006);
459
459
  ep.createDefaultRelativeHumidityMeasurementClusterServer(5000);
460
460
 
@@ -486,7 +486,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
486
486
  // Alias courants pour l'état fermé reçu en retour du broker
487
487
  const CLOSED_ALIASES = [CLOSE.toUpperCase(), 'CLOSED', 'CLOSE'];
488
488
 
489
- const ep = new MatterbridgeEndpoint([coverDevice, powerSource]);
489
+ const ep = new matterbridge.MatterbridgeEndpoint([coverDevice, powerSource]);
490
490
  this.initEp(ep, cfg, 0x8008);
491
491
  ep.createDefaultWindowCoveringClusterServer();
492
492
 
@@ -589,7 +589,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
589
589
  Math.round(Math.max(0, Math.min(100, pct)) / 100 * max);
590
590
 
591
591
  // ── Endpoint racine (aggregator) ────────────────────────────────────────
592
- const ep = new MatterbridgeEndpoint([aggregator, powerSource]);
592
+ const ep = new matterbridge.MatterbridgeEndpoint([aggregator, powerSource]);
593
593
  this.initEp(ep, cfg, 0x8009);
594
594
 
595
595
  // ── Child 1 : switch (marche/arrêt) ─────────────────────────────────────
@@ -728,7 +728,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
728
728
  const ON = cfg.payloadOn ?? 'ON';
729
729
  const OFF = cfg.payloadOff ?? 'OFF';
730
730
 
731
- const ep = new MatterbridgeEndpoint([occupancySensor, powerSource]);
731
+ const ep = new matterbridge.MatterbridgeEndpoint([occupancySensor, powerSource]);
732
732
  this.initEp(ep, cfg, 0x8007);
733
733
  ep.createDefaultOccupancySensingClusterServer();
734
734
 
@@ -749,7 +749,7 @@ export class MqttPlatform extends MatterbridgeDynamicPlatform {
749
749
 
750
750
  private async createThermostat(cfg: MqttDeviceConfig): Promise<void> {
751
751
 
752
- const ep = new MatterbridgeEndpoint([
752
+ const ep = new matterbridge.MatterbridgeEndpoint([
753
753
  thermostatDevice,
754
754
  powerSource
755
755
  ]);