zwave-js 10.11.1 → 10.13.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.
Files changed (40) hide show
  1. package/build/lib/controller/Controller.d.ts.map +1 -1
  2. package/build/lib/controller/Controller.js +190 -83
  3. package/build/lib/controller/Controller.js.map +1 -1
  4. package/build/lib/controller/ControllerStatistics.d.ts +22 -0
  5. package/build/lib/controller/ControllerStatistics.d.ts.map +1 -1
  6. package/build/lib/controller/Inclusion.d.ts +26 -2
  7. package/build/lib/controller/Inclusion.d.ts.map +1 -1
  8. package/build/lib/controller/Inclusion.js +22 -1
  9. package/build/lib/controller/Inclusion.js.map +1 -1
  10. package/build/lib/driver/Driver.d.ts +13 -0
  11. package/build/lib/driver/Driver.d.ts.map +1 -1
  12. package/build/lib/driver/Driver.js +130 -20
  13. package/build/lib/driver/Driver.js.map +1 -1
  14. package/build/lib/node/MockNodeBehaviors.d.ts.map +1 -1
  15. package/build/lib/node/MockNodeBehaviors.js +96 -0
  16. package/build/lib/node/MockNodeBehaviors.js.map +1 -1
  17. package/build/lib/node/Node.d.ts +9 -8
  18. package/build/lib/node/Node.d.ts.map +1 -1
  19. package/build/lib/node/Node.js +181 -68
  20. package/build/lib/node/Node.js.map +1 -1
  21. package/build/lib/serialapi/application/BridgeApplicationCommandRequest.d.ts.map +1 -1
  22. package/build/lib/serialapi/application/BridgeApplicationCommandRequest.js +10 -7
  23. package/build/lib/serialapi/application/BridgeApplicationCommandRequest.js.map +1 -1
  24. package/build/lib/serialapi/application/ShutdownMessages.d.ts +14 -0
  25. package/build/lib/serialapi/application/ShutdownMessages.d.ts.map +1 -0
  26. package/build/lib/serialapi/application/ShutdownMessages.js +36 -0
  27. package/build/lib/serialapi/application/ShutdownMessages.js.map +1 -0
  28. package/build/lib/serialapi/capability/GetSerialApiInitDataMessages.d.ts.map +1 -1
  29. package/build/lib/serialapi/capability/GetSerialApiInitDataMessages.js +3 -17
  30. package/build/lib/serialapi/capability/GetSerialApiInitDataMessages.js.map +1 -1
  31. package/build/lib/serialapi/transport/SendDataBridgeMessages.d.ts.map +1 -1
  32. package/build/lib/serialapi/transport/SendDataBridgeMessages.js +1 -0
  33. package/build/lib/serialapi/transport/SendDataBridgeMessages.js.map +1 -1
  34. package/build/lib/serialapi/transport/SendDataMessages.d.ts.map +1 -1
  35. package/build/lib/serialapi/transport/SendDataMessages.js +1 -0
  36. package/build/lib/serialapi/transport/SendDataMessages.js.map +1 -1
  37. package/build/lib/serialapi/transport/SendDataShared.d.ts.map +1 -1
  38. package/build/lib/serialapi/transport/SendDataShared.js +3 -0
  39. package/build/lib/serialapi/transport/SendDataShared.js.map +1 -1
  40. package/package.json +14 -14
@@ -1 +1 @@
1
- {"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../../src/lib/controller/Controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../../src/lib/controller/Controller.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ const Node_1 = require("../node/Node");
28
28
  const VirtualNode_1 = require("../node/VirtualNode");
29
29
  const _Types_1 = require("../node/_Types");
30
30
  const ApplicationUpdateRequest_1 = require("../serialapi/application/ApplicationUpdateRequest");
31
+ const ShutdownMessages_1 = require("../serialapi/application/ShutdownMessages");
31
32
  const GetControllerCapabilitiesMessages_1 = require("../serialapi/capability/GetControllerCapabilitiesMessages");
32
33
  const GetControllerVersionMessages_1 = require("../serialapi/capability/GetControllerVersionMessages");
33
34
  const GetProtocolVersionMessages_1 = require("../serialapi/capability/GetProtocolVersionMessages");
@@ -761,6 +762,27 @@ let ZWaveController = class ZWaveController extends shared_1.TypedEventEmitter {
761
762
  throw e;
762
763
  }
763
764
  }
765
+ /**
766
+ * @internal
767
+ */
768
+ async shutdown() {
769
+ // begin the reset process
770
+ try {
771
+ this.driver.controllerLog.print("Shutting down the Z-Wave API...");
772
+ const response = await this.driver.sendMessage(new ShutdownMessages_1.ShutdownRequest(this.driver));
773
+ if (response.success) {
774
+ this.driver.controllerLog.print("Z-Wave API was shut down");
775
+ }
776
+ else {
777
+ this.driver.controllerLog.print("Failed to shut down the Z-Wave API");
778
+ }
779
+ return response.success;
780
+ }
781
+ catch (e) {
782
+ this.driver.controllerLog.print(`shutdown failed: ${(0, shared_1.getErrorMessage)(e)}`, "error");
783
+ throw e;
784
+ }
785
+ }
764
786
  get inclusionState() {
765
787
  return this._inclusionState;
766
788
  }
@@ -1209,7 +1231,7 @@ supported CCs: ${nodeInfo.supportedCCs
1209
1231
  // If it is actually a sleeping device, it will be marked as such later
1210
1232
  newNode.markAsAlive();
1211
1233
  let inclCtrlr;
1212
- let lowSecurity = false;
1234
+ let bootstrapFailure;
1213
1235
  if (initiate) {
1214
1236
  inclCtrlr = this.nodes.getOrThrow(initiate.nodeId);
1215
1237
  this.driver.controllerLog.logNode(nodeId, `Initiate command received from node ${inclCtrlr.id}`);
@@ -1222,7 +1244,7 @@ supported CCs: ${nodeInfo.supportedCCs
1222
1244
  if (requestedNodeInfo)
1223
1245
  newNode.updateNodeInfo(requestedNodeInfo);
1224
1246
  // Perform S0/S2 bootstrapping
1225
- lowSecurity = (await this.proxyBootstrap(newNode, inclCtrlr)).lowSecurity;
1247
+ bootstrapFailure = await this.proxyBootstrap(newNode, inclCtrlr);
1226
1248
  }
1227
1249
  else {
1228
1250
  // No command received, bootstrap node by ourselves
@@ -1234,22 +1256,28 @@ supported CCs: ${nodeInfo.supportedCCs
1234
1256
  // * only use S0 if necessary,
1235
1257
  // * use no encryption otherwise
1236
1258
  if (newNode.supportsCC(core_1.CommandClasses["Security 2"])) {
1237
- await this.secureBootstrapS2(newNode);
1238
- const actualSecurityClass = newNode.getHighestSecurityClass();
1239
- if (actualSecurityClass == undefined ||
1240
- actualSecurityClass <
1241
- core_1.SecurityClass.S2_Unauthenticated) {
1242
- lowSecurity = true;
1259
+ bootstrapFailure = await this.secureBootstrapS2(newNode);
1260
+ if (bootstrapFailure == undefined) {
1261
+ const actualSecurityClass = newNode.getHighestSecurityClass();
1262
+ if (actualSecurityClass == undefined ||
1263
+ actualSecurityClass <
1264
+ core_1.SecurityClass.S2_Unauthenticated) {
1265
+ bootstrapFailure =
1266
+ Inclusion_1.SecurityBootstrapFailure.Unknown;
1267
+ }
1243
1268
  }
1244
1269
  }
1245
1270
  else if (newNode.supportsCC(core_1.CommandClasses.Security) &&
1246
1271
  (deviceClass.specific ?? deviceClass.generic)
1247
1272
  .requiresSecurity) {
1248
- await this.secureBootstrapS0(newNode);
1249
- const actualSecurityClass = newNode.getHighestSecurityClass();
1250
- if (actualSecurityClass == undefined ||
1251
- actualSecurityClass < core_1.SecurityClass.S0_Legacy) {
1252
- lowSecurity = true;
1273
+ bootstrapFailure = await this.secureBootstrapS0(newNode);
1274
+ if (bootstrapFailure == undefined) {
1275
+ const actualSecurityClass = newNode.getHighestSecurityClass();
1276
+ if (actualSecurityClass == undefined ||
1277
+ actualSecurityClass < core_1.SecurityClass.S0_Legacy) {
1278
+ bootstrapFailure =
1279
+ Inclusion_1.SecurityBootstrapFailure.Unknown;
1280
+ }
1253
1281
  }
1254
1282
  }
1255
1283
  else {
@@ -1262,11 +1290,14 @@ supported CCs: ${nodeInfo.supportedCCs
1262
1290
  // Bootstrap the node's lifelines, so it knows where the controller is
1263
1291
  await this.bootstrapLifelineAndWakeup(newNode);
1264
1292
  // We're done adding this node, notify listeners
1265
- const result = {};
1266
- if (lowSecurity)
1267
- result.lowSecurity = true;
1268
- this.emit("node added", newNode, result);
1293
+ const result = bootstrapFailure != undefined
1294
+ ? {
1295
+ lowSecurity: true,
1296
+ lowSecurityReason: bootstrapFailure,
1297
+ }
1298
+ : { lowSecurity: false };
1269
1299
  this.setInclusionState(Inclusion_1.InclusionState.Idle);
1300
+ this.emit("node added", newNode, result);
1270
1301
  if (inclCtrlr && initiate) {
1271
1302
  const inclCtrlrId = inclCtrlr.id;
1272
1303
  const step = initiate.step;
@@ -1324,16 +1355,18 @@ supported CCs: ${nodeInfo.supportedCCs
1324
1355
  newNode["applyDeviceClass"](deviceClass);
1325
1356
  }
1326
1357
  // Perform S0/S2 bootstrapping
1327
- const lowSecurity = (await this.proxyBootstrap(newNode, inclCtrlr))
1328
- .lowSecurity;
1358
+ const bootstrapFailure = await this.proxyBootstrap(newNode, inclCtrlr);
1329
1359
  // Bootstrap the node's lifelines, so it knows where the controller is
1330
1360
  await this.bootstrapLifelineAndWakeup(newNode);
1331
1361
  // We're done adding this node, notify listeners
1332
- const result = {};
1333
- if (lowSecurity)
1334
- result.lowSecurity = true;
1335
- this.emit("node added", newNode, result);
1362
+ const result = bootstrapFailure != undefined
1363
+ ? {
1364
+ lowSecurity: true,
1365
+ lowSecurityReason: bootstrapFailure,
1366
+ }
1367
+ : { lowSecurity: false };
1336
1368
  this.setInclusionState(Inclusion_1.InclusionState.Idle);
1369
+ this.emit("node added", newNode, result);
1337
1370
  // And notify the inclusion controller after we're done interviewing
1338
1371
  newNode.once("ready", () => {
1339
1372
  this.driver.controllerLog.logNode(inclCtrlr.nodeId, `Notifying inclusion controller of finished inclusion`);
@@ -1350,17 +1383,19 @@ supported CCs: ${nodeInfo.supportedCCs
1350
1383
  async proxyBootstrap(newNode, inclCtrlr) {
1351
1384
  // This part is to be done before the interview
1352
1385
  const deviceClass = newNode.deviceClass;
1353
- let lowSecurity = false;
1386
+ let bootstrapFailure;
1354
1387
  // Include using the default inclusion strategy:
1355
1388
  // * Use S2 if possible,
1356
1389
  // * only use S0 if necessary,
1357
1390
  // * use no encryption otherwise
1358
1391
  if (newNode.supportsCC(core_1.CommandClasses["Security 2"])) {
1359
- await this.secureBootstrapS2(newNode);
1360
- const actualSecurityClass = newNode.getHighestSecurityClass();
1361
- if (actualSecurityClass == undefined ||
1362
- actualSecurityClass < core_1.SecurityClass.S2_Unauthenticated) {
1363
- lowSecurity = true;
1392
+ bootstrapFailure = await this.secureBootstrapS2(newNode);
1393
+ if (bootstrapFailure == undefined) {
1394
+ const actualSecurityClass = newNode.getHighestSecurityClass();
1395
+ if (actualSecurityClass == undefined ||
1396
+ actualSecurityClass < core_1.SecurityClass.S2_Unauthenticated) {
1397
+ bootstrapFailure = Inclusion_1.SecurityBootstrapFailure.Unknown;
1398
+ }
1364
1399
  }
1365
1400
  }
1366
1401
  else if (newNode.supportsCC(core_1.CommandClasses.Security) &&
@@ -1379,6 +1414,12 @@ supported CCs: ${nodeInfo.supportedCCs
1379
1414
  : s0result.status === cc_1.InclusionControllerStatus.OK
1380
1415
  ? "succeeded"
1381
1416
  : "failed"}`);
1417
+ bootstrapFailure =
1418
+ s0result == undefined
1419
+ ? Inclusion_1.SecurityBootstrapFailure.Timeout
1420
+ : s0result.status === cc_1.InclusionControllerStatus.OK
1421
+ ? undefined
1422
+ : Inclusion_1.SecurityBootstrapFailure.Unknown;
1382
1423
  // When bootstrapping with S0, no other keys are granted
1383
1424
  for (const secClass of core_1.securityClassOrder) {
1384
1425
  if (secClass !== core_1.SecurityClass.S0_Legacy) {
@@ -1388,7 +1429,6 @@ supported CCs: ${nodeInfo.supportedCCs
1388
1429
  // Whether the S0 key is granted depends on the result
1389
1430
  // received from the inclusion controller
1390
1431
  newNode.securityClasses.set(core_1.SecurityClass.S0_Legacy, s0result?.status === cc_1.InclusionControllerStatus.OK);
1391
- lowSecurity = !newNode.hasSecurityClass(core_1.SecurityClass.S0_Legacy);
1392
1432
  }
1393
1433
  else {
1394
1434
  // Remember that no security classes were granted
@@ -1396,7 +1436,7 @@ supported CCs: ${nodeInfo.supportedCCs
1396
1436
  newNode.securityClasses.set(secClass, false);
1397
1437
  }
1398
1438
  }
1399
- return { lowSecurity };
1439
+ return bootstrapFailure;
1400
1440
  }
1401
1441
  async secureBootstrapS0(node, assumeSupported = false) {
1402
1442
  // When bootstrapping with S0, no other keys are granted
@@ -1408,7 +1448,7 @@ supported CCs: ${nodeInfo.supportedCCs
1408
1448
  if (!this.driver.securityManager) {
1409
1449
  // Remember that the node was NOT granted the S0 security class
1410
1450
  node.securityClasses.set(core_1.SecurityClass.S0_Legacy, false);
1411
- return;
1451
+ return Inclusion_1.SecurityBootstrapFailure.NoKeysConfigured;
1412
1452
  }
1413
1453
  // If security has been set up and we are allowed to include the node securely, try to do it
1414
1454
  try {
@@ -1441,20 +1481,24 @@ supported CCs: ${nodeInfo.supportedCCs
1441
1481
  }
1442
1482
  catch (e) {
1443
1483
  let errorMessage = `Security S0 bootstrapping failed, the node was not granted the S0 security class`;
1484
+ let failure = Inclusion_1.SecurityBootstrapFailure.Unknown;
1444
1485
  if (!(0, core_1.isZWaveError)(e)) {
1445
1486
  errorMessage += `: ${e}`;
1446
1487
  }
1447
1488
  else if (e.code === core_1.ZWaveErrorCodes.Controller_MessageExpired) {
1448
1489
  errorMessage += ": a secure inclusion timer has elapsed.";
1490
+ failure = Inclusion_1.SecurityBootstrapFailure.Timeout;
1449
1491
  }
1450
1492
  else if (e.code !== core_1.ZWaveErrorCodes.Controller_MessageDropped &&
1451
1493
  e.code !== core_1.ZWaveErrorCodes.Controller_NodeTimeout) {
1452
1494
  errorMessage += `: ${e.message}`;
1495
+ failure = Inclusion_1.SecurityBootstrapFailure.Timeout;
1453
1496
  }
1454
1497
  this.driver.controllerLog.logNode(node.id, errorMessage, "warn");
1455
1498
  // Remember that the node was NOT granted the S0 security class
1456
1499
  node.securityClasses.set(core_1.SecurityClass.S0_Legacy, false);
1457
1500
  node.removeCC(core_1.CommandClasses.Security);
1501
+ return failure;
1458
1502
  }
1459
1503
  }
1460
1504
  /**
@@ -1479,7 +1523,7 @@ supported CCs: ${nodeInfo.supportedCCs
1479
1523
  if (!this.driver.securityManager2) {
1480
1524
  // Remember that the node was NOT granted any S2 security classes
1481
1525
  unGrantSecurityClasses();
1482
- return;
1526
+ return Inclusion_1.SecurityBootstrapFailure.NoKeysConfigured;
1483
1527
  }
1484
1528
  let userCallbacks;
1485
1529
  const inclusionOptions = this
@@ -1520,7 +1564,7 @@ supported CCs: ${nodeInfo.supportedCCs
1520
1564
  // Cannot bootstrap S2 without user callbacks, abort.
1521
1565
  // Remember that the node was NOT granted any S2 security classes
1522
1566
  unGrantSecurityClasses();
1523
- return;
1567
+ return Inclusion_1.SecurityBootstrapFailure.S2NoUserCallbacks;
1524
1568
  }
1525
1569
  // When replacing a node, we receive no NIF, so we cannot know that the Security CC is supported.
1526
1570
  // Querying the node info however kicks some devices out of secure inclusion mode.
@@ -1558,7 +1602,7 @@ supported CCs: ${nodeInfo.supportedCCs
1558
1602
  this._bootstrappingS2NodeId = undefined;
1559
1603
  this.cancelBootstrapS2Promise = undefined;
1560
1604
  };
1561
- const abortUser = () => {
1605
+ const abortUser = async () => {
1562
1606
  setImmediate(() => {
1563
1607
  try {
1564
1608
  userCallbacks.abort();
@@ -1567,7 +1611,8 @@ supported CCs: ${nodeInfo.supportedCCs
1567
1611
  // ignore errors in application callbacks
1568
1612
  }
1569
1613
  });
1570
- return abort(cc_1.KEXFailType.BootstrappingCanceled);
1614
+ await abort(cc_1.KEXFailType.BootstrappingCanceled);
1615
+ return Inclusion_1.SecurityBootstrapFailure.UserCanceled;
1571
1616
  };
1572
1617
  // Ask the node for its desired security classes and key exchange params
1573
1618
  const kexParams = await api
@@ -1578,7 +1623,8 @@ supported CCs: ${nodeInfo.supportedCCs
1578
1623
  message: `Security S2 bootstrapping failed: did not receive the node's desired security classes.`,
1579
1624
  level: "warn",
1580
1625
  });
1581
- return abort();
1626
+ await abort();
1627
+ return Inclusion_1.SecurityBootstrapFailure.Timeout;
1582
1628
  }
1583
1629
  // Validate the response
1584
1630
  // At the time of implementation, only these are defined
@@ -1587,14 +1633,16 @@ supported CCs: ${nodeInfo.supportedCCs
1587
1633
  message: `Security S2 bootstrapping failed: No supported key exchange scheme.`,
1588
1634
  level: "warn",
1589
1635
  });
1590
- return abort(cc_1.KEXFailType.NoSupportedScheme);
1636
+ await abort(cc_1.KEXFailType.NoSupportedScheme);
1637
+ return Inclusion_1.SecurityBootstrapFailure.ParameterMismatch;
1591
1638
  }
1592
1639
  else if (!kexParams.supportedECDHProfiles.includes(cc_1.ECDHProfiles.Curve25519)) {
1593
1640
  this.driver.controllerLog.logNode(node.id, {
1594
1641
  message: `Security S2 bootstrapping failed: No supported ECDH profile.`,
1595
1642
  level: "warn",
1596
1643
  });
1597
- return abort(cc_1.KEXFailType.NoSupportedCurve);
1644
+ await abort(cc_1.KEXFailType.NoSupportedCurve);
1645
+ return Inclusion_1.SecurityBootstrapFailure.ParameterMismatch;
1598
1646
  }
1599
1647
  const supportedKeys = kexParams.requestedKeys.filter((k) => core_1.securityClassOrder.includes(k));
1600
1648
  if (!supportedKeys.length) {
@@ -1602,7 +1650,8 @@ supported CCs: ${nodeInfo.supportedCCs
1602
1650
  message: `Security S2 bootstrapping failed: None of the requested security classes are supported.`,
1603
1651
  level: "warn",
1604
1652
  });
1605
- return abort(cc_1.KEXFailType.NoKeyMatch);
1653
+ await abort(cc_1.KEXFailType.NoKeyMatch);
1654
+ return Inclusion_1.SecurityBootstrapFailure.ParameterMismatch;
1606
1655
  }
1607
1656
  // TODO: Validate client-side auth if requested
1608
1657
  const grantResult = await Promise.race([
@@ -1649,7 +1698,8 @@ supported CCs: ${nodeInfo.supportedCCs
1649
1698
  direction: "inbound",
1650
1699
  level: "warn",
1651
1700
  });
1652
- return abort();
1701
+ await abort();
1702
+ return Inclusion_1.SecurityBootstrapFailure.NodeCanceled;
1653
1703
  }
1654
1704
  const nodePublicKey = pubKeyResponse.publicKey;
1655
1705
  // This is the starting point of the timer TAI2.
@@ -1732,7 +1782,8 @@ supported CCs: ${nodeInfo.supportedCCs
1732
1782
  if (typeof keySetEcho === "number") {
1733
1783
  // The bootstrapping process was canceled - this is most likely because the PIN was incorrect
1734
1784
  // and the node's commands cannot be decoded
1735
- return abort(keySetEcho);
1785
+ await abort(keySetEcho);
1786
+ return Inclusion_1.SecurityBootstrapFailure.S2IncorrectPIN;
1736
1787
  }
1737
1788
  // Validate that the received command contains the correct list of keys
1738
1789
  if (keySetEcho instanceof cc_1.Security2CCKEXFail || !keySetEcho.echo) {
@@ -1741,7 +1792,8 @@ supported CCs: ${nodeInfo.supportedCCs
1741
1792
  direction: "inbound",
1742
1793
  level: "warn",
1743
1794
  });
1744
- return abort();
1795
+ await abort();
1796
+ return Inclusion_1.SecurityBootstrapFailure.NodeCanceled;
1745
1797
  }
1746
1798
  else if (keySetEcho.grantedKeys.length !== grantedKeys.length ||
1747
1799
  !keySetEcho.grantedKeys.every((k) => grantedKeys.includes(k))) {
@@ -1749,7 +1801,8 @@ supported CCs: ${nodeInfo.supportedCCs
1749
1801
  message: `Security S2 bootstrapping failed: Granted key mismatch.`,
1750
1802
  level: "warn",
1751
1803
  });
1752
- return abort(cc_1.KEXFailType.WrongSecurityLevel);
1804
+ await abort(cc_1.KEXFailType.WrongSecurityLevel);
1805
+ return Inclusion_1.SecurityBootstrapFailure.S2WrongSecurityLevel;
1753
1806
  }
1754
1807
  // Confirm the keys - the node will start requesting the granted keys in response
1755
1808
  await api.confirmGrantedKeys({
@@ -1768,7 +1821,8 @@ supported CCs: ${nodeInfo.supportedCCs
1768
1821
  direction: "inbound",
1769
1822
  level: "warn",
1770
1823
  });
1771
- return abort();
1824
+ await abort();
1825
+ return Inclusion_1.SecurityBootstrapFailure.NodeCanceled;
1772
1826
  }
1773
1827
  const securityClass = keyRequest.requestedKey;
1774
1828
  // Ensure it was received encrypted with the temporary key
@@ -1777,7 +1831,8 @@ supported CCs: ${nodeInfo.supportedCCs
1777
1831
  message: `Security S2 bootstrapping failed: Node used wrong key to communicate.`,
1778
1832
  level: "warn",
1779
1833
  });
1780
- return abort(cc_1.KEXFailType.WrongSecurityLevel);
1834
+ await abort(cc_1.KEXFailType.WrongSecurityLevel);
1835
+ return Inclusion_1.SecurityBootstrapFailure.S2WrongSecurityLevel;
1781
1836
  }
1782
1837
  else if (!grantedKeys.includes(securityClass)) {
1783
1838
  // and that the requested key is one of the granted keys
@@ -1785,7 +1840,8 @@ supported CCs: ${nodeInfo.supportedCCs
1785
1840
  message: `Security S2 bootstrapping failed: Node used key it was not granted.`,
1786
1841
  level: "warn",
1787
1842
  });
1788
- return abort(cc_1.KEXFailType.KeyNotGranted);
1843
+ await abort(cc_1.KEXFailType.KeyNotGranted);
1844
+ return Inclusion_1.SecurityBootstrapFailure.S2WrongSecurityLevel;
1789
1845
  }
1790
1846
  // Send the node the requested key
1791
1847
  await api.sendNetworkKey(securityClass, this.driver.securityManager2.getKeysForSecurityClass(securityClass).pnk);
@@ -1801,14 +1857,16 @@ supported CCs: ${nodeInfo.supportedCCs
1801
1857
  direction: "inbound",
1802
1858
  level: "warn",
1803
1859
  });
1804
- return abort();
1860
+ await abort();
1861
+ return Inclusion_1.SecurityBootstrapFailure.NodeCanceled;
1805
1862
  }
1806
1863
  if (!this.driver.securityManager2.hasUsedSecurityClass(node.id, securityClass)) {
1807
1864
  this.driver.controllerLog.logNode(node.id, {
1808
1865
  message: `Security S2 bootstrapping failed: Node used wrong key to communicate.`,
1809
1866
  level: "warn",
1810
1867
  });
1811
- return abort(cc_1.KEXFailType.NoVerify);
1868
+ await abort(cc_1.KEXFailType.NoVerify);
1869
+ return Inclusion_1.SecurityBootstrapFailure.S2WrongSecurityLevel;
1812
1870
  }
1813
1871
  // Tell the node that verification was successful. We need to reset the SPAN state
1814
1872
  // so the temporary key will be used again. Also we don't know in which order the node requests the keys
@@ -1826,7 +1884,8 @@ supported CCs: ${nodeInfo.supportedCCs
1826
1884
  message: `Security S2 bootstrapping failed: Node did not confirm completion of the key exchange`,
1827
1885
  level: "warn",
1828
1886
  });
1829
- return abort();
1887
+ await abort();
1888
+ return Inclusion_1.SecurityBootstrapFailure.Timeout;
1830
1889
  }
1831
1890
  // Remember all security classes we have granted
1832
1891
  for (const securityClass of core_1.securityClassOrder) {
@@ -2069,16 +2128,19 @@ supported CCs: ${nodeInfo.supportedCCs
2069
2128
  newNode.hasSUCReturnRoute = await this.assignSUCReturnRoute(newNode.id);
2070
2129
  const opts = this._inclusionOptions;
2071
2130
  // The default inclusion strategy is: Use S2 if possible, only use S0 if necessary, use no encryption otherwise
2072
- let lowSecurity = false;
2131
+ let bootstrapFailure;
2073
2132
  if (newNode.supportsCC(core_1.CommandClasses["Security 2"]) &&
2074
2133
  (opts.strategy === Inclusion_1.InclusionStrategy.Default ||
2075
2134
  opts.strategy === Inclusion_1.InclusionStrategy.Security_S2 ||
2076
2135
  opts.strategy === Inclusion_1.InclusionStrategy.SmartStart)) {
2077
- await this.secureBootstrapS2(newNode);
2078
- const actualSecurityClass = newNode.getHighestSecurityClass();
2079
- if (actualSecurityClass == undefined ||
2080
- actualSecurityClass < core_1.SecurityClass.S2_Unauthenticated) {
2081
- lowSecurity = true;
2136
+ bootstrapFailure = await this.secureBootstrapS2(newNode);
2137
+ if (bootstrapFailure == undefined) {
2138
+ const actualSecurityClass = newNode.getHighestSecurityClass();
2139
+ if (actualSecurityClass == undefined ||
2140
+ actualSecurityClass <
2141
+ core_1.SecurityClass.S2_Unauthenticated) {
2142
+ bootstrapFailure = Inclusion_1.SecurityBootstrapFailure.Unknown;
2143
+ }
2082
2144
  }
2083
2145
  }
2084
2146
  else if (newNode.supportsCC(core_1.CommandClasses.Security) &&
@@ -2087,11 +2149,13 @@ supported CCs: ${nodeInfo.supportedCCs
2087
2149
  (opts.forceSecurity ||
2088
2150
  (newNode.deviceClass?.specific ??
2089
2151
  newNode.deviceClass?.generic)?.requiresSecurity)))) {
2090
- await this.secureBootstrapS0(newNode);
2091
- const actualSecurityClass = newNode.getHighestSecurityClass();
2092
- if (actualSecurityClass == undefined ||
2093
- actualSecurityClass < core_1.SecurityClass.S0_Legacy) {
2094
- lowSecurity = true;
2152
+ bootstrapFailure = await this.secureBootstrapS0(newNode);
2153
+ if (bootstrapFailure == undefined) {
2154
+ const actualSecurityClass = newNode.getHighestSecurityClass();
2155
+ if (actualSecurityClass == undefined ||
2156
+ actualSecurityClass < core_1.SecurityClass.S0_Legacy) {
2157
+ bootstrapFailure = Inclusion_1.SecurityBootstrapFailure.Unknown;
2158
+ }
2095
2159
  }
2096
2160
  }
2097
2161
  else {
@@ -2104,11 +2168,14 @@ supported CCs: ${nodeInfo.supportedCCs
2104
2168
  // Bootstrap the node's lifelines, so it knows where the controller is
2105
2169
  await this.bootstrapLifelineAndWakeup(newNode);
2106
2170
  // We're done adding this node, notify listeners
2107
- const result = {};
2108
- if (lowSecurity)
2109
- result.lowSecurity = true;
2110
- this.emit("node added", newNode, result);
2171
+ const result = bootstrapFailure != undefined
2172
+ ? {
2173
+ lowSecurity: true,
2174
+ lowSecurityReason: bootstrapFailure,
2175
+ }
2176
+ : { lowSecurity: false };
2111
2177
  this.setInclusionState(Inclusion_1.InclusionState.Idle);
2178
+ this.emit("node added", newNode, result);
2112
2179
  return true; // Don't invoke any more handlers
2113
2180
  }
2114
2181
  }
@@ -2173,22 +2240,28 @@ supported CCs: ${nodeInfo.supportedCCs
2173
2240
  // Try perform the security bootstrap process. When replacing a node, we don't know any supported CCs
2174
2241
  // yet, so we need to trust the chosen inclusion strategy.
2175
2242
  const strategy = this._inclusionOptions.strategy;
2176
- let lowSecurity = false;
2243
+ let bootstrapFailure;
2177
2244
  if (strategy === Inclusion_1.InclusionStrategy.Security_S2) {
2178
- await this.secureBootstrapS2(newNode, true);
2179
- const actualSecurityClass = newNode.getHighestSecurityClass();
2180
- if (actualSecurityClass == undefined ||
2181
- actualSecurityClass <
2182
- core_1.SecurityClass.S2_Unauthenticated) {
2183
- lowSecurity = true;
2245
+ bootstrapFailure = await this.secureBootstrapS2(newNode, true);
2246
+ if (bootstrapFailure == undefined) {
2247
+ const actualSecurityClass = newNode.getHighestSecurityClass();
2248
+ if (actualSecurityClass == undefined ||
2249
+ actualSecurityClass <
2250
+ core_1.SecurityClass.S2_Unauthenticated) {
2251
+ bootstrapFailure =
2252
+ Inclusion_1.SecurityBootstrapFailure.Unknown;
2253
+ }
2184
2254
  }
2185
2255
  }
2186
2256
  else if (strategy === Inclusion_1.InclusionStrategy.Security_S0) {
2187
- await this.secureBootstrapS0(newNode, true);
2188
- const actualSecurityClass = newNode.getHighestSecurityClass();
2189
- if (actualSecurityClass == undefined ||
2190
- actualSecurityClass < core_1.SecurityClass.S0_Legacy) {
2191
- lowSecurity = true;
2257
+ bootstrapFailure = await this.secureBootstrapS0(newNode, true);
2258
+ if (bootstrapFailure == undefined) {
2259
+ const actualSecurityClass = newNode.getHighestSecurityClass();
2260
+ if (actualSecurityClass == undefined ||
2261
+ actualSecurityClass < core_1.SecurityClass.S0_Legacy) {
2262
+ bootstrapFailure =
2263
+ Inclusion_1.SecurityBootstrapFailure.Unknown;
2264
+ }
2192
2265
  }
2193
2266
  }
2194
2267
  else {
@@ -2200,9 +2273,12 @@ supported CCs: ${nodeInfo.supportedCCs
2200
2273
  // Bootstrap the node's lifelines, so it knows where the controller is
2201
2274
  await this.bootstrapLifelineAndWakeup(newNode);
2202
2275
  // We're done adding this node, notify listeners. This also kicks off the node interview
2203
- const result = {};
2204
- if (lowSecurity)
2205
- result.lowSecurity = true;
2276
+ const result = bootstrapFailure != undefined
2277
+ ? {
2278
+ lowSecurity: true,
2279
+ lowSecurityReason: bootstrapFailure,
2280
+ }
2281
+ : { lowSecurity: false };
2206
2282
  this.setInclusionState(Inclusion_1.InclusionState.Idle);
2207
2283
  this.emit("node added", newNode, result);
2208
2284
  }
@@ -2836,10 +2912,15 @@ ${associatedNodes.join(", ")}`,
2836
2912
  /**
2837
2913
  * Adds associations to a node or endpoint
2838
2914
  */
2839
- addAssociations(source, group, destinations) {
2915
+ async addAssociations(source, group, destinations) {
2840
2916
  const node = this.nodes.getOrThrow(source.nodeId);
2841
2917
  const endpoint = node.getEndpointOrThrow(source.endpoint ?? 0);
2842
- return cc_1.utils.addAssociations(this.driver, endpoint, group, destinations);
2918
+ await cc_1.utils.addAssociations(this.driver, endpoint, group, destinations);
2919
+ // Nodes need a return route to be able to send commands to other nodes
2920
+ const destinationNodeIDs = (0, arrays_1.distinct)(destinations.map((d) => d.nodeId)).filter((id) => id !== this.ownNodeId);
2921
+ for (const id of destinationNodeIDs) {
2922
+ await this.assignReturnRoute(source.nodeId, id);
2923
+ }
2843
2924
  }
2844
2925
  /**
2845
2926
  * Removes the given associations from a node or endpoint
@@ -3621,7 +3702,33 @@ ${associatedNodes.join(", ")}`,
3621
3702
  */
3622
3703
  async getBackgroundRSSI() {
3623
3704
  const ret = await this.driver.sendMessage(new GetBackgroundRSSIMessages_1.GetBackgroundRSSIRequest(this.driver));
3624
- return (0, shared_1.pick)(ret, ["rssiChannel0", "rssiChannel1", "rssiChannel2"]);
3705
+ const rssi = (0, shared_1.pick)(ret, [
3706
+ "rssiChannel0",
3707
+ "rssiChannel1",
3708
+ "rssiChannel2",
3709
+ ]);
3710
+ this.updateStatistics((current) => {
3711
+ const updated = { ...current };
3712
+ updated.backgroundRSSI = {};
3713
+ // Average all channels, defaulting to the current measurement
3714
+ updated.backgroundRSSI.channel0 = {
3715
+ current: rssi.rssiChannel0,
3716
+ average: (0, core_1.averageRSSI)(current.backgroundRSSI?.channel0.average, rssi.rssiChannel0, 0.9),
3717
+ };
3718
+ updated.backgroundRSSI.channel1 = {
3719
+ current: rssi.rssiChannel1,
3720
+ average: (0, core_1.averageRSSI)(current.backgroundRSSI?.channel1.average, rssi.rssiChannel1, 0.9),
3721
+ };
3722
+ if (rssi.rssiChannel2 != undefined) {
3723
+ updated.backgroundRSSI.channel2 = {
3724
+ current: rssi.rssiChannel2,
3725
+ average: (0, core_1.averageRSSI)(current.backgroundRSSI?.channel2?.average, rssi.rssiChannel2, 0.9),
3726
+ };
3727
+ }
3728
+ updated.backgroundRSSI.timestamp = Date.now();
3729
+ return updated;
3730
+ });
3731
+ return rssi;
3625
3732
  }
3626
3733
  /**
3627
3734
  *