zigbee-herdsman 1.1.0 → 2.0.0
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/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +16 -0
- package/dist/adapter/adapter.d.ts +2 -12
- package/dist/adapter/adapter.d.ts.map +1 -1
- package/dist/adapter/adapter.js +3 -0
- package/dist/adapter/adapter.js.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +2 -12
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.js +18 -260
- package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.d.ts +1 -10
- package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.js +5 -204
- package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.d.ts +1 -2
- package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.js +0 -1
- package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -1
- package/dist/adapter/events.d.ts +1 -9
- package/dist/adapter/events.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +2 -11
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.js +4 -189
- package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
- package/dist/adapter/tstype.d.ts +1 -27
- package/dist/adapter/tstype.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.js +18 -8
- package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +3 -12
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.js +12 -198
- package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
- package/dist/adapter/zboss/adapter/zbossAdapter.d.ts +1 -11
- package/dist/adapter/zboss/adapter/zbossAdapter.d.ts.map +1 -1
- package/dist/adapter/zboss/adapter/zbossAdapter.js +4 -188
- package/dist/adapter/zboss/adapter/zbossAdapter.js.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +1 -10
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.js +5 -180
- package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
- package/dist/adapter/zigate/driver/zigate.js +2 -2
- package/dist/adapter/zigate/driver/zigate.js.map +1 -1
- package/dist/controller/controller.d.ts +4 -0
- package/dist/controller/controller.d.ts.map +1 -1
- package/dist/controller/controller.js +136 -58
- package/dist/controller/controller.js.map +1 -1
- package/dist/controller/greenPower.js +3 -3
- package/dist/controller/greenPower.js.map +1 -1
- package/dist/controller/model/device.d.ts +8 -7
- package/dist/controller/model/device.d.ts.map +1 -1
- package/dist/controller/model/device.js +176 -72
- package/dist/controller/model/device.js.map +1 -1
- package/dist/controller/model/endpoint.d.ts +1 -0
- package/dist/controller/model/endpoint.d.ts.map +1 -1
- package/dist/controller/model/endpoint.js +27 -4
- package/dist/controller/model/endpoint.js.map +1 -1
- package/dist/zspec/zdo/buffaloZdo.js.map +1 -1
- package/package.json +5 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.0.0](https://github.com/Koenkk/zigbee-herdsman/compare/v1.1.0...v2.0.0) (2024-09-22)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### ⚠ BREAKING CHANGES
|
|
7
|
+
|
|
8
|
+
* Standardize ZDO ([#1194](https://github.com/Koenkk/zigbee-herdsman/issues/1194))
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* Standardize ZDO ([#1194](https://github.com/Koenkk/zigbee-herdsman/issues/1194)) ([9bce063](https://github.com/Koenkk/zigbee-herdsman/commit/9bce063767ec3c63f287a44dcdef60338c51b3d9))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* **ignore:** update dependencies ([#1195](https://github.com/Koenkk/zigbee-herdsman/issues/1195)) ([3f76f1a](https://github.com/Koenkk/zigbee-herdsman/commit/3f76f1a14bcdc52af9e9793b1ce2312f4b5cb7ae))
|
|
18
|
+
|
|
3
19
|
## [1.1.0](https://github.com/Koenkk/zigbee-herdsman/compare/v1.0.1...v1.1.0) (2024-09-21)
|
|
4
20
|
|
|
5
21
|
|
|
@@ -11,12 +11,11 @@ interface AdapterEventMap {
|
|
|
11
11
|
zclPayload: [payload: AdapterEvents.ZclPayload];
|
|
12
12
|
zdoResponse: [clusterId: Zdo.ClusterId, response: ZdoTypes.GenericZdoResponse];
|
|
13
13
|
disconnected: [];
|
|
14
|
-
deviceAnnounce: [payload: AdapterEvents.DeviceAnnouncePayload];
|
|
15
14
|
deviceLeave: [payload: AdapterEvents.DeviceLeavePayload];
|
|
16
|
-
networkAddress: [payload: AdapterEvents.NetworkAddressPayload];
|
|
17
15
|
}
|
|
18
16
|
declare abstract class Adapter extends events.EventEmitter<AdapterEventMap> {
|
|
19
17
|
hasZdoMessageOverhead: boolean;
|
|
18
|
+
manufacturerID: Zcl.ManufacturerCode;
|
|
20
19
|
protected networkOptions: TsType.NetworkOptions;
|
|
21
20
|
protected adapterOptions: TsType.AdapterOptions;
|
|
22
21
|
protected serialPortOptions: TsType.SerialPortOptions;
|
|
@@ -28,13 +27,12 @@ declare abstract class Adapter extends events.EventEmitter<AdapterEventMap> {
|
|
|
28
27
|
static create(networkOptions: TsType.NetworkOptions, serialPortOptions: TsType.SerialPortOptions, backupPath: string, adapterOptions: TsType.AdapterOptions): Promise<Adapter>;
|
|
29
28
|
abstract start(): Promise<TsType.StartResult>;
|
|
30
29
|
abstract stop(): Promise<void>;
|
|
31
|
-
abstract
|
|
30
|
+
abstract getCoordinatorIEEE(): Promise<string>;
|
|
32
31
|
abstract getCoordinatorVersion(): Promise<TsType.CoordinatorVersion>;
|
|
33
32
|
abstract reset(type: 'soft' | 'hard'): Promise<void>;
|
|
34
33
|
abstract supportsBackup(): Promise<boolean>;
|
|
35
34
|
abstract backup(ieeeAddressesInDatabase: string[]): Promise<Models.Backup>;
|
|
36
35
|
abstract getNetworkParameters(): Promise<TsType.NetworkParameters>;
|
|
37
|
-
abstract changeChannel(newChannel: number): Promise<void>;
|
|
38
36
|
abstract setTransmitPower(value: number): Promise<void>;
|
|
39
37
|
abstract addInstallCode(ieeeAddress: string, key: Buffer): Promise<void>;
|
|
40
38
|
abstract waitFor(networkAddress: number | undefined, endpoint: number, frameType: Zcl.FrameType, direction: Zcl.Direction, transactionSequenceNumber: number | undefined, clusterID: number, commandIdentifier: number, timeout: number): {
|
|
@@ -48,14 +46,6 @@ declare abstract class Adapter extends events.EventEmitter<AdapterEventMap> {
|
|
|
48
46
|
abstract sendZdo<K extends keyof ZdoTypes.RequestToResponseMap>(ieeeAddress: string, networkAddress: number, clusterId: K, payload: Buffer, disableResponse: false): Promise<ZdoTypes.RequestToResponseMap[K]>;
|
|
49
47
|
abstract sendZdo<K extends keyof ZdoTypes.RequestToResponseMap>(ieeeAddress: string, networkAddress: number, clusterId: K, payload: Buffer, disableResponse: boolean): Promise<ZdoTypes.RequestToResponseMap[K] | void>;
|
|
50
48
|
abstract permitJoin(seconds: number, networkAddress?: number): Promise<void>;
|
|
51
|
-
abstract lqi(networkAddress: number): Promise<TsType.LQI>;
|
|
52
|
-
abstract routingTable(networkAddress: number): Promise<TsType.RoutingTable>;
|
|
53
|
-
abstract nodeDescriptor(networkAddress: number): Promise<TsType.NodeDescriptor>;
|
|
54
|
-
abstract activeEndpoints(networkAddress: number): Promise<TsType.ActiveEndpoints>;
|
|
55
|
-
abstract simpleDescriptor(networkAddress: number, endpointID: number): Promise<TsType.SimpleDescriptor>;
|
|
56
|
-
abstract bind(destinationNetworkAddress: number, sourceIeeeAddress: string, sourceEndpoint: number, clusterID: number, destinationAddressOrGroup: string | number, type: 'endpoint' | 'group', destinationEndpoint?: number): Promise<void>;
|
|
57
|
-
abstract unbind(destinationNetworkAddress: number, sourceIeeeAddress: string, sourceEndpoint: number, clusterID: number, destinationAddressOrGroup: string | number, type: 'endpoint' | 'group', destinationEndpoint?: number): Promise<void>;
|
|
58
|
-
abstract removeDevice(networkAddress: number, ieeeAddr: string): Promise<void>;
|
|
59
49
|
/**
|
|
60
50
|
* ZCL
|
|
61
51
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAI5B,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,QAAQ,MAAM,iCAAiC,CAAC;AAC5D,OAAO,KAAK,aAAa,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAInC,UAAU,eAAe;IACrB,YAAY,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC3D,UAAU,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAChD,WAAW,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAC/E,YAAY,EAAE,EAAE,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/adapter/adapter.js
CHANGED
|
@@ -29,9 +29,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
const events_1 = __importDefault(require("events"));
|
|
30
30
|
const bonjour_service_1 = __importDefault(require("bonjour-service"));
|
|
31
31
|
const logger_1 = require("../utils/logger");
|
|
32
|
+
const Zcl = __importStar(require("../zspec/zcl"));
|
|
32
33
|
const NS = 'zh:adapter';
|
|
33
34
|
class Adapter extends events_1.default.EventEmitter {
|
|
34
35
|
hasZdoMessageOverhead;
|
|
36
|
+
manufacturerID;
|
|
35
37
|
networkOptions;
|
|
36
38
|
adapterOptions;
|
|
37
39
|
serialPortOptions;
|
|
@@ -39,6 +41,7 @@ class Adapter extends events_1.default.EventEmitter {
|
|
|
39
41
|
constructor(networkOptions, serialPortOptions, backupPath, adapterOptions) {
|
|
40
42
|
super();
|
|
41
43
|
this.hasZdoMessageOverhead = true;
|
|
44
|
+
this.manufacturerID = Zcl.ManufacturerCode.RESERVED_10;
|
|
42
45
|
this.networkOptions = networkOptions;
|
|
43
46
|
this.adapterOptions = adapterOptions;
|
|
44
47
|
this.serialPortOptions = serialPortOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapter/adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA4B;AAE5B,sEAAiD;AAGjD,4CAAuC;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapter/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import * as Zdo from '../../../zspec/zdo';
|
|
|
5
5
|
import * as ZdoTypes from '../../../zspec/zdo/definition/tstypes';
|
|
6
6
|
import Adapter from '../../adapter';
|
|
7
7
|
import * as Events from '../../events';
|
|
8
|
-
import {
|
|
8
|
+
import { AdapterOptions, CoordinatorVersion, NetworkOptions, NetworkParameters, SerialPortOptions, StartResult } from '../../tstype';
|
|
9
9
|
declare class DeconzAdapter extends Adapter {
|
|
10
10
|
private driver;
|
|
11
11
|
private openRequestsQueue;
|
|
@@ -23,17 +23,11 @@ declare class DeconzAdapter extends Adapter {
|
|
|
23
23
|
*/
|
|
24
24
|
start(): Promise<StartResult>;
|
|
25
25
|
stop(): Promise<void>;
|
|
26
|
-
|
|
26
|
+
getCoordinatorIEEE(): Promise<string>;
|
|
27
27
|
permitJoin(seconds: number, networkAddress?: number): Promise<void>;
|
|
28
28
|
getCoordinatorVersion(): Promise<CoordinatorVersion>;
|
|
29
29
|
addInstallCode(ieeeAddress: string, key: Buffer): Promise<void>;
|
|
30
30
|
reset(type: 'soft' | 'hard'): Promise<void>;
|
|
31
|
-
lqi(networkAddress: number): Promise<LQI>;
|
|
32
|
-
routingTable(networkAddress: number): Promise<RoutingTable>;
|
|
33
|
-
nodeDescriptor(networkAddress: number): Promise<NodeDescriptor>;
|
|
34
|
-
activeEndpoints(networkAddress: number): Promise<ActiveEndpoints>;
|
|
35
|
-
simpleDescriptor(networkAddress: number, endpointID: number): Promise<SimpleDescriptor>;
|
|
36
|
-
private checkCoordinatorSimpleDescriptor;
|
|
37
31
|
waitFor(networkAddress: number | undefined, endpoint: number, frameType: Zcl.FrameType, direction: Zcl.Direction, transactionSequenceNumber: number | undefined, clusterID: number, commandIdentifier: number, timeout: number): {
|
|
38
32
|
promise: Promise<Events.ZclPayload>;
|
|
39
33
|
cancel: () => void;
|
|
@@ -43,9 +37,6 @@ declare class DeconzAdapter extends Adapter {
|
|
|
43
37
|
sendZclFrameToEndpoint(ieeeAddr: string, networkAddress: number, endpoint: number, zclFrame: Zcl.Frame, timeout: number, disableResponse: boolean, disableRecovery: boolean, sourceEndpoint?: number): Promise<Events.ZclPayload | void>;
|
|
44
38
|
sendZclFrameToGroup(groupID: number, zclFrame: Zcl.Frame): Promise<void>;
|
|
45
39
|
sendZclFrameToAll(endpoint: number, zclFrame: Zcl.Frame, sourceEndpoint: number, destination: BroadcastAddress): Promise<void>;
|
|
46
|
-
bind(destinationNetworkAddress: number, sourceIeeeAddress: string, sourceEndpoint: number, clusterID: number, destinationAddressOrGroup: string | number, type: 'endpoint' | 'group', destinationEndpoint?: number): Promise<void>;
|
|
47
|
-
unbind(destinationNetworkAddress: number, sourceIeeeAddress: string, sourceEndpoint: number, clusterID: number, destinationAddressOrGroup: string | number, type: 'endpoint' | 'group', destinationEndpoint?: number): Promise<void>;
|
|
48
|
-
removeDevice(networkAddress: number, ieeeAddr: string): Promise<void>;
|
|
49
40
|
supportsBackup(): Promise<boolean>;
|
|
50
41
|
backup(): Promise<Models.Backup>;
|
|
51
42
|
getNetworkParameters(): Promise<NetworkParameters>;
|
|
@@ -54,7 +45,6 @@ declare class DeconzAdapter extends Adapter {
|
|
|
54
45
|
sendZclFrameInterPANBroadcast(zclFrame: Zcl.Frame, timeout: number): Promise<Events.ZclPayload>;
|
|
55
46
|
sendZclFrameInterPANBroadcastWithResponse(zclFrame: Zcl.Frame, timeout: number): Promise<Events.ZclPayload>;
|
|
56
47
|
setChannelInterPAN(channel: number): Promise<void>;
|
|
57
|
-
changeChannel(newChannel: number): Promise<void>;
|
|
58
48
|
setTransmitPower(value: number): Promise<void>;
|
|
59
49
|
sendZclFrameInterPANIeeeAddr(zclFrame: Zcl.Frame, ieeeAddr: string): Promise<void>;
|
|
60
50
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deconzAdapter.d.ts","sourceRoot":"","sources":["../../../../src/adapter/deconz/adapter/deconzAdapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deconzAdapter.d.ts","sourceRoot":"","sources":["../../../../src/adapter/deconz/adapter/deconzAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,10 +28,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
28
28
|
};
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
30
|
const assert_1 = __importDefault(require("assert"));
|
|
31
|
-
const __1 = require("../../..");
|
|
32
31
|
const device_1 = __importDefault(require("../../../controller/model/device"));
|
|
33
32
|
const utils_1 = require("../../../utils");
|
|
34
33
|
const logger_1 = require("../../../utils/logger");
|
|
34
|
+
const ZSpec = __importStar(require("../../../zspec"));
|
|
35
35
|
const Zcl = __importStar(require("../../../zspec/zcl"));
|
|
36
36
|
const Zdo = __importStar(require("../../../zspec/zdo"));
|
|
37
37
|
const adapter_1 = __importDefault(require("../../adapter"));
|
|
@@ -51,6 +51,7 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
51
51
|
constructor(networkOptions, serialPortOptions, backupPath, adapterOptions) {
|
|
52
52
|
super(networkOptions, serialPortOptions, backupPath, adapterOptions);
|
|
53
53
|
this.hasZdoMessageOverhead = true;
|
|
54
|
+
this.manufacturerID = Zcl.ManufacturerCode.DRESDEN_ELEKTRONIK_INGENIEURTECHNIK_GMBH;
|
|
54
55
|
// const concurrent = this.adapterOptions && this.adapterOptions.concurrent ? this.adapterOptions.concurrent : 2;
|
|
55
56
|
// TODO: https://github.com/Koenkk/zigbee2mqtt/issues/4884#issuecomment-728903121
|
|
56
57
|
const delay = this.adapterOptions && typeof this.adapterOptions.delay === 'number' ? this.adapterOptions.delay : 0;
|
|
@@ -75,9 +76,6 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
75
76
|
setInterval(() => {
|
|
76
77
|
this.checkReceivedDataPayload(null);
|
|
77
78
|
}, 1000);
|
|
78
|
-
setTimeout(async () => {
|
|
79
|
-
await this.checkCoordinatorSimpleDescriptor(false);
|
|
80
|
-
}, 3000);
|
|
81
79
|
}
|
|
82
80
|
static async isValidPath(path) {
|
|
83
81
|
return await driver_1.default.isValidPath(path);
|
|
@@ -211,43 +209,28 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
211
209
|
await this.driver.changeNetworkStateRequest(constants_1.default.PARAM.Network.NET_CONNECTED);
|
|
212
210
|
await (0, utils_1.Wait)(2000);
|
|
213
211
|
}
|
|
212
|
+
// write endpoints
|
|
213
|
+
//[ sd1 ep proId devId vers #inCl iCl1 iCl2 iCl3 iCl4 iCl5 #outC oCl1 oCl2 oCl3 oCl4 ]
|
|
214
|
+
const sd = [
|
|
215
|
+
0x00, 0x01, 0x04, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x00, 0x19, 0x00, 0x01, 0x05, 0x04, 0x01, 0x00, 0x20, 0x00,
|
|
216
|
+
0x00, 0x05, 0x02, 0x05,
|
|
217
|
+
];
|
|
218
|
+
const sd1 = sd.reverse();
|
|
219
|
+
await this.driver.writeParameterRequest(constants_1.default.PARAM.STK.Endpoint, sd1);
|
|
214
220
|
return 'resumed';
|
|
215
221
|
}
|
|
216
222
|
async stop() {
|
|
217
223
|
await this.driver.close();
|
|
218
224
|
}
|
|
219
|
-
async
|
|
220
|
-
|
|
221
|
-
const nwkAddr = await this.driver.readParameterRequest(constants_1.default.PARAM.Network.NWK_ADDRESS);
|
|
222
|
-
const endpoints = [
|
|
223
|
-
{
|
|
224
|
-
ID: 0x01,
|
|
225
|
-
profileID: 0x0104,
|
|
226
|
-
deviceID: 0x0005,
|
|
227
|
-
inputClusters: [0x0000, 0x0006, 0x000a, 0x0019, 0x0501],
|
|
228
|
-
outputClusters: [0x0001, 0x0020, 0x0500, 0x0502],
|
|
229
|
-
},
|
|
230
|
-
{
|
|
231
|
-
ID: 0xf2,
|
|
232
|
-
profileID: 0xa1e0,
|
|
233
|
-
deviceID: 0x0064,
|
|
234
|
-
inputClusters: [],
|
|
235
|
-
outputClusters: [0x0021],
|
|
236
|
-
},
|
|
237
|
-
];
|
|
238
|
-
return {
|
|
239
|
-
networkAddress: nwkAddr,
|
|
240
|
-
manufacturerID: 0x1135,
|
|
241
|
-
ieeeAddr: ieeeAddr,
|
|
242
|
-
endpoints,
|
|
243
|
-
};
|
|
225
|
+
async getCoordinatorIEEE() {
|
|
226
|
+
return (await this.driver.readParameterRequest(constants_1.default.PARAM.Network.MAC));
|
|
244
227
|
}
|
|
245
228
|
async permitJoin(seconds, networkAddress) {
|
|
246
229
|
const clusterId = Zdo.ClusterId.PERMIT_JOINING_REQUEST;
|
|
247
230
|
if (networkAddress) {
|
|
248
231
|
// `authentication`: TC significance always 1 (zb specs)
|
|
249
232
|
const zdoPayload = Zdo.Buffalo.buildRequest(this.hasZdoMessageOverhead, clusterId, seconds, 1, []);
|
|
250
|
-
const result = await this.sendZdo(
|
|
233
|
+
const result = await this.sendZdo(ZSpec.BLANK_EUI64, networkAddress, clusterId, zdoPayload, false);
|
|
251
234
|
/* istanbul ignore next */
|
|
252
235
|
if (!Zdo.Buffalo.checkStatus(result)) {
|
|
253
236
|
// TODO: will disappear once moved upstream
|
|
@@ -261,7 +244,7 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
261
244
|
if (networkAddress === undefined) {
|
|
262
245
|
// `authentication`: TC significance always 1 (zb specs)
|
|
263
246
|
const zdoPayload = Zdo.Buffalo.buildRequest(this.hasZdoMessageOverhead, clusterId, seconds, 1, []);
|
|
264
|
-
await this.sendZdo(
|
|
247
|
+
await this.sendZdo(ZSpec.BLANK_EUI64, ZSpec.BroadcastAddress.DEFAULT, clusterId, zdoPayload, true);
|
|
265
248
|
}
|
|
266
249
|
}
|
|
267
250
|
this.joinPermitted = seconds !== 0;
|
|
@@ -303,191 +286,6 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
303
286
|
async reset(type) {
|
|
304
287
|
return await Promise.reject(new Error('Reset is not supported'));
|
|
305
288
|
}
|
|
306
|
-
async lqi(networkAddress) {
|
|
307
|
-
const clusterId = Zdo.ClusterId.LQI_TABLE_REQUEST;
|
|
308
|
-
const neighbors = [];
|
|
309
|
-
const request = async (startIndex) => {
|
|
310
|
-
const zdoPayload = Zdo.Buffalo.buildRequest(this.hasZdoMessageOverhead, clusterId, startIndex);
|
|
311
|
-
const result = await this.sendZdo(__1.ZSpec.BLANK_EUI64, networkAddress, clusterId, zdoPayload, false);
|
|
312
|
-
/* istanbul ignore else */
|
|
313
|
-
if (Zdo.Buffalo.checkStatus(result)) {
|
|
314
|
-
const payload = result[1];
|
|
315
|
-
for (const entry of payload.entryList) {
|
|
316
|
-
neighbors.push({
|
|
317
|
-
ieeeAddr: entry.eui64,
|
|
318
|
-
networkAddress: entry.nwkAddress,
|
|
319
|
-
linkquality: entry.lqi,
|
|
320
|
-
relationship: entry.relationship,
|
|
321
|
-
depth: entry.depth,
|
|
322
|
-
});
|
|
323
|
-
}
|
|
324
|
-
return [payload.neighborTableEntries, payload.entryList.length];
|
|
325
|
-
}
|
|
326
|
-
else {
|
|
327
|
-
// TODO: will disappear once moved upstream
|
|
328
|
-
throw new Zdo.StatusError(result[0]);
|
|
329
|
-
}
|
|
330
|
-
};
|
|
331
|
-
let [tableEntries, entryCount] = await request(0);
|
|
332
|
-
const size = tableEntries;
|
|
333
|
-
let nextStartIndex = entryCount;
|
|
334
|
-
while (neighbors.length < size) {
|
|
335
|
-
[tableEntries, entryCount] = await request(nextStartIndex);
|
|
336
|
-
nextStartIndex += entryCount;
|
|
337
|
-
}
|
|
338
|
-
return { neighbors };
|
|
339
|
-
}
|
|
340
|
-
async routingTable(networkAddress) {
|
|
341
|
-
const clusterId = Zdo.ClusterId.ROUTING_TABLE_REQUEST;
|
|
342
|
-
const table = [];
|
|
343
|
-
const request = async (startIndex) => {
|
|
344
|
-
const zdoPayload = Zdo.Buffalo.buildRequest(this.hasZdoMessageOverhead, clusterId, startIndex);
|
|
345
|
-
const result = await this.sendZdo(__1.ZSpec.BLANK_EUI64, networkAddress, clusterId, zdoPayload, false);
|
|
346
|
-
/* istanbul ignore else */
|
|
347
|
-
if (Zdo.Buffalo.checkStatus(result)) {
|
|
348
|
-
const payload = result[1];
|
|
349
|
-
for (const entry of payload.entryList) {
|
|
350
|
-
table.push({
|
|
351
|
-
destinationAddress: entry.destinationAddress,
|
|
352
|
-
status: entry.status,
|
|
353
|
-
nextHop: entry.nextHopAddress,
|
|
354
|
-
});
|
|
355
|
-
}
|
|
356
|
-
return [payload.routingTableEntries, payload.entryList.length];
|
|
357
|
-
}
|
|
358
|
-
else {
|
|
359
|
-
// TODO: will disappear once moved upstream
|
|
360
|
-
throw new Zdo.StatusError(result[0]);
|
|
361
|
-
}
|
|
362
|
-
};
|
|
363
|
-
let [tableEntries, entryCount] = await request(0);
|
|
364
|
-
const size = tableEntries;
|
|
365
|
-
let nextStartIndex = entryCount;
|
|
366
|
-
while (table.length < size) {
|
|
367
|
-
[tableEntries, entryCount] = await request(nextStartIndex);
|
|
368
|
-
nextStartIndex += entryCount;
|
|
369
|
-
}
|
|
370
|
-
return { table };
|
|
371
|
-
}
|
|
372
|
-
async nodeDescriptor(networkAddress) {
|
|
373
|
-
const clusterId = Zdo.ClusterId.NODE_DESCRIPTOR_REQUEST;
|
|
374
|
-
const zdoPayload = Zdo.Buffalo.buildRequest(this.hasZdoMessageOverhead, clusterId, networkAddress);
|
|
375
|
-
const result = await this.sendZdo(__1.ZSpec.BLANK_EUI64, networkAddress, clusterId, zdoPayload, false);
|
|
376
|
-
/* istanbul ignore else */
|
|
377
|
-
if (Zdo.Buffalo.checkStatus(result)) {
|
|
378
|
-
const payload = result[1];
|
|
379
|
-
let type = 'Unknown';
|
|
380
|
-
switch (payload.logicalType) {
|
|
381
|
-
case 0x0:
|
|
382
|
-
type = 'Coordinator';
|
|
383
|
-
break;
|
|
384
|
-
case 0x1:
|
|
385
|
-
type = 'Router';
|
|
386
|
-
break;
|
|
387
|
-
case 0x2:
|
|
388
|
-
type = 'EndDevice';
|
|
389
|
-
break;
|
|
390
|
-
}
|
|
391
|
-
return { type, manufacturerCode: payload.manufacturerCode };
|
|
392
|
-
}
|
|
393
|
-
else {
|
|
394
|
-
// TODO: will disappear once moved upstream
|
|
395
|
-
throw new Zdo.StatusError(result[0]);
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
async activeEndpoints(networkAddress) {
|
|
399
|
-
const clusterId = Zdo.ClusterId.ACTIVE_ENDPOINTS_REQUEST;
|
|
400
|
-
const zdoPayload = Zdo.Buffalo.buildRequest(this.hasZdoMessageOverhead, clusterId, networkAddress);
|
|
401
|
-
const result = await this.sendZdo(__1.ZSpec.BLANK_EUI64, networkAddress, clusterId, zdoPayload, false);
|
|
402
|
-
/* istanbul ignore else */
|
|
403
|
-
if (Zdo.Buffalo.checkStatus(result)) {
|
|
404
|
-
const payload = result[1];
|
|
405
|
-
return { endpoints: payload.endpointList };
|
|
406
|
-
}
|
|
407
|
-
else {
|
|
408
|
-
// TODO: will disappear once moved upstream
|
|
409
|
-
throw new Zdo.StatusError(result[0]);
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
async simpleDescriptor(networkAddress, endpointID) {
|
|
413
|
-
const clusterId = Zdo.ClusterId.SIMPLE_DESCRIPTOR_REQUEST;
|
|
414
|
-
const zdoPayload = Zdo.Buffalo.buildRequest(this.hasZdoMessageOverhead, clusterId, networkAddress, endpointID);
|
|
415
|
-
const result = await this.sendZdo(__1.ZSpec.BLANK_EUI64, networkAddress, clusterId, zdoPayload, false);
|
|
416
|
-
/* istanbul ignore else */
|
|
417
|
-
if (Zdo.Buffalo.checkStatus(result)) {
|
|
418
|
-
const payload = result[1];
|
|
419
|
-
return {
|
|
420
|
-
profileID: payload.profileId,
|
|
421
|
-
endpointID: payload.endpoint,
|
|
422
|
-
deviceID: payload.deviceId,
|
|
423
|
-
inputClusters: payload.inClusterList,
|
|
424
|
-
outputClusters: payload.outClusterList,
|
|
425
|
-
};
|
|
426
|
-
}
|
|
427
|
-
else {
|
|
428
|
-
// TODO: will disappear once moved upstream
|
|
429
|
-
throw new Zdo.StatusError(result[0]);
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
async checkCoordinatorSimpleDescriptor(skip) {
|
|
433
|
-
logger_1.logger.debug('checking coordinator simple descriptor', NS);
|
|
434
|
-
let simpleDesc;
|
|
435
|
-
if (skip === false) {
|
|
436
|
-
try {
|
|
437
|
-
simpleDesc = await this.simpleDescriptor(0x0, 1);
|
|
438
|
-
}
|
|
439
|
-
catch {
|
|
440
|
-
/* empty */
|
|
441
|
-
}
|
|
442
|
-
if (simpleDesc == undefined) {
|
|
443
|
-
await this.checkCoordinatorSimpleDescriptor(false);
|
|
444
|
-
return;
|
|
445
|
-
}
|
|
446
|
-
logger_1.logger.debug('EP: ' + simpleDesc.endpointID, NS);
|
|
447
|
-
logger_1.logger.debug('profile ID: ' + simpleDesc.profileID, NS);
|
|
448
|
-
logger_1.logger.debug('device ID: ' + simpleDesc.deviceID, NS);
|
|
449
|
-
for (let i = 0; i < simpleDesc.inputClusters.length; i++) {
|
|
450
|
-
logger_1.logger.debug('input cluster: 0x' + simpleDesc.inputClusters[i].toString(16), NS);
|
|
451
|
-
}
|
|
452
|
-
for (let o = 0; o < simpleDesc.outputClusters.length; o++) {
|
|
453
|
-
logger_1.logger.debug('output cluster: 0x' + simpleDesc.outputClusters[o].toString(16), NS);
|
|
454
|
-
}
|
|
455
|
-
let ok = true;
|
|
456
|
-
if (simpleDesc.endpointID === 0x1) {
|
|
457
|
-
if (!simpleDesc.inputClusters.includes(0x0) ||
|
|
458
|
-
!simpleDesc.inputClusters.includes(0x0a) ||
|
|
459
|
-
!simpleDesc.inputClusters.includes(0x06) ||
|
|
460
|
-
!simpleDesc.inputClusters.includes(0x19) ||
|
|
461
|
-
!simpleDesc.inputClusters.includes(0x0501) ||
|
|
462
|
-
!simpleDesc.outputClusters.includes(0x01) ||
|
|
463
|
-
!simpleDesc.outputClusters.includes(0x20) ||
|
|
464
|
-
!simpleDesc.outputClusters.includes(0x500) ||
|
|
465
|
-
!simpleDesc.outputClusters.includes(0x502)) {
|
|
466
|
-
logger_1.logger.debug('missing cluster', NS);
|
|
467
|
-
ok = false;
|
|
468
|
-
}
|
|
469
|
-
if (ok === true) {
|
|
470
|
-
return;
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
logger_1.logger.debug('setting new simple descriptor', NS);
|
|
475
|
-
try {
|
|
476
|
-
//[ sd1 ep proId devId vers #inCl iCl1 iCl2 iCl3 iCl4 iCl5 #outC oCl1 oCl2 oCl3 oCl4 ]
|
|
477
|
-
const sd = [
|
|
478
|
-
0x00, 0x01, 0x04, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x00, 0x19, 0x00, 0x01, 0x05, 0x04, 0x01, 0x00, 0x20,
|
|
479
|
-
0x00, 0x00, 0x05, 0x02, 0x05,
|
|
480
|
-
];
|
|
481
|
-
const sd1 = sd.reverse();
|
|
482
|
-
await this.driver.writeParameterRequest(constants_1.default.PARAM.STK.Endpoint, sd1);
|
|
483
|
-
}
|
|
484
|
-
catch (error) {
|
|
485
|
-
logger_1.logger.debug(`error setting simple descriptor: ${error} - try again`, NS);
|
|
486
|
-
await this.checkCoordinatorSimpleDescriptor(true);
|
|
487
|
-
return;
|
|
488
|
-
}
|
|
489
|
-
logger_1.logger.debug('success setting simple descriptor', NS);
|
|
490
|
-
}
|
|
491
289
|
waitFor(networkAddress, endpoint, frameType, direction, transactionSequenceNumber, clusterID, commandIdentifier, timeout) {
|
|
492
290
|
const payload = {
|
|
493
291
|
address: networkAddress,
|
|
@@ -575,7 +373,7 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
575
373
|
try {
|
|
576
374
|
let data = null;
|
|
577
375
|
if ((command.response != undefined && !disableResponse) || !zclFrame.header.frameControl.disableDefaultResponse) {
|
|
578
|
-
data = await this.waitForData(networkAddress,
|
|
376
|
+
data = await this.waitForData(networkAddress, ZSpec.HA_PROFILE_ID, zclFrame.cluster.ID, zclFrame.header.transactionSequenceNumber, request.timeout);
|
|
579
377
|
}
|
|
580
378
|
if (data !== null) {
|
|
581
379
|
const response = {
|
|
@@ -639,40 +437,6 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
639
437
|
logger_1.logger.debug(`sendZclFrameToAll - message send`, NS);
|
|
640
438
|
return await this.driver.enqueueSendDataRequest(request);
|
|
641
439
|
}
|
|
642
|
-
async bind(destinationNetworkAddress, sourceIeeeAddress, sourceEndpoint, clusterID, destinationAddressOrGroup, type, destinationEndpoint) {
|
|
643
|
-
const clusterId = Zdo.ClusterId.BIND_REQUEST;
|
|
644
|
-
const zdoPayload = Zdo.Buffalo.buildRequest(this.hasZdoMessageOverhead, clusterId, sourceIeeeAddress, sourceEndpoint, clusterID, type === 'group' ? Zdo.MULTICAST_BINDING : Zdo.UNICAST_BINDING, destinationAddressOrGroup, // not used with MULTICAST_BINDING
|
|
645
|
-
destinationAddressOrGroup, // not used with UNICAST_BINDING
|
|
646
|
-
destinationEndpoint ?? 0);
|
|
647
|
-
const result = await this.sendZdo(__1.ZSpec.BLANK_EUI64, destinationNetworkAddress, clusterId, zdoPayload, false);
|
|
648
|
-
/* istanbul ignore next */
|
|
649
|
-
if (!Zdo.Buffalo.checkStatus(result)) {
|
|
650
|
-
// TODO: will disappear once moved upstream
|
|
651
|
-
throw new Zdo.StatusError(result[0]);
|
|
652
|
-
}
|
|
653
|
-
}
|
|
654
|
-
async unbind(destinationNetworkAddress, sourceIeeeAddress, sourceEndpoint, clusterID, destinationAddressOrGroup, type, destinationEndpoint) {
|
|
655
|
-
const clusterId = Zdo.ClusterId.UNBIND_REQUEST;
|
|
656
|
-
const zdoPayload = Zdo.Buffalo.buildRequest(this.hasZdoMessageOverhead, clusterId, sourceIeeeAddress, sourceEndpoint, clusterID, type === 'group' ? Zdo.MULTICAST_BINDING : Zdo.UNICAST_BINDING, destinationAddressOrGroup, // not used with MULTICAST_BINDING
|
|
657
|
-
destinationAddressOrGroup, // not used with UNICAST_BINDING
|
|
658
|
-
destinationEndpoint ?? 0);
|
|
659
|
-
const result = await this.sendZdo(__1.ZSpec.BLANK_EUI64, destinationNetworkAddress, clusterId, zdoPayload, false);
|
|
660
|
-
/* istanbul ignore next */
|
|
661
|
-
if (!Zdo.Buffalo.checkStatus(result)) {
|
|
662
|
-
// TODO: will disappear once moved upstream
|
|
663
|
-
throw new Zdo.StatusError(result[0]);
|
|
664
|
-
}
|
|
665
|
-
}
|
|
666
|
-
async removeDevice(networkAddress, ieeeAddr) {
|
|
667
|
-
const clusterId = Zdo.ClusterId.LEAVE_REQUEST;
|
|
668
|
-
const zdoPayload = Zdo.Buffalo.buildRequest(this.hasZdoMessageOverhead, clusterId, ieeeAddr, Zdo.LeaveRequestFlags.WITHOUT_REJOIN);
|
|
669
|
-
const result = await this.sendZdo(__1.ZSpec.BLANK_EUI64, networkAddress, clusterId, zdoPayload, false);
|
|
670
|
-
/* istanbul ignore next */
|
|
671
|
-
if (!Zdo.Buffalo.checkStatus(result)) {
|
|
672
|
-
// TODO: will disappear once moved upstream
|
|
673
|
-
throw new Zdo.StatusError(result[0]);
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
440
|
async supportsBackup() {
|
|
677
441
|
return false;
|
|
678
442
|
}
|
|
@@ -715,12 +479,6 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
715
479
|
async setChannelInterPAN(channel) {
|
|
716
480
|
throw new Error('not supported');
|
|
717
481
|
}
|
|
718
|
-
async changeChannel(newChannel) {
|
|
719
|
-
const clusterId = Zdo.ClusterId.NWK_UPDATE_REQUEST;
|
|
720
|
-
const zdoPayload = Zdo.Buffalo.buildRequest(this.hasZdoMessageOverhead, clusterId, [newChannel], 0xfe, undefined, undefined, undefined);
|
|
721
|
-
await this.sendZdo(__1.ZSpec.BLANK_EUI64, __1.ZSpec.BroadcastAddress.SLEEPY, clusterId, zdoPayload, true /* handled below */);
|
|
722
|
-
await (0, utils_1.Wait)(12000);
|
|
723
|
-
}
|
|
724
482
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
725
483
|
async setTransmitPower(value) {
|
|
726
484
|
throw new Error('not supported');
|
|
@@ -758,11 +516,11 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
758
516
|
data: payBuf,
|
|
759
517
|
clusterID: Zcl.Clusters.greenPower.ID,
|
|
760
518
|
address: ind.srcId & 0xffff,
|
|
761
|
-
endpoint:
|
|
519
|
+
endpoint: ZSpec.GP_ENDPOINT,
|
|
762
520
|
linkquality: 0xff, // bogus
|
|
763
|
-
groupID:
|
|
521
|
+
groupID: ZSpec.GP_GROUP_ID,
|
|
764
522
|
wasBroadcast: true, // Take the codepath that doesn't require `gppNwkAddr` as its not present in the payload
|
|
765
|
-
destinationEndpoint:
|
|
523
|
+
destinationEndpoint: ZSpec.GP_ENDPOINT,
|
|
766
524
|
};
|
|
767
525
|
this.waitress.resolve(payload);
|
|
768
526
|
this.emit('zclPayload', payload);
|