isy-nodejs 1.0.2-alpha.4 → 1.0.3-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/CodeGeneration/{NodeFactory.js → CodeFactory.js} +18 -7
- package/dist/esm/CodeGeneration/CodeFactory.js.map +1 -0
- package/dist/esm/CodeGeneration/EnumFactory.js +1 -1
- package/dist/esm/CodeGeneration/EnumFactory.js.map +1 -1
- package/dist/esm/CodeGeneration/NodeClassFactory.js +156 -146
- package/dist/esm/CodeGeneration/NodeClassFactory.js.map +1 -1
- package/dist/esm/Converters.js +16 -6
- package/dist/esm/Converters.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js +4 -2
- package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js +4 -2
- package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js +5 -3
- package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js +4 -2
- package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/BinaryControl.js +4 -2
- package/dist/esm/Devices/Insteon/Generated/BinaryControl.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js +7 -5
- package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js +8 -6
- package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js +9 -7
- package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js +8 -6
- package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js +4 -2
- package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/DoorLock.js +3 -1
- package/dist/esm/Devices/Insteon/Generated/DoorLock.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js +3 -1
- package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js +4 -2
- package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/EzrainInput.js +3 -1
- package/dist/esm/Devices/Insteon/Generated/EzrainInput.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js +5 -3
- package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js +5 -3
- package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js +12 -10
- package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js +10 -8
- package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js +3 -1
- package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/IrLincTx.js +4 -2
- package/dist/esm/Devices/Insteon/Generated/IrLincTx.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/KeypadButton.js +4 -2
- package/dist/esm/Devices/Insteon/Generated/KeypadButton.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js +9 -7
- package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js +7 -5
- package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/OnOffControl.js +4 -2
- package/dist/esm/Devices/Insteon/Generated/OnOffControl.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/Pir2844.js +6 -4
- package/dist/esm/Devices/Insteon/Generated/Pir2844.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js +5 -3
- package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/Pir2844c.js +6 -4
- package/dist/esm/Devices/Insteon/Generated/Pir2844c.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/RelayLamp.js +6 -4
- package/dist/esm/Devices/Insteon/Generated/RelayLamp.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js +7 -5
- package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js +8 -6
- package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js +6 -4
- package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js +6 -4
- package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js +3 -1
- package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/Siren.js +5 -3
- package/dist/esm/Devices/Insteon/Generated/Siren.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/SirenAlert.js +3 -1
- package/dist/esm/Devices/Insteon/Generated/SirenAlert.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/TempLinc.js +8 -6
- package/dist/esm/Devices/Insteon/Generated/TempLinc.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/Thermostat.js +8 -6
- package/dist/esm/Devices/Insteon/Generated/Thermostat.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/X10.js +3 -1
- package/dist/esm/Devices/Insteon/Generated/X10.js.map +1 -1
- package/dist/esm/Devices/Lutron/Generated/LoadShed.js +4 -2
- package/dist/esm/Devices/Lutron/Generated/LoadShed.js.map +1 -1
- package/dist/esm/Devices/UDI/Generated/Channel.js +3 -1
- package/dist/esm/Devices/UDI/Generated/Channel.js.map +1 -1
- package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js +3 -1
- package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js.map +1 -1
- package/dist/esm/Devices/UDI/Generated/Main.js +3 -1
- package/dist/esm/Devices/UDI/Generated/Main.js.map +1 -1
- package/dist/esm/Devices/UDI/Generated/PulseCounter.js +3 -1
- package/dist/esm/Devices/UDI/Generated/PulseCounter.js.map +1 -1
- package/dist/esm/Devices/UDI/Generated/Relay.js +3 -1
- package/dist/esm/Devices/UDI/Generated/Relay.js.map +1 -1
- package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js +3 -1
- package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js.map +1 -1
- package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js +8 -2
- package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js.map +1 -1
- package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js +4 -2
- package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js.map +1 -1
- package/dist/esm/ISY.js +59 -34
- package/dist/esm/ISY.js.map +1 -1
- package/dist/esm/Matter/Behaviors/ISYBridgedDeviceBehavior.js +1 -1
- package/dist/esm/Matter/Behaviors/ISYBridgedDeviceBehavior.js.map +1 -1
- package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js.map +1 -1
- package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js.map +1 -1
- package/dist/esm/Matter/Bridge/Server.js +6 -6
- package/dist/esm/Matter/Bridge/Server.js.map +1 -1
- package/dist/esm/Matter/Mappings/Insteon.js +37 -13
- package/dist/esm/Matter/Mappings/Insteon.js.map +1 -1
- package/dist/esm/{Model/ClusterMap.js → Matter/Mappings/MappingRegistry.js} +12 -7
- package/dist/esm/Matter/Mappings/MappingRegistry.js.map +1 -0
- package/dist/esm/Model/ClassDefinition.js +7 -5
- package/dist/esm/Model/ClassDefinition.js.map +1 -1
- package/dist/esm/types/CodeGeneration/{NodeFactory.d.ts → CodeFactory.d.ts} +1 -1
- package/dist/esm/types/CodeGeneration/{NodeFactory.d.ts.map → CodeFactory.d.ts.map} +1 -1
- package/dist/esm/types/CodeGeneration/EnumFactory.d.ts +1 -1
- package/dist/esm/types/CodeGeneration/EnumFactory.d.ts.map +1 -1
- package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts +19 -3
- package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
- package/dist/esm/types/Converters.d.ts +12 -6
- package/dist/esm/types/Converters.d.ts.map +1 -1
- package/dist/esm/types/Devices/EndpointFor.d.ts +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts +6 -6
- package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts +3 -3
- package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts +3 -3
- package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts +3 -3
- package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts +6 -6
- package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +2 -2
- package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts.map +1 -1
- package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts.map +1 -1
- package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts.map +1 -1
- package/dist/esm/types/Devices/UDI/Generated/Main.d.ts.map +1 -1
- package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts.map +1 -1
- package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts.map +1 -1
- package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts.map +1 -1
- package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts +16 -9
- package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts.map +1 -1
- package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts +15 -15
- package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts.map +1 -1
- package/dist/esm/types/ISY.d.ts +6 -2
- package/dist/esm/types/ISY.d.ts.map +1 -1
- package/dist/esm/types/ISYNode.d.ts +1 -1
- package/dist/esm/types/ISYNode.d.ts.map +1 -1
- package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +1 -1
- package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
- package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts +1 -1
- package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts.map +1 -1
- package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts.map +1 -1
- package/dist/esm/types/Matter/Bridge/Server.d.ts +0 -1
- package/dist/esm/types/Matter/Bridge/Server.d.ts.map +1 -1
- package/dist/esm/types/Matter/Mappings/Insteon.d.ts +3 -1
- package/dist/esm/types/Matter/Mappings/Insteon.d.ts.map +1 -1
- package/dist/esm/types/Matter/Mappings/MappingRegistry.d.ts +144 -0
- package/dist/esm/types/Matter/Mappings/MappingRegistry.d.ts.map +1 -0
- package/dist/esm/types/Model/ClassDefinition.d.ts +9 -623
- package/dist/esm/types/Model/ClassDefinition.d.ts.map +1 -1
- package/dist/esm/types/Model/EnumDefinition.d.ts +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +4 -2
- package/src/CodeGeneration/{NodeFactory.ts → CodeFactory.ts} +18 -2
- package/src/CodeGeneration/EnumFactory.ts +5 -4
- package/src/CodeGeneration/NodeClassFactory.ts +266 -241
- package/src/Converters.ts +16 -10
- package/src/Devices/Brultech/Generated/Channel.ts +3 -1
- package/src/Devices/Brultech/Generated/Main.ts +3 -1
- package/src/Devices/Insteon/Generated/AlertModuleArmed.ts +4 -2
- package/src/Devices/Insteon/Generated/AlertModuleSiren.ts +4 -2
- package/src/Devices/Insteon/Generated/BallastRelayLampSwitch.ts +5 -3
- package/src/Devices/Insteon/Generated/BinaryAlarm.ts +4 -2
- package/src/Devices/Insteon/Generated/BinaryControl.ts +4 -2
- package/src/Devices/Insteon/Generated/DimmerLamp.ts +7 -5
- package/src/Devices/Insteon/Generated/DimmerLampSwitch.ts +8 -6
- package/src/Devices/Insteon/Generated/DimmerLampSwitchLed.ts +9 -7
- package/src/Devices/Insteon/Generated/DimmerMotorSwitch.ts +8 -6
- package/src/Devices/Insteon/Generated/DimmerSwitch.ts +4 -2
- package/src/Devices/Insteon/Generated/DoorLock.ts +3 -1
- package/src/Devices/Insteon/Generated/Ezio2x4Input.ts +3 -1
- package/src/Devices/Insteon/Generated/Ezio2x4Output.ts +4 -2
- package/src/Devices/Insteon/Generated/EzrainInput.ts +3 -1
- package/src/Devices/Insteon/Generated/EzrainOutput.ts +12 -10
- package/src/Devices/Insteon/Generated/FanLincMotor.ts +5 -3
- package/src/Devices/Insteon/Generated/I3KeypadFlags.ts +12 -10
- package/src/Devices/Insteon/Generated/I3PaddleFlags.ts +10 -8
- package/src/Devices/Insteon/Generated/ImeterSolo.ts +3 -1
- package/src/Devices/Insteon/Generated/IrLincTx.ts +4 -2
- package/src/Devices/Insteon/Generated/KeypadButton.ts +4 -2
- package/src/Devices/Insteon/Generated/KeypadDimmer.ts +9 -7
- package/src/Devices/Insteon/Generated/KeypadRelay.ts +18 -16
- package/src/Devices/Insteon/Generated/OnOffControl.ts +7 -5
- package/src/Devices/Insteon/Generated/Pir2844.ts +6 -4
- package/src/Devices/Insteon/Generated/Pir2844OnOff.ts +5 -3
- package/src/Devices/Insteon/Generated/Pir2844c.ts +6 -4
- package/src/Devices/Insteon/Generated/RelayLamp.ts +9 -7
- package/src/Devices/Insteon/Generated/RelayLampSwitch.ts +10 -8
- package/src/Devices/Insteon/Generated/RelayLampSwitchLed.ts +12 -10
- package/src/Devices/Insteon/Generated/RelaySwitch.ts +6 -4
- package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.ts +6 -4
- package/src/Devices/Insteon/Generated/RemoteLinc2.ts +3 -1
- package/src/Devices/Insteon/Generated/Siren.ts +5 -3
- package/src/Devices/Insteon/Generated/SirenAlert.ts +3 -1
- package/src/Devices/Insteon/Generated/TempLinc.ts +8 -6
- package/src/Devices/Insteon/Generated/Thermostat.ts +8 -6
- package/src/Devices/Insteon/Generated/X10.ts +3 -1
- package/src/Devices/Lutron/Generated/LoadShed.ts +4 -2
- package/src/Devices/NCD/Generated/Relay.ts +4 -2
- package/src/Devices/Poly/Generated/MatterBridge.ts +3 -1
- package/src/Devices/Scene/Generated/Scene.ts +10 -8
- package/src/Devices/UDI/Generated/Channel.ts +3 -1
- package/src/Devices/UDI/Generated/Em3MainChannel.ts +3 -1
- package/src/Devices/UDI/Generated/Main.ts +3 -1
- package/src/Devices/UDI/Generated/PulseCounter.ts +3 -1
- package/src/Devices/UDI/Generated/Relay.ts +3 -1
- package/src/Devices/UDI/Generated/TemperatureSensor.ts +3 -1
- package/src/Devices/ZWave/Generated/ColorSwitch.ts +19 -7
- package/src/Devices/ZWave/Generated/DimmerSwitch.ts +13 -11
- package/src/Devices/ZigBeeLegacy/Generated/Relay.ts +4 -2
- package/src/Devices/ZigBeeLegacy/Generated/Thermostat.ts +11 -9
- package/src/ISY.ts +58 -25
- package/src/Matter/Behaviors/ISYBridgedDeviceBehavior.ts +1 -1
- package/src/Matter/Behaviors/ISYClusterBehavior.ts +2 -1
- package/src/Matter/Behaviors/Insteon/ISYOnOffBehavior.ts +2 -1
- package/src/Matter/Bridge/Server.ts +10 -6
- package/src/Matter/Mappings/Insteon.ts +41 -26
- package/src/{Model/ClusterMap.ts → Matter/Mappings/MappingRegistry.ts} +26 -14
- package/src/Model/ClassDefinition.ts +16 -10
- package/src/Utils.ts +1 -1
- package/dist/esm/CodeGeneration/NodeFactory.js.map +0 -1
- package/dist/esm/Model/ClusterMap.js.map +0 -1
- package/dist/esm/types/Model/ClusterMap.d.ts +0 -101
- package/dist/esm/types/Model/ClusterMap.d.ts.map +0 -1
|
@@ -31,7 +31,7 @@ export class LoadShedNode extends Base<Drivers, Commands> implements LoadShed.In
|
|
|
31
31
|
this.drivers.ST = Driver.create("ST", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Percent, label: "Status", name: "status" });
|
|
32
32
|
this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Index, label: "Responding", name: "responding" });
|
|
33
33
|
}
|
|
34
|
-
async on(value?: (0 | 100)) { return this.sendCommand("DON",
|
|
34
|
+
async on(value?: (0 | 100)) { return this.sendCommand("DON", value); }
|
|
35
35
|
async off() { return this.sendCommand("DOF"); }
|
|
36
36
|
async query() { return this.sendCommand("QUERY"); }
|
|
37
37
|
public get status(): (0 | 100) {
|
|
@@ -48,7 +48,9 @@ export namespace LoadShed {
|
|
|
48
48
|
export interface Interface extends Omit<InstanceType<typeof LoadShedNode>, keyof ISYDeviceNode<any, any, any, any>> {
|
|
49
49
|
nodeDefId: "LUTLoadShed";
|
|
50
50
|
}
|
|
51
|
-
export function is(node: ISYNode<any, any, any, any>): node is LoadShedNode {
|
|
51
|
+
export function is(node: ISYNode<any, any, any, any>): node is LoadShedNode {
|
|
52
|
+
return ["LUTLoadShed"].includes(node.nodeDefId);
|
|
53
|
+
}
|
|
52
54
|
export function isImplementedBy(node: ISYNode<any, any, any, any>): node is LoadShedNode {
|
|
53
55
|
return ["LUTLoadShed"].includes(node.nodeDefId);
|
|
54
56
|
}
|
|
@@ -35,7 +35,7 @@ export class RelayNode extends Base<Drivers, Commands> implements Relay.Interfac
|
|
|
35
35
|
async on() { return this.sendCommand("DON"); }
|
|
36
36
|
async off() { return this.sendCommand("DOF"); }
|
|
37
37
|
async query() { return this.sendCommand("QUERY"); }
|
|
38
|
-
async adr(value: (0 | 1)) { return this.sendCommand("ADRPST",
|
|
38
|
+
async adr(value: (0 | 1)) { return this.sendCommand("ADRPST", value); }
|
|
39
39
|
public get status(): (0 | 100) {
|
|
40
40
|
return this.drivers.ST?.value;
|
|
41
41
|
}
|
|
@@ -50,7 +50,9 @@ export namespace Relay {
|
|
|
50
50
|
export interface Interface extends Omit<InstanceType<typeof RelayNode>, keyof ISYDeviceNode<any, any, any, any>> {
|
|
51
51
|
nodeDefId: "NCDRelay";
|
|
52
52
|
}
|
|
53
|
-
export function is(node: ISYNode<any, any, any, any>): node is RelayNode {
|
|
53
|
+
export function is(node: ISYNode<any, any, any, any>): node is RelayNode {
|
|
54
|
+
return ["NCDRelay"].includes(node.nodeDefId);
|
|
55
|
+
}
|
|
54
56
|
export function isImplementedBy(node: ISYNode<any, any, any, any>): node is RelayNode {
|
|
55
57
|
return ["NCDRelay"].includes(node.nodeDefId);
|
|
56
58
|
}
|
|
@@ -47,7 +47,9 @@ export namespace MatterBridge {
|
|
|
47
47
|
export interface Interface extends Omit<InstanceType<typeof MatterBridgeNode>, keyof ISYDeviceNode<any, any, any, any>> {
|
|
48
48
|
nodeDefId: "CONTROLLER";
|
|
49
49
|
}
|
|
50
|
-
export function is(node: ISYNode<any, any, any, any>): node is MatterBridgeNode {
|
|
50
|
+
export function is(node: ISYNode<any, any, any, any>): node is MatterBridgeNode {
|
|
51
|
+
return ["CONTROLLER"].includes(node.nodeDefId);
|
|
52
|
+
}
|
|
51
53
|
export function isImplementedBy(node: ISYNode<any, any, any, any>): node is MatterBridgeNode {
|
|
52
54
|
return ["CONTROLLER"].includes(node.nodeDefId);
|
|
53
55
|
}
|
|
@@ -43,7 +43,7 @@ export class SceneNode extends Base<Drivers, Commands> implements Scene.Interfac
|
|
|
43
43
|
constructor (isy: ISY, nodeInfo: NodeInfo) {
|
|
44
44
|
super(isy, nodeInfo);
|
|
45
45
|
}
|
|
46
|
-
async on(value?: number) { return this.sendCommand("DON",
|
|
46
|
+
async on(value?: number) { return this.sendCommand("DON", value); }
|
|
47
47
|
async off() { return this.sendCommand("DOF"); }
|
|
48
48
|
async fastOff() { return this.sendCommand("DFOF"); }
|
|
49
49
|
async fastOn() { return this.sendCommand("DFON"); }
|
|
@@ -54,12 +54,12 @@ export class SceneNode extends Base<Drivers, Commands> implements Scene.Interfac
|
|
|
54
54
|
async fadeStop() { return this.sendCommand("FDSTOP"); }
|
|
55
55
|
async beep() { return this.sendCommand("BEEP"); }
|
|
56
56
|
async query() { return this.sendCommand("QUERY"); }
|
|
57
|
-
async mode(value: number) { return this.sendCommand("CLIMD",
|
|
58
|
-
async fanMode(value: (0 | 1)) { return this.sendCommand("CLIFS",
|
|
59
|
-
async heatSetpoint(value: number) { return this.sendCommand("CLISPH",
|
|
60
|
-
async coolSetpoint(value: number) { return this.sendCommand("CLISPC",
|
|
61
|
-
async heatSetpointShift(value: number) { return this.sendCommand("CLISPHD",
|
|
62
|
-
async coolSetpointShift(value: number) { return this.sendCommand("CLISPCD",
|
|
57
|
+
async mode(value: number) { return this.sendCommand("CLIMD", value); }
|
|
58
|
+
async fanMode(value: (0 | 1)) { return this.sendCommand("CLIFS", value); }
|
|
59
|
+
async heatSetpoint(value: number) { return this.sendCommand("CLISPH", value); }
|
|
60
|
+
async coolSetpoint(value: number) { return this.sendCommand("CLISPC", value); }
|
|
61
|
+
async heatSetpointShift(value: number) { return this.sendCommand("CLISPHD", value); }
|
|
62
|
+
async coolSetpointShift(value: number) { return this.sendCommand("CLISPCD", value); }
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
NodeFactory.register(SceneNode);
|
|
@@ -68,7 +68,9 @@ export namespace Scene {
|
|
|
68
68
|
export interface Interface extends Omit<InstanceType<typeof SceneNode>, keyof ISYDeviceNode<any, any, any, any>> {
|
|
69
69
|
nodeDefId: "InsteonDimmer";
|
|
70
70
|
}
|
|
71
|
-
export function is(node: ISYNode<any, any, any, any>): node is SceneNode {
|
|
71
|
+
export function is(node: ISYNode<any, any, any, any>): node is SceneNode {
|
|
72
|
+
return ["InsteonDimmer"].includes(node.nodeDefId);
|
|
73
|
+
}
|
|
72
74
|
export function isImplementedBy(node: ISYNode<any, any, any, any>): node is SceneNode {
|
|
73
75
|
return ["InsteonDimmer"].includes(node.nodeDefId);
|
|
74
76
|
}
|
|
@@ -45,7 +45,9 @@ export namespace Channel {
|
|
|
45
45
|
export interface Interface extends Omit<InstanceType<typeof ChannelNode>, keyof ISYDeviceNode<any, any, any, any>> {
|
|
46
46
|
nodeDefId: "EM3Channel";
|
|
47
47
|
}
|
|
48
|
-
export function is(node: ISYNode<any, any, any, any>): node is ChannelNode {
|
|
48
|
+
export function is(node: ISYNode<any, any, any, any>): node is ChannelNode {
|
|
49
|
+
return ["EM3Channel"].includes(node.nodeDefId);
|
|
50
|
+
}
|
|
49
51
|
export function isImplementedBy(node: ISYNode<any, any, any, any>): node is ChannelNode {
|
|
50
52
|
return ["EM3Channel", "EM3Main", "EM3MainChannel"].includes(node.nodeDefId);
|
|
51
53
|
}
|
|
@@ -57,7 +57,9 @@ export namespace Em3MainChannel {
|
|
|
57
57
|
export interface Interface extends Omit<InstanceType<typeof Em3MainChannelNode>, keyof ISYDeviceNode<any, any, any, any>> {
|
|
58
58
|
nodeDefId: "EM3MainChannel";
|
|
59
59
|
}
|
|
60
|
-
export function is(node: ISYNode<any, any, any, any>): node is Em3MainChannelNode {
|
|
60
|
+
export function is(node: ISYNode<any, any, any, any>): node is Em3MainChannelNode {
|
|
61
|
+
return ["EM3MainChannel"].includes(node.nodeDefId);
|
|
62
|
+
}
|
|
61
63
|
export function isImplementedBy(node: ISYNode<any, any, any, any>): node is Em3MainChannelNode {
|
|
62
64
|
return ["EM3MainChannel"].includes(node.nodeDefId);
|
|
63
65
|
}
|
|
@@ -48,7 +48,9 @@ export namespace Main {
|
|
|
48
48
|
export interface Interface extends Omit<InstanceType<typeof MainNode>, keyof ISYDeviceNode<any, any, any, any>> {
|
|
49
49
|
nodeDefId: "EM3Main";
|
|
50
50
|
}
|
|
51
|
-
export function is(node: ISYNode<any, any, any, any>): node is MainNode {
|
|
51
|
+
export function is(node: ISYNode<any, any, any, any>): node is MainNode {
|
|
52
|
+
return ["EM3Main"].includes(node.nodeDefId);
|
|
53
|
+
}
|
|
52
54
|
export function isImplementedBy(node: ISYNode<any, any, any, any>): node is MainNode {
|
|
53
55
|
return ["EM3Main"].includes(node.nodeDefId);
|
|
54
56
|
}
|
|
@@ -49,7 +49,9 @@ export namespace PulseCounter {
|
|
|
49
49
|
export interface Interface extends Omit<InstanceType<typeof PulseCounterNode>, keyof ISYDeviceNode<any, any, any, any>> {
|
|
50
50
|
nodeDefId: "EM3PulseCounter";
|
|
51
51
|
}
|
|
52
|
-
export function is(node: ISYNode<any, any, any, any>): node is PulseCounterNode {
|
|
52
|
+
export function is(node: ISYNode<any, any, any, any>): node is PulseCounterNode {
|
|
53
|
+
return ["EM3PulseCounter"].includes(node.nodeDefId);
|
|
54
|
+
}
|
|
53
55
|
export function isImplementedBy(node: ISYNode<any, any, any, any>): node is PulseCounterNode {
|
|
54
56
|
return ["EM3PulseCounter"].includes(node.nodeDefId);
|
|
55
57
|
}
|
|
@@ -48,7 +48,9 @@ export namespace Relay {
|
|
|
48
48
|
export interface Interface extends Omit<InstanceType<typeof RelayNode>, keyof ISYDeviceNode<any, any, any, any>> {
|
|
49
49
|
nodeDefId: "EM3Relay";
|
|
50
50
|
}
|
|
51
|
-
export function is(node: ISYNode<any, any, any, any>): node is RelayNode {
|
|
51
|
+
export function is(node: ISYNode<any, any, any, any>): node is RelayNode {
|
|
52
|
+
return ["EM3Relay"].includes(node.nodeDefId);
|
|
53
|
+
}
|
|
52
54
|
export function isImplementedBy(node: ISYNode<any, any, any, any>): node is RelayNode {
|
|
53
55
|
return ["EM3Relay"].includes(node.nodeDefId);
|
|
54
56
|
}
|
|
@@ -41,7 +41,9 @@ export namespace TemperatureSensor {
|
|
|
41
41
|
export interface Interface extends Omit<InstanceType<typeof TemperatureSensorNode>, keyof ISYDeviceNode<any, any, any, any>> {
|
|
42
42
|
nodeDefId: "EM3TempSensor";
|
|
43
43
|
}
|
|
44
|
-
export function is(node: ISYNode<any, any, any, any>): node is TemperatureSensorNode {
|
|
44
|
+
export function is(node: ISYNode<any, any, any, any>): node is TemperatureSensorNode {
|
|
45
|
+
return ["EM3TempSensor"].includes(node.nodeDefId);
|
|
46
|
+
}
|
|
45
47
|
export function isImplementedBy(node: ISYNode<any, any, any, any>): node is TemperatureSensorNode {
|
|
46
48
|
return ["EM3TempSensor"].includes(node.nodeDefId);
|
|
47
49
|
}
|
|
@@ -34,10 +34,11 @@ export class ColorSwitchNode extends Base<Drivers, Commands> implements ColorSwi
|
|
|
34
34
|
this.drivers.GV2 = Driver.create("GV2", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Raw1ByteUnsignedValue, label: "Red", name: "red" });
|
|
35
35
|
this.drivers.GV3 = Driver.create("GV3", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Raw1ByteUnsignedValue, label: "Green", name: "green" });
|
|
36
36
|
this.drivers.GV4 = Driver.create("GV4", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Raw1ByteUnsignedValue, label: "Blue", name: "blue" });
|
|
37
|
+
this.drivers.GV1 = Driver.create("GV1", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Raw1ByteUnsignedValue, label: "Cold White", name: "coldWhite" });
|
|
37
38
|
}
|
|
38
|
-
async set(warmWhite?: number, red?: number, green?: number, blue?: number, duration?: number
|
|
39
|
-
async fadeUp(component: ZWave.ColorComponent, startLevel?: number, duration?: number
|
|
40
|
-
async fadeDown(component: ZWave.ColorComponent, startLevel?: number, duration?: number
|
|
39
|
+
async set(warmWhite?: number, red?: number, green?: number, blue?: number, duration?: number, coldWhite?: number) { return this.sendCommand("DON", { GV0: warmWhite, GV2: red, GV3: green, GV4: blue, RR: duration, GV1: coldWhite }); }
|
|
40
|
+
async fadeUp(component: ZWave.ColorComponent, startLevel?: number, duration?: number) { return this.sendCommand("FDUP", { ID: component, STARTLEVEL: startLevel, RR: duration }); }
|
|
41
|
+
async fadeDown(component: ZWave.ColorComponent, startLevel?: number, duration?: number) { return this.sendCommand("FDDOWN", { ID: component, STARTLEVEL: startLevel, RR: duration }); }
|
|
41
42
|
async fadeStop(component: ZWave.ColorComponent) { return this.sendCommand("FDSTOP", { ID: component }); }
|
|
42
43
|
async query() { return this.sendCommand("QUERY"); }
|
|
43
44
|
public get warmWhite(): number {
|
|
@@ -52,6 +53,9 @@ export class ColorSwitchNode extends Base<Drivers, Commands> implements ColorSwi
|
|
|
52
53
|
public get blue(): number {
|
|
53
54
|
return this.drivers.GV4?.value;
|
|
54
55
|
}
|
|
56
|
+
public get coldWhite(): number {
|
|
57
|
+
return this.drivers.GV1?.value;
|
|
58
|
+
}
|
|
55
59
|
}
|
|
56
60
|
|
|
57
61
|
NodeFactory.register(ColorSwitchNode);
|
|
@@ -60,7 +64,9 @@ export namespace ColorSwitch {
|
|
|
60
64
|
export interface Interface extends Omit<InstanceType<typeof ColorSwitchNode>, keyof ISYDeviceNode<any, any, any, any>> {
|
|
61
65
|
nodeDefId: "186";
|
|
62
66
|
}
|
|
63
|
-
export function is(node: ISYNode<any, any, any, any>): node is ColorSwitchNode {
|
|
67
|
+
export function is(node: ISYNode<any, any, any, any>): node is ColorSwitchNode {
|
|
68
|
+
return ["186"].includes(node.nodeDefId);
|
|
69
|
+
}
|
|
64
70
|
export function isImplementedBy(node: ISYNode<any, any, any, any>): node is ColorSwitchNode {
|
|
65
71
|
return ["186"].includes(node.nodeDefId);
|
|
66
72
|
}
|
|
@@ -69,15 +75,15 @@ export namespace ColorSwitch {
|
|
|
69
75
|
}
|
|
70
76
|
export const Node = ColorSwitchNode;
|
|
71
77
|
export type Commands = {
|
|
72
|
-
DON: ((GV0?: number, GV2?: number, GV3?: number, GV4?: number, RR?: number
|
|
78
|
+
DON: ((GV0?: number, GV2?: number, GV3?: number, GV4?: number, RR?: number, GV1?: number) => Promise<boolean>) & {
|
|
73
79
|
label: "Set";
|
|
74
80
|
name: "set";
|
|
75
81
|
};
|
|
76
|
-
FDUP: ((ID: ZWave.ColorComponent, STARTLEVEL?: number, RR?: number
|
|
82
|
+
FDUP: ((ID: ZWave.ColorComponent, STARTLEVEL?: number, RR?: number) => Promise<boolean>) & {
|
|
77
83
|
label: "Fade Up";
|
|
78
84
|
name: "fadeUp";
|
|
79
85
|
};
|
|
80
|
-
FDDOWN: ((ID: ZWave.ColorComponent, STARTLEVEL?: number, RR?: number
|
|
86
|
+
FDDOWN: ((ID: ZWave.ColorComponent, STARTLEVEL?: number, RR?: number) => Promise<boolean>) & {
|
|
81
87
|
label: "Fade Down";
|
|
82
88
|
name: "fadeDown";
|
|
83
89
|
};
|
|
@@ -115,5 +121,11 @@ export namespace ColorSwitch {
|
|
|
115
121
|
label: "Blue";
|
|
116
122
|
name: "blue";
|
|
117
123
|
};
|
|
124
|
+
GV1: {
|
|
125
|
+
uom: UnitOfMeasure.Raw1ByteUnsignedValue;
|
|
126
|
+
value: number;
|
|
127
|
+
label: "Cold White";
|
|
128
|
+
name: "coldWhite";
|
|
129
|
+
};
|
|
118
130
|
};
|
|
119
131
|
}
|
|
@@ -41,18 +41,18 @@ export class DimmerSwitchNode extends Base<Drivers, Commands> implements DimmerS
|
|
|
41
41
|
this.drivers.ST = Driver.create("ST", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Percent, label: "Status", name: "status" });
|
|
42
42
|
this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Index, label: "Responding", name: "responding" });
|
|
43
43
|
}
|
|
44
|
-
async on(value?: ZWave.PercentOpt
|
|
44
|
+
async on(value?: number | ZWave.PercentOpt, rampRate?: number) { return this.sendCommand("DON", value, { RR: rampRate }); }
|
|
45
45
|
async off() { return this.sendCommand("DOF"); }
|
|
46
46
|
async fastOn() { return this.sendCommand("DFON"); }
|
|
47
47
|
async fastOff() { return this.sendCommand("DFOF"); }
|
|
48
48
|
async brighten() { return this.sendCommand("BRT"); }
|
|
49
49
|
async dim() { return this.sendCommand("DIM"); }
|
|
50
|
-
async fadeUp(startLevel?: ZWave.PercentOpt
|
|
51
|
-
async fadeDown(startLevel?: ZWave.PercentOpt
|
|
52
|
-
async fade(direction: ZWave.FadeDirection, startLevel?: ZWave.PercentOpt
|
|
50
|
+
async fadeUp(startLevel?: number | ZWave.PercentOpt, rampRate?: number) { return this.sendCommand("FDUP", { STARTLEVEL: startLevel, RR: rampRate }); }
|
|
51
|
+
async fadeDown(startLevel?: number | ZWave.PercentOpt, rampRate?: number) { return this.sendCommand("FDDOWN", { STARTLEVEL: startLevel, RR: rampRate }); }
|
|
52
|
+
async fade(direction: ZWave.FadeDirection, startLevel?: number | ZWave.PercentOpt, rampRate?: number, direction2?: ZWave.FadeDirection, fadeRate2?: number) { return this.sendCommand("FADE", { DIR: direction, STARTLEVEL: startLevel, RR: rampRate, DIR2: direction2, STEP2: fadeRate2 }); }
|
|
53
53
|
async fadeStop() { return this.sendCommand("FDSTOP"); }
|
|
54
54
|
async query() { return this.sendCommand("QUERY"); }
|
|
55
|
-
async setConfiguration(parameterNumber: number, parameterValue: number
|
|
55
|
+
async setConfiguration(parameterNumber: number, parameterValue: number) { return this.sendCommand("CONFIG", { NUM: parameterNumber, VAL: parameterValue }); }
|
|
56
56
|
async writeChanges() { return this.sendCommand("WDU"); }
|
|
57
57
|
public get status(): number {
|
|
58
58
|
return this.drivers.ST?.value;
|
|
@@ -68,7 +68,9 @@ export namespace DimmerSwitch {
|
|
|
68
68
|
export interface Interface extends Omit<InstanceType<typeof DimmerSwitchNode>, keyof ISYDeviceNode<any, any, any, any>> {
|
|
69
69
|
nodeDefId: "119";
|
|
70
70
|
}
|
|
71
|
-
export function is(node: ISYNode<any, any, any, any>): node is DimmerSwitchNode {
|
|
71
|
+
export function is(node: ISYNode<any, any, any, any>): node is DimmerSwitchNode {
|
|
72
|
+
return ["119"].includes(node.nodeDefId);
|
|
73
|
+
}
|
|
72
74
|
export function isImplementedBy(node: ISYNode<any, any, any, any>): node is DimmerSwitchNode {
|
|
73
75
|
return ["119"].includes(node.nodeDefId);
|
|
74
76
|
}
|
|
@@ -77,7 +79,7 @@ export namespace DimmerSwitch {
|
|
|
77
79
|
}
|
|
78
80
|
export const Node = DimmerSwitchNode;
|
|
79
81
|
export type Commands = {
|
|
80
|
-
DON: ((value?: ZWave.PercentOpt
|
|
82
|
+
DON: ((value?: number | ZWave.PercentOpt, RR?: number) => Promise<boolean>) & {
|
|
81
83
|
label: "On";
|
|
82
84
|
name: "on";
|
|
83
85
|
};
|
|
@@ -101,15 +103,15 @@ export namespace DimmerSwitch {
|
|
|
101
103
|
label: "Dim";
|
|
102
104
|
name: "dim";
|
|
103
105
|
};
|
|
104
|
-
FDUP: ((STARTLEVEL?: ZWave.PercentOpt
|
|
106
|
+
FDUP: ((STARTLEVEL?: number | ZWave.PercentOpt, RR?: number) => Promise<boolean>) & {
|
|
105
107
|
label: "Fade Up";
|
|
106
108
|
name: "fadeUp";
|
|
107
109
|
};
|
|
108
|
-
FDDOWN: ((STARTLEVEL?: ZWave.PercentOpt
|
|
110
|
+
FDDOWN: ((STARTLEVEL?: number | ZWave.PercentOpt, RR?: number) => Promise<boolean>) & {
|
|
109
111
|
label: "Fade Down";
|
|
110
112
|
name: "fadeDown";
|
|
111
113
|
};
|
|
112
|
-
FADE: ((DIR: ZWave.FadeDirection, STARTLEVEL?: ZWave.PercentOpt
|
|
114
|
+
FADE: ((DIR: ZWave.FadeDirection, STARTLEVEL?: number | ZWave.PercentOpt, RR?: number, DIR2?: ZWave.FadeDirection, STEP2?: number) => Promise<boolean>) & {
|
|
113
115
|
label: "Fade";
|
|
114
116
|
name: "fade";
|
|
115
117
|
};
|
|
@@ -121,7 +123,7 @@ export namespace DimmerSwitch {
|
|
|
121
123
|
label: "Query";
|
|
122
124
|
name: "query";
|
|
123
125
|
};
|
|
124
|
-
CONFIG: ((NUM: number, VAL: number
|
|
126
|
+
CONFIG: ((NUM: number, VAL: number) => Promise<boolean>) & {
|
|
125
127
|
label: "Set Configuration";
|
|
126
128
|
name: "setConfiguration";
|
|
127
129
|
};
|
|
@@ -35,7 +35,7 @@ export class RelayNode extends Base<Drivers, Commands> implements Relay.Interfac
|
|
|
35
35
|
async on() { return this.sendCommand("DON"); }
|
|
36
36
|
async off() { return this.sendCommand("DOF"); }
|
|
37
37
|
async query() { return this.sendCommand("QUERY"); }
|
|
38
|
-
async adr(value: ) { return this.sendCommand("ADRPST",
|
|
38
|
+
async adr(value: ) { return this.sendCommand("ADRPST", value); }
|
|
39
39
|
public get status(): {
|
|
40
40
|
|
|
41
41
|
return this.drivers.ST?.value;
|
|
@@ -53,7 +53,9 @@ export namespace Relay {
|
|
|
53
53
|
export interface Interface extends Omit<InstanceType<typeof RelayNode>, keyof ISYDeviceNode<any, any, any, any>> {
|
|
54
54
|
nodeDefId: "RelayLoadControl";
|
|
55
55
|
}
|
|
56
|
-
export function is(node: ISYNode<any, any, any, any>): node is RelayNode {
|
|
56
|
+
export function is(node: ISYNode<any, any, any, any>): node is RelayNode {
|
|
57
|
+
return ["RelayLoadControl"].includes(node.nodeDefId);
|
|
58
|
+
}
|
|
57
59
|
export function isImplementedBy(node: ISYNode<any, any, any, any>): node is RelayNode {
|
|
58
60
|
return ["RelayLoadControl"].includes(node.nodeDefId);
|
|
59
61
|
}
|
|
@@ -44,15 +44,15 @@ export class ThermostatNode extends Base<Drivers, Commands> implements Thermosta
|
|
|
44
44
|
this.drivers.CLISMD = Driver.create("CLISMD", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Schedule Mode", name: "scheduleMode" });
|
|
45
45
|
this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Unknown, label: "Responding", name: "responding" });
|
|
46
46
|
}
|
|
47
|
-
async updateHeatSetpoint(value: ) { return this.sendCommand("CLISPH",
|
|
48
|
-
async updateCoolSetpoint(value: ) { return this.sendCommand("CLISPC",
|
|
49
|
-
async updateMode(value: ) { return this.sendCommand("CLIMD",
|
|
50
|
-
async updateFanMode(value: ) { return this.sendCommand("CLIFS",
|
|
51
|
-
async updateScheduleMode(value: ) { return this.sendCommand("CLISMD",
|
|
52
|
-
async heatSetpointShift(value: ) { return this.sendCommand("CLISPHD",
|
|
53
|
-
async coolSetpointShift(value: ) { return this.sendCommand("CLISPCD",
|
|
47
|
+
async updateHeatSetpoint(value: ) { return this.sendCommand("CLISPH", value); }
|
|
48
|
+
async updateCoolSetpoint(value: ) { return this.sendCommand("CLISPC", value); }
|
|
49
|
+
async updateMode(value: ) { return this.sendCommand("CLIMD", value); }
|
|
50
|
+
async updateFanMode(value: ) { return this.sendCommand("CLIFS", value); }
|
|
51
|
+
async updateScheduleMode(value: ) { return this.sendCommand("CLISMD", value); }
|
|
52
|
+
async heatSetpointShift(value: ) { return this.sendCommand("CLISPHD", value); }
|
|
53
|
+
async coolSetpointShift(value: ) { return this.sendCommand("CLISPCD", value); }
|
|
54
54
|
async query() { return this.sendCommand("QUERY"); }
|
|
55
|
-
async adr(value: ) { return this.sendCommand("ADRPST",
|
|
55
|
+
async adr(value: ) { return this.sendCommand("ADRPST", value); }
|
|
56
56
|
public get temperature(): {
|
|
57
57
|
|
|
58
58
|
return this.drivers.ST?.value;
|
|
@@ -105,7 +105,9 @@ export namespace Thermostat {
|
|
|
105
105
|
export interface Interface extends Omit<InstanceType<typeof ThermostatNode>, keyof ISYDeviceNode<any, any, any, any>> {
|
|
106
106
|
nodeDefId: "Thermostat";
|
|
107
107
|
}
|
|
108
|
-
export function is(node: ISYNode<any, any, any, any>): node is ThermostatNode {
|
|
108
|
+
export function is(node: ISYNode<any, any, any, any>): node is ThermostatNode {
|
|
109
|
+
return ["Thermostat"].includes(node.nodeDefId);
|
|
110
|
+
}
|
|
109
111
|
export function isImplementedBy(node: ISYNode<any, any, any, any>): node is ThermostatNode {
|
|
110
112
|
return ["Thermostat"].includes(node.nodeDefId);
|
|
111
113
|
}
|
package/src/ISY.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
2
|
import { writeFile } from 'fs';
|
|
3
3
|
|
|
4
4
|
import { Parser, type ParserOptions } from 'xml2js';
|
|
5
5
|
import { parseBooleans, parseNumbers } from 'xml2js/lib/processors.js';
|
|
6
|
-
|
|
6
|
+
import WebSocket from 'ws';
|
|
7
7
|
import axios, { type AxiosRequestConfig } from 'axios';
|
|
8
8
|
import { EventEmitter } from 'events';
|
|
9
9
|
import { format, Logger, loggers, type LeveledLogMethod } from 'winston';
|
|
@@ -27,6 +27,9 @@ import { NodeFactory } from './Devices/NodeFactory.js';
|
|
|
27
27
|
import { ISYError } from './ISYError.js';
|
|
28
28
|
import type { Config } from './Model/Config.js';
|
|
29
29
|
import { findPackageJson } from './Utils.js';
|
|
30
|
+
import { textChangeRangeIsUnchanged } from 'typescript';
|
|
31
|
+
import type { ClientRequestArgs } from 'http';
|
|
32
|
+
import { promisify } from 'util';
|
|
30
33
|
|
|
31
34
|
|
|
32
35
|
|
|
@@ -94,9 +97,9 @@ interface ISYConfig {
|
|
|
94
97
|
port: number;
|
|
95
98
|
protocol: 'http' | 'https';
|
|
96
99
|
username: string;
|
|
97
|
-
|
|
98
100
|
socketPath?: string;
|
|
99
|
-
|
|
101
|
+
axiosOptions?: AxiosRequestConfig;
|
|
102
|
+
webSocketOptions?: WebSocket.ClientOptions & ClientRequestArgs;
|
|
100
103
|
// #endregion Properties (8)
|
|
101
104
|
}
|
|
102
105
|
|
|
@@ -135,7 +138,7 @@ export class ISY extends EventEmitter implements Disposable {
|
|
|
135
138
|
public productName = 'eisy';
|
|
136
139
|
public firmwareVersion: any;
|
|
137
140
|
public vendorName = 'Universal Devices, Inc.';
|
|
138
|
-
public webSocket: WebSocket
|
|
141
|
+
public webSocket: WebSocket;
|
|
139
142
|
|
|
140
143
|
public apiVersion: string;
|
|
141
144
|
|
|
@@ -162,7 +165,7 @@ export class ISY extends EventEmitter implements Disposable {
|
|
|
162
165
|
};
|
|
163
166
|
this.protocol = config.protocol;
|
|
164
167
|
this.wsprotocol = config.protocol === 'https' ? 'wss' : 'ws';
|
|
165
|
-
|
|
168
|
+
this.socketPath = config.socketPath;
|
|
166
169
|
this.axiosOptions = {
|
|
167
170
|
baseURL: `${this.protocol}://${this.host}:${this.port}`,
|
|
168
171
|
validateStatus: (status) => status >= 200 && status < 300
|
|
@@ -174,6 +177,15 @@ export class ISY extends EventEmitter implements Disposable {
|
|
|
174
177
|
this.axiosOptions.auth = { username: this.credentials.username, password: this.credentials.password };
|
|
175
178
|
}
|
|
176
179
|
|
|
180
|
+
this.webSocketOptions = { origin: 'com.universal-devices.websockets.isy' };
|
|
181
|
+
|
|
182
|
+
if (this.socketPath) {
|
|
183
|
+
this.webSocketOptions.socketPath = this.socketPath;
|
|
184
|
+
} else {
|
|
185
|
+
this.webSocketOptions.auth = `${this.credentials.username}:${this.credentials.password}`;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
|
|
177
189
|
//this.elkEnabled = config.elkEnabled ?? false;
|
|
178
190
|
|
|
179
191
|
this.nodesLoaded = false;
|
|
@@ -355,29 +367,40 @@ export class ISY extends EventEmitter implements Disposable {
|
|
|
355
367
|
try {
|
|
356
368
|
await this.loadConfig();
|
|
357
369
|
await this.loadNodes();
|
|
370
|
+
await this.refreshStatuses();
|
|
358
371
|
await this.loadVariables(VariableType.Integer);
|
|
359
372
|
await this.loadVariables(VariableType.State);
|
|
360
|
-
await this.refreshStatuses();
|
|
361
373
|
await this.#finishInitialize(true);
|
|
362
374
|
return true;
|
|
363
375
|
} catch (e) {
|
|
364
376
|
if (e instanceof ISYInitializationError) {
|
|
377
|
+
if(e.step === 'variables')
|
|
378
|
+
{
|
|
379
|
+
this.logger.warn(`Error loading variables: ${e.message}`);
|
|
380
|
+
await this.#finishInitialize(true);
|
|
381
|
+
return true;
|
|
382
|
+
}
|
|
365
383
|
this.logger.error(`Error initializing ISY during (${e.step}): ${e.message}`);
|
|
384
|
+
return false;
|
|
366
385
|
} else {
|
|
367
386
|
this.logger.error(`Error initializing ISY: ${e.message}`);
|
|
387
|
+
return false;
|
|
368
388
|
}
|
|
369
389
|
throw e;
|
|
370
390
|
} finally {
|
|
371
391
|
if (this.nodesLoaded !== true) {
|
|
372
|
-
that.#finishInitialize(false);
|
|
392
|
+
await that.#finishInitialize(false);
|
|
373
393
|
}
|
|
374
394
|
}
|
|
375
395
|
}
|
|
376
396
|
|
|
397
|
+
webSocketOptions: WebSocket.ClientOptions & ClientRequestArgs;
|
|
398
|
+
|
|
377
399
|
public async initializeWebSocket() {
|
|
378
400
|
try {
|
|
379
401
|
const that = this;
|
|
380
|
-
|
|
402
|
+
|
|
403
|
+
//const auth = `Basic ${Buffer.from(`${this.credentials.username}:${this.credentials.password}`).toString('base64')}`;
|
|
381
404
|
this.logger.info(`Opening webSocket: ${this.wsprotocol}://${this.address}/rest/subscribe`);
|
|
382
405
|
if (this.webSocket) {
|
|
383
406
|
try {
|
|
@@ -386,27 +409,33 @@ export class ISY extends EventEmitter implements Disposable {
|
|
|
386
409
|
this.logger.warn(`Error closing existing websocket: ${e.message}`);
|
|
387
410
|
}
|
|
388
411
|
}
|
|
389
|
-
|
|
390
|
-
headers: {
|
|
412
|
+
|
|
413
|
+
/*headers: {
|
|
391
414
|
Origin: 'com.universal-devices.websockets.isy',
|
|
392
|
-
|
|
415
|
+
auth
|
|
393
416
|
},
|
|
394
|
-
ping: 10
|
|
395
|
-
});
|
|
396
417
|
|
|
397
|
-
|
|
418
|
+
ping: 10*/
|
|
419
|
+
let p = new Promise<void>((resolve, reject) => {
|
|
398
420
|
|
|
399
|
-
this.webSocket
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
421
|
+
this.webSocket = new WebSocket(`${this.wsprotocol}://${this.address}/rest/subscribe`, ['ISYSUB'], this.webSocketOptions);
|
|
422
|
+
this.lastActivity = new Date();
|
|
423
|
+
//this.webSocket.onmessage = (event) => {this.handleWebSocketMessage()
|
|
424
|
+
this.webSocket.on('open',() => {
|
|
425
|
+
this.logger.info('Websocket connection open');
|
|
426
|
+
resolve();
|
|
427
|
+
})
|
|
428
|
+
.on('message',(data,b)=> {
|
|
429
|
+
that.logger.silly(`Received message: ${Utils.logStringify(data, 1)}`);
|
|
430
|
+
that.handleWebSocketMessage({data: data});
|
|
403
431
|
})
|
|
404
432
|
.on('error', (err: any, response: any) => {
|
|
405
|
-
that.logger.warn(`Websocket subscription error: ${
|
|
433
|
+
that.logger.warn(`Websocket subscription error: ${err}`);
|
|
434
|
+
return reject(new ISYInitializationError('Websocket subscription error', 'websocket'));
|
|
406
435
|
})
|
|
407
436
|
.on('fail', (data: string, response: any) => {
|
|
408
437
|
that.logger.warn(`Websocket subscription failure: ${data}`);
|
|
409
|
-
|
|
438
|
+
return reject(new Error('Websocket subscription failure'));
|
|
410
439
|
})
|
|
411
440
|
.on('abort', () => {
|
|
412
441
|
that.logger.warn('Websocket subscription aborted.');
|
|
@@ -414,8 +443,11 @@ export class ISY extends EventEmitter implements Disposable {
|
|
|
414
443
|
})
|
|
415
444
|
.on('timeout', (ms: string) => {
|
|
416
445
|
that.logger.warn(`Websocket subscription timed out after ${ms} milliseconds.`);
|
|
417
|
-
|
|
446
|
+
return reject(new Error('Timeout contacting ISY'));
|
|
447
|
+
//throw new Error('Timeout contacting ISY');
|
|
418
448
|
});
|
|
449
|
+
});
|
|
450
|
+
return p;
|
|
419
451
|
} catch (e) {
|
|
420
452
|
throw new ISYInitializationError(e, 'websocket');
|
|
421
453
|
}
|
|
@@ -538,7 +570,7 @@ export class ISY extends EventEmitter implements Disposable {
|
|
|
538
570
|
if (typeof parameters == 'object') {
|
|
539
571
|
var q = parameters as Record<P, string | number>;
|
|
540
572
|
for (const paramName in q) {
|
|
541
|
-
if (paramName === 'value') {
|
|
573
|
+
if (paramName === 'value' || paramName === 'default') {
|
|
542
574
|
uriToUse += `/${q[paramName]}`;
|
|
543
575
|
continue;
|
|
544
576
|
}
|
|
@@ -646,7 +678,7 @@ export class ISY extends EventEmitter implements Disposable {
|
|
|
646
678
|
}
|
|
647
679
|
}
|
|
648
680
|
|
|
649
|
-
#finishInitialize(success: boolean) {
|
|
681
|
+
async #finishInitialize(success: boolean) {
|
|
650
682
|
if (!this.nodesLoaded) {
|
|
651
683
|
this.nodesLoaded = true;
|
|
652
684
|
//initializeCompleted();
|
|
@@ -656,10 +688,11 @@ export class ISY extends EventEmitter implements Disposable {
|
|
|
656
688
|
// }
|
|
657
689
|
if (this.enableWebSocket) {
|
|
658
690
|
this.guardianTimer = setInterval(this.#guardian.bind(this), 60000);
|
|
659
|
-
this.initializeWebSocket();
|
|
691
|
+
return this.initializeWebSocket();
|
|
660
692
|
}
|
|
661
693
|
}
|
|
662
694
|
}
|
|
695
|
+
|
|
663
696
|
}
|
|
664
697
|
|
|
665
698
|
async #guardian() {
|
|
@@ -11,10 +11,10 @@ import internal from 'stream';
|
|
|
11
11
|
import type { Driver } from '../../Definitions/Global/Drivers.js';
|
|
12
12
|
import { ISY } from '../../ISY.js';
|
|
13
13
|
import type { ISYDevice } from '../../ISYDevice.js';
|
|
14
|
-
import { DeviceToClusterMap, MappingRegistry, type ClusterMapping, type BehaviorMapping } from '../../Model/ClusterMap.js';
|
|
15
14
|
import { server } from 'typescript';
|
|
16
15
|
import type { ISYNode } from '../../ISYNode.js';
|
|
17
16
|
import type { Family } from '../../Definitions/index.js';
|
|
17
|
+
import { MappingRegistry, type BehaviorMapping, type DeviceToClusterMap } from '../Mappings/MappingRegistry.js';
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
|
|
@@ -4,8 +4,9 @@ import '@project-chip/matter.js/device';
|
|
|
4
4
|
import { Converter } from '../../Converters.js';
|
|
5
5
|
import type { Constructor } from '../../Devices/Constructor.js';
|
|
6
6
|
import type { DriversOf, ISYNode } from '../../ISYNode.js';
|
|
7
|
-
|
|
7
|
+
|
|
8
8
|
import { ISYBridgedDeviceBehavior } from './ISYBridgedDeviceBehavior.js';
|
|
9
|
+
import type { BehaviorMapping } from '../Mappings/MappingRegistry.js';
|
|
9
10
|
|
|
10
11
|
// #region Type aliases (6)
|
|
11
12
|
|
|
@@ -8,7 +8,7 @@ import type { MaybePromise } from '@project-chip/matter.js/util';
|
|
|
8
8
|
import { DriverType } from '../../../Definitions/Global/Drivers.js';
|
|
9
9
|
import { InsteonDimmableDevice } from '../../../Devices/Insteon/InsteonDimmableDevice.js';
|
|
10
10
|
import { InsteonRelayDevice } from '../../../Devices/Insteon/InsteonRelayDevice.js';
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
import { ClusterForBehavior, ISYClusterBehavior, type PropertyChange } from '../ISYClusterBehavior.js';
|
|
13
13
|
|
|
14
14
|
import { Converter } from '../../../Converters.js';
|
|
@@ -53,6 +53,7 @@ export class ISYDimmableBehavior extends ISYClusterBehavior(DimmableLightRequire
|
|
|
53
53
|
|
|
54
54
|
override setLevel(level: number): MaybePromise<void> {
|
|
55
55
|
level = Converter.Matter.LevelFrom0To255.LightingLevel.from(level);
|
|
56
|
+
|
|
56
57
|
if (level > 0) {
|
|
57
58
|
return this.device.on(level);
|
|
58
59
|
} else {
|