homebridge 2.0.0-alpha.37 → 2.0.0-alpha.38
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/config-sample.json +12 -1
- package/dist/api.d.ts +38 -20
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +40 -1
- package/dist/api.js.map +1 -1
- package/dist/bridgeService.d.ts +20 -1
- package/dist/bridgeService.d.ts.map +1 -1
- package/dist/bridgeService.js +8 -2
- package/dist/bridgeService.js.map +1 -1
- package/dist/childBridgeFork.d.ts +1 -1
- package/dist/childBridgeFork.d.ts.map +1 -1
- package/dist/childBridgeFork.js +1 -1
- package/dist/childBridgeFork.js.map +1 -1
- package/dist/childBridgeService.d.ts +1 -0
- package/dist/childBridgeService.d.ts.map +1 -1
- package/dist/childBridgeService.js +6 -4
- package/dist/childBridgeService.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/externalPortService.js.map +1 -1
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/ipcService.d.ts +1 -4
- package/dist/ipcService.d.ts.map +1 -1
- package/dist/ipcService.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js.map +1 -1
- package/dist/matterConfigValidator.d.ts +34 -0
- package/dist/matterConfigValidator.d.ts.map +1 -0
- package/dist/matterConfigValidator.js +249 -0
- package/dist/matterConfigValidator.js.map +1 -0
- package/dist/matterService.d.ts +168 -0
- package/dist/matterService.d.ts.map +1 -0
- package/dist/matterService.js +677 -0
- package/dist/matterService.js.map +1 -0
- package/dist/matterTypes.d.ts +20 -0
- package/dist/matterTypes.d.ts.map +1 -0
- package/dist/matterTypes.js +278 -0
- package/dist/matterTypes.js.map +1 -0
- package/dist/platformAccessory.d.ts +3 -2
- package/dist/platformAccessory.d.ts.map +1 -1
- package/dist/platformAccessory.js +8 -1
- package/dist/platformAccessory.js.map +1 -1
- package/dist/plugin.d.ts +0 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +3 -6
- package/dist/plugin.js.map +1 -1
- package/dist/pluginManager.d.ts.map +1 -1
- package/dist/pluginManager.js +20 -19
- package/dist/pluginManager.js.map +1 -1
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +41 -4
- package/dist/server.js.map +1 -1
- package/dist/storageService.js +8 -8
- package/dist/storageService.js.map +1 -1
- package/dist/user.js +7 -7
- package/dist/user.js.map +1 -1
- package/dist/util/mac.d.ts.map +1 -1
- package/dist/util/mac.js +3 -2
- package/dist/util/mac.js.map +1 -1
- package/dist/util/matter-cli.d.ts +3 -0
- package/dist/util/matter-cli.d.ts.map +1 -0
- package/dist/util/matter-cli.js +211 -0
- package/dist/util/matter-cli.js.map +1 -0
- package/dist/version.js +2 -2
- package/dist/version.js.map +1 -1
- package/package.json +22 -19
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import process from 'node:process';
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import * as fs from 'fs-extra';
|
|
6
|
+
import * as qrcode from 'qrcode-terminal';
|
|
7
|
+
import { MatterConfigValidator } from '../matterConfigValidator.js';
|
|
8
|
+
const program = new Command();
|
|
9
|
+
program
|
|
10
|
+
.name('homebridge-matter')
|
|
11
|
+
.description('Homebridge Matter configuration and management tool')
|
|
12
|
+
.version('1.0.0');
|
|
13
|
+
program
|
|
14
|
+
.command('validate')
|
|
15
|
+
.description('Validate Matter configuration')
|
|
16
|
+
.option('-c, --config <path>', 'Path to config.json file', './config.json')
|
|
17
|
+
.action(async (options) => {
|
|
18
|
+
try {
|
|
19
|
+
const configPath = path.resolve(options.config);
|
|
20
|
+
if (!await fs.pathExists(configPath)) {
|
|
21
|
+
console.error(`Configuration file not found: ${configPath}`);
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
const config = await fs.readJson(configPath);
|
|
25
|
+
const matterConfig = config.matter || {};
|
|
26
|
+
console.warn('Validating Matter configuration...\n');
|
|
27
|
+
const result = MatterConfigValidator.validate(matterConfig);
|
|
28
|
+
if (result.isValid) {
|
|
29
|
+
console.warn('✅ Matter configuration is valid!');
|
|
30
|
+
if (result.warnings.length > 0) {
|
|
31
|
+
console.warn('\n⚠️ Warnings:');
|
|
32
|
+
result.warnings.forEach(warning => console.warn(` - ${warning}`));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
console.error('❌ Matter configuration has errors:');
|
|
37
|
+
result.errors.forEach(error => console.error(` - ${error}`));
|
|
38
|
+
if (result.warnings.length > 0) {
|
|
39
|
+
console.warn('\n⚠️ Warnings:');
|
|
40
|
+
result.warnings.forEach(warning => console.warn(` - ${warning}`));
|
|
41
|
+
}
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error('Error validating configuration:', error);
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
program
|
|
51
|
+
.command('generate-passcode')
|
|
52
|
+
.description('Generate a secure random passcode')
|
|
53
|
+
.option('-c, --count <number>', 'Number of passcodes to generate', '1')
|
|
54
|
+
.action((options) => {
|
|
55
|
+
try {
|
|
56
|
+
const count = Number.parseInt(options.count);
|
|
57
|
+
if (Number.isNaN(count) || count < 1 || count > 100) {
|
|
58
|
+
console.error('Count must be a number between 1 and 100');
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
console.warn(`Generating ${count} secure passcode${count > 1 ? 's' : ''}:\n`);
|
|
62
|
+
for (let i = 0; i < count; i++) {
|
|
63
|
+
const passcode = MatterConfigValidator.generateSecurePasscode();
|
|
64
|
+
const formatted = formatPairingCode(passcode);
|
|
65
|
+
console.warn(`${i + 1}. ${passcode} (${formatted})`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
console.error('Error generating passcode:', error);
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
program
|
|
74
|
+
.command('generate-discriminator')
|
|
75
|
+
.description('Generate a random discriminator')
|
|
76
|
+
.option('-c, --count <number>', 'Number of discriminators to generate', '1')
|
|
77
|
+
.action((options) => {
|
|
78
|
+
try {
|
|
79
|
+
const count = Number.parseInt(options.count);
|
|
80
|
+
if (Number.isNaN(count) || count < 1 || count > 100) {
|
|
81
|
+
console.error('Count must be a number between 1 and 100');
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
console.warn(`Generating ${count} random discriminator${count > 1 ? 's' : ''}:\n`);
|
|
85
|
+
for (let i = 0; i < count; i++) {
|
|
86
|
+
const discriminator = MatterConfigValidator.generateRandomDiscriminator();
|
|
87
|
+
console.warn(`${i + 1}. ${discriminator}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.error('Error generating discriminator:', error);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
program
|
|
96
|
+
.command('qr-code')
|
|
97
|
+
.description('Generate QR code for Matter commissioning')
|
|
98
|
+
.option('-c, --config <path>', 'Path to config.json file', './config.json')
|
|
99
|
+
.option('--passcode <passcode>', 'Override passcode')
|
|
100
|
+
.option('--discriminator <discriminator>', 'Override discriminator')
|
|
101
|
+
.option('--vendor-id <vendorId>', 'Override vendor ID')
|
|
102
|
+
.option('--product-id <productId>', 'Override product ID')
|
|
103
|
+
.action(async (options) => {
|
|
104
|
+
try {
|
|
105
|
+
let matterConfig = {
|
|
106
|
+
enabled: true,
|
|
107
|
+
passcode: 20202021,
|
|
108
|
+
discriminator: 3840,
|
|
109
|
+
vendorId: 0xFFF1,
|
|
110
|
+
productId: 0x8001,
|
|
111
|
+
};
|
|
112
|
+
// Load config file if it exists
|
|
113
|
+
const configPath = path.resolve(options.config);
|
|
114
|
+
if (await fs.pathExists(configPath)) {
|
|
115
|
+
const config = await fs.readJson(configPath);
|
|
116
|
+
matterConfig = { ...matterConfig, ...config.matter };
|
|
117
|
+
}
|
|
118
|
+
// Override with command line options
|
|
119
|
+
if (options.passcode) {
|
|
120
|
+
matterConfig.passcode = Number.parseInt(options.passcode);
|
|
121
|
+
}
|
|
122
|
+
if (options.discriminator) {
|
|
123
|
+
matterConfig.discriminator = Number.parseInt(options.discriminator);
|
|
124
|
+
}
|
|
125
|
+
if (options.vendorId) {
|
|
126
|
+
matterConfig.vendorId = Number.parseInt(options.vendorId);
|
|
127
|
+
}
|
|
128
|
+
if (options.productId) {
|
|
129
|
+
matterConfig.productId = Number.parseInt(options.productId);
|
|
130
|
+
}
|
|
131
|
+
// Validate configuration
|
|
132
|
+
const result = MatterConfigValidator.validate(matterConfig);
|
|
133
|
+
if (!result.isValid) {
|
|
134
|
+
console.error('Invalid Matter configuration:');
|
|
135
|
+
result.errors.forEach((error) => console.error(` - ${error}`));
|
|
136
|
+
process.exit(1);
|
|
137
|
+
}
|
|
138
|
+
// Generate QR code (placeholder implementation)
|
|
139
|
+
const setupCode = `MT:${matterConfig.discriminator.toString().padStart(4, '0')}${matterConfig.passcode}`;
|
|
140
|
+
const qrCodeUrl = `https://dhrishi.github.io/connectedhomeip/qrcode.html?data=${setupCode}`;
|
|
141
|
+
console.warn('Matter Commissioning Information:');
|
|
142
|
+
console.warn(`Setup Code: ${setupCode}`);
|
|
143
|
+
console.warn(`Manual Pairing Code: ${formatPairingCode(matterConfig.passcode)}`);
|
|
144
|
+
console.warn(`Discriminator: ${matterConfig.discriminator}`);
|
|
145
|
+
console.warn(`QR Code URL: ${qrCodeUrl}`);
|
|
146
|
+
console.warn('\nQR Code (placeholder):');
|
|
147
|
+
// Display placeholder QR code in terminal
|
|
148
|
+
qrcode.generate(qrCodeUrl, { small: true });
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
console.error('Error generating QR code:', error);
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
program
|
|
156
|
+
.command('init-config')
|
|
157
|
+
.description('Initialize Matter configuration with secure defaults')
|
|
158
|
+
.option('-c, --config <path>', 'Path to config.json file', './config.json')
|
|
159
|
+
.option('--force', 'Overwrite existing Matter configuration')
|
|
160
|
+
.action(async (options) => {
|
|
161
|
+
try {
|
|
162
|
+
const configPath = path.resolve(options.config);
|
|
163
|
+
let config = {};
|
|
164
|
+
// Load existing config if it exists
|
|
165
|
+
if (await fs.pathExists(configPath)) {
|
|
166
|
+
config = await fs.readJson(configPath);
|
|
167
|
+
if (config.matter && !options.force) {
|
|
168
|
+
console.error('Matter configuration already exists. Use --force to overwrite.');
|
|
169
|
+
process.exit(1);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Generate secure defaults
|
|
173
|
+
const matterConfig = {
|
|
174
|
+
enabled: true,
|
|
175
|
+
port: 5540,
|
|
176
|
+
discriminator: MatterConfigValidator.generateRandomDiscriminator(),
|
|
177
|
+
passcode: MatterConfigValidator.generateSecurePasscode(),
|
|
178
|
+
vendorId: 0xFFF1, // Test vendor ID - change for production
|
|
179
|
+
productId: 0x8001,
|
|
180
|
+
deviceName: 'Homebridge Matter Bridge',
|
|
181
|
+
storageDir: './persist',
|
|
182
|
+
debugEnabled: false,
|
|
183
|
+
announceInterval: 60,
|
|
184
|
+
commissioningTimeout: 900,
|
|
185
|
+
};
|
|
186
|
+
config.matter = matterConfig;
|
|
187
|
+
// Write back to file
|
|
188
|
+
await fs.writeJson(configPath, config, { spaces: 2 });
|
|
189
|
+
console.warn('✅ Matter configuration initialized successfully!');
|
|
190
|
+
console.warn('\nGenerated configuration:');
|
|
191
|
+
console.warn(` Port: ${matterConfig.port}`);
|
|
192
|
+
console.warn(` Discriminator: ${matterConfig.discriminator}`);
|
|
193
|
+
console.warn(` Passcode: ${matterConfig.passcode} (${formatPairingCode(matterConfig.passcode)})`);
|
|
194
|
+
console.warn(` Vendor ID: 0x${matterConfig.vendorId.toString(16).toUpperCase()}`);
|
|
195
|
+
console.warn(` Product ID: 0x${matterConfig.productId.toString(16).toUpperCase()}`);
|
|
196
|
+
console.warn('\n⚠️ Important notes:');
|
|
197
|
+
console.warn(' - Change vendor ID for production use');
|
|
198
|
+
console.warn(' - Keep your passcode secure and private');
|
|
199
|
+
console.warn(` - Configuration saved to: ${configPath}`);
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
console.error('Error initializing configuration:', error);
|
|
203
|
+
process.exit(1);
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
function formatPairingCode(passcode) {
|
|
207
|
+
const code = passcode.toString().padStart(8, '0');
|
|
208
|
+
return `${code.slice(0, 3)}-${code.slice(3, 5)}-${code.slice(5)}`;
|
|
209
|
+
}
|
|
210
|
+
program.parse();
|
|
211
|
+
//# sourceMappingURL=matter-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matter-cli.js","sourceRoot":"","sources":["../../src/util/matter-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/version.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { dirname, join } from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
const __filename = fileURLToPath(import.meta.url);
|
|
5
5
|
const __dirname = dirname(__filename);
|
|
6
6
|
function loadPackageJson() {
|
|
7
7
|
const packageJSONPath = join(__dirname, '../package.json');
|
|
8
|
-
return JSON.parse(
|
|
8
|
+
return JSON.parse(readFileSync(packageJSONPath, { encoding: 'utf8' }));
|
|
9
9
|
}
|
|
10
10
|
export default function getVersion() {
|
|
11
11
|
return loadPackageJson().version;
|
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAErC,SAAS,eAAe;IACtB,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAA;IAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;AACxE,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,UAAU;IAChC,OAAO,eAAe,EAAE,CAAC,OAAO,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,eAAe,EAAE,CAAC,OAAO,CAAC,IAAI,CAAA;AACvC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "homebridge",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.0.0-alpha.
|
|
4
|
+
"version": "2.0.0-alpha.38",
|
|
5
5
|
"description": "HomeKit support for the impatient",
|
|
6
6
|
"author": "Nick Farina",
|
|
7
7
|
"license": "Apache-2.0",
|
|
@@ -13,13 +13,15 @@
|
|
|
13
13
|
"url": "https://github.com/homebridge/homebridge/issues"
|
|
14
14
|
},
|
|
15
15
|
"exports": "./dist/index.js",
|
|
16
|
-
"
|
|
16
|
+
"main": "lib/index.js",
|
|
17
|
+
"types": "lib/index.d.ts",
|
|
17
18
|
"maintainers": [
|
|
18
19
|
"oznu <dev@oz.nu>",
|
|
19
20
|
"Andreas Bauer <mail@anderl-bauer.de>"
|
|
20
21
|
],
|
|
21
22
|
"bin": {
|
|
22
|
-
"homebridge": "bin/homebridge
|
|
23
|
+
"homebridge": "bin/homebridge",
|
|
24
|
+
"homebridge-matter": "lib/util/matter-cli.js"
|
|
23
25
|
},
|
|
24
26
|
"files": [
|
|
25
27
|
"LICENSE",
|
|
@@ -29,7 +31,7 @@
|
|
|
29
31
|
"dist"
|
|
30
32
|
],
|
|
31
33
|
"engines": {
|
|
32
|
-
"node": "^
|
|
34
|
+
"node": "^20.7.0 || ^22"
|
|
33
35
|
},
|
|
34
36
|
"scripts": {
|
|
35
37
|
"build": "npm run clean && tsc",
|
|
@@ -48,29 +50,30 @@
|
|
|
48
50
|
},
|
|
49
51
|
"preferGlobal": true,
|
|
50
52
|
"dependencies": {
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
53
|
+
"@matter/main": "^0.15.3",
|
|
54
|
+
"chalk": "5.4.1",
|
|
55
|
+
"commander": "14.0.0",
|
|
56
|
+
"fs-extra": "11.3.0",
|
|
57
|
+
"hap-nodejs": "2.0.0-beta.0",
|
|
55
58
|
"qrcode-terminal": "0.12.0",
|
|
56
|
-
"semver": "7.
|
|
59
|
+
"semver": "7.7.2",
|
|
57
60
|
"source-map-support": "0.5.21"
|
|
58
61
|
},
|
|
59
62
|
"devDependencies": {
|
|
60
|
-
"@antfu/eslint-config": "^
|
|
63
|
+
"@antfu/eslint-config": "^4.14.1",
|
|
64
|
+
"@prettier/plugin-xml": "^3.4.1",
|
|
61
65
|
"@types/debug": "^4.1.12",
|
|
62
66
|
"@types/fs-extra": "^11.0.4",
|
|
63
|
-
"@types/node": "^22.
|
|
64
|
-
"@types/semver": "^7.
|
|
67
|
+
"@types/node": "^22.15.30",
|
|
68
|
+
"@types/semver": "^7.7.0",
|
|
65
69
|
"@types/source-map-support": "^0.5.10",
|
|
66
|
-
"@vitest/coverage-v8": "^2.
|
|
67
|
-
"eslint": "^
|
|
68
|
-
"
|
|
69
|
-
"nodemon": "^3.1.4",
|
|
70
|
+
"@vitest/coverage-v8": "^3.2.2",
|
|
71
|
+
"eslint-plugin-format": "^1.0.1",
|
|
72
|
+
"nodemon": "^3.1.10",
|
|
70
73
|
"rimraf": "^6.0.1",
|
|
71
74
|
"ts-node": "^10.9.2",
|
|
72
|
-
"typedoc": "^0.
|
|
73
|
-
"typescript": "^5.
|
|
74
|
-
"vitest": "^2.
|
|
75
|
+
"typedoc": "^0.28.5",
|
|
76
|
+
"typescript": "^5.8.3",
|
|
77
|
+
"vitest": "^3.2.2"
|
|
75
78
|
}
|
|
76
79
|
}
|