MCPcopy
hub / github.com/Koenkk/zigbee2mqtt / start

Method start

lib/zigbee.ts:31–188  ·  view source on GitHub ↗
(abortSignal: AbortSignal)

Source from the content-addressed store, hash-verified

29 }
30
31 async start(abortSignal: AbortSignal): Promise<boolean> {
32 const infoHerdsman = await utils.getDependencyVersion("zigbee-herdsman");
33 logger.info(`Starting zigbee-herdsman (${infoHerdsman.version})`);
34 const panId = settings.get().advanced.pan_id;
35 const extPanId = settings.get().advanced.ext_pan_id;
36 const networkKey = settings.get().advanced.network_key;
37 const herdsmanSettings = {
38 network: {
39 panID: panId === "GENERATE" ? this.generatePanID() : panId,
40 extendedPanID: extPanId === "GENERATE" ? this.generateExtPanID() : extPanId,
41 channelList: [settings.get().advanced.channel],
42 networkKey: networkKey === "GENERATE" ? this.generateNetworkKey() : networkKey,
43 },
44 databasePath: data.joinPath("database.db"),
45 databaseBackupPath: data.joinPath("database.db.backup"),
46 backupPath: data.joinPath("coordinator_backup.json"),
47 serialPort: {
48 baudRate: settings.get().serial.baudrate,
49 rtscts: settings.get().serial.rtscts,
50 path: settings.get().serial.port,
51 adapter: settings.get().serial.adapter,
52 },
53 adapter: {
54 concurrent: settings.get().advanced.adapter_concurrent,
55 delay: settings.get().advanced.adapter_delay,
56 disableLED: settings.get().serial.disable_led,
57 transmitPower: settings.get().advanced.transmit_power,
58 },
59 acceptJoiningDeviceHandler: this.acceptJoiningDeviceHandler,
60 };
61
62 logger.debug(
63 () =>
64 `Using zigbee-herdsman with settings: '${stringify(JSON.stringify(herdsmanSettings).replaceAll(JSON.stringify(herdsmanSettings.network.networkKey), '"HIDDEN"'))}'`,
65 );
66
67 let startResult: StartResult;
68 try {
69 this.#herdsman = new Controller(herdsmanSettings);
70 startResult = await this.#herdsman.start(abortSignal);
71 } catch (error) {
72 logger.error("Error while starting zigbee-herdsman");
73 throw error;
74 }
75
76 this.coordinatorIeeeAddr = this.#herdsman.getDevicesByType("Coordinator")[0].ieeeAddr;
77 await this.resolveDevicesDefinitions(false, abortSignal);
78
79 if (abortSignal.aborted) {
80 return false;
81 }
82
83 this.#herdsman.on("adapterDisconnected", () => this.eventBus.emitAdapterDisconnected());
84 this.#herdsman.on("lastSeenChanged", (data: ZHEvents.LastSeenChangedPayload) => {
85 // biome-ignore lint/style/noNonNullAssertion: assumed valid
86 this.eventBus.emitLastSeenChanged({device: this.resolveDevice(data.device.ieeeAddr)!, reason: data.reason});
87 });
88 this.#herdsman.on("permitJoinChanged", (data: ZHEvents.PermitJoinChangedPayload) => {

Callers

nothing calls this directly

Calls 15

generatePanIDMethod · 0.95
generateExtPanIDMethod · 0.95
generateNetworkKeyMethod · 0.95
resolveDeviceMethod · 0.95
logDeviceInterviewMethod · 0.95
getCoordinatorVersionMethod · 0.95
devicesIteratorMethod · 0.95
getMethod · 0.80
debugMethod · 0.80
errorMethod · 0.80
onMethod · 0.80

Tested by

no test coverage detected