@zwave-js/cc 15.29.0 → 15.31.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 (166) hide show
  1. package/build/cjs/cc/AlarmSensorCC.d.ts +3 -1
  2. package/build/cjs/cc/AlarmSensorCC.js +22 -2
  3. package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
  4. package/build/cjs/cc/BarrierOperatorCC.d.ts +6 -3
  5. package/build/cjs/cc/BarrierOperatorCC.js +40 -6
  6. package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
  7. package/build/cjs/cc/CentralSceneCC.d.ts +4 -1
  8. package/build/cjs/cc/CentralSceneCC.js +34 -2
  9. package/build/cjs/cc/CentralSceneCC.js.map +2 -2
  10. package/build/cjs/cc/ClimateControlScheduleCC.d.ts +6 -3
  11. package/build/cjs/cc/ClimateControlScheduleCC.js +54 -6
  12. package/build/cjs/cc/ClimateControlScheduleCC.js.map +2 -2
  13. package/build/cjs/cc/ClockCC.d.ts +2 -1
  14. package/build/cjs/cc/ClockCC.js +19 -2
  15. package/build/cjs/cc/ClockCC.js.map +2 -2
  16. package/build/cjs/cc/ConfigurationCC.d.ts +3 -2
  17. package/build/cjs/cc/ConfigurationCC.js +61 -4
  18. package/build/cjs/cc/ConfigurationCC.js.map +2 -2
  19. package/build/cjs/cc/DoorLockLoggingCC.d.ts +3 -1
  20. package/build/cjs/cc/DoorLockLoggingCC.js +35 -2
  21. package/build/cjs/cc/DoorLockLoggingCC.js.map +2 -2
  22. package/build/cjs/cc/EntryControlCC.d.ts +5 -1
  23. package/build/cjs/cc/EntryControlCC.js +57 -2
  24. package/build/cjs/cc/EntryControlCC.js.map +2 -2
  25. package/build/cjs/cc/HumidityControlModeCC.d.ts +3 -1
  26. package/build/cjs/cc/HumidityControlModeCC.js +14 -2
  27. package/build/cjs/cc/HumidityControlModeCC.js.map +2 -2
  28. package/build/cjs/cc/HumidityControlOperatingStateCC.d.ts +3 -1
  29. package/build/cjs/cc/HumidityControlOperatingStateCC.js +4 -0
  30. package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +2 -2
  31. package/build/cjs/cc/HumidityControlSetpointCC.d.ts +8 -4
  32. package/build/cjs/cc/HumidityControlSetpointCC.js +51 -8
  33. package/build/cjs/cc/HumidityControlSetpointCC.js.map +2 -2
  34. package/build/cjs/cc/IrrigationCC.d.ts +15 -9
  35. package/build/cjs/cc/IrrigationCC.js +260 -24
  36. package/build/cjs/cc/IrrigationCC.js.map +2 -2
  37. package/build/cjs/cc/LanguageCC.d.ts +2 -1
  38. package/build/cjs/cc/LanguageCC.js +18 -2
  39. package/build/cjs/cc/LanguageCC.js.map +2 -2
  40. package/build/cjs/cc/MultiChannelCC.d.ts +2 -1
  41. package/build/cjs/cc/MultiChannelCC.js +14 -2
  42. package/build/cjs/cc/MultiChannelCC.js.map +2 -2
  43. package/build/cjs/cc/SceneActuatorConfigurationCC.d.ts +3 -2
  44. package/build/cjs/cc/SceneActuatorConfigurationCC.js +38 -5
  45. package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +2 -2
  46. package/build/cjs/cc/SceneControllerConfigurationCC.d.ts +3 -2
  47. package/build/cjs/cc/SceneControllerConfigurationCC.js +25 -4
  48. package/build/cjs/cc/SceneControllerConfigurationCC.js.map +2 -2
  49. package/build/cjs/cc/ThermostatFanModeCC.d.ts +3 -1
  50. package/build/cjs/cc/ThermostatFanModeCC.js +17 -2
  51. package/build/cjs/cc/ThermostatFanModeCC.js.map +2 -2
  52. package/build/cjs/cc/ThermostatFanStateCC.d.ts +3 -1
  53. package/build/cjs/cc/ThermostatFanStateCC.js +4 -0
  54. package/build/cjs/cc/ThermostatFanStateCC.js.map +2 -2
  55. package/build/cjs/cc/ThermostatModeCC.js +2 -2
  56. package/build/cjs/cc/ThermostatModeCC.js.map +2 -2
  57. package/build/cjs/cc/TimeCC.d.ts +1 -1
  58. package/build/cjs/cc/TimeCC.js +11 -2
  59. package/build/cjs/cc/TimeCC.js.map +2 -2
  60. package/build/cjs/cc/UserCodeCC.d.ts +2 -1
  61. package/build/cjs/cc/UserCodeCC.js +31 -2
  62. package/build/cjs/cc/UserCodeCC.js.map +2 -2
  63. package/build/cjs/cc/VersionCC.d.ts +1 -0
  64. package/build/cjs/cc/VersionCC.js +32 -0
  65. package/build/cjs/cc/VersionCC.js.map +2 -2
  66. package/build/cjs/cc/WakeUpCC.d.ts +2 -0
  67. package/build/cjs/cc/WakeUpCC.js +14 -0
  68. package/build/cjs/cc/WakeUpCC.js.map +2 -2
  69. package/build/cjs/cc/manufacturerProprietary/FibaroCC.d.ts +2 -1
  70. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js +30 -2
  71. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js.map +2 -2
  72. package/build/esm/cc/AlarmSensorCC.d.ts +3 -1
  73. package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
  74. package/build/esm/cc/AlarmSensorCC.js +25 -7
  75. package/build/esm/cc/AlarmSensorCC.js.map +1 -1
  76. package/build/esm/cc/BarrierOperatorCC.d.ts +6 -3
  77. package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
  78. package/build/esm/cc/BarrierOperatorCC.js +45 -18
  79. package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
  80. package/build/esm/cc/CentralSceneCC.d.ts +4 -1
  81. package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
  82. package/build/esm/cc/CentralSceneCC.js +35 -6
  83. package/build/esm/cc/CentralSceneCC.js.map +1 -1
  84. package/build/esm/cc/ClimateControlScheduleCC.d.ts +6 -3
  85. package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
  86. package/build/esm/cc/ClimateControlScheduleCC.js +57 -16
  87. package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
  88. package/build/esm/cc/ClockCC.d.ts +2 -1
  89. package/build/esm/cc/ClockCC.d.ts.map +1 -1
  90. package/build/esm/cc/ClockCC.js +20 -7
  91. package/build/esm/cc/ClockCC.js.map +1 -1
  92. package/build/esm/cc/ConfigurationCC.d.ts +3 -2
  93. package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
  94. package/build/esm/cc/ConfigurationCC.js +63 -12
  95. package/build/esm/cc/ConfigurationCC.js.map +1 -1
  96. package/build/esm/cc/DoorLockLoggingCC.d.ts +3 -1
  97. package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
  98. package/build/esm/cc/DoorLockLoggingCC.js +39 -5
  99. package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
  100. package/build/esm/cc/EntryControlCC.d.ts +5 -1
  101. package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
  102. package/build/esm/cc/EntryControlCC.js +64 -7
  103. package/build/esm/cc/EntryControlCC.js.map +1 -1
  104. package/build/esm/cc/HumidityControlModeCC.d.ts +3 -1
  105. package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
  106. package/build/esm/cc/HumidityControlModeCC.js +15 -7
  107. package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
  108. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts +3 -1
  109. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
  110. package/build/esm/cc/HumidityControlOperatingStateCC.js +5 -1
  111. package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
  112. package/build/esm/cc/HumidityControlSetpointCC.d.ts +8 -4
  113. package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
  114. package/build/esm/cc/HumidityControlSetpointCC.js +52 -25
  115. package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
  116. package/build/esm/cc/IrrigationCC.d.ts +15 -9
  117. package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
  118. package/build/esm/cc/IrrigationCC.js +268 -61
  119. package/build/esm/cc/IrrigationCC.js.map +1 -1
  120. package/build/esm/cc/LanguageCC.d.ts +2 -1
  121. package/build/esm/cc/LanguageCC.d.ts.map +1 -1
  122. package/build/esm/cc/LanguageCC.js +18 -6
  123. package/build/esm/cc/LanguageCC.js.map +1 -1
  124. package/build/esm/cc/MultiChannelCC.d.ts +2 -1
  125. package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
  126. package/build/esm/cc/MultiChannelCC.js +15 -7
  127. package/build/esm/cc/MultiChannelCC.js.map +1 -1
  128. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts +3 -2
  129. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts.map +1 -1
  130. package/build/esm/cc/SceneActuatorConfigurationCC.js +39 -13
  131. package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
  132. package/build/esm/cc/SceneControllerConfigurationCC.d.ts +3 -2
  133. package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
  134. package/build/esm/cc/SceneControllerConfigurationCC.js +25 -12
  135. package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
  136. package/build/esm/cc/ThermostatFanModeCC.d.ts +3 -1
  137. package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
  138. package/build/esm/cc/ThermostatFanModeCC.js +18 -7
  139. package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
  140. package/build/esm/cc/ThermostatFanStateCC.d.ts +3 -1
  141. package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
  142. package/build/esm/cc/ThermostatFanStateCC.js +5 -1
  143. package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
  144. package/build/esm/cc/ThermostatModeCC.js +2 -2
  145. package/build/esm/cc/ThermostatModeCC.js.map +1 -1
  146. package/build/esm/cc/TimeCC.d.ts +1 -1
  147. package/build/esm/cc/TimeCC.d.ts.map +1 -1
  148. package/build/esm/cc/TimeCC.js +12 -7
  149. package/build/esm/cc/TimeCC.js.map +1 -1
  150. package/build/esm/cc/UserCodeCC.d.ts +2 -1
  151. package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
  152. package/build/esm/cc/UserCodeCC.js +31 -6
  153. package/build/esm/cc/UserCodeCC.js.map +1 -1
  154. package/build/esm/cc/VersionCC.d.ts +1 -0
  155. package/build/esm/cc/VersionCC.d.ts.map +1 -1
  156. package/build/esm/cc/VersionCC.js +34 -0
  157. package/build/esm/cc/VersionCC.js.map +1 -1
  158. package/build/esm/cc/WakeUpCC.d.ts +2 -0
  159. package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
  160. package/build/esm/cc/WakeUpCC.js +14 -0
  161. package/build/esm/cc/WakeUpCC.js.map +1 -1
  162. package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts +2 -1
  163. package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts.map +1 -1
  164. package/build/esm/cc/manufacturerProprietary/FibaroCC.js +34 -4
  165. package/build/esm/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
  166. package/package.json +2 -2
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src_gen/cc/VersionCC.ts"],
4
- "sourcesContent": ["import * as __validateArgs from \"./VersionCC._validateArgs.js\";\nconst { validateArgs_VersionCCAPI_sendReport, validateArgs_VersionCCAPI_getCCVersion, validateArgs_VersionCCAPI_reportCCVersion } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, SecurityClass, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, ZWaveLibraryTypes, enumValuesToMetadataStates, getCCName, securityClassIsS2, securityClassOrder, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, type BytesView, getEnumMemberName, num2hex, pick, } from \"@zwave-js/shared\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, getImplementedVersion, implementedVersion, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { VersionCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { VersionCCValues } from \"./_CCValues.generated.js\";\nexport { VersionCCValues };\nfunction parseVersion(buffer: BytesView): string {\n if (buffer[0] === 0 && buffer[1] === 0 && buffer[2] === 0)\n return \"unused\";\n return `${buffer[0]}.${buffer[1]}.${buffer[2]}`;\n}\n// @noSetValueAPI This CC is read-only\n@API(CommandClasses.Version)\nexport class VersionCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: VersionCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case VersionCommand.Get:\n case VersionCommand.Report:\n case VersionCommand.CommandClassGet:\n case VersionCommand.CommandClassReport:\n return true; // This is mandatory\n case VersionCommand.CapabilitiesGet:\n case VersionCommand.CapabilitiesReport:\n case VersionCommand.ZWaveSoftwareReport:\n return this.version >= 3;\n case VersionCommand.ZWaveSoftwareGet: {\n return this.getValueDB().getValue<boolean>(VersionCCValues.supportsZWaveSoftwareGet.endpoint(this.endpoint.index));\n }\n }\n return super.supportsCommand(cmd);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.Get);\n const cc = new VersionCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"libraryType\",\n \"protocolVersion\",\n \"firmwareVersions\",\n \"hardwareVersion\",\n ]);\n }\n }\n @validateArgs_VersionCCAPI_sendReport()\n public async sendReport(options: VersionCCReportOptions): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.Report);\n const cc = new VersionCCReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_VersionCCAPI_getCCVersion()\n public async getCCVersion(requestedCC: CommandClasses): Promise<MaybeNotKnown<number>> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CommandClassGet);\n const cc = new VersionCCCommandClassGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n requestedCC,\n });\n const response = await this.host.sendCommand<VersionCCCommandClassReport>(cc, this.commandOptions);\n return response?.ccVersion;\n }\n @validateArgs_VersionCCAPI_reportCCVersion()\n /**\n * @param version The version to report. If not given, the implemented version will be used for the report.\n */\n public async reportCCVersion(requestedCC: CommandClasses, version?: number): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CommandClassReport);\n let ccVersion: number;\n switch (requestedCC) {\n case CommandClasses[\"Z-Wave Protocol\"]:\n case CommandClasses[\"Z-Wave Long Range\"]:\n // These two are only for internal use\n ccVersion = 0;\n break;\n case CommandClasses.Hail:\n case CommandClasses[\"Manufacturer Proprietary\"]:\n // These CCs are obsolete, we cannot enter them in the certification portal\n // but not doing so fails a certification test. Just respond that they\n // are not supported or controlled\n ccVersion = 0;\n break;\n default:\n ccVersion = version ?? getImplementedVersion(requestedCC);\n break;\n }\n const cc = new VersionCCCommandClassReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n requestedCC,\n ccVersion,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getCapabilities() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CapabilitiesGet);\n const cc = new VersionCCCapabilitiesGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCCapabilitiesReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"supportsZWaveSoftwareGet\"]);\n }\n }\n public async reportCapabilities(): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CapabilitiesReport);\n const cc = new VersionCCCapabilitiesReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n // At this time, we do not support responding to Z-Wave Software Get\n supportsZWaveSoftwareGet: false,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getZWaveSoftware() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.ZWaveSoftwareGet);\n const cc = new VersionCCZWaveSoftwareGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCZWaveSoftwareReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"sdkVersion\",\n \"applicationFrameworkAPIVersion\",\n \"applicationFrameworkBuildNumber\",\n \"hostInterfaceVersion\",\n \"hostInterfaceBuildNumber\",\n \"zWaveProtocolVersion\",\n \"zWaveProtocolBuildNumber\",\n \"applicationVersion\",\n \"applicationBuildNumber\",\n ]);\n }\n }\n}\n@commandClass(CommandClasses.Version)\n@implementedVersion(3)\n@ccValues(VersionCCValues)\nexport class VersionCC extends CommandClass {\n declare ccCommand: VersionCommand;\n public determineRequiredCCInterviews(): readonly CommandClasses[] {\n // VersionCC must be the 2nd CC after ManufacturerSpecificCC\n return [CommandClasses[\"Manufacturer Specific\"]];\n }\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n // SDS13782: In a Multi Channel device, the Version Command Class MUST be supported by the Root Device, while\n // the Version Command Class SHOULD NOT be supported by individual End Points.\n //\n // There may be cases where a given Command Class is not implemented by the Root Device of a Multi\n // Channel device. However, the Root Device MUST respond to Version requests for any Command Class\n // implemented by the Multi Channel device; also in cases where the actual Command Class is only\n // provided by an End Point.\n const endpoint = this.getEndpoint(ctx)!;\n // Use the CC API of the root device for all queries\n const api = CCAPI.create(CommandClasses.Version, ctx, node).withOptions({\n priority: MessagePriority.NodeQuery,\n tag: \"interview\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n const queryCCVersion = async (cc: CommandClasses): Promise<void> => {\n // Only query CCs we support. Theoretically we could skip queries where we support only V1,\n // but there are Z-Wave certification tests that require us to query all CCs\n const maxImplemented = getImplementedVersion(cc);\n if (maxImplemented === 0) {\n ctx.logNode(node.id, ` skipping query for ${CommandClasses[cc]} (${num2hex(cc)}) because max implemented version is ${maxImplemented}`);\n return;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: ` querying the CC version for ${getCCName(cc)}...`,\n direction: \"outbound\",\n });\n // query the CC version\n const supportedVersion = await api.getCCVersion(cc);\n if (supportedVersion != undefined) {\n // Remember which CC version this endpoint supports\n let logMessage: string;\n if (supportedVersion > 0) {\n // Basic CC has special rules for when it is considered supported\n // Therefore we mark all other CCs as supported, but not Basic CC,\n // for which support is determined later.\n if (cc === CommandClasses.Basic) {\n endpoint.addCC(cc, { version: supportedVersion });\n }\n else if (endpoint.controlsCC(cc)\n && !endpoint.supportsCC(cc)) {\n // The node only advertised this CC as controlled (e.g. in the NIF).\n // Remember the version so its values can be exposed, but do not\n // promote it to a supported CC.\n endpoint.addCC(cc, {\n isControlled: true,\n version: supportedVersion,\n });\n }\n else {\n endpoint.addCC(cc, {\n isSupported: true,\n version: supportedVersion,\n });\n }\n logMessage = ` supports CC ${CommandClasses[cc]} (${num2hex(cc)}) in version ${supportedVersion}`;\n }\n else {\n // We were lied to - the NIF said this CC is supported, now the node claims it isn't\n // Make sure this is not a critical CC, which must be supported though\n if (cc === CommandClasses.Version\n || cc === CommandClasses[\"Manufacturer Specific\"]) {\n logMessage = ` claims NOT to support CC ${CommandClasses[cc]} (${num2hex(cc)}), but it must. Assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`;\n endpoint.addCC(cc, { version: 1 });\n }\n else if ((cc === CommandClasses.Security\n && node.hasSecurityClass(SecurityClass.S0_Legacy))\n || (cc === CommandClasses[\"Security 2\"]\n && securityClassOrder.some((sc) => securityClassIsS2(sc)\n && node.hasSecurityClass(sc)))) {\n logMessage = ` claims NOT to support CC ${CommandClasses[cc]} (${num2hex(cc)}), but it is known to support it. Assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`;\n endpoint.addCC(cc, { version: 1 });\n }\n else {\n logMessage = ` does NOT support CC ${CommandClasses[cc]} (${num2hex(cc)})`;\n endpoint.removeCC(cc);\n }\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n });\n }\n else {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `CC version query for ${getCCName(cc)} timed out - assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`,\n level: \"warn\",\n });\n endpoint.addCC(cc, { version: 1 });\n }\n };\n // Version information should not change (except for firmware updates)\n // And it is only relevant on the root endpoint (the node)\n if (this.endpointIndex === 0) {\n // Step 1: Query Version CC version\n await queryCCVersion(CommandClasses.Version);\n // Step 2: Query node versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying node versions...\",\n direction: \"outbound\",\n });\n const versionGetResponse = await api.get();\n if (versionGetResponse) {\n let logMessage = `received response for node versions:\n library type: ${ZWaveLibraryTypes[versionGetResponse.libraryType]} (${num2hex(versionGetResponse.libraryType)})\n protocol version: ${versionGetResponse.protocolVersion}\n firmware versions: ${versionGetResponse.firmwareVersions.join(\", \")}`;\n if (versionGetResponse.hardwareVersion != undefined) {\n logMessage += `\\n hardware version: ${versionGetResponse.hardwareVersion}`;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n }\n // Step 3: Query all other CC versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying CC versions...\",\n direction: \"outbound\",\n });\n // Determine the CCs whose version we still need to query, so we can report progress\n const ccsToQuery: CommandClasses[] = [];\n // Basic CC is not included in the NIF, so it won't be returned by endpoint.getCCs() at this point\n // Add it to the list if we are interviewing the root endpoint,\n // or if we are on an endpoint and the root endpoint does not support it\n if (this.endpointIndex === 0\n || node.getCCVersion(CommandClasses.Basic) === 0) {\n ccsToQuery.push(CommandClasses.Basic);\n }\n for (const [cc] of endpoint.getCCs()) {\n // We already queried the Version CC version at the start of this interview\n if (cc === CommandClasses.Version)\n continue;\n // And we queried Basic CC just before this\n if (cc === CommandClasses.Basic)\n continue;\n // Skip the query of endpoint CCs that are also supported by the root device\n if (this.endpointIndex > 0 && node.getCCVersion(cc) > 0)\n continue;\n ccsToQuery.push(cc);\n }\n // Actually query them\n for (const [i, cc] of ccsToQuery.entries()) {\n await queryCCVersion(cc);\n node.reportInterviewProgress(i + 1, ccsToQuery.length);\n }\n // Step 4: Query VersionCC capabilities (root device only)\n if (this.endpointIndex === 0 && api.version >= 3) {\n // Step 4a: Support for SoftwareGet\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying if Z-Wave Software Get is supported...\",\n direction: \"outbound\",\n });\n const capsResponse = await api.getCapabilities();\n if (capsResponse) {\n const { supportsZWaveSoftwareGet } = capsResponse;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Z-Wave Software Get is${supportsZWaveSoftwareGet ? \"\" : \" not\"} supported`,\n direction: \"inbound\",\n });\n if (supportsZWaveSoftwareGet) {\n // Step 4b: Query Z-Wave Software versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying Z-Wave software versions...\",\n direction: \"outbound\",\n });\n await api.getZWaveSoftware();\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"received Z-Wave software versions\",\n direction: \"inbound\",\n });\n }\n }\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n}\n// @publicAPI\nexport interface VersionCCReportOptions {\n libraryType: ZWaveLibraryTypes;\n protocolVersion: string;\n firmwareVersions: string[];\n hardwareVersion?: number;\n}\n@CCCommand(VersionCommand.Report)\n@ccValueProperty(\"libraryType\", VersionCCValues.libraryType)\n@ccValueProperty(\"protocolVersion\", VersionCCValues.protocolVersion)\n@ccValueProperty(\"firmwareVersions\", VersionCCValues.firmwareVersions)\n@ccValueProperty(\"hardwareVersion\", VersionCCValues.hardwareVersion)\nexport class VersionCCReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCReportOptions>) {\n super(options);\n if (!/^\\d+\\.\\d+(\\.\\d+)?$/.test(options.protocolVersion)) {\n throw new ZWaveError(`protocolVersion must be a string in the format \"major.minor\" or \"major.minor.patch\", received \"${options.protocolVersion}\"`, ZWaveErrorCodes.Argument_Invalid);\n }\n else if (!options.firmwareVersions.every((fw) => /^\\d+\\.\\d+(\\.\\d+)?$/.test(fw))) {\n throw new ZWaveError(`firmwareVersions must be an array of strings in the format \"major.minor\" or \"major.minor.patch\", received \"${JSON.stringify(options.firmwareVersions)}\"`, ZWaveErrorCodes.Argument_Invalid);\n }\n this.libraryType = options.libraryType;\n this.protocolVersion = options.protocolVersion;\n this.firmwareVersions = options.firmwareVersions;\n this.hardwareVersion = options.hardwareVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCReport {\n validatePayload(raw.payload.length >= 5);\n const libraryType: ZWaveLibraryTypes = raw.payload[0];\n const protocolVersion = `${raw.payload[1]}.${raw.payload[2]}`;\n const firmwareVersions = [`${raw.payload[3]}.${raw.payload[4]}`];\n let hardwareVersion: number | undefined;\n if (raw.payload.length >= 7) {\n // V2+\n hardwareVersion = raw.payload[5];\n const additionalFirmwares = raw.payload[6];\n validatePayload(raw.payload.length >= 7 + 2 * additionalFirmwares);\n for (let i = 0; i < additionalFirmwares; i++) {\n firmwareVersions.push(`${raw.payload[7 + 2 * i]}.${raw.payload[7 + 2 * i + 1]}`);\n }\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n libraryType,\n protocolVersion,\n firmwareVersions,\n hardwareVersion,\n });\n }\n public readonly libraryType: ZWaveLibraryTypes;\n public readonly protocolVersion: string;\n public readonly firmwareVersions: string[];\n public readonly hardwareVersion: number | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.libraryType,\n ...this.protocolVersion\n .split(\".\")\n .map((n) => parseInt(n))\n .slice(0, 2),\n ...this.firmwareVersions[0]\n .split(\".\")\n .map((n) => parseInt(n))\n .slice(0, 2),\n this.hardwareVersion ?? 0x00,\n this.firmwareVersions.length - 1,\n ]);\n if (this.firmwareVersions.length > 1) {\n const firmwaresBuffer = new Bytes((this.firmwareVersions.length - 1) * 2);\n for (let i = 1; i < this.firmwareVersions.length; i++) {\n const [major, minor] = this.firmwareVersions[i]\n .split(\".\")\n .map((n) => parseInt(n));\n firmwaresBuffer[2 * (i - 1)] = major;\n firmwaresBuffer[2 * (i - 1) + 1] = minor;\n }\n this.payload = Bytes.concat([this.payload, firmwaresBuffer]);\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"library type\": getEnumMemberName(ZWaveLibraryTypes, this.libraryType),\n \"protocol version\": this.protocolVersion,\n \"firmware versions\": this.firmwareVersions.join(\", \"),\n };\n if (this.hardwareVersion != undefined) {\n message[\"hardware version\"] = this.hardwareVersion;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(VersionCommand.Get)\n@expectedCCResponse(VersionCCReport)\nexport class VersionCCGet extends VersionCC {\n}\n// @publicAPI\nexport interface VersionCCCommandClassReportOptions {\n requestedCC: CommandClasses;\n ccVersion: number;\n}\n@CCCommand(VersionCommand.CommandClassReport)\nexport class VersionCCCommandClassReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCCommandClassReportOptions>) {\n super(options);\n this.requestedCC = options.requestedCC;\n this.ccVersion = options.ccVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCommandClassReport {\n validatePayload(raw.payload.length >= 2);\n const requestedCC: CommandClasses = raw.payload[0];\n const ccVersion = raw.payload[1];\n return new this({\n nodeId: ctx.sourceNodeId,\n requestedCC,\n ccVersion,\n });\n }\n public ccVersion: number;\n public requestedCC: CommandClasses;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.requestedCC, this.ccVersion]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n CC: getCCName(this.requestedCC),\n version: this.ccVersion,\n },\n };\n }\n}\n// @publicAPI\nexport interface VersionCCCommandClassGetOptions {\n requestedCC: CommandClasses;\n}\nfunction testResponseForVersionCommandClassGet(sent: VersionCCCommandClassGet, received: VersionCCCommandClassReport) {\n // We expect a Version CommandClass Report that matches the requested CC\n return sent.requestedCC === received.requestedCC;\n}\n@CCCommand(VersionCommand.CommandClassGet)\n@expectedCCResponse(VersionCCCommandClassReport, testResponseForVersionCommandClassGet)\nexport class VersionCCCommandClassGet extends VersionCC {\n public constructor(options: WithAddress<VersionCCCommandClassGetOptions>) {\n super(options);\n this.requestedCC = options.requestedCC;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCommandClassGet {\n validatePayload(raw.payload.length >= 1);\n const requestedCC: CommandClasses = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n requestedCC,\n });\n }\n public requestedCC: CommandClasses;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.requestedCC]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { CC: getCCName(this.requestedCC) },\n };\n }\n}\n// @publicAPI\nexport interface VersionCCCapabilitiesReportOptions {\n supportsZWaveSoftwareGet: boolean;\n}\n@CCCommand(VersionCommand.CapabilitiesReport)\n@ccValueProperty(\"supportsZWaveSoftwareGet\", VersionCCValues.supportsZWaveSoftwareGet)\nexport class VersionCCCapabilitiesReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCCapabilitiesReportOptions>) {\n super(options);\n this.supportsZWaveSoftwareGet = options.supportsZWaveSoftwareGet;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCapabilitiesReport {\n validatePayload(raw.payload.length >= 1);\n const capabilities = raw.payload[0];\n const supportsZWaveSoftwareGet = !!(capabilities & 0b100);\n return new this({\n nodeId: ctx.sourceNodeId,\n supportsZWaveSoftwareGet,\n });\n }\n public supportsZWaveSoftwareGet: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n (this.supportsZWaveSoftwareGet ? 0b100 : 0) | 0b11,\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supports Z-Wave Software Get command\": this.supportsZWaveSoftwareGet,\n },\n };\n }\n}\n@CCCommand(VersionCommand.CapabilitiesGet)\n@expectedCCResponse(VersionCCCapabilitiesReport)\nexport class VersionCCCapabilitiesGet extends VersionCC {\n}\n// @publicAPI\nexport interface VersionCCZWaveSoftwareReportOptions {\n sdkVersion: string;\n applicationFrameworkAPIVersion: string;\n applicationFrameworkBuildNumber: number;\n hostInterfaceVersion: string;\n hostInterfaceBuildNumber: number;\n zWaveProtocolVersion: string;\n zWaveProtocolBuildNumber: number;\n applicationVersion: string;\n applicationBuildNumber: number;\n}\n@CCCommand(VersionCommand.ZWaveSoftwareReport)\n@ccValueProperty(\"sdkVersion\", VersionCCValues.sdkVersion)\n@ccValueProperty(\"applicationFrameworkAPIVersion\", VersionCCValues.applicationFrameworkAPIVersion)\n@ccValueProperty(\"applicationFrameworkBuildNumber\", VersionCCValues.applicationFrameworkBuildNumber)\n@ccValueProperty(\"hostInterfaceVersion\", VersionCCValues.serialAPIVersion)\n@ccValueProperty(\"hostInterfaceBuildNumber\", VersionCCValues.serialAPIBuildNumber)\n@ccValueProperty(\"zWaveProtocolVersion\", VersionCCValues.zWaveProtocolVersion)\n@ccValueProperty(\"zWaveProtocolBuildNumber\", VersionCCValues.zWaveProtocolBuildNumber)\n@ccValueProperty(\"applicationVersion\", VersionCCValues.applicationVersion)\n@ccValueProperty(\"applicationBuildNumber\", VersionCCValues.applicationBuildNumber)\nexport class VersionCCZWaveSoftwareReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCZWaveSoftwareReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.sdkVersion = options.sdkVersion;\n this.applicationFrameworkAPIVersion =\n options.applicationFrameworkAPIVersion;\n this.applicationFrameworkBuildNumber =\n options.applicationFrameworkBuildNumber;\n this.hostInterfaceVersion = options.hostInterfaceVersion;\n this.hostInterfaceBuildNumber = options.hostInterfaceBuildNumber;\n this.zWaveProtocolVersion = options.zWaveProtocolVersion;\n this.zWaveProtocolBuildNumber = options.zWaveProtocolBuildNumber;\n this.applicationVersion = options.applicationVersion;\n this.applicationBuildNumber = options.applicationBuildNumber;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCZWaveSoftwareReport {\n validatePayload(raw.payload.length >= 23);\n const sdkVersion = parseVersion(raw.payload);\n const applicationFrameworkAPIVersion = parseVersion(raw.payload.subarray(3));\n let applicationFrameworkBuildNumber;\n if (applicationFrameworkAPIVersion !== \"unused\") {\n applicationFrameworkBuildNumber = raw.payload.readUInt16BE(6);\n }\n else {\n applicationFrameworkBuildNumber = 0;\n }\n const hostInterfaceVersion = parseVersion(raw.payload.subarray(8));\n let hostInterfaceBuildNumber;\n if (hostInterfaceVersion !== \"unused\") {\n hostInterfaceBuildNumber = raw.payload.readUInt16BE(11);\n }\n else {\n hostInterfaceBuildNumber = 0;\n }\n const zWaveProtocolVersion = parseVersion(raw.payload.subarray(13));\n let zWaveProtocolBuildNumber;\n if (zWaveProtocolVersion !== \"unused\") {\n zWaveProtocolBuildNumber = raw.payload.readUInt16BE(16);\n }\n else {\n zWaveProtocolBuildNumber = 0;\n }\n const applicationVersion = parseVersion(raw.payload.subarray(18));\n let applicationBuildNumber;\n if (applicationVersion !== \"unused\") {\n applicationBuildNumber = raw.payload.readUInt16BE(21);\n }\n else {\n applicationBuildNumber = 0;\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n sdkVersion,\n applicationFrameworkAPIVersion,\n applicationFrameworkBuildNumber,\n hostInterfaceVersion,\n hostInterfaceBuildNumber,\n zWaveProtocolVersion,\n zWaveProtocolBuildNumber,\n applicationVersion,\n applicationBuildNumber,\n });\n }\n public readonly sdkVersion: string;\n public readonly applicationFrameworkAPIVersion: string;\n public readonly applicationFrameworkBuildNumber: number;\n public readonly hostInterfaceVersion: string;\n public readonly hostInterfaceBuildNumber: number;\n public readonly zWaveProtocolVersion: string;\n public readonly zWaveProtocolBuildNumber: number;\n public readonly applicationVersion: string;\n public readonly applicationBuildNumber: number;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"SDK version\": this.sdkVersion,\n };\n message[\"appl. framework API version\"] =\n this.applicationFrameworkAPIVersion;\n if (this.applicationFrameworkAPIVersion !== \"unused\") {\n message[\"appl. framework build number\"] =\n this.applicationFrameworkBuildNumber;\n }\n message[\"host interface version\"] = this.hostInterfaceVersion;\n if (this.hostInterfaceVersion !== \"unused\") {\n message[\"host interface build number\"] =\n this.hostInterfaceBuildNumber;\n }\n message[\"Z-Wave protocol version\"] = this.zWaveProtocolVersion;\n if (this.zWaveProtocolVersion !== \"unused\") {\n message[\"Z-Wave protocol build number\"] =\n this.zWaveProtocolBuildNumber;\n }\n message[\"application version\"] = this.applicationVersion;\n if (this.applicationVersion !== \"unused\") {\n message[\"application build number\"] = this.applicationBuildNumber;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(VersionCommand.ZWaveSoftwareGet)\n@expectedCCResponse(VersionCCZWaveSoftwareReport)\nexport class VersionCCZWaveSoftwareGet extends VersionCC {\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as __validateArgs from \"./VersionCC._validateArgs.js\";\nconst { validateArgs_VersionCCAPI_sendReport, validateArgs_VersionCCAPI_getCCVersion, validateArgs_VersionCCAPI_reportCCVersion } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type MessageRecord, SecurityClass, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, ZWaveLibraryTypes, enumValuesToMetadataStates, getCCName, securityClassIsS2, securityClassOrder, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, type BytesView, getEnumMemberName, num2hex, pick, } from \"@zwave-js/shared\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, getImplementedVersion, implementedVersion, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { VersionCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { VersionCCValues } from \"./_CCValues.generated.js\";\nexport { VersionCCValues };\nfunction parseVersion(buffer: BytesView): string {\n if (buffer[0] === 0 && buffer[1] === 0 && buffer[2] === 0)\n return \"unused\";\n return `${buffer[0]}.${buffer[1]}.${buffer[2]}`;\n}\n// @noSetValueAPI This CC is read-only\n@API(CommandClasses.Version)\nexport class VersionCCAPI extends PhysicalCCAPI {\n public supportsCommand(cmd: VersionCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case VersionCommand.Get:\n case VersionCommand.Report:\n case VersionCommand.CommandClassGet:\n case VersionCommand.CommandClassReport:\n return true; // This is mandatory\n case VersionCommand.CapabilitiesGet:\n case VersionCommand.CapabilitiesReport:\n case VersionCommand.ZWaveSoftwareReport:\n return this.version >= 3;\n case VersionCommand.ZWaveSoftwareGet: {\n return this.getValueDB().getValue<boolean>(VersionCCValues.supportsZWaveSoftwareGet.endpoint(this.endpoint.index));\n }\n }\n return super.supportsCommand(cmd);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async get() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.Get);\n const cc = new VersionCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"libraryType\",\n \"protocolVersion\",\n \"firmwareVersions\",\n \"hardwareVersion\",\n ]);\n }\n }\n @validateArgs_VersionCCAPI_sendReport()\n public async sendReport(options: VersionCCReportOptions): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.Report);\n const cc = new VersionCCReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n ...options,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_VersionCCAPI_getCCVersion()\n public async getCCVersion(requestedCC: CommandClasses): Promise<MaybeNotKnown<number>> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CommandClassGet);\n const cc = new VersionCCCommandClassGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n requestedCC,\n });\n const response = await this.host.sendCommand<VersionCCCommandClassReport>(cc, this.commandOptions);\n return response?.ccVersion;\n }\n @validateArgs_VersionCCAPI_reportCCVersion()\n /**\n * @param version The version to report. If not given, the implemented version will be used for the report.\n */\n public async reportCCVersion(requestedCC: CommandClasses, version?: number): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CommandClassReport);\n let ccVersion: number;\n switch (requestedCC) {\n case CommandClasses[\"Z-Wave Protocol\"]:\n case CommandClasses[\"Z-Wave Long Range\"]:\n // These two are only for internal use\n ccVersion = 0;\n break;\n case CommandClasses.Hail:\n case CommandClasses[\"Manufacturer Proprietary\"]:\n // These CCs are obsolete, we cannot enter them in the certification portal\n // but not doing so fails a certification test. Just respond that they\n // are not supported or controlled\n ccVersion = 0;\n break;\n default:\n ccVersion = version ?? getImplementedVersion(requestedCC);\n break;\n }\n const cc = new VersionCCCommandClassReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n requestedCC,\n ccVersion,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getCapabilities() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CapabilitiesGet);\n const cc = new VersionCCCapabilitiesGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCCapabilitiesReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"supportsZWaveSoftwareGet\"]);\n }\n }\n public async reportCapabilities(): Promise<void> {\n this.assertSupportsCommand(VersionCommand, VersionCommand.CapabilitiesReport);\n const cc = new VersionCCCapabilitiesReport({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n // At this time, we do not support responding to Z-Wave Software Get\n supportsZWaveSoftwareGet: false,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getZWaveSoftware() {\n this.assertSupportsCommand(VersionCommand, VersionCommand.ZWaveSoftwareGet);\n const cc = new VersionCCZWaveSoftwareGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<VersionCCZWaveSoftwareReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"sdkVersion\",\n \"applicationFrameworkAPIVersion\",\n \"applicationFrameworkBuildNumber\",\n \"hostInterfaceVersion\",\n \"hostInterfaceBuildNumber\",\n \"zWaveProtocolVersion\",\n \"zWaveProtocolBuildNumber\",\n \"applicationVersion\",\n \"applicationBuildNumber\",\n ]);\n }\n }\n}\n@commandClass(CommandClasses.Version)\n@implementedVersion(3)\n@ccValues(VersionCCValues)\nexport class VersionCC extends CommandClass {\n declare ccCommand: VersionCommand;\n public determineRequiredCCInterviews(): readonly CommandClasses[] {\n // VersionCC must be the 2nd CC after ManufacturerSpecificCC\n return [CommandClasses[\"Manufacturer Specific\"]];\n }\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n // SDS13782: In a Multi Channel device, the Version Command Class MUST be supported by the Root Device, while\n // the Version Command Class SHOULD NOT be supported by individual End Points.\n //\n // There may be cases where a given Command Class is not implemented by the Root Device of a Multi\n // Channel device. However, the Root Device MUST respond to Version requests for any Command Class\n // implemented by the Multi Channel device; also in cases where the actual Command Class is only\n // provided by an End Point.\n const endpoint = this.getEndpoint(ctx)!;\n // Use the CC API of the root device for all queries\n const api = CCAPI.create(CommandClasses.Version, ctx, node).withOptions({\n priority: MessagePriority.NodeQuery,\n tag: \"interview\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n const queryCCVersion = async (cc: CommandClasses): Promise<void> => {\n // Only query CCs we support. Theoretically we could skip queries where we support only V1,\n // but there are Z-Wave certification tests that require us to query all CCs\n const maxImplemented = getImplementedVersion(cc);\n if (maxImplemented === 0) {\n ctx.logNode(node.id, ` skipping query for ${CommandClasses[cc]} (${num2hex(cc)}) because max implemented version is ${maxImplemented}`);\n return;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: ` querying the CC version for ${getCCName(cc)}...`,\n direction: \"outbound\",\n });\n // query the CC version\n const supportedVersion = await api.getCCVersion(cc);\n if (supportedVersion != undefined) {\n // Remember which CC version this endpoint supports\n let logMessage: string;\n if (supportedVersion > 0) {\n // Basic CC has special rules for when it is considered supported\n // Therefore we mark all other CCs as supported, but not Basic CC,\n // for which support is determined later.\n if (cc === CommandClasses.Basic) {\n endpoint.addCC(cc, { version: supportedVersion });\n }\n else if (endpoint.controlsCC(cc)\n && !endpoint.supportsCC(cc)) {\n // The node only advertised this CC as controlled (e.g. in the NIF).\n // Remember the version so its values can be exposed, but do not\n // promote it to a supported CC.\n endpoint.addCC(cc, {\n isControlled: true,\n version: supportedVersion,\n });\n }\n else {\n endpoint.addCC(cc, {\n isSupported: true,\n version: supportedVersion,\n });\n }\n logMessage = ` supports CC ${CommandClasses[cc]} (${num2hex(cc)}) in version ${supportedVersion}`;\n }\n else {\n // We were lied to - the NIF said this CC is supported, now the node claims it isn't\n // Make sure this is not a critical CC, which must be supported though\n if (cc === CommandClasses.Version\n || cc === CommandClasses[\"Manufacturer Specific\"]) {\n logMessage = ` claims NOT to support CC ${CommandClasses[cc]} (${num2hex(cc)}), but it must. Assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`;\n endpoint.addCC(cc, { version: 1 });\n }\n else if ((cc === CommandClasses.Security\n && node.hasSecurityClass(SecurityClass.S0_Legacy))\n || (cc === CommandClasses[\"Security 2\"]\n && securityClassOrder.some((sc) => securityClassIsS2(sc)\n && node.hasSecurityClass(sc)))) {\n logMessage = ` claims NOT to support CC ${CommandClasses[cc]} (${num2hex(cc)}), but it is known to support it. Assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`;\n endpoint.addCC(cc, { version: 1 });\n }\n else {\n logMessage = ` does NOT support CC ${CommandClasses[cc]} (${num2hex(cc)})`;\n endpoint.removeCC(cc);\n }\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n });\n }\n else {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `CC version query for ${getCCName(cc)} timed out - assuming the ${this.endpointIndex === 0 ? \"node\" : \"endpoint\"} supports version 1...`,\n level: \"warn\",\n });\n endpoint.addCC(cc, { version: 1 });\n }\n };\n // Version information should not change (except for firmware updates)\n // And it is only relevant on the root endpoint (the node)\n if (this.endpointIndex === 0) {\n // Step 1: Query Version CC version\n await queryCCVersion(CommandClasses.Version);\n // Step 2: Query node versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying node versions...\",\n direction: \"outbound\",\n });\n const versionGetResponse = await api.get();\n if (versionGetResponse) {\n let logMessage = `received response for node versions:\n library type: ${ZWaveLibraryTypes[versionGetResponse.libraryType]} (${num2hex(versionGetResponse.libraryType)})\n protocol version: ${versionGetResponse.protocolVersion}\n firmware versions: ${versionGetResponse.firmwareVersions.join(\", \")}`;\n if (versionGetResponse.hardwareVersion != undefined) {\n logMessage += `\\n hardware version: ${versionGetResponse.hardwareVersion}`;\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n }\n }\n // Step 3: Query all other CC versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying CC versions...\",\n direction: \"outbound\",\n });\n // Determine the CCs whose version we still need to query, so we can report progress\n const ccsToQuery: CommandClasses[] = [];\n // Basic CC is not included in the NIF, so it won't be returned by endpoint.getCCs() at this point\n // Add it to the list if we are interviewing the root endpoint,\n // or if we are on an endpoint and the root endpoint does not support it\n if (this.endpointIndex === 0\n || node.getCCVersion(CommandClasses.Basic) === 0) {\n ccsToQuery.push(CommandClasses.Basic);\n }\n for (const [cc] of endpoint.getCCs()) {\n // We already queried the Version CC version at the start of this interview\n if (cc === CommandClasses.Version)\n continue;\n // And we queried Basic CC just before this\n if (cc === CommandClasses.Basic)\n continue;\n // Skip the query of endpoint CCs that are also supported by the root device\n if (this.endpointIndex > 0 && node.getCCVersion(cc) > 0)\n continue;\n ccsToQuery.push(cc);\n }\n // Actually query them\n for (const [i, cc] of ccsToQuery.entries()) {\n await queryCCVersion(cc);\n node.reportInterviewProgress(i + 1, ccsToQuery.length);\n }\n // Step 4: Query VersionCC capabilities (root device only)\n if (this.endpointIndex === 0 && api.version >= 3) {\n // Step 4a: Support for SoftwareGet\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying if Z-Wave Software Get is supported...\",\n direction: \"outbound\",\n });\n const capsResponse = await api.getCapabilities();\n if (capsResponse) {\n const { supportsZWaveSoftwareGet } = capsResponse;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Z-Wave Software Get is${supportsZWaveSoftwareGet ? \"\" : \" not\"} supported`,\n direction: \"inbound\",\n });\n if (supportsZWaveSoftwareGet) {\n // Step 4b: Query Z-Wave Software versions\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"querying Z-Wave software versions...\",\n direction: \"outbound\",\n });\n await api.getZWaveSoftware();\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"received Z-Wave software versions\",\n direction: \"inbound\",\n });\n }\n }\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n}\n// @publicAPI\nexport interface VersionCCReportOptions {\n libraryType: ZWaveLibraryTypes;\n protocolVersion: string;\n firmwareVersions: string[];\n hardwareVersion?: number;\n}\n@CCCommand(VersionCommand.Report)\n@ccValueProperty(\"libraryType\", VersionCCValues.libraryType)\n@ccValueProperty(\"protocolVersion\", VersionCCValues.protocolVersion)\n@ccValueProperty(\"firmwareVersions\", VersionCCValues.firmwareVersions)\n@ccValueProperty(\"hardwareVersion\", VersionCCValues.hardwareVersion)\nexport class VersionCCReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCReportOptions>) {\n super(options);\n if (!/^\\d+\\.\\d+(\\.\\d+)?$/.test(options.protocolVersion)) {\n throw new ZWaveError(`protocolVersion must be a string in the format \"major.minor\" or \"major.minor.patch\", received \"${options.protocolVersion}\"`, ZWaveErrorCodes.Argument_Invalid);\n }\n else if (!options.firmwareVersions.every((fw) => /^\\d+\\.\\d+(\\.\\d+)?$/.test(fw))) {\n throw new ZWaveError(`firmwareVersions must be an array of strings in the format \"major.minor\" or \"major.minor.patch\", received \"${JSON.stringify(options.firmwareVersions)}\"`, ZWaveErrorCodes.Argument_Invalid);\n }\n this.libraryType = options.libraryType;\n this.protocolVersion = options.protocolVersion;\n this.firmwareVersions = options.firmwareVersions;\n this.hardwareVersion = options.hardwareVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCReport {\n validatePayload(raw.payload.length >= 5);\n const libraryType: ZWaveLibraryTypes = raw.payload[0];\n const protocolVersion = `${raw.payload[1]}.${raw.payload[2]}`;\n const firmwareVersions = [`${raw.payload[3]}.${raw.payload[4]}`];\n let hardwareVersion: number | undefined;\n if (raw.payload.length >= 7) {\n // V2+\n hardwareVersion = raw.payload[5];\n const additionalFirmwares = raw.payload[6];\n validatePayload(raw.payload.length >= 7 + 2 * additionalFirmwares);\n for (let i = 0; i < additionalFirmwares; i++) {\n firmwareVersions.push(`${raw.payload[7 + 2 * i]}.${raw.payload[7 + 2 * i + 1]}`);\n }\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n libraryType,\n protocolVersion,\n firmwareVersions,\n hardwareVersion,\n });\n }\n public readonly libraryType: ZWaveLibraryTypes;\n public readonly protocolVersion: string;\n public readonly firmwareVersions: string[];\n public readonly hardwareVersion: number | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n this.libraryType,\n ...this.protocolVersion\n .split(\".\")\n .map((n) => parseInt(n))\n .slice(0, 2),\n ...this.firmwareVersions[0]\n .split(\".\")\n .map((n) => parseInt(n))\n .slice(0, 2),\n this.hardwareVersion ?? 0x00,\n this.firmwareVersions.length - 1,\n ]);\n if (this.firmwareVersions.length > 1) {\n const firmwaresBuffer = new Bytes((this.firmwareVersions.length - 1) * 2);\n for (let i = 1; i < this.firmwareVersions.length; i++) {\n const [major, minor] = this.firmwareVersions[i]\n .split(\".\")\n .map((n) => parseInt(n));\n firmwaresBuffer[2 * (i - 1)] = major;\n firmwaresBuffer[2 * (i - 1) + 1] = minor;\n }\n this.payload = Bytes.concat([this.payload, firmwaresBuffer]);\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"library type\": getEnumMemberName(ZWaveLibraryTypes, this.libraryType),\n \"protocol version\": this.protocolVersion,\n \"firmware versions\": this.firmwareVersions.join(\", \"),\n };\n if (this.hardwareVersion != undefined) {\n message[\"hardware version\"] = this.hardwareVersion;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(VersionCommand.Get)\n@expectedCCResponse(VersionCCReport)\nexport class VersionCCGet extends VersionCC {\n}\n// @publicAPI\nexport interface VersionCCCommandClassReportOptions {\n requestedCC: CommandClasses;\n ccVersion: number;\n}\n@CCCommand(VersionCommand.CommandClassReport)\nexport class VersionCCCommandClassReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCCommandClassReportOptions>) {\n super(options);\n this.requestedCC = options.requestedCC;\n this.ccVersion = options.ccVersion;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCommandClassReport {\n validatePayload(raw.payload.length >= 2);\n const requestedCC: CommandClasses = raw.payload[0];\n const ccVersion = raw.payload[1];\n return new this({\n nodeId: ctx.sourceNodeId,\n requestedCC,\n ccVersion,\n });\n }\n public ccVersion: number;\n public requestedCC: CommandClasses;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.requestedCC, this.ccVersion]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n CC: getCCName(this.requestedCC),\n version: this.ccVersion,\n },\n };\n }\n}\n// @publicAPI\nexport interface VersionCCCommandClassGetOptions {\n requestedCC: CommandClasses;\n}\nfunction testResponseForVersionCommandClassGet(sent: VersionCCCommandClassGet, received: VersionCCCommandClassReport) {\n // We expect a Version CommandClass Report that matches the requested CC\n return sent.requestedCC === received.requestedCC;\n}\n@CCCommand(VersionCommand.CommandClassGet)\n@expectedCCResponse(VersionCCCommandClassReport, testResponseForVersionCommandClassGet)\nexport class VersionCCCommandClassGet extends VersionCC {\n public constructor(options: WithAddress<VersionCCCommandClassGetOptions>) {\n super(options);\n this.requestedCC = options.requestedCC;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCommandClassGet {\n validatePayload(raw.payload.length >= 1);\n const requestedCC: CommandClasses = raw.payload[0];\n return new this({\n nodeId: ctx.sourceNodeId,\n requestedCC,\n });\n }\n public requestedCC: CommandClasses;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([this.requestedCC]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: { CC: getCCName(this.requestedCC) },\n };\n }\n}\n// @publicAPI\nexport interface VersionCCCapabilitiesReportOptions {\n supportsZWaveSoftwareGet: boolean;\n}\n@CCCommand(VersionCommand.CapabilitiesReport)\n@ccValueProperty(\"supportsZWaveSoftwareGet\", VersionCCValues.supportsZWaveSoftwareGet)\nexport class VersionCCCapabilitiesReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCCapabilitiesReportOptions>) {\n super(options);\n this.supportsZWaveSoftwareGet = options.supportsZWaveSoftwareGet;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCCapabilitiesReport {\n validatePayload(raw.payload.length >= 1);\n const capabilities = raw.payload[0];\n const supportsZWaveSoftwareGet = !!(capabilities & 0b100);\n return new this({\n nodeId: ctx.sourceNodeId,\n supportsZWaveSoftwareGet,\n });\n }\n public supportsZWaveSoftwareGet: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n (this.supportsZWaveSoftwareGet ? 0b100 : 0) | 0b11,\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"supports Z-Wave Software Get command\": this.supportsZWaveSoftwareGet,\n },\n };\n }\n}\n@CCCommand(VersionCommand.CapabilitiesGet)\n@expectedCCResponse(VersionCCCapabilitiesReport)\nexport class VersionCCCapabilitiesGet extends VersionCC {\n}\n// @publicAPI\nexport interface VersionCCZWaveSoftwareReportOptions {\n sdkVersion: string;\n applicationFrameworkAPIVersion: string;\n applicationFrameworkBuildNumber: number;\n hostInterfaceVersion: string;\n hostInterfaceBuildNumber: number;\n zWaveProtocolVersion: string;\n zWaveProtocolBuildNumber: number;\n applicationVersion: string;\n applicationBuildNumber: number;\n}\n@CCCommand(VersionCommand.ZWaveSoftwareReport)\n@ccValueProperty(\"sdkVersion\", VersionCCValues.sdkVersion)\n@ccValueProperty(\"applicationFrameworkAPIVersion\", VersionCCValues.applicationFrameworkAPIVersion)\n@ccValueProperty(\"applicationFrameworkBuildNumber\", VersionCCValues.applicationFrameworkBuildNumber)\n@ccValueProperty(\"hostInterfaceVersion\", VersionCCValues.serialAPIVersion)\n@ccValueProperty(\"hostInterfaceBuildNumber\", VersionCCValues.serialAPIBuildNumber)\n@ccValueProperty(\"zWaveProtocolVersion\", VersionCCValues.zWaveProtocolVersion)\n@ccValueProperty(\"zWaveProtocolBuildNumber\", VersionCCValues.zWaveProtocolBuildNumber)\n@ccValueProperty(\"applicationVersion\", VersionCCValues.applicationVersion)\n@ccValueProperty(\"applicationBuildNumber\", VersionCCValues.applicationBuildNumber)\nexport class VersionCCZWaveSoftwareReport extends VersionCC {\n public constructor(options: WithAddress<VersionCCZWaveSoftwareReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.sdkVersion = options.sdkVersion;\n this.applicationFrameworkAPIVersion =\n options.applicationFrameworkAPIVersion;\n this.applicationFrameworkBuildNumber =\n options.applicationFrameworkBuildNumber;\n this.hostInterfaceVersion = options.hostInterfaceVersion;\n this.hostInterfaceBuildNumber = options.hostInterfaceBuildNumber;\n this.zWaveProtocolVersion = options.zWaveProtocolVersion;\n this.zWaveProtocolBuildNumber = options.zWaveProtocolBuildNumber;\n this.applicationVersion = options.applicationVersion;\n this.applicationBuildNumber = options.applicationBuildNumber;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): VersionCCZWaveSoftwareReport {\n validatePayload(raw.payload.length >= 23);\n const sdkVersion = parseVersion(raw.payload);\n const applicationFrameworkAPIVersion = parseVersion(raw.payload.subarray(3));\n let applicationFrameworkBuildNumber;\n if (applicationFrameworkAPIVersion !== \"unused\") {\n applicationFrameworkBuildNumber = raw.payload.readUInt16BE(6);\n }\n else {\n applicationFrameworkBuildNumber = 0;\n }\n const hostInterfaceVersion = parseVersion(raw.payload.subarray(8));\n let hostInterfaceBuildNumber;\n if (hostInterfaceVersion !== \"unused\") {\n hostInterfaceBuildNumber = raw.payload.readUInt16BE(11);\n }\n else {\n hostInterfaceBuildNumber = 0;\n }\n const zWaveProtocolVersion = parseVersion(raw.payload.subarray(13));\n let zWaveProtocolBuildNumber;\n if (zWaveProtocolVersion !== \"unused\") {\n zWaveProtocolBuildNumber = raw.payload.readUInt16BE(16);\n }\n else {\n zWaveProtocolBuildNumber = 0;\n }\n const applicationVersion = parseVersion(raw.payload.subarray(18));\n let applicationBuildNumber;\n if (applicationVersion !== \"unused\") {\n applicationBuildNumber = raw.payload.readUInt16BE(21);\n }\n else {\n applicationBuildNumber = 0;\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n sdkVersion,\n applicationFrameworkAPIVersion,\n applicationFrameworkBuildNumber,\n hostInterfaceVersion,\n hostInterfaceBuildNumber,\n zWaveProtocolVersion,\n zWaveProtocolBuildNumber,\n applicationVersion,\n applicationBuildNumber,\n });\n }\n public readonly sdkVersion: string;\n public readonly applicationFrameworkAPIVersion: string;\n public readonly applicationFrameworkBuildNumber: number;\n public readonly hostInterfaceVersion: string;\n public readonly hostInterfaceBuildNumber: number;\n public readonly zWaveProtocolVersion: string;\n public readonly zWaveProtocolBuildNumber: number;\n public readonly applicationVersion: string;\n public readonly applicationBuildNumber: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const encodeVersion = (version: string): number[] => {\n if (version === \"unused\")\n return [0, 0, 0];\n const [major, minor = 0, patch = 0] = version\n .split(\".\")\n .map(Number);\n return [major, minor, patch];\n };\n this.payload = Bytes.concat([\n encodeVersion(this.sdkVersion),\n encodeVersion(this.applicationFrameworkAPIVersion),\n [0, 0],\n encodeVersion(this.hostInterfaceVersion),\n [0, 0],\n encodeVersion(this.zWaveProtocolVersion),\n [0, 0],\n encodeVersion(this.applicationVersion),\n [0, 0],\n ]);\n if (this.applicationFrameworkAPIVersion !== \"unused\") {\n this.payload.writeUInt16BE(this.applicationFrameworkBuildNumber, 6);\n }\n if (this.hostInterfaceVersion !== \"unused\") {\n this.payload.writeUInt16BE(this.hostInterfaceBuildNumber, 11);\n }\n if (this.zWaveProtocolVersion !== \"unused\") {\n this.payload.writeUInt16BE(this.zWaveProtocolBuildNumber, 16);\n }\n if (this.applicationVersion !== \"unused\") {\n this.payload.writeUInt16BE(this.applicationBuildNumber, 21);\n }\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {\n \"SDK version\": this.sdkVersion,\n };\n message[\"appl. framework API version\"] =\n this.applicationFrameworkAPIVersion;\n if (this.applicationFrameworkAPIVersion !== \"unused\") {\n message[\"appl. framework build number\"] =\n this.applicationFrameworkBuildNumber;\n }\n message[\"host interface version\"] = this.hostInterfaceVersion;\n if (this.hostInterfaceVersion !== \"unused\") {\n message[\"host interface build number\"] =\n this.hostInterfaceBuildNumber;\n }\n message[\"Z-Wave protocol version\"] = this.zWaveProtocolVersion;\n if (this.zWaveProtocolVersion !== \"unused\") {\n message[\"Z-Wave protocol build number\"] =\n this.zWaveProtocolBuildNumber;\n }\n message[\"application version\"] = this.applicationVersion;\n if (this.applicationVersion !== \"unused\") {\n message[\"application build number\"] = this.applicationBuildNumber;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@CCCommand(VersionCommand.ZWaveSoftwareGet)\n@expectedCCResponse(VersionCCZWaveSoftwareReport)\nexport class VersionCCZWaveSoftwareGet extends VersionCC {\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -40,6 +40,7 @@ export declare class WakeUpCCIntervalReport extends WakeUpCC {
40
40
  static from(raw: CCRaw, ctx: CCParsingContext): WakeUpCCIntervalReport;
41
41
  readonly wakeUpInterval: number;
42
42
  readonly controllerNodeId: number;
43
+ serialize(ctx: CCEncodingContext): Promise<Bytes>;
43
44
  toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
44
45
  }
45
46
  export declare class WakeUpCCIntervalGet extends WakeUpCC {
@@ -64,6 +65,7 @@ export declare class WakeUpCCIntervalCapabilitiesReport extends WakeUpCC {
64
65
  readonly defaultWakeUpInterval: number;
65
66
  readonly wakeUpIntervalSteps: number;
66
67
  readonly wakeUpOnDemandSupported: boolean;
68
+ serialize(ctx: CCEncodingContext): Promise<Bytes>;
67
69
  toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
68
70
  }
69
71
  export declare class WakeUpCCIntervalCapabilitiesGet extends WakeUpCC {
@@ -380,6 +380,11 @@ let WakeUpCCIntervalReport = (() => {
380
380
  }
381
381
  wakeUpInterval;
382
382
  controllerNodeId;
383
+ serialize(ctx) {
384
+ this.payload = import_shared.Bytes.from([0, 0, 0, this.controllerNodeId]);
385
+ this.payload.writeUIntBE(this.wakeUpInterval, 0, 3);
386
+ return super.serialize(ctx);
387
+ }
383
388
  toLogEntry(ctx) {
384
389
  return {
385
390
  ...super.toLogEntry(ctx),
@@ -538,6 +543,15 @@ let WakeUpCCIntervalCapabilitiesReport = (() => {
538
543
  defaultWakeUpInterval;
539
544
  wakeUpIntervalSteps;
540
545
  wakeUpOnDemandSupported;
546
+ serialize(ctx) {
547
+ this.payload = new import_shared.Bytes(13);
548
+ this.payload.writeUIntBE(this.minWakeUpInterval, 0, 3);
549
+ this.payload.writeUIntBE(this.maxWakeUpInterval, 3, 3);
550
+ this.payload.writeUIntBE(this.defaultWakeUpInterval, 6, 3);
551
+ this.payload.writeUIntBE(this.wakeUpIntervalSteps, 9, 3);
552
+ this.payload[12] = this.wakeUpOnDemandSupported ? 1 : 0;
553
+ return super.serialize(ctx);
554
+ }
541
555
  toLogEntry(ctx) {
542
556
  return {
543
557
  ...super.toLogEntry(ctx),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src_gen/cc/WakeUpCC.ts"],
4
- "sourcesContent": ["import * as __validateArgs from \"./WakeUpCC._validateArgs.js\";\nconst { validateArgs_WakeUpCCAPI_setInterval } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type SupervisionResult, TransmitOptions, ValueMetadata, type WithAddress, supervisedCommandSucceeded, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, pick } from \"@zwave-js/shared\";\nimport { clamp } from \"alcalzone-shared/math\";\nimport { CCAPI, POLL_VALUE, type PollValueImplementation, SET_VALUE, type SetValueImplementation, throwUnsupportedProperty, throwWrongValueType, } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { WakeUpCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { WakeUpCCValues } from \"./_CCValues.generated.js\";\nexport { WakeUpCCValues };\n@API(CommandClasses[\"Wake Up\"])\nexport class WakeUpCCAPI extends CCAPI {\n public supportsCommand(cmd: WakeUpCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case WakeUpCommand.IntervalGet:\n return this.isSinglecast();\n case WakeUpCommand.IntervalSet:\n case WakeUpCommand.NoMoreInformation:\n return true; // This is mandatory\n case WakeUpCommand.IntervalCapabilitiesGet:\n return this.version >= 2 && this.isSinglecast();\n }\n return super.supportsCommand(cmd);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: WakeUpCCAPI, { property }, value) {\n if (property !== \"wakeUpInterval\") {\n throwUnsupportedProperty(this.ccId, property);\n }\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n const result = await this.setInterval(value, this.host.ownNodeId ?? 1);\n // Verify the change after a short delay, unless the command was supervised and successful\n if (this.isSinglecast() && !supervisedCommandSucceeded(result)) {\n this.schedulePoll({ property }, value, { transition: \"fast\" });\n }\n return result;\n };\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: WakeUpCCAPI, { property }) {\n switch (property) {\n case \"wakeUpInterval\":\n return (await this.getInterval())?.[property];\n default:\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getInterval() {\n this.assertSupportsCommand(WakeUpCommand, WakeUpCommand.IntervalGet);\n const cc = new WakeUpCCIntervalGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<WakeUpCCIntervalReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"wakeUpInterval\", \"controllerNodeId\"]);\n }\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getIntervalCapabilities() {\n this.assertSupportsCommand(WakeUpCommand, WakeUpCommand.IntervalCapabilitiesGet);\n const cc = new WakeUpCCIntervalCapabilitiesGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<WakeUpCCIntervalCapabilitiesReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"defaultWakeUpInterval\",\n \"minWakeUpInterval\",\n \"maxWakeUpInterval\",\n \"wakeUpIntervalSteps\",\n \"wakeUpOnDemandSupported\",\n ]);\n }\n }\n @validateArgs_WakeUpCCAPI_setInterval()\n public async setInterval(wakeUpInterval: number, controllerNodeId: number): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(WakeUpCommand, WakeUpCommand.IntervalSet);\n const cc = new WakeUpCCIntervalSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n wakeUpInterval,\n controllerNodeId,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n public async sendNoMoreInformation(): Promise<void> {\n this.assertSupportsCommand(WakeUpCommand, WakeUpCommand.NoMoreInformation);\n const cc = new WakeUpCCNoMoreInformation({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n await this.host.sendCommand(cc, {\n ...this.commandOptions,\n // This command must be sent as part of the wake up queue\n priority: MessagePriority.WakeUp,\n // Don't try to resend this - if we get no response, the node is most likely asleep\n maxSendAttempts: 1,\n // Also we don't want to wait for an ACK because this can lock up the network for seconds\n // if the target node is asleep and doesn't respond to the command\n transmitOptions: TransmitOptions.DEFAULT_NOACK,\n });\n }\n}\n@commandClass(CommandClasses[\"Wake Up\"])\n@implementedVersion(3)\n@ccValues(WakeUpCCValues)\nexport class WakeUpCC extends CommandClass {\n declare ccCommand: WakeUpCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Wake Up\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n tag: \"interview\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n if (node.id === ctx.ownNodeId) {\n ctx.logNode(node.id, `skipping wakeup configuration for the controller`);\n }\n else if (node.isFrequentListening) {\n ctx.logNode(node.id, `skipping wakeup configuration for frequent listening device`);\n }\n else {\n let desiredInterval: number;\n let currentControllerNodeId: number;\n let minInterval: number | undefined;\n let maxInterval: number | undefined;\n // Retrieve the allowed wake up intervals and wake on demand support if possible\n if (api.version >= 2) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"retrieving wakeup capabilities from the device...\",\n direction: \"outbound\",\n });\n const wakeupCaps = await api.getIntervalCapabilities();\n if (wakeupCaps) {\n const logMessage = `received wakeup capabilities:\ndefault wakeup interval: ${wakeupCaps.defaultWakeUpInterval} seconds\nminimum wakeup interval: ${wakeupCaps.minWakeUpInterval} seconds\nmaximum wakeup interval: ${wakeupCaps.maxWakeUpInterval} seconds\nwakeup interval steps: ${wakeupCaps.wakeUpIntervalSteps} seconds\nwakeup on demand supported: ${wakeupCaps.wakeUpOnDemandSupported}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n minInterval = wakeupCaps.minWakeUpInterval;\n maxInterval = wakeupCaps.maxWakeUpInterval;\n }\n }\n // SDS14223 prescribes a IntervalSet followed by a check\n // We have no intention of changing the interval (maybe some time in the future)\n // So for now get the current interval and just set the controller ID\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"retrieving wakeup interval from the device...\",\n direction: \"outbound\",\n });\n const wakeupResp = await api.getInterval();\n if (wakeupResp) {\n const logMessage = `received wakeup configuration:\nwakeup interval: ${wakeupResp.wakeUpInterval} seconds\ncontroller node: ${wakeupResp.controllerNodeId}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n desiredInterval = wakeupResp.wakeUpInterval;\n currentControllerNodeId = wakeupResp.controllerNodeId;\n }\n else {\n // Just guess, I guess\n desiredInterval = 3600 * 6; // 6 hours\n currentControllerNodeId = 0; // assume not set\n }\n const ownNodeId = ctx.ownNodeId;\n // Only change the destination if necessary\n if (currentControllerNodeId !== ownNodeId) {\n // Spec compliance: Limit the interval to the allowed range, but...\n // ...try and preserve a \"never wake up\" configuration (#6367)\n if (desiredInterval !== 0\n && minInterval != undefined\n && maxInterval != undefined) {\n desiredInterval = clamp(desiredInterval, minInterval, maxInterval);\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"configuring wakeup destination node\",\n direction: \"outbound\",\n });\n await api.setInterval(desiredInterval, ownNodeId);\n this.setValue(ctx, WakeUpCCValues.controllerNodeId, ownNodeId);\n ctx.logNode(node.id, \"wakeup destination node changed!\");\n }\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n}\n// @publicAPI\nexport interface WakeUpCCIntervalSetOptions {\n wakeUpInterval: number;\n controllerNodeId: number;\n}\n@CCCommand(WakeUpCommand.IntervalSet)\n@useSupervision()\nexport class WakeUpCCIntervalSet extends WakeUpCC {\n public constructor(options: WithAddress<WakeUpCCIntervalSetOptions>) {\n super(options);\n this.wakeUpInterval = options.wakeUpInterval;\n this.controllerNodeId = options.controllerNodeId;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WakeUpCCIntervalSet {\n validatePayload(raw.payload.length >= 4);\n const wakeUpInterval = raw.payload.readUIntBE(0, 3);\n const controllerNodeId = raw.payload[3];\n return new this({\n nodeId: ctx.sourceNodeId,\n wakeUpInterval,\n controllerNodeId,\n });\n }\n public wakeUpInterval: number;\n public controllerNodeId: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n 0,\n 0,\n 0, // placeholder\n this.controllerNodeId,\n ]);\n this.payload.writeUIntBE(this.wakeUpInterval, 0, 3);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"wake-up interval\": `${this.wakeUpInterval} seconds`,\n \"controller node id\": this.controllerNodeId,\n },\n };\n }\n}\n// @publicAPI\nexport interface WakeUpCCIntervalReportOptions {\n wakeUpInterval: number;\n controllerNodeId: number;\n}\n@CCCommand(WakeUpCommand.IntervalReport)\n@ccValueProperty(\"wakeUpInterval\", WakeUpCCValues.wakeUpInterval)\n@ccValueProperty(\"controllerNodeId\", WakeUpCCValues.controllerNodeId)\nexport class WakeUpCCIntervalReport extends WakeUpCC {\n public constructor(options: WithAddress<WakeUpCCIntervalReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.wakeUpInterval = options.wakeUpInterval;\n this.controllerNodeId = options.controllerNodeId;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WakeUpCCIntervalReport {\n validatePayload(raw.payload.length >= 4);\n const wakeUpInterval = raw.payload.readUIntBE(0, 3);\n const controllerNodeId = raw.payload[3];\n return new this({\n nodeId: ctx.sourceNodeId,\n wakeUpInterval,\n controllerNodeId,\n });\n }\n public readonly wakeUpInterval: number;\n public readonly controllerNodeId: number;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"wake-up interval\": `${this.wakeUpInterval} seconds`,\n \"controller node id\": this.controllerNodeId,\n },\n };\n }\n}\n@CCCommand(WakeUpCommand.IntervalGet)\n@expectedCCResponse(WakeUpCCIntervalReport)\nexport class WakeUpCCIntervalGet extends WakeUpCC {\n}\n@CCCommand(WakeUpCommand.WakeUpNotification)\nexport class WakeUpCCWakeUpNotification extends WakeUpCC {\n}\n@CCCommand(WakeUpCommand.NoMoreInformation)\nexport class WakeUpCCNoMoreInformation extends WakeUpCC {\n}\n// @publicAPI\nexport interface WakeUpCCIntervalCapabilitiesReportOptions {\n minWakeUpInterval: number;\n maxWakeUpInterval: number;\n defaultWakeUpInterval: number;\n wakeUpIntervalSteps: number;\n wakeUpOnDemandSupported: boolean;\n}\n@CCCommand(WakeUpCommand.IntervalCapabilitiesReport)\n@ccValueProperty(\"wakeUpOnDemandSupported\", WakeUpCCValues.wakeUpOnDemandSupported)\nexport class WakeUpCCIntervalCapabilitiesReport extends WakeUpCC {\n public constructor(options: WithAddress<WakeUpCCIntervalCapabilitiesReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.minWakeUpInterval = options.minWakeUpInterval;\n this.maxWakeUpInterval = options.maxWakeUpInterval;\n this.defaultWakeUpInterval = options.defaultWakeUpInterval;\n this.wakeUpIntervalSteps = options.wakeUpIntervalSteps;\n this.wakeUpOnDemandSupported = options.wakeUpOnDemandSupported;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WakeUpCCIntervalCapabilitiesReport {\n validatePayload(raw.payload.length >= 12);\n const minWakeUpInterval = raw.payload.readUIntBE(0, 3);\n const maxWakeUpInterval = raw.payload.readUIntBE(3, 3);\n const defaultWakeUpInterval = raw.payload.readUIntBE(6, 3);\n const wakeUpIntervalSteps = raw.payload.readUIntBE(9, 3);\n let wakeUpOnDemandSupported = false;\n if (raw.payload.length >= 13) {\n // V3+\n wakeUpOnDemandSupported = !!(raw.payload[12] & 0b1);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n minWakeUpInterval,\n maxWakeUpInterval,\n defaultWakeUpInterval,\n wakeUpIntervalSteps,\n wakeUpOnDemandSupported,\n });\n }\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n const valueDB = this.getValueDB(ctx);\n // Store the received information as metadata for the wake up interval\n valueDB.setMetadata({\n commandClass: this.ccId,\n endpoint: this.endpointIndex,\n property: \"wakeUpInterval\",\n }, {\n ...ValueMetadata.WriteOnlyUInt24,\n allowed: [\n { value: 0 },\n {\n from: this.minWakeUpInterval,\n to: this.maxWakeUpInterval,\n step: this.wakeUpIntervalSteps,\n },\n ],\n min: 0,\n max: this.maxWakeUpInterval,\n default: this.defaultWakeUpInterval,\n states: { 0: \"Disabled\" },\n });\n // Store wakeUpOnDemandSupported in valueDB\n return true;\n }\n public readonly minWakeUpInterval: number;\n public readonly maxWakeUpInterval: number;\n public readonly defaultWakeUpInterval: number;\n public readonly wakeUpIntervalSteps: number;\n public readonly wakeUpOnDemandSupported: boolean;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"default interval\": `${this.defaultWakeUpInterval} seconds`,\n \"minimum interval\": `${this.minWakeUpInterval} seconds`,\n \"maximum interval\": `${this.maxWakeUpInterval} seconds`,\n \"interval steps\": `${this.wakeUpIntervalSteps} seconds`,\n \"wake up on demand supported\": `${this.wakeUpOnDemandSupported}`,\n },\n };\n }\n}\n@CCCommand(WakeUpCommand.IntervalCapabilitiesGet)\n@expectedCCResponse(WakeUpCCIntervalCapabilitiesReport)\nexport class WakeUpCCIntervalCapabilitiesGet extends WakeUpCC {\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as __validateArgs from \"./WakeUpCC._validateArgs.js\";\nconst { validateArgs_WakeUpCCAPI_setInterval } = __validateArgs;\nimport { CommandClasses, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, MessagePriority, type SupervisionResult, TransmitOptions, ValueMetadata, type WithAddress, supervisedCommandSucceeded, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, pick } from \"@zwave-js/shared\";\nimport { clamp } from \"alcalzone-shared/math\";\nimport { CCAPI, POLL_VALUE, type PollValueImplementation, SET_VALUE, type SetValueImplementation, throwUnsupportedProperty, throwWrongValueType, } from \"../lib/API.js\";\nimport { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, } from \"../lib/CommandClass.js\";\nimport { API, CCCommand, ccValueProperty, ccValues, commandClass, expectedCCResponse, implementedVersion, useSupervision, } from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { WakeUpCommand } from \"../lib/_Types.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../lib/traits.js\";\nimport { WakeUpCCValues } from \"./_CCValues.generated.js\";\nexport { WakeUpCCValues };\n@API(CommandClasses[\"Wake Up\"])\nexport class WakeUpCCAPI extends CCAPI {\n public supportsCommand(cmd: WakeUpCommand): MaybeNotKnown<boolean> {\n switch (cmd) {\n case WakeUpCommand.IntervalGet:\n return this.isSinglecast();\n case WakeUpCommand.IntervalSet:\n case WakeUpCommand.NoMoreInformation:\n return true; // This is mandatory\n case WakeUpCommand.IntervalCapabilitiesGet:\n return this.version >= 2 && this.isSinglecast();\n }\n return super.supportsCommand(cmd);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: WakeUpCCAPI, { property }, value) {\n if (property !== \"wakeUpInterval\") {\n throwUnsupportedProperty(this.ccId, property);\n }\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n const result = await this.setInterval(value, this.host.ownNodeId ?? 1);\n // Verify the change after a short delay, unless the command was supervised and successful\n if (this.isSinglecast() && !supervisedCommandSucceeded(result)) {\n this.schedulePoll({ property }, value, { transition: \"fast\" });\n }\n return result;\n };\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: WakeUpCCAPI, { property }) {\n switch (property) {\n case \"wakeUpInterval\":\n return (await this.getInterval())?.[property];\n default:\n throwUnsupportedProperty(this.ccId, property);\n }\n };\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getInterval() {\n this.assertSupportsCommand(WakeUpCommand, WakeUpCommand.IntervalGet);\n const cc = new WakeUpCCIntervalGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<WakeUpCCIntervalReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"wakeUpInterval\", \"controllerNodeId\"]);\n }\n }\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async getIntervalCapabilities() {\n this.assertSupportsCommand(WakeUpCommand, WakeUpCommand.IntervalCapabilitiesGet);\n const cc = new WakeUpCCIntervalCapabilitiesGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<WakeUpCCIntervalCapabilitiesReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\n \"defaultWakeUpInterval\",\n \"minWakeUpInterval\",\n \"maxWakeUpInterval\",\n \"wakeUpIntervalSteps\",\n \"wakeUpOnDemandSupported\",\n ]);\n }\n }\n @validateArgs_WakeUpCCAPI_setInterval()\n public async setInterval(wakeUpInterval: number, controllerNodeId: number): Promise<SupervisionResult | undefined> {\n this.assertSupportsCommand(WakeUpCommand, WakeUpCommand.IntervalSet);\n const cc = new WakeUpCCIntervalSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n wakeUpInterval,\n controllerNodeId,\n });\n return this.host.sendCommand(cc, this.commandOptions);\n }\n public async sendNoMoreInformation(): Promise<void> {\n this.assertSupportsCommand(WakeUpCommand, WakeUpCommand.NoMoreInformation);\n const cc = new WakeUpCCNoMoreInformation({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n await this.host.sendCommand(cc, {\n ...this.commandOptions,\n // This command must be sent as part of the wake up queue\n priority: MessagePriority.WakeUp,\n // Don't try to resend this - if we get no response, the node is most likely asleep\n maxSendAttempts: 1,\n // Also we don't want to wait for an ACK because this can lock up the network for seconds\n // if the target node is asleep and doesn't respond to the command\n transmitOptions: TransmitOptions.DEFAULT_NOACK,\n });\n }\n}\n@commandClass(CommandClasses[\"Wake Up\"])\n@implementedVersion(3)\n@ccValues(WakeUpCCValues)\nexport class WakeUpCC extends CommandClass {\n declare ccCommand: WakeUpCommand;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n const endpoint = this.getEndpoint(ctx)!;\n const api = CCAPI.create(CommandClasses[\"Wake Up\"], ctx, endpoint).withOptions({\n priority: MessagePriority.NodeQuery,\n tag: \"interview\",\n });\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing ${this.ccName}...`,\n direction: \"none\",\n });\n if (node.id === ctx.ownNodeId) {\n ctx.logNode(node.id, `skipping wakeup configuration for the controller`);\n }\n else if (node.isFrequentListening) {\n ctx.logNode(node.id, `skipping wakeup configuration for frequent listening device`);\n }\n else {\n let desiredInterval: number;\n let currentControllerNodeId: number;\n let minInterval: number | undefined;\n let maxInterval: number | undefined;\n // Retrieve the allowed wake up intervals and wake on demand support if possible\n if (api.version >= 2) {\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"retrieving wakeup capabilities from the device...\",\n direction: \"outbound\",\n });\n const wakeupCaps = await api.getIntervalCapabilities();\n if (wakeupCaps) {\n const logMessage = `received wakeup capabilities:\ndefault wakeup interval: ${wakeupCaps.defaultWakeUpInterval} seconds\nminimum wakeup interval: ${wakeupCaps.minWakeUpInterval} seconds\nmaximum wakeup interval: ${wakeupCaps.maxWakeUpInterval} seconds\nwakeup interval steps: ${wakeupCaps.wakeUpIntervalSteps} seconds\nwakeup on demand supported: ${wakeupCaps.wakeUpOnDemandSupported}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n minInterval = wakeupCaps.minWakeUpInterval;\n maxInterval = wakeupCaps.maxWakeUpInterval;\n }\n }\n // SDS14223 prescribes a IntervalSet followed by a check\n // We have no intention of changing the interval (maybe some time in the future)\n // So for now get the current interval and just set the controller ID\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"retrieving wakeup interval from the device...\",\n direction: \"outbound\",\n });\n const wakeupResp = await api.getInterval();\n if (wakeupResp) {\n const logMessage = `received wakeup configuration:\nwakeup interval: ${wakeupResp.wakeUpInterval} seconds\ncontroller node: ${wakeupResp.controllerNodeId}`;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: logMessage,\n direction: \"inbound\",\n });\n desiredInterval = wakeupResp.wakeUpInterval;\n currentControllerNodeId = wakeupResp.controllerNodeId;\n }\n else {\n // Just guess, I guess\n desiredInterval = 3600 * 6; // 6 hours\n currentControllerNodeId = 0; // assume not set\n }\n const ownNodeId = ctx.ownNodeId;\n // Only change the destination if necessary\n if (currentControllerNodeId !== ownNodeId) {\n // Spec compliance: Limit the interval to the allowed range, but...\n // ...try and preserve a \"never wake up\" configuration (#6367)\n if (desiredInterval !== 0\n && minInterval != undefined\n && maxInterval != undefined) {\n desiredInterval = clamp(desiredInterval, minInterval, maxInterval);\n }\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: \"configuring wakeup destination node\",\n direction: \"outbound\",\n });\n await api.setInterval(desiredInterval, ownNodeId);\n this.setValue(ctx, WakeUpCCValues.controllerNodeId, ownNodeId);\n ctx.logNode(node.id, \"wakeup destination node changed!\");\n }\n }\n // Remember that the interview is complete\n this.setInterviewComplete(ctx, true);\n }\n}\n// @publicAPI\nexport interface WakeUpCCIntervalSetOptions {\n wakeUpInterval: number;\n controllerNodeId: number;\n}\n@CCCommand(WakeUpCommand.IntervalSet)\n@useSupervision()\nexport class WakeUpCCIntervalSet extends WakeUpCC {\n public constructor(options: WithAddress<WakeUpCCIntervalSetOptions>) {\n super(options);\n this.wakeUpInterval = options.wakeUpInterval;\n this.controllerNodeId = options.controllerNodeId;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WakeUpCCIntervalSet {\n validatePayload(raw.payload.length >= 4);\n const wakeUpInterval = raw.payload.readUIntBE(0, 3);\n const controllerNodeId = raw.payload[3];\n return new this({\n nodeId: ctx.sourceNodeId,\n wakeUpInterval,\n controllerNodeId,\n });\n }\n public wakeUpInterval: number;\n public controllerNodeId: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n 0,\n 0,\n 0, // placeholder\n this.controllerNodeId,\n ]);\n this.payload.writeUIntBE(this.wakeUpInterval, 0, 3);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"wake-up interval\": `${this.wakeUpInterval} seconds`,\n \"controller node id\": this.controllerNodeId,\n },\n };\n }\n}\n// @publicAPI\nexport interface WakeUpCCIntervalReportOptions {\n wakeUpInterval: number;\n controllerNodeId: number;\n}\n@CCCommand(WakeUpCommand.IntervalReport)\n@ccValueProperty(\"wakeUpInterval\", WakeUpCCValues.wakeUpInterval)\n@ccValueProperty(\"controllerNodeId\", WakeUpCCValues.controllerNodeId)\nexport class WakeUpCCIntervalReport extends WakeUpCC {\n public constructor(options: WithAddress<WakeUpCCIntervalReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.wakeUpInterval = options.wakeUpInterval;\n this.controllerNodeId = options.controllerNodeId;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WakeUpCCIntervalReport {\n validatePayload(raw.payload.length >= 4);\n const wakeUpInterval = raw.payload.readUIntBE(0, 3);\n const controllerNodeId = raw.payload[3];\n return new this({\n nodeId: ctx.sourceNodeId,\n wakeUpInterval,\n controllerNodeId,\n });\n }\n public readonly wakeUpInterval: number;\n public readonly controllerNodeId: number;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([0, 0, 0, this.controllerNodeId]);\n this.payload.writeUIntBE(this.wakeUpInterval, 0, 3);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"wake-up interval\": `${this.wakeUpInterval} seconds`,\n \"controller node id\": this.controllerNodeId,\n },\n };\n }\n}\n@CCCommand(WakeUpCommand.IntervalGet)\n@expectedCCResponse(WakeUpCCIntervalReport)\nexport class WakeUpCCIntervalGet extends WakeUpCC {\n}\n@CCCommand(WakeUpCommand.WakeUpNotification)\nexport class WakeUpCCWakeUpNotification extends WakeUpCC {\n}\n@CCCommand(WakeUpCommand.NoMoreInformation)\nexport class WakeUpCCNoMoreInformation extends WakeUpCC {\n}\n// @publicAPI\nexport interface WakeUpCCIntervalCapabilitiesReportOptions {\n minWakeUpInterval: number;\n maxWakeUpInterval: number;\n defaultWakeUpInterval: number;\n wakeUpIntervalSteps: number;\n wakeUpOnDemandSupported: boolean;\n}\n@CCCommand(WakeUpCommand.IntervalCapabilitiesReport)\n@ccValueProperty(\"wakeUpOnDemandSupported\", WakeUpCCValues.wakeUpOnDemandSupported)\nexport class WakeUpCCIntervalCapabilitiesReport extends WakeUpCC {\n public constructor(options: WithAddress<WakeUpCCIntervalCapabilitiesReportOptions>) {\n super(options);\n // TODO: Check implementation:\n this.minWakeUpInterval = options.minWakeUpInterval;\n this.maxWakeUpInterval = options.maxWakeUpInterval;\n this.defaultWakeUpInterval = options.defaultWakeUpInterval;\n this.wakeUpIntervalSteps = options.wakeUpIntervalSteps;\n this.wakeUpOnDemandSupported = options.wakeUpOnDemandSupported;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): WakeUpCCIntervalCapabilitiesReport {\n validatePayload(raw.payload.length >= 12);\n const minWakeUpInterval = raw.payload.readUIntBE(0, 3);\n const maxWakeUpInterval = raw.payload.readUIntBE(3, 3);\n const defaultWakeUpInterval = raw.payload.readUIntBE(6, 3);\n const wakeUpIntervalSteps = raw.payload.readUIntBE(9, 3);\n let wakeUpOnDemandSupported = false;\n if (raw.payload.length >= 13) {\n // V3+\n wakeUpOnDemandSupported = !!(raw.payload[12] & 0b1);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n minWakeUpInterval,\n maxWakeUpInterval,\n defaultWakeUpInterval,\n wakeUpIntervalSteps,\n wakeUpOnDemandSupported,\n });\n }\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n const valueDB = this.getValueDB(ctx);\n // Store the received information as metadata for the wake up interval\n valueDB.setMetadata({\n commandClass: this.ccId,\n endpoint: this.endpointIndex,\n property: \"wakeUpInterval\",\n }, {\n ...ValueMetadata.WriteOnlyUInt24,\n allowed: [\n { value: 0 },\n {\n from: this.minWakeUpInterval,\n to: this.maxWakeUpInterval,\n step: this.wakeUpIntervalSteps,\n },\n ],\n min: 0,\n max: this.maxWakeUpInterval,\n default: this.defaultWakeUpInterval,\n states: { 0: \"Disabled\" },\n });\n // Store wakeUpOnDemandSupported in valueDB\n return true;\n }\n public readonly minWakeUpInterval: number;\n public readonly maxWakeUpInterval: number;\n public readonly defaultWakeUpInterval: number;\n public readonly wakeUpIntervalSteps: number;\n public readonly wakeUpOnDemandSupported: boolean;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = new Bytes(13);\n this.payload.writeUIntBE(this.minWakeUpInterval, 0, 3);\n this.payload.writeUIntBE(this.maxWakeUpInterval, 3, 3);\n this.payload.writeUIntBE(this.defaultWakeUpInterval, 6, 3);\n this.payload.writeUIntBE(this.wakeUpIntervalSteps, 9, 3);\n this.payload[12] = this.wakeUpOnDemandSupported ? 1 : 0;\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n return {\n ...super.toLogEntry(ctx),\n message: {\n \"default interval\": `${this.defaultWakeUpInterval} seconds`,\n \"minimum interval\": `${this.minWakeUpInterval} seconds`,\n \"maximum interval\": `${this.maxWakeUpInterval} seconds`,\n \"interval steps\": `${this.wakeUpIntervalSteps} seconds`,\n \"wake up on demand supported\": `${this.wakeUpOnDemandSupported}`,\n },\n };\n }\n}\n@CCCommand(WakeUpCommand.IntervalCapabilitiesGet)\n@expectedCCResponse(WakeUpCCIntervalCapabilitiesReport)\nexport class WakeUpCCIntervalCapabilitiesGet extends WakeUpCC {\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -54,7 +54,7 @@ export type FibaroVenetianBlindCCSetOptions = {
54
54
  };
55
55
  export declare class FibaroVenetianBlindCCSet extends FibaroVenetianBlindCC {
56
56
  constructor(options: WithAddress<FibaroVenetianBlindCCSetOptions>);
57
- static from(_raw: CCRaw, _ctx: CCParsingContext): FibaroVenetianBlindCCSet;
57
+ static from(raw: CCRaw, ctx: CCParsingContext): FibaroVenetianBlindCCSet;
58
58
  position: number | undefined;
59
59
  tilt: number | undefined;
60
60
  serialize(ctx: CCEncodingContext): Promise<Bytes>;
@@ -70,6 +70,7 @@ export declare class FibaroVenetianBlindCCReport extends FibaroVenetianBlindCC {
70
70
  persistValues(ctx: PersistValuesContext): boolean;
71
71
  position: MaybeUnknown<number> | undefined;
72
72
  tilt: MaybeUnknown<number> | undefined;
73
+ serialize(ctx: CCEncodingContext): Promise<Bytes>;
73
74
  toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry;
74
75
  }
75
76
  export declare class FibaroVenetianBlindCCGet extends FibaroVenetianBlindCC {
@@ -366,8 +366,28 @@ let FibaroVenetianBlindCCSet = (() => {
366
366
  if ("tilt" in options)
367
367
  this.tilt = options.tilt;
368
368
  }
369
- static from(_raw, _ctx) {
370
- throw new import_core.ZWaveError(`${this.name}: deserialization not implemented`, import_core.ZWaveErrorCodes.Deserialization_NotImplemented);
369
+ static from(raw, ctx) {
370
+ (0, import_core.validatePayload)(raw.payload.length >= 3);
371
+ const hasPosition = !!(raw.payload[0] & 2);
372
+ const hasTilt = !!(raw.payload[0] & 1);
373
+ (0, import_core.validatePayload)(hasPosition || hasTilt);
374
+ if (hasPosition && hasTilt) {
375
+ return new this({
376
+ nodeId: ctx.sourceNodeId,
377
+ position: raw.payload[1],
378
+ tilt: raw.payload[2]
379
+ });
380
+ } else if (hasPosition) {
381
+ return new this({
382
+ nodeId: ctx.sourceNodeId,
383
+ position: raw.payload[1]
384
+ });
385
+ } else {
386
+ return new this({
387
+ nodeId: ctx.sourceNodeId,
388
+ tilt: raw.payload[2]
389
+ });
390
+ }
371
391
  }
372
392
  position;
373
393
  tilt;
@@ -462,6 +482,14 @@ let FibaroVenetianBlindCCReport = (() => {
462
482
  }
463
483
  position;
464
484
  tilt;
485
+ serialize(ctx) {
486
+ this.payload = import_shared.Bytes.from([
487
+ (this.position !== void 0 ? 2 : 0) | (this.tilt !== void 0 ? 1 : 0),
488
+ this.position === import_core.UNKNOWN_STATE ? 254 : this.position ?? 0,
489
+ this.tilt === import_core.UNKNOWN_STATE ? 254 : this.tilt ?? 0
490
+ ]);
491
+ return super.serialize(ctx);
492
+ }
465
493
  toLogEntry(ctx) {
466
494
  const message = {};
467
495
  if (this.position != void 0) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src_gen/cc/manufacturerProprietary/FibaroCC.ts"],
4
- "sourcesContent": ["import * as __validateArgs from \"./FibaroCC._validateArgs.js\";\nconst { validateArgs_FibaroCCAPI_fibaroVenetianBlindsSetPosition, validateArgs_FibaroCCAPI_fibaroVenetianBlindsSetTilt } = __validateArgs;\nimport type { GetDeviceConfig } from \"@zwave-js/config\";\nimport { CommandClasses, type GetValueDB, type MaybeUnknown, type MessageOrCCLogEntry, type MessageRecord, type ValueID, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, parseMaybeNumber, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, pick } from \"@zwave-js/shared\";\nimport { isArray } from \"alcalzone-shared/typeguards\";\nimport { POLL_VALUE, type PollValueImplementation, SET_VALUE, type SetValueImplementation, throwMissingPropertyKey, throwUnsupportedProperty, throwUnsupportedPropertyKey, throwWrongValueType, } from \"../../lib/API.js\";\nimport type { CCRaw, CommandClassOptions, InterviewContext, PersistValuesContext, RefreshValuesContext, RefreshValuesOptions, } from \"../../lib/CommandClass.js\";\nimport { expectedCCResponse } from \"../../lib/CommandClassDecorators.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../../lib/traits.js\";\nimport { ManufacturerProprietaryCC, ManufacturerProprietaryCCAPI, } from \"../ManufacturerProprietaryCC.js\";\nimport { fibaroCC, fibaroCCCommand, getFibaroCCCommand, getFibaroCCCommandConstructor, getFibaroCCConstructor, getFibaroCCId, manufacturerId, manufacturerProprietaryAPI, } from \"./Decorators.js\";\nexport const MANUFACTURERID_FIBARO = 0x10f;\n/** Returns the ValueID used to store the current venetian blind position */\nexport function getFibaroVenetianBlindPositionValueId(endpoint: number): ValueID {\n return {\n commandClass: CommandClasses[\"Manufacturer Proprietary\"],\n endpoint,\n property: \"fibaro\",\n propertyKey: \"venetianBlindsPosition\",\n };\n}\n/** Returns the value metadata for venetian blind position */\nexport function getFibaroVenetianBlindPositionMetadata(): ValueMetadata {\n return {\n ...ValueMetadata.Level,\n label: \"Venetian blinds position\",\n };\n}\n/** Returns the ValueID used to store the current venetian blind tilt */\nexport function getFibaroVenetianBlindTiltValueId(endpoint: number): ValueID {\n return {\n commandClass: CommandClasses[\"Manufacturer Proprietary\"],\n endpoint,\n property: \"fibaro\",\n propertyKey: \"venetianBlindsTilt\",\n };\n}\n/** Returns the value metadata for venetian blind tilt */\nexport function getFibaroVenetianBlindTiltMetadata(): ValueMetadata {\n return {\n ...ValueMetadata.Level,\n label: \"Venetian blinds tilt\",\n };\n}\nfunction getSupportedFibaroCCIDs(ctx: GetDeviceConfig, nodeId: number): FibaroCCIDs[] {\n const proprietaryConfig = ctx.getDeviceConfig?.(nodeId)?.proprietary;\n if (proprietaryConfig && isArray(proprietaryConfig.fibaroCCs)) {\n return proprietaryConfig.fibaroCCs as FibaroCCIDs[];\n }\n return [];\n}\nexport enum FibaroCCIDs {\n VenetianBlind = 0x26\n}\n@manufacturerProprietaryAPI(MANUFACTURERID_FIBARO)\nexport class FibaroCCAPI extends ManufacturerProprietaryCCAPI {\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async fibaroVenetianBlindsGet() {\n const cc = new FibaroVenetianBlindCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<FibaroVenetianBlindCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"position\", \"tilt\"]);\n }\n }\n @validateArgs_FibaroCCAPI_fibaroVenetianBlindsSetPosition()\n public async fibaroVenetianBlindsSetPosition(value: number): Promise<void> {\n const cc = new FibaroVenetianBlindCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n position: value,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_FibaroCCAPI_fibaroVenetianBlindsSetTilt()\n public async fibaroVenetianBlindsSetTilt(value: number): Promise<void> {\n const cc = new FibaroVenetianBlindCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n tilt: value,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: FibaroCCAPI, { property, propertyKey }, value) {\n if (property !== \"fibaro\") {\n throwUnsupportedProperty(this.ccId, property);\n }\n if (propertyKey === \"venetianBlindsPosition\") {\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n await this.fibaroVenetianBlindsSetPosition(value);\n }\n else if (propertyKey === \"venetianBlindsTilt\") {\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n await this.fibaroVenetianBlindsSetTilt(value);\n }\n else {\n // unsupported property key, ignore...\n return;\n }\n // Verify the current value after a delay\n this.schedulePoll({ property, propertyKey }, value);\n return undefined;\n };\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: FibaroCCAPI, { property, propertyKey }) {\n if (property !== \"fibaro\") {\n throwUnsupportedProperty(this.ccId, property);\n }\n else if (propertyKey == undefined) {\n throwMissingPropertyKey(this.ccId, property);\n }\n switch (propertyKey) {\n case \"venetianBlindsPosition\":\n return (await this.fibaroVenetianBlindsGet())?.position;\n case \"venetianBlindsTilt\":\n return (await this.fibaroVenetianBlindsGet())?.tilt;\n default:\n throwUnsupportedPropertyKey(this.ccId, property, propertyKey);\n }\n };\n }\n}\n@manufacturerId(MANUFACTURERID_FIBARO)\nexport class FibaroCC extends ManufacturerProprietaryCC {\n public constructor(options: CommandClassOptions) {\n super(options);\n this.fibaroCCId = getFibaroCCId(this);\n this.fibaroCCCommand = getFibaroCCCommand(this);\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FibaroCC {\n validatePayload(raw.payload.length >= 2);\n const fibaroCCId = raw.payload[0];\n const fibaroCCCommand = raw.payload[1];\n const FibaroConstructor = getFibaroCCCommandConstructor(fibaroCCId, fibaroCCCommand);\n if (FibaroConstructor) {\n return FibaroConstructor.from(raw.withPayload(raw.payload.subarray(2)), ctx);\n }\n return new FibaroCC({\n nodeId: ctx.sourceNodeId,\n });\n }\n public fibaroCCId?: number;\n public fibaroCCCommand?: number;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n // Iterate through all supported Fibaro CCs and interview them\n const supportedFibaroCCIDs = getSupportedFibaroCCIDs(ctx, node.id);\n for (const ccId of supportedFibaroCCIDs) {\n const SubConstructor = getFibaroCCConstructor(ccId);\n if (SubConstructor) {\n const instance = new SubConstructor({ nodeId: node.id });\n await instance.interview(ctx);\n }\n }\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n // Iterate through all supported Fibaro CCs and let them refresh their values\n const supportedFibaroCCIDs = getSupportedFibaroCCIDs(ctx, node.id);\n for (const ccId of supportedFibaroCCIDs) {\n const SubConstructor = getFibaroCCConstructor(ccId);\n if (SubConstructor) {\n const instance = new SubConstructor({ nodeId: node.id });\n await instance.refreshValues(ctx, options);\n }\n }\n }\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n if (this.fibaroCCId == undefined) {\n throw new ZWaveError(\"Cannot serialize a Fibaro CC without a Fibaro CC ID\", ZWaveErrorCodes.CC_Invalid);\n }\n else if (this.fibaroCCCommand == undefined) {\n throw new ZWaveError(\"Cannot serialize a Fibaro CC without a Fibaro CC Command\", ZWaveErrorCodes.CC_Invalid);\n }\n this.payload = Bytes.concat([\n [this.fibaroCCId, this.fibaroCCCommand],\n this.payload,\n ]);\n return super.serialize(ctx);\n }\n}\nexport enum FibaroVenetianBlindCCCommand {\n Set = 0x01,\n Get = 0x02,\n Report = 0x03\n}\n@fibaroCC(FibaroCCIDs.VenetianBlind)\nexport class FibaroVenetianBlindCC extends FibaroCC {\n declare fibaroCCId: FibaroCCIDs.VenetianBlind;\n declare fibaroCCCommand: FibaroVenetianBlindCCCommand;\n public constructor(options: CommandClassOptions) {\n super(options);\n this.fibaroCCId = FibaroCCIDs.VenetianBlind;\n }\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing Fibaro Venetian Blind CC...`,\n direction: \"none\",\n });\n // Nothing special, just get the values\n await this.refreshValues(ctx, { tag: \"interview\" });\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n ctx.logNode(node.id, {\n message: \"Requesting venetian blind position and tilt...\",\n direction: \"outbound\",\n });\n const resp = await ctx.sendCommand<FibaroVenetianBlindCCReport>(new FibaroVenetianBlindCCGet({\n nodeId: this.nodeId,\n endpointIndex: this.endpointIndex,\n }), {\n priority: options?.priority,\n tag: options?.tag,\n });\n if (resp) {\n const logMessage = `received venetian blind state:\nposition: ${resp.position}\ntilt: ${resp.tilt}`;\n ctx.logNode(node.id, {\n message: logMessage,\n direction: \"inbound\",\n });\n }\n }\n}\n// @publicAPI\nexport type FibaroVenetianBlindCCSetOptions = {\n position: number;\n} | {\n tilt: number;\n} | {\n position: number;\n tilt: number;\n};\n@fibaroCCCommand(FibaroVenetianBlindCCCommand.Set)\nexport class FibaroVenetianBlindCCSet extends FibaroVenetianBlindCC {\n public constructor(options: WithAddress<FibaroVenetianBlindCCSetOptions>) {\n super(options);\n this.fibaroCCCommand = FibaroVenetianBlindCCCommand.Set;\n if (\"position\" in options)\n this.position = options.position;\n if (\"tilt\" in options)\n this.tilt = options.tilt;\n }\n public static from(_raw: CCRaw, _ctx: CCParsingContext): FibaroVenetianBlindCCSet {\n // TODO: Deserialize payload\n throw new ZWaveError(`${this.name}: deserialization not implemented`, ZWaveErrorCodes.Deserialization_NotImplemented);\n }\n public position: number | undefined;\n public tilt: number | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const controlByte = (this.position != undefined ? 0b10 : 0)\n | (this.tilt != undefined ? 0b01 : 0);\n this.payload = Bytes.from([\n controlByte,\n this.position ?? 0,\n this.tilt ?? 0,\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {};\n if (this.position != undefined) {\n message.position = this.position;\n }\n if (this.tilt != undefined) {\n message.tilt = this.tilt;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface FibaroVenetianBlindCCReportOptions {\n position?: MaybeUnknown<number>;\n tilt?: MaybeUnknown<number>;\n}\n@fibaroCCCommand(FibaroVenetianBlindCCCommand.Report)\nexport class FibaroVenetianBlindCCReport extends FibaroVenetianBlindCC {\n public constructor(options: WithAddress<FibaroVenetianBlindCCReportOptions>) {\n super(options);\n this.fibaroCCCommand = FibaroVenetianBlindCCCommand.Report;\n // TODO: Check implementation:\n this.position = options.position;\n this.tilt = options.tilt;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FibaroVenetianBlindCCReport {\n validatePayload(raw.payload.length >= 3);\n // When the node sends a report, payload[0] === 0b11. This is probably a\n // bit mask for position and tilt\n let position: MaybeUnknown<number> | undefined;\n if (!!(raw.payload[0] & 0b10)) {\n position = parseMaybeNumber(raw.payload[1]);\n }\n let tilt: MaybeUnknown<number> | undefined;\n if (!!(raw.payload[0] & 0b01)) {\n tilt = parseMaybeNumber(raw.payload[2]);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n position,\n tilt,\n });\n }\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n const valueDB = this.getValueDB(ctx);\n if (this.position != undefined) {\n const positionValueId = getFibaroVenetianBlindPositionValueId(this.endpointIndex);\n valueDB.setMetadata(positionValueId, {\n ...ValueMetadata.Level,\n label: \"Venetian blinds position\",\n });\n valueDB.setValue(positionValueId, this.position);\n }\n if (this.tilt != undefined) {\n const tiltValueId = getFibaroVenetianBlindTiltValueId(this.endpointIndex);\n valueDB.setMetadata(tiltValueId, {\n ...ValueMetadata.Level,\n label: \"Venetian blinds tilt\",\n });\n valueDB.setValue(tiltValueId, this.tilt);\n }\n return true;\n }\n public position: MaybeUnknown<number> | undefined;\n public tilt: MaybeUnknown<number> | undefined;\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {};\n if (this.position != undefined) {\n message.position = this.position;\n }\n if (this.tilt != undefined) {\n message.tilt = this.tilt;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@fibaroCCCommand(FibaroVenetianBlindCCCommand.Get)\n@expectedCCResponse(FibaroVenetianBlindCCReport)\nexport class FibaroVenetianBlindCCGet extends FibaroVenetianBlindCC {\n // @noLogEntry: This CC has no properties to log\n public constructor(options: CommandClassOptions) {\n super(options);\n this.fibaroCCCommand = FibaroVenetianBlindCCCommand.Get;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FibaroVenetianBlindCCGet {\n return new this({\n nodeId: ctx.sourceNodeId,\n });\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as __validateArgs from \"./FibaroCC._validateArgs.js\";\nconst { validateArgs_FibaroCCAPI_fibaroVenetianBlindsSetPosition, validateArgs_FibaroCCAPI_fibaroVenetianBlindsSetTilt } = __validateArgs;\nimport type { GetDeviceConfig } from \"@zwave-js/config\";\nimport { CommandClasses, type GetValueDB, type MaybeUnknown, type MessageOrCCLogEntry, type MessageRecord, UNKNOWN_STATE, type ValueID, ValueMetadata, type WithAddress, ZWaveError, ZWaveErrorCodes, parseMaybeNumber, validatePayload, } from \"@zwave-js/core\";\nimport { Bytes, pick } from \"@zwave-js/shared\";\nimport { isArray } from \"alcalzone-shared/typeguards\";\nimport { POLL_VALUE, type PollValueImplementation, SET_VALUE, type SetValueImplementation, throwMissingPropertyKey, throwUnsupportedProperty, throwUnsupportedPropertyKey, throwWrongValueType, } from \"../../lib/API.js\";\nimport type { CCRaw, CommandClassOptions, InterviewContext, PersistValuesContext, RefreshValuesContext, RefreshValuesOptions, } from \"../../lib/CommandClass.js\";\nimport { expectedCCResponse } from \"../../lib/CommandClassDecorators.js\";\nimport type { CCEncodingContext, CCParsingContext } from \"../../lib/traits.js\";\nimport { ManufacturerProprietaryCC, ManufacturerProprietaryCCAPI, } from \"../ManufacturerProprietaryCC.js\";\nimport { fibaroCC, fibaroCCCommand, getFibaroCCCommand, getFibaroCCCommandConstructor, getFibaroCCConstructor, getFibaroCCId, manufacturerId, manufacturerProprietaryAPI, } from \"./Decorators.js\";\nexport const MANUFACTURERID_FIBARO = 0x10f;\n/** Returns the ValueID used to store the current venetian blind position */\nexport function getFibaroVenetianBlindPositionValueId(endpoint: number): ValueID {\n return {\n commandClass: CommandClasses[\"Manufacturer Proprietary\"],\n endpoint,\n property: \"fibaro\",\n propertyKey: \"venetianBlindsPosition\",\n };\n}\n/** Returns the value metadata for venetian blind position */\nexport function getFibaroVenetianBlindPositionMetadata(): ValueMetadata {\n return {\n ...ValueMetadata.Level,\n label: \"Venetian blinds position\",\n };\n}\n/** Returns the ValueID used to store the current venetian blind tilt */\nexport function getFibaroVenetianBlindTiltValueId(endpoint: number): ValueID {\n return {\n commandClass: CommandClasses[\"Manufacturer Proprietary\"],\n endpoint,\n property: \"fibaro\",\n propertyKey: \"venetianBlindsTilt\",\n };\n}\n/** Returns the value metadata for venetian blind tilt */\nexport function getFibaroVenetianBlindTiltMetadata(): ValueMetadata {\n return {\n ...ValueMetadata.Level,\n label: \"Venetian blinds tilt\",\n };\n}\nfunction getSupportedFibaroCCIDs(ctx: GetDeviceConfig, nodeId: number): FibaroCCIDs[] {\n const proprietaryConfig = ctx.getDeviceConfig?.(nodeId)?.proprietary;\n if (proprietaryConfig && isArray(proprietaryConfig.fibaroCCs)) {\n return proprietaryConfig.fibaroCCs as FibaroCCIDs[];\n }\n return [];\n}\nexport enum FibaroCCIDs {\n VenetianBlind = 0x26\n}\n@manufacturerProprietaryAPI(MANUFACTURERID_FIBARO)\nexport class FibaroCCAPI extends ManufacturerProprietaryCCAPI {\n // oxlint-disable-next-line typescript/explicit-module-boundary-types\n public async fibaroVenetianBlindsGet() {\n const cc = new FibaroVenetianBlindCCGet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n });\n const response = await this.host.sendCommand<FibaroVenetianBlindCCReport>(cc, this.commandOptions);\n if (response) {\n return pick(response, [\"position\", \"tilt\"]);\n }\n }\n @validateArgs_FibaroCCAPI_fibaroVenetianBlindsSetPosition()\n public async fibaroVenetianBlindsSetPosition(value: number): Promise<void> {\n const cc = new FibaroVenetianBlindCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n position: value,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n @validateArgs_FibaroCCAPI_fibaroVenetianBlindsSetTilt()\n public async fibaroVenetianBlindsSetTilt(value: number): Promise<void> {\n const cc = new FibaroVenetianBlindCCSet({\n nodeId: this.endpoint.nodeId,\n endpointIndex: this.endpoint.index,\n tilt: value,\n });\n await this.host.sendCommand(cc, this.commandOptions);\n }\n protected override get [SET_VALUE](): SetValueImplementation {\n return async function (this: FibaroCCAPI, { property, propertyKey }, value) {\n if (property !== \"fibaro\") {\n throwUnsupportedProperty(this.ccId, property);\n }\n if (propertyKey === \"venetianBlindsPosition\") {\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n await this.fibaroVenetianBlindsSetPosition(value);\n }\n else if (propertyKey === \"venetianBlindsTilt\") {\n if (typeof value !== \"number\") {\n throwWrongValueType(this.ccId, property, \"number\", typeof value);\n }\n await this.fibaroVenetianBlindsSetTilt(value);\n }\n else {\n // unsupported property key, ignore...\n return;\n }\n // Verify the current value after a delay\n this.schedulePoll({ property, propertyKey }, value);\n return undefined;\n };\n }\n protected get [POLL_VALUE](): PollValueImplementation {\n return async function (this: FibaroCCAPI, { property, propertyKey }) {\n if (property !== \"fibaro\") {\n throwUnsupportedProperty(this.ccId, property);\n }\n else if (propertyKey == undefined) {\n throwMissingPropertyKey(this.ccId, property);\n }\n switch (propertyKey) {\n case \"venetianBlindsPosition\":\n return (await this.fibaroVenetianBlindsGet())?.position;\n case \"venetianBlindsTilt\":\n return (await this.fibaroVenetianBlindsGet())?.tilt;\n default:\n throwUnsupportedPropertyKey(this.ccId, property, propertyKey);\n }\n };\n }\n}\n@manufacturerId(MANUFACTURERID_FIBARO)\nexport class FibaroCC extends ManufacturerProprietaryCC {\n public constructor(options: CommandClassOptions) {\n super(options);\n this.fibaroCCId = getFibaroCCId(this);\n this.fibaroCCCommand = getFibaroCCCommand(this);\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FibaroCC {\n validatePayload(raw.payload.length >= 2);\n const fibaroCCId = raw.payload[0];\n const fibaroCCCommand = raw.payload[1];\n const FibaroConstructor = getFibaroCCCommandConstructor(fibaroCCId, fibaroCCCommand);\n if (FibaroConstructor) {\n return FibaroConstructor.from(raw.withPayload(raw.payload.subarray(2)), ctx);\n }\n return new FibaroCC({\n nodeId: ctx.sourceNodeId,\n });\n }\n public fibaroCCId?: number;\n public fibaroCCCommand?: number;\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n // Iterate through all supported Fibaro CCs and interview them\n const supportedFibaroCCIDs = getSupportedFibaroCCIDs(ctx, node.id);\n for (const ccId of supportedFibaroCCIDs) {\n const SubConstructor = getFibaroCCConstructor(ccId);\n if (SubConstructor) {\n const instance = new SubConstructor({ nodeId: node.id });\n await instance.interview(ctx);\n }\n }\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n // Iterate through all supported Fibaro CCs and let them refresh their values\n const supportedFibaroCCIDs = getSupportedFibaroCCIDs(ctx, node.id);\n for (const ccId of supportedFibaroCCIDs) {\n const SubConstructor = getFibaroCCConstructor(ccId);\n if (SubConstructor) {\n const instance = new SubConstructor({ nodeId: node.id });\n await instance.refreshValues(ctx, options);\n }\n }\n }\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n if (this.fibaroCCId == undefined) {\n throw new ZWaveError(\"Cannot serialize a Fibaro CC without a Fibaro CC ID\", ZWaveErrorCodes.CC_Invalid);\n }\n else if (this.fibaroCCCommand == undefined) {\n throw new ZWaveError(\"Cannot serialize a Fibaro CC without a Fibaro CC Command\", ZWaveErrorCodes.CC_Invalid);\n }\n this.payload = Bytes.concat([\n [this.fibaroCCId, this.fibaroCCCommand],\n this.payload,\n ]);\n return super.serialize(ctx);\n }\n}\nexport enum FibaroVenetianBlindCCCommand {\n Set = 0x01,\n Get = 0x02,\n Report = 0x03\n}\n@fibaroCC(FibaroCCIDs.VenetianBlind)\nexport class FibaroVenetianBlindCC extends FibaroCC {\n declare fibaroCCId: FibaroCCIDs.VenetianBlind;\n declare fibaroCCCommand: FibaroVenetianBlindCCCommand;\n public constructor(options: CommandClassOptions) {\n super(options);\n this.fibaroCCId = FibaroCCIDs.VenetianBlind;\n }\n public async interview(ctx: InterviewContext): Promise<void> {\n const node = this.getNode(ctx)!;\n ctx.logNode(node.id, {\n endpoint: this.endpointIndex,\n message: `Interviewing Fibaro Venetian Blind CC...`,\n direction: \"none\",\n });\n // Nothing special, just get the values\n await this.refreshValues(ctx, { tag: \"interview\" });\n }\n public async refreshValues(ctx: RefreshValuesContext, options?: RefreshValuesOptions): Promise<void> {\n const node = this.getNode(ctx)!;\n ctx.logNode(node.id, {\n message: \"Requesting venetian blind position and tilt...\",\n direction: \"outbound\",\n });\n const resp = await ctx.sendCommand<FibaroVenetianBlindCCReport>(new FibaroVenetianBlindCCGet({\n nodeId: this.nodeId,\n endpointIndex: this.endpointIndex,\n }), {\n priority: options?.priority,\n tag: options?.tag,\n });\n if (resp) {\n const logMessage = `received venetian blind state:\nposition: ${resp.position}\ntilt: ${resp.tilt}`;\n ctx.logNode(node.id, {\n message: logMessage,\n direction: \"inbound\",\n });\n }\n }\n}\n// @publicAPI\nexport type FibaroVenetianBlindCCSetOptions = {\n position: number;\n} | {\n tilt: number;\n} | {\n position: number;\n tilt: number;\n};\n@fibaroCCCommand(FibaroVenetianBlindCCCommand.Set)\nexport class FibaroVenetianBlindCCSet extends FibaroVenetianBlindCC {\n public constructor(options: WithAddress<FibaroVenetianBlindCCSetOptions>) {\n super(options);\n this.fibaroCCCommand = FibaroVenetianBlindCCCommand.Set;\n if (\"position\" in options)\n this.position = options.position;\n if (\"tilt\" in options)\n this.tilt = options.tilt;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FibaroVenetianBlindCCSet {\n validatePayload(raw.payload.length >= 3);\n const hasPosition = !!(raw.payload[0] & 0b10);\n const hasTilt = !!(raw.payload[0] & 0b01);\n validatePayload(hasPosition || hasTilt);\n if (hasPosition && hasTilt) {\n return new this({\n nodeId: ctx.sourceNodeId,\n position: raw.payload[1],\n tilt: raw.payload[2],\n });\n }\n else if (hasPosition) {\n return new this({\n nodeId: ctx.sourceNodeId,\n position: raw.payload[1],\n });\n }\n else {\n return new this({\n nodeId: ctx.sourceNodeId,\n tilt: raw.payload[2],\n });\n }\n }\n public position: number | undefined;\n public tilt: number | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n const controlByte = (this.position != undefined ? 0b10 : 0)\n | (this.tilt != undefined ? 0b01 : 0);\n this.payload = Bytes.from([\n controlByte,\n this.position ?? 0,\n this.tilt ?? 0,\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {};\n if (this.position != undefined) {\n message.position = this.position;\n }\n if (this.tilt != undefined) {\n message.tilt = this.tilt;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n// @publicAPI\nexport interface FibaroVenetianBlindCCReportOptions {\n position?: MaybeUnknown<number>;\n tilt?: MaybeUnknown<number>;\n}\n@fibaroCCCommand(FibaroVenetianBlindCCCommand.Report)\nexport class FibaroVenetianBlindCCReport extends FibaroVenetianBlindCC {\n public constructor(options: WithAddress<FibaroVenetianBlindCCReportOptions>) {\n super(options);\n this.fibaroCCCommand = FibaroVenetianBlindCCCommand.Report;\n // TODO: Check implementation:\n this.position = options.position;\n this.tilt = options.tilt;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FibaroVenetianBlindCCReport {\n validatePayload(raw.payload.length >= 3);\n // When the node sends a report, payload[0] === 0b11. This is probably a\n // bit mask for position and tilt\n let position: MaybeUnknown<number> | undefined;\n if (!!(raw.payload[0] & 0b10)) {\n position = parseMaybeNumber(raw.payload[1]);\n }\n let tilt: MaybeUnknown<number> | undefined;\n if (!!(raw.payload[0] & 0b01)) {\n tilt = parseMaybeNumber(raw.payload[2]);\n }\n return new this({\n nodeId: ctx.sourceNodeId,\n position,\n tilt,\n });\n }\n public persistValues(ctx: PersistValuesContext): boolean {\n if (!super.persistValues(ctx))\n return false;\n const valueDB = this.getValueDB(ctx);\n if (this.position != undefined) {\n const positionValueId = getFibaroVenetianBlindPositionValueId(this.endpointIndex);\n valueDB.setMetadata(positionValueId, {\n ...ValueMetadata.Level,\n label: \"Venetian blinds position\",\n });\n valueDB.setValue(positionValueId, this.position);\n }\n if (this.tilt != undefined) {\n const tiltValueId = getFibaroVenetianBlindTiltValueId(this.endpointIndex);\n valueDB.setMetadata(tiltValueId, {\n ...ValueMetadata.Level,\n label: \"Venetian blinds tilt\",\n });\n valueDB.setValue(tiltValueId, this.tilt);\n }\n return true;\n }\n public position: MaybeUnknown<number> | undefined;\n public tilt: MaybeUnknown<number> | undefined;\n public serialize(ctx: CCEncodingContext): Promise<Bytes> {\n this.payload = Bytes.from([\n (this.position !== undefined ? 0b10 : 0)\n | (this.tilt !== undefined ? 0b01 : 0),\n this.position === UNKNOWN_STATE ? 0xfe : (this.position ?? 0),\n this.tilt === UNKNOWN_STATE ? 0xfe : (this.tilt ?? 0),\n ]);\n return super.serialize(ctx);\n }\n public toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n const message: MessageRecord = {};\n if (this.position != undefined) {\n message.position = this.position;\n }\n if (this.tilt != undefined) {\n message.tilt = this.tilt;\n }\n return {\n ...super.toLogEntry(ctx),\n message,\n };\n }\n}\n@fibaroCCCommand(FibaroVenetianBlindCCCommand.Get)\n@expectedCCResponse(FibaroVenetianBlindCCReport)\nexport class FibaroVenetianBlindCCGet extends FibaroVenetianBlindCC {\n // @noLogEntry: This CC has no properties to log\n public constructor(options: CommandClassOptions) {\n super(options);\n this.fibaroCCCommand = FibaroVenetianBlindCCCommand.Get;\n }\n public static from(raw: CCRaw, ctx: CCParsingContext): FibaroVenetianBlindCCGet {\n return new this({\n nodeId: ctx.sourceNodeId,\n });\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["FibaroCCIDs", "fibaroCCCommand", "FibaroCC", "FibaroVenetianBlindCCCommand"]
7
7
  }