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.
- package/dist/platform.d.ts +3 -1
- package/dist/platform.js +12 -11
- package/package.json +1 -1
- package/src/platform.ts +15 -15
package/dist/platform.d.ts
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* matterbridge-mqtt-gateway — MqttPlatform
|
|
3
3
|
* Compatible Matterbridge v3.x
|
|
4
4
|
*/
|
|
5
|
-
import
|
|
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
|
|
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.
|
|
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
|
|
20
|
+
thermostat: thermostatDevice,
|
|
21
21
|
aggregator,
|
|
22
22
|
bridgedNode,
|
|
23
23
|
powerSource,
|
|
24
24
|
getAttribute,
|
|
25
25
|
setAttribute,
|
|
26
|
-
}
|
|
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
|
]);
|