isy-nodejs 1.0.2-alpha.3 → 1.0.2-alpha.4
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/NodeClassFactory.js +76 -33
- package/dist/esm/CodeGeneration/NodeClassFactory.js.map +1 -1
- package/dist/esm/CodeGeneration/NodeFactory.js +245 -0
- package/dist/esm/CodeGeneration/NodeFactory.js.map +1 -0
- package/dist/esm/Converters.js +15 -1
- package/dist/esm/Converters.js.map +1 -1
- package/dist/esm/Definitions/Global/Drivers.js.map +1 -1
- package/dist/esm/Definitions/Global/Events.js.map +1 -1
- package/dist/esm/Devices/ISYDevice.js +0 -33
- package/dist/esm/Devices/ISYDevice.js.map +1 -1
- package/dist/esm/Devices/ISYDeviceNode.js +2 -2
- package/dist/esm/Devices/ISYDeviceNode.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js +49 -0
- package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js +54 -0
- package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js +54 -0
- package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js +46 -0
- package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/BinaryControl.js +46 -0
- package/dist/esm/Devices/Insteon/Generated/BinaryControl.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js +75 -0
- package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js +78 -0
- package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js +80 -0
- package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js +74 -0
- package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js +40 -0
- package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/DoorLock.js +45 -0
- package/dist/esm/Devices/Insteon/Generated/DoorLock.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js +42 -0
- package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js +47 -0
- package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/EzrainInput.js +42 -0
- package/dist/esm/Devices/Insteon/Generated/EzrainInput.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js +49 -0
- package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js +53 -0
- package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js +93 -0
- package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js +81 -0
- package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js +49 -0
- package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/IrLincTx.js +39 -0
- package/dist/esm/Devices/Insteon/Generated/IrLincTx.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/KeypadButton.js +46 -0
- package/dist/esm/Devices/Insteon/Generated/KeypadButton.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js +78 -0
- package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js +56 -0
- package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/OnOffControl.js +39 -0
- package/dist/esm/Devices/Insteon/Generated/OnOffControl.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/Pir2844.js +64 -0
- package/dist/esm/Devices/Insteon/Generated/Pir2844.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js +50 -0
- package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/Pir2844c.js +64 -0
- package/dist/esm/Devices/Insteon/Generated/Pir2844c.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/RelayLamp.js +54 -0
- package/dist/esm/Devices/Insteon/Generated/RelayLamp.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js +56 -0
- package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js +58 -0
- package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js +42 -0
- package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js +44 -0
- package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js +42 -0
- package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/Siren.js +66 -0
- package/dist/esm/Devices/Insteon/Generated/Siren.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/SirenAlert.js +35 -0
- package/dist/esm/Devices/Insteon/Generated/SirenAlert.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/TempLinc.js +83 -0
- package/dist/esm/Devices/Insteon/Generated/TempLinc.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/Thermostat.js +83 -0
- package/dist/esm/Devices/Insteon/Generated/Thermostat.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/X10.js +49 -0
- package/dist/esm/Devices/Insteon/Generated/X10.js.map +1 -0
- package/dist/esm/Devices/Insteon/Generated/index.js +39 -0
- package/dist/esm/Devices/Insteon/Generated/index.js.map +1 -0
- package/dist/esm/Devices/Insteon/InsteonBaseDevice.js +3 -4
- package/dist/esm/Devices/Insteon/InsteonBaseDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonFanDevice.js +2 -2
- package/dist/esm/Devices/Insteon/InsteonFanDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/KeypadButton.js +11 -11
- package/dist/esm/Devices/Insteon/KeypadButton.js.map +1 -1
- package/dist/esm/Devices/Insteon/index.js +16 -29
- package/dist/esm/Devices/Insteon/index.js.map +1 -1
- package/dist/esm/Devices/Lutron/Generated/LoadShed.js +45 -0
- package/dist/esm/Devices/Lutron/Generated/LoadShed.js.map +1 -0
- package/dist/esm/Devices/NodeFactory.js +45 -8
- package/dist/esm/Devices/NodeFactory.js.map +1 -1
- package/dist/esm/Devices/Scene/index.js +2 -2
- package/dist/esm/Devices/Scene/index.js.map +1 -1
- package/dist/esm/Devices/UDI/Generated/Channel.js +42 -0
- package/dist/esm/Devices/UDI/Generated/Channel.js.map +1 -0
- package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js +54 -0
- package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js.map +1 -0
- package/dist/esm/Devices/UDI/Generated/Main.js +45 -0
- package/dist/esm/Devices/UDI/Generated/Main.js.map +1 -0
- package/dist/esm/Devices/UDI/Generated/PulseCounter.js +46 -0
- package/dist/esm/Devices/UDI/Generated/PulseCounter.js.map +1 -0
- package/dist/esm/Devices/UDI/Generated/Relay.js +45 -0
- package/dist/esm/Devices/UDI/Generated/Relay.js.map +1 -0
- package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js +38 -0
- package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js.map +1 -0
- package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js +57 -0
- package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js.map +1 -0
- package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js +65 -0
- package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js.map +1 -0
- package/dist/esm/Devices/ZWave/Generated/index.js +3 -0
- package/dist/esm/Devices/ZWave/Generated/index.js.map +1 -0
- package/dist/esm/Devices/ZWave/index.js +1 -0
- package/dist/esm/Devices/ZWave/index.js.map +1 -1
- package/dist/esm/Devices/index.js +9 -3
- package/dist/esm/Devices/index.js.map +1 -1
- package/dist/esm/ISY.js +13 -8
- package/dist/esm/ISY.js.map +1 -1
- package/dist/esm/ISYDevice.js +7 -1
- package/dist/esm/ISYDevice.js.map +1 -1
- package/dist/esm/ISYNode.js +13 -4
- package/dist/esm/ISYNode.js.map +1 -1
- package/dist/esm/ISYScene.js +13 -12
- package/dist/esm/ISYScene.js.map +1 -1
- package/dist/esm/Matter/Behaviors/BehaviorRegistry.js +13 -0
- package/dist/esm/Matter/Behaviors/BehaviorRegistry.js.map +1 -0
- package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js +3 -0
- package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js.map +1 -1
- package/dist/esm/Matter/Bridge/Server.js +65 -56
- package/dist/esm/Matter/Bridge/Server.js.map +1 -1
- package/dist/esm/Matter/Mappings/Insteon.js +28 -10
- package/dist/esm/Matter/Mappings/Insteon.js.map +1 -1
- package/dist/esm/Model/ClassDefinition.js +22 -3
- package/dist/esm/Model/ClassDefinition.js.map +1 -1
- package/dist/esm/Model/ClusterMap.js +45 -19
- package/dist/esm/Model/ClusterMap.js.map +1 -1
- package/dist/esm/Model/NodeInfo.js +1 -1
- package/dist/esm/Model/NodeInfo.js.map +1 -1
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts +6 -3
- package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
- package/dist/esm/types/CodeGeneration/NodeFactory.d.ts +75 -0
- package/dist/esm/types/CodeGeneration/NodeFactory.d.ts.map +1 -0
- package/dist/esm/types/Converters.d.ts +9 -3
- package/dist/esm/types/Converters.d.ts.map +1 -1
- package/dist/esm/types/Definitions/Global/Drivers.d.ts.map +1 -1
- package/dist/esm/types/Definitions/Global/Events.d.ts +2 -2
- package/dist/esm/types/Definitions/Global/Events.d.ts.map +1 -1
- package/dist/esm/types/Devices/DeviceMap.d.ts +1 -1
- package/dist/esm/types/Devices/DeviceMap.d.ts.map +1 -1
- package/dist/esm/types/Devices/EndpointFor.d.ts +7 -5
- package/dist/esm/types/Devices/EndpointFor.d.ts.map +1 -1
- package/dist/esm/types/Devices/ISYDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/ISYDeviceNode.d.ts +5 -13
- package/dist/esm/types/Devices/ISYDeviceNode.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts +76 -0
- package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts +88 -0
- package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts +88 -0
- package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts +64 -0
- package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts +64 -0
- package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts +144 -0
- package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts +150 -0
- package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts +156 -0
- package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts +138 -0
- package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts +51 -0
- package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts +64 -0
- package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts +52 -0
- package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts +70 -0
- package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts +52 -0
- package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts +76 -0
- package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts +88 -0
- package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts +168 -0
- package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts +142 -0
- package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts +71 -0
- package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts +51 -0
- package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts +64 -0
- package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts +150 -0
- package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts +94 -0
- package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts +44 -0
- package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts +98 -0
- package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts +76 -0
- package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts +98 -0
- package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts +88 -0
- package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts +94 -0
- package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts +100 -0
- package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts +57 -0
- package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts +63 -0
- package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts +52 -0
- package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts +109 -0
- package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts +37 -0
- package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts +148 -0
- package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts +148 -0
- package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts +76 -0
- package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/Generated/index.d.ts +39 -0
- package/dist/esm/types/Devices/Insteon/Generated/index.d.ts.map +1 -0
- package/dist/esm/types/Devices/Insteon/InsteonBaseDevice.d.ts +4 -10
- package/dist/esm/types/Devices/Insteon/InsteonBaseDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +22 -28
- package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts +3 -3
- package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonLeakSensorDevice.d.ts +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonLeakSensorDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/KeypadButton.d.ts +19 -19
- package/dist/esm/types/Devices/Insteon/KeypadButton.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/index.d.ts +6 -42
- package/dist/esm/types/Devices/Insteon/index.d.ts.map +1 -1
- package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts +64 -0
- package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts.map +1 -0
- package/dist/esm/types/Devices/NodeFactory.d.ts +18 -7
- package/dist/esm/types/Devices/NodeFactory.d.ts.map +1 -1
- package/dist/esm/types/Devices/Scene/index.d.ts +2 -1
- package/dist/esm/types/Devices/Scene/index.d.ts.map +1 -1
- package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts +51 -0
- package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts.map +1 -0
- package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts +72 -0
- package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts.map +1 -0
- package/dist/esm/types/Devices/UDI/Generated/Main.d.ts +59 -0
- package/dist/esm/types/Devices/UDI/Generated/Main.d.ts.map +1 -0
- package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts +58 -0
- package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts.map +1 -0
- package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts +64 -0
- package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts.map +1 -0
- package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts +44 -0
- package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts.map +1 -0
- package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts +90 -0
- package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts.map +1 -0
- package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts +124 -0
- package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts.map +1 -0
- package/dist/esm/types/Devices/ZWave/Generated/index.d.ts +3 -0
- package/dist/esm/types/Devices/ZWave/Generated/index.d.ts.map +1 -0
- package/dist/esm/types/Devices/ZWave/index.d.ts.map +1 -1
- package/dist/esm/types/Devices/index.d.ts +7 -21
- package/dist/esm/types/Devices/index.d.ts.map +1 -1
- package/dist/esm/types/ISY.d.ts.map +1 -1
- package/dist/esm/types/ISYDevice.d.ts +19 -28
- package/dist/esm/types/ISYDevice.d.ts.map +1 -1
- package/dist/esm/types/ISYNode.d.ts +25 -8
- package/dist/esm/types/ISYNode.d.ts.map +1 -1
- package/dist/esm/types/ISYScene.d.ts +5 -6
- package/dist/esm/types/ISYScene.d.ts.map +1 -1
- package/dist/esm/types/Matter/Behaviors/BehaviorRegistry.d.ts +11 -0
- package/dist/esm/types/Matter/Behaviors/BehaviorRegistry.d.ts.map +1 -0
- package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +1 -4
- package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
- package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts +5 -4
- package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts.map +1 -1
- package/dist/esm/types/Matter/Bridge/Server.d.ts +1 -1
- package/dist/esm/types/Matter/Bridge/Server.d.ts.map +1 -1
- package/dist/esm/types/Model/ClassDefinition.d.ts +6 -2
- package/dist/esm/types/Model/ClassDefinition.d.ts.map +1 -1
- package/dist/esm/types/Model/ClusterMap.d.ts +12 -21
- package/dist/esm/types/Model/ClusterMap.d.ts.map +1 -1
- package/dist/esm/types/Model/EnumDefinition.d.ts +1 -1
- package/dist/esm/types/Utils.d.ts +18 -0
- package/dist/esm/types/Utils.d.ts.map +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/CodeGeneration/NodeClassFactory.ts +144 -39
- package/src/CodeGeneration/NodeFactory.ts +341 -0
- package/src/Converters.ts +23 -3
- package/src/Definitions/Global/Drivers.ts +1 -0
- package/src/Definitions/Global/Events.ts +3 -3
- package/src/Devices/Brultech/Generated/Channel.ts +8 -6
- package/src/Devices/Brultech/Generated/Main.ts +9 -9
- package/src/Devices/DeviceMap.ts +1 -1
- package/src/Devices/ISYDevice.ts +8 -57
- package/src/Devices/ISYDeviceNode.ts +143 -166
- package/src/Devices/Insteon/Generated/AlertModuleArmed.ts +13 -21
- package/src/Devices/Insteon/Generated/AlertModuleSiren.ts +18 -29
- package/src/Devices/Insteon/Generated/BallastRelayLampSwitch.ts +18 -29
- package/src/Devices/Insteon/Generated/BinaryAlarm.ts +14 -17
- package/src/Devices/Insteon/Generated/BinaryControl.ts +14 -17
- package/src/Devices/Insteon/Generated/DimmerLamp.ts +25 -51
- package/src/Devices/Insteon/Generated/DimmerLampSwitch.ts +36 -64
- package/src/Devices/Insteon/Generated/DimmerLampSwitchLed.ts +31 -60
- package/src/Devices/Insteon/Generated/DimmerMotorSwitch.ts +24 -47
- package/src/Devices/Insteon/Generated/DimmerSwitch.ts +13 -14
- package/src/Devices/Insteon/Generated/DoorLock.ts +11 -15
- package/src/Devices/Insteon/Generated/Ezio2x4Input.ts +12 -11
- package/src/Devices/Insteon/Generated/Ezio2x4Output.ts +12 -18
- package/src/Devices/Insteon/Generated/EzrainInput.ts +12 -11
- package/src/Devices/Insteon/Generated/EzrainOutput.ts +20 -28
- package/src/Devices/Insteon/Generated/FanLincMotor.ts +15 -27
- package/src/Devices/Insteon/Generated/I3KeypadFlags.ts +19 -39
- package/src/Devices/Insteon/Generated/I3PaddleFlags.ts +17 -33
- package/src/Devices/Insteon/Generated/ImeterSolo.ts +11 -15
- package/src/Devices/Insteon/Generated/IrLincTx.ts +10 -12
- package/src/Devices/Insteon/Generated/{KeypadButtonAdv.ts → KeypadButton.ts} +23 -26
- package/src/Devices/Insteon/Generated/KeypadDimmer.ts +30 -57
- package/src/Devices/Insteon/Generated/KeypadRelay.ts +30 -43
- package/src/Devices/Insteon/Generated/OnOffControl.ts +15 -12
- package/src/Devices/Insteon/Generated/Pir2844.ts +15 -20
- package/src/Devices/Insteon/Generated/Pir2844OnOff.ts +16 -23
- package/src/Devices/Insteon/Generated/Pir2844c.ts +15 -20
- package/src/Devices/Insteon/Generated/RelayLamp.ts +29 -41
- package/src/Devices/Insteon/Generated/RelayLampSwitch.ts +29 -42
- package/src/Devices/Insteon/Generated/RelayLampSwitchLed.ts +24 -39
- package/src/Devices/Insteon/Generated/RelaySwitch.ts +14 -17
- package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.ts +15 -20
- package/src/Devices/Insteon/Generated/RemoteLinc2.ts +12 -11
- package/src/Devices/Insteon/Generated/Siren.ts +18 -29
- package/src/Devices/Insteon/Generated/SirenAlert.ts +11 -8
- package/src/Devices/Insteon/Generated/TempLinc.ts +18 -36
- package/src/Devices/Insteon/Generated/Thermostat.ts +18 -36
- package/src/Devices/Insteon/Generated/X10.ts +13 -21
- package/src/Devices/Insteon/Generated/index.ts +38 -0
- package/src/Devices/Insteon/InsteonBaseDevice.ts +5 -4
- package/src/Devices/Insteon/InsteonFanDevice.ts +3 -4
- package/src/Devices/Insteon/InsteonRelayDevice.ts +1 -0
- package/src/Devices/Insteon/KeypadButton.ts +31 -31
- package/src/Devices/Insteon/index.ts +18 -26
- package/src/Devices/Lutron/Generated/LoadShed.ts +11 -15
- package/src/Devices/NCD/Generated/Relay.ts +12 -18
- package/src/Devices/NodeFactory.ts +67 -13
- package/src/Devices/Poly/Generated/MatterBridge.ts +84 -0
- package/src/Devices/Scene/Generated/Scene.ts +33 -65
- package/src/Devices/Scene/index.ts +2 -1
- package/src/Devices/UDI/Generated/Channel.ts +8 -6
- package/src/Devices/UDI/Generated/Em3MainChannel.ts +8 -6
- package/src/Devices/UDI/Generated/Main.ts +9 -9
- package/src/Devices/UDI/Generated/PulseCounter.ts +8 -6
- package/src/Devices/UDI/Generated/Relay.ts +11 -15
- package/src/Devices/UDI/Generated/TemperatureSensor.ts +8 -6
- package/src/Devices/ZWave/Generated/ColorSwitch.ts +16 -24
- package/src/Devices/ZWave/Generated/DimmerSwitch.ts +25 -49
- package/src/Devices/ZWave/Generated/index.ts +2 -0
- package/src/Devices/ZWave/index.ts +5 -1
- package/src/Devices/ZigBeeLegacy/Generated/Relay.ts +12 -18
- package/src/Devices/ZigBeeLegacy/Generated/Thermostat.ts +17 -33
- package/src/Devices/index.ts +17 -12
- package/src/ISY.ts +8 -2
- package/src/ISYDevice.ts +68 -57
- package/src/ISYNode.ts +32 -8
- package/src/ISYScene.ts +31 -28
- package/src/Matter/Behaviors/BehaviorRegistry.ts +26 -0
- package/src/Matter/Behaviors/Insteon/ISYOnOffBehavior.ts +6 -0
- package/src/Matter/Bridge/Server.ts +39 -15
- package/src/Matter/Mappings/Insteon.ts +39 -14
- package/src/Model/ClassDefinition.ts +34 -4
- package/src/Model/ClusterMap.ts +73 -57
- package/src/Model/NodeInfo.ts +1 -1
- package/src/Utils.ts +38 -0
- package/tsconfig.json +7 -1
- package/src/Devices/Insteon/Generated/AlertModuleSirenAdv.ts +0 -123
- package/src/Devices/Insteon/Generated/BallastRelayLampSwitchAdv.ts +0 -123
- package/src/Devices/Insteon/Generated/BinaryAlarmAdv.ts +0 -91
- package/src/Devices/Insteon/Generated/BinaryControlAdv.ts +0 -91
- package/src/Devices/Insteon/Generated/DimmerLampSwitchAdv.ts +0 -207
- package/src/Devices/Insteon/Generated/DimmerLampSwitchLedAdv.ts +0 -215
- package/src/Devices/Insteon/Generated/DimmerMotorSwitchAdv.ts +0 -191
- package/src/Devices/Insteon/Generated/DimmerSwitchOnlyAdv.ts +0 -73
- package/src/Devices/Insteon/Generated/Ezio2x4InputAdv.ts +0 -75
- package/src/Devices/Insteon/Generated/EzrainInputAdv.ts +0 -75
- package/src/Devices/Insteon/Generated/KeypadDimmerAdv.ts +0 -207
- package/src/Devices/Insteon/Generated/KeypadRelayAdv.ts +0 -131
- package/src/Devices/Insteon/Generated/OnOffControlAdv.ts +0 -65
- package/src/Devices/Insteon/Generated/Pir2844Adv.ts +0 -139
- package/src/Devices/Insteon/Generated/Pir2844OnOffAdv.ts +0 -107
- package/src/Devices/Insteon/Generated/Pir2844cAdv.ts +0 -139
- package/src/Devices/Insteon/Generated/RelayLampOnlyAdv.ts +0 -123
- package/src/Devices/Insteon/Generated/RelayLampSwitchAdv.ts +0 -131
- package/src/Devices/Insteon/Generated/RelayLampSwitchLedAdv.ts +0 -139
- package/src/Devices/Insteon/Generated/RelaySwitchOnlyAdv.ts +0 -81
- package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQueryAdv.ts +0 -89
- package/src/Devices/Insteon/Generated/RemoteLinc2Adv.ts +0 -75
- package/src/Devices/Insteon/Generated/SirenArm.ts +0 -55
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Endpoint, EndpointServer, Environment, ServerNode, StorageService, Time, VendorId } from '@matter/main';
|
|
1
|
+
import { Endpoint, EndpointServer, Environment, MutableEndpoint, ServerNode, StorageService, Time, VendorId, type SupportedBehaviors } from '@matter/main';
|
|
2
2
|
import { StorageBackendDisk } from '@project-chip/matter-node.js/storage';
|
|
3
|
-
import { BridgedDeviceBasicInformationServer } from '@project-chip/matter.js/behaviors/bridged-device-basic-information';
|
|
3
|
+
import { BridgedDeviceBasicInformationServer, type BridgedDeviceBasicInformationBehavior } from '@project-chip/matter.js/behaviors/bridged-device-basic-information';
|
|
4
4
|
import { logEndpoint } from '@matter/main/protocol';
|
|
5
5
|
import { DimmableLightDevice, OnOffLightDevice } from '@matter/main/devices';
|
|
6
6
|
import { AggregatorEndpoint } from '@matter/main/endpoints/aggregator';
|
|
@@ -17,9 +17,14 @@ import { ISYBridgedDeviceBehavior } from '../Behaviors/ISYBridgedDeviceBehavior.
|
|
|
17
17
|
import { ISYDimmableBehavior, ISYOnOffBehavior } from '../Behaviors/Insteon/ISYOnOffBehavior.js';
|
|
18
18
|
import '../Mappings/Insteon.js';
|
|
19
19
|
import type { ISYNode } from '../../ISYNode.js';
|
|
20
|
-
import type
|
|
20
|
+
import { MappingRegistry, type DeviceToClusterMap } from '../../Model/ClusterMap.js';
|
|
21
21
|
import { Options } from '../../Definitions/ZWave/index.js';
|
|
22
22
|
import { InsteonBaseDevice } from '../../Devices/Insteon/InsteonBaseDevice.js';
|
|
23
|
+
import { DimmerLamp } from '../../Devices/Insteon/Generated/DimmerLamp.js';
|
|
24
|
+
import { Family } from '../../Definitions/index.js';
|
|
25
|
+
import { RelayLamp } from '../../Devices/Insteon/index.js';
|
|
26
|
+
import type { DeviceTypeDefinition } from '@project-chip/matter.js/device';
|
|
27
|
+
import type { BridgedISYNodeInformationServer } from '../../Devices/EndpointFor.js';
|
|
23
28
|
|
|
24
29
|
|
|
25
30
|
// #region Interfaces (1)
|
|
@@ -70,6 +75,10 @@ export interface DeviceOptions {
|
|
|
70
75
|
|
|
71
76
|
// #region Functions (3)
|
|
72
77
|
|
|
78
|
+
let t : MutableEndpoint;
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
73
82
|
export function create(isy?: ISY, config?: Config): Promise<ServerNode> {
|
|
74
83
|
return createMatterServer(isy, config);
|
|
75
84
|
}
|
|
@@ -187,7 +196,7 @@ export async function createMatterServer(isy?: ISY, config?: Config): Promise<Se
|
|
|
187
196
|
}
|
|
188
197
|
});
|
|
189
198
|
|
|
190
|
-
logger.info(`Bridge
|
|
199
|
+
logger.info(`Bridge server added`);
|
|
191
200
|
|
|
192
201
|
/**
|
|
193
202
|
* Matter Nodes are a composition of endpoints. Create and add a single multiple endpoint to the node to make it a
|
|
@@ -203,10 +212,12 @@ export async function createMatterServer(isy?: ISY, config?: Config): Promise<Se
|
|
|
203
212
|
|
|
204
213
|
await server.add(aggregator);
|
|
205
214
|
|
|
206
|
-
logger.info(`Bridge
|
|
207
|
-
|
|
215
|
+
logger.info(`Bridge aggregator added`);
|
|
216
|
+
let endpoints = 0;
|
|
208
217
|
for (const node of isy.nodeMap.values()) {
|
|
209
218
|
let device = node as ISYDeviceNode<any, any, any>;
|
|
219
|
+
try
|
|
220
|
+
{
|
|
210
221
|
let deviceOptions = getDeviceOptions(node, config.DeviceOptions);
|
|
211
222
|
if(deviceOptions?.label)
|
|
212
223
|
{
|
|
@@ -220,16 +231,21 @@ export async function createMatterServer(isy?: ISY, config?: Config): Promise<Se
|
|
|
220
231
|
//const name = `OnOff ${isASocket ? "Socket" : "Light"} ${i}`;
|
|
221
232
|
|
|
222
233
|
//@ts-ignore
|
|
223
|
-
|
|
234
|
+
//of (DimmableLightDevice.with(BridgedDeviceBasicInformationServer, ISYBridgedDeviceBehavior, ISYOnOffBehavior, ISYDimmableBehavior)) | typeof (OnOffLightDevice.with(BridgedDeviceBasicInformationServer, ISYBridgedDeviceBehavior, ISYOnOffBehavior));*/
|
|
235
|
+
let deviceType = MappingRegistry.getMapping(device)?.deviceType;
|
|
236
|
+
|
|
237
|
+
|
|
224
238
|
|
|
225
|
-
|
|
226
|
-
|
|
239
|
+
let baseBehavior = deviceType;
|
|
240
|
+
if (DimmerLamp.isImplementedBy(device)) {
|
|
241
|
+
|
|
242
|
+
baseBehavior = deviceType?.with(ISYOnOffBehavior, ISYDimmableBehavior);
|
|
227
243
|
// if(device instanceof InsteonSwitchDevice)
|
|
228
244
|
// {
|
|
229
245
|
// baseBehavior = DimmerSwitchDevice.with(BridgedDeviceBasicInformationServer);
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
baseBehavior =
|
|
246
|
+
}
|
|
247
|
+
else if (RelayLamp.isImplementedBy(device)) {
|
|
248
|
+
baseBehavior = deviceType?.with(ISYOnOffBehavior);
|
|
233
249
|
// if(device instanceof InsteonSwitchDevice)
|
|
234
250
|
// {
|
|
235
251
|
// baseBehavior = OnOffLightSwitchDevice.with(BridgedDeviceBasicInformationServer);
|
|
@@ -237,6 +253,8 @@ export async function createMatterServer(isy?: ISY, config?: Config): Promise<Se
|
|
|
237
253
|
}
|
|
238
254
|
|
|
239
255
|
if (baseBehavior !== undefined) {
|
|
256
|
+
|
|
257
|
+
logger.info(`Device ${device.label} (${device.address}) with NodeDefId = ${device.nodeDefId} mapped to ${deviceType.name}`);
|
|
240
258
|
//@ts-ignore
|
|
241
259
|
const endpoint = new Endpoint(baseBehavior, {
|
|
242
260
|
id: serialNumber,
|
|
@@ -246,7 +264,7 @@ export async function createMatterServer(isy?: ISY, config?: Config): Promise<Se
|
|
|
246
264
|
|
|
247
265
|
bridgedDeviceBasicInformation: {
|
|
248
266
|
nodeLabel: device.label.rightWithToken(32),
|
|
249
|
-
vendorName: device instanceof
|
|
267
|
+
vendorName: device instanceof ISYDeviceNode ? device.manufacturer : isy.vendorName,
|
|
250
268
|
vendorId: VendorId(config.vendorId),
|
|
251
269
|
productName: device.productName.leftWithToken(32),
|
|
252
270
|
productLabel: device.model.leftWithToken(64),
|
|
@@ -263,10 +281,15 @@ export async function createMatterServer(isy?: ISY, config?: Config): Promise<Se
|
|
|
263
281
|
});
|
|
264
282
|
|
|
265
283
|
await aggregator.add(endpoint);
|
|
266
|
-
logger.info(`Endpoint
|
|
284
|
+
logger.info(`Endpoint added ${JSON.stringify(endpoint.id)} for ${device.label} (${device.address})`);
|
|
285
|
+
endpoints++;
|
|
267
286
|
//endpoints.push({0:endpoint,1:device});
|
|
268
287
|
}
|
|
269
288
|
//endpoint.lifecycle.ready.on(()=> device.initialize(endpoint as any));
|
|
289
|
+
}}
|
|
290
|
+
catch(e)
|
|
291
|
+
{
|
|
292
|
+
logger.error(`Error adding endpoint for ${device.label} (${device.address}): ${e.message}`);
|
|
270
293
|
}
|
|
271
294
|
|
|
272
295
|
/**
|
|
@@ -275,8 +298,9 @@ export async function createMatterServer(isy?: ISY, config?: Config): Promise<Se
|
|
|
275
298
|
* If the code in these change handlers fail then the change is also rolled back and not executed and an error is
|
|
276
299
|
* reported back to the controller.
|
|
277
300
|
*/
|
|
278
|
-
}
|
|
279
301
|
|
|
302
|
+
}
|
|
303
|
+
logger.info(`${endpoints} endpoints added to bridge.`);
|
|
280
304
|
/**
|
|
281
305
|
* In order to start the node and announce it into the network we use the run method which resolves when the node goes
|
|
282
306
|
* offline again because we do not need anything more here. See the Full example for other starting options.
|
|
@@ -1,46 +1,73 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
3
|
-
import { OnOffLightDevice } from '@project-chip/matter.js/devices/OnOffLightDevice';
|
|
4
2
|
import { DriverType } from '../../Definitions/Global/Drivers.js';
|
|
5
3
|
import { Family, type t } from '../../Definitions/Global/Families.js';
|
|
6
|
-
import
|
|
4
|
+
import * as Insteon from '../../Devices/Insteon/index.js';
|
|
7
5
|
import { Devices } from '../../Devices/index.js';
|
|
8
6
|
import { MappingRegistry, type DeviceToClusterMap, type EndpointMapping, type FamilyToClusterMap } from '../../Model/ClusterMap.js';
|
|
9
7
|
|
|
10
8
|
//import InsteonMap from "./Insteon.json";
|
|
11
|
-
|
|
9
|
+
|
|
12
10
|
import { Converter } from '../../Converters.js';
|
|
13
11
|
import type { InsteonRelaySwitchDevice } from '../../Devices/Insteon/InsteonRelaySwitchDevice.js';
|
|
12
|
+
import { DimmerSwitchDevice, GenericSwitchDevice, OnOffLightSwitchDevice, OnOffLightDevice, DimmableLightDevice } from '@matter/node/devices';
|
|
13
|
+
import type { Identity } from '@matter/general';
|
|
14
|
+
import { SwitchServer } from '@matter/node/behaviors';
|
|
15
|
+
import type { Device } from '@project-chip/matter.js/device';
|
|
16
|
+
import type { MutableEndpoint } from '@matter/node';
|
|
14
17
|
|
|
15
18
|
const map: FamilyToClusterMap<Family.Insteon> = {
|
|
16
19
|
Family: Family.Insteon,
|
|
17
|
-
|
|
20
|
+
|
|
21
|
+
RelayLamp: {
|
|
18
22
|
deviceType: OnOffLightDevice,
|
|
19
23
|
mapping: {
|
|
20
24
|
OnOff: {
|
|
21
25
|
attributes: {
|
|
22
|
-
onOff: 'ST'
|
|
26
|
+
onOff: { driver: 'ST', converter: 'LevelFrom0To255.Boolean' }
|
|
23
27
|
},
|
|
24
28
|
commands: { on: 'DON' }
|
|
25
29
|
}
|
|
26
|
-
|
|
30
|
+
|
|
31
|
+
}
|
|
27
32
|
},
|
|
28
|
-
|
|
33
|
+
RelayLampSwitch: {
|
|
29
34
|
deviceType: OnOffLightDevice,
|
|
30
35
|
mapping: {
|
|
31
36
|
OnOff: {
|
|
32
37
|
attributes: {
|
|
33
|
-
onOff: 'ST'
|
|
38
|
+
onOff: { driver: 'ST', converter: 'LevelFrom0To255.Boolean' }
|
|
34
39
|
},
|
|
35
40
|
commands: { on: 'DON' }
|
|
36
41
|
}
|
|
37
42
|
}
|
|
43
|
+
,},
|
|
44
|
+
DimmerLamp: {
|
|
45
|
+
deviceType: DimmableLightDevice,
|
|
46
|
+
// @ts-ignore
|
|
47
|
+
mapping: {
|
|
48
|
+
// @ts-ignore
|
|
49
|
+
OnOff: {
|
|
50
|
+
attributes: {
|
|
51
|
+
onOff: { driver: 'ST', converter: 'LevelFrom0To255.Boolean' }
|
|
52
|
+
},
|
|
53
|
+
commands: { on: 'DON' }
|
|
54
|
+
},
|
|
55
|
+
LevelControl: {
|
|
56
|
+
// @ts-ignore
|
|
57
|
+
attributes: {
|
|
58
|
+
currentLevel: { driver: 'ST', converter: 'LevelFrom0To255.LightingLevel' },
|
|
59
|
+
startUpCurrentLevel: { driver: 'OL', converter: 'LevelFrom0To255.LightingLevel' },
|
|
60
|
+
onLevel: { driver: 'OL', converter: 'LevelFrom0To255.LightingLevel' }
|
|
61
|
+
},
|
|
62
|
+
commands: { setLevel: { command: 'DON' } }
|
|
63
|
+
}
|
|
64
|
+
} as EndpointMapping<DimmableLightDevice, Insteon.DimmerLampNode>
|
|
38
65
|
},
|
|
39
|
-
|
|
40
|
-
|
|
66
|
+
DimmerLampSwitch: {
|
|
41
67
|
deviceType: DimmableLightDevice,
|
|
42
68
|
// @ts-ignore
|
|
43
69
|
mapping: {
|
|
70
|
+
|
|
44
71
|
// @ts-ignore
|
|
45
72
|
OnOff: {
|
|
46
73
|
attributes: {
|
|
@@ -57,11 +84,9 @@ const map: FamilyToClusterMap<Family.Insteon> = {
|
|
|
57
84
|
},
|
|
58
85
|
commands: { setLevel: { command: 'DON' } }
|
|
59
86
|
}
|
|
60
|
-
} as EndpointMapping<DimmableLightDevice, Insteon.
|
|
87
|
+
} as EndpointMapping<DimmableLightDevice, Insteon.DimmerLampNode>
|
|
61
88
|
}
|
|
62
89
|
};
|
|
63
90
|
|
|
64
|
-
map.KeypadDimmer = map.Dimmer;
|
|
65
|
-
map.DimmerSwitch = map.Dimmer;
|
|
66
91
|
|
|
67
92
|
MappingRegistry.register(map);
|
|
@@ -72,12 +72,19 @@ function buildNodeClassDefinitions<T extends Family>(nodeDefs: NodeDef[], family
|
|
|
72
72
|
if (id.includes(id2)) {
|
|
73
73
|
node.implements.push(id2, ...node2.implements);
|
|
74
74
|
node.equivalentTo.push(id2);
|
|
75
|
+
node2.equivalents.push(id);
|
|
76
|
+
|
|
75
77
|
} else {
|
|
76
78
|
node2.implements.push(id, ...node.implements);
|
|
77
79
|
node2.equivalentTo.push(id);
|
|
80
|
+
node.equivalents.push(id2);
|
|
78
81
|
}
|
|
79
82
|
} else if (ext) {
|
|
80
83
|
node.implements.push(id2, ...node2.implements);
|
|
84
|
+
if(id.includes(id2))
|
|
85
|
+
{
|
|
86
|
+
node.extends.push(id2);
|
|
87
|
+
}
|
|
81
88
|
}
|
|
82
89
|
|
|
83
90
|
// if (Object.keys(d.).length == 0) {
|
|
@@ -113,10 +120,19 @@ function buildNodeClassDefinitions<T extends Family>(nodeDefs: NodeDef[], family
|
|
|
113
120
|
e = i;
|
|
114
121
|
}
|
|
115
122
|
}
|
|
116
|
-
|
|
123
|
+
|
|
117
124
|
}
|
|
118
125
|
map[node.id] = node;
|
|
119
126
|
}
|
|
127
|
+
for (const node of Object.values(map).filter((p) => p.implements.length > 0))
|
|
128
|
+
{
|
|
129
|
+
for (const i of node.implements)
|
|
130
|
+
{
|
|
131
|
+
let superNode = map[i];
|
|
132
|
+
if(superNode)
|
|
133
|
+
superNode.implementedBy?.push(node.id);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
120
136
|
return map;
|
|
121
137
|
}
|
|
122
138
|
|
|
@@ -127,11 +143,17 @@ export class NodeClassDefinition<T extends Family> {
|
|
|
127
143
|
public drivers: { [x in Driver.Type]?: DriverDefinition } = {};
|
|
128
144
|
public dynamic: boolean = false;
|
|
129
145
|
public equivalentTo: string[] = [];
|
|
146
|
+
|
|
147
|
+
public equivalents: string[] = [];
|
|
148
|
+
|
|
149
|
+
|
|
130
150
|
public events: { [x: string]: EventDefinition } = {};
|
|
131
|
-
public extends?: string;
|
|
151
|
+
public extends?: string[] = [];
|
|
132
152
|
public family: T;
|
|
133
153
|
public id: string;
|
|
134
154
|
public implements: string[] = [];
|
|
155
|
+
|
|
156
|
+
public implementedBy: string[] = [];
|
|
135
157
|
public label: string;
|
|
136
158
|
public nlsId: string;
|
|
137
159
|
|
|
@@ -262,7 +284,9 @@ export class NodeClassDefinition<T extends Family> {
|
|
|
262
284
|
dynamic: this.family in [Family.ZWave, Family.ZigBee],
|
|
263
285
|
implements: this.implements.length > 0 ? this.implements : undefined,
|
|
264
286
|
equivalentTo: this.equivalentTo.length > 0 ? this.equivalentTo : undefined,
|
|
265
|
-
extends: this.extends
|
|
287
|
+
extends: this.extends.length > 0 ? this.extends : undefined,
|
|
288
|
+
equivalents: this.equivalents.length > 0 ? this.equivalents : undefined,
|
|
289
|
+
implementedBy: this.implementedBy.length > 0 ? this.implementedBy : undefined
|
|
266
290
|
};
|
|
267
291
|
}
|
|
268
292
|
|
|
@@ -409,7 +433,7 @@ export abstract class NodeMemberDefinition<TId extends string> {
|
|
|
409
433
|
var d = {};
|
|
410
434
|
for (const rangeDef of toArray(e.range)) {
|
|
411
435
|
if ('subset' in rangeDef) {
|
|
412
|
-
d[rangeDef.uom]
|
|
436
|
+
d[rangeDef.uom]= { uom: rangeDef.uom, indexId: rangeDef.nls, ...this.#parseSubset(e) };
|
|
413
437
|
} else {
|
|
414
438
|
d[rangeDef.uom] = {
|
|
415
439
|
uom: rangeDef.uom,
|
|
@@ -422,8 +446,14 @@ export abstract class NodeMemberDefinition<TId extends string> {
|
|
|
422
446
|
returnType: rangeDef.nls ? EnumDefinition.get(this.classDef.family, rangeDef.nls, rangeDef.uom, this.classDef.id)?.name : undefined
|
|
423
447
|
};
|
|
424
448
|
}
|
|
449
|
+
if(rangeDef.uom === UnitOfMeasure.Index)
|
|
450
|
+
{
|
|
451
|
+
d[rangeDef.uom].enum = true;
|
|
452
|
+
}
|
|
453
|
+
|
|
425
454
|
}
|
|
426
455
|
this.dataType = d;
|
|
456
|
+
|
|
427
457
|
}
|
|
428
458
|
}
|
|
429
459
|
|
package/src/Model/ClusterMap.ts
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import { ClusterBehavior } from '@project-chip/matter.js/behavior/cluster';
|
|
2
1
|
import * as Clusters from '@project-chip/matter.js/cluster';
|
|
3
|
-
|
|
4
|
-
import { SupportedBehaviors } from '@project-chip/matter.js/endpoint/properties';
|
|
5
|
-
import type { MutableEndpoint } from '@project-chip/matter.js/endpoint/type';
|
|
2
|
+
|
|
6
3
|
import type { Converter } from '../Converters.js';
|
|
7
4
|
import { DriverType } from '../Definitions/Global/Drivers.js';
|
|
8
|
-
import { Devices } from '../Devices/index.js';
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
import { Devices, Insteon } from '../Devices/index.js';
|
|
6
|
+
|
|
7
|
+
import { ClusterBehavior, MutableEndpoint, SupportedBehaviors } from '@matter/main';
|
|
8
|
+
import type { OnOffLightDevice } from '@matter/main/devices';
|
|
9
|
+
import { BridgedDeviceBasicInformationBehavior } from '@matter/node/behaviors';
|
|
10
|
+
import type { DeviceTypeDefinition } from '@project-chip/matter.js/device';
|
|
11
|
+
import { Family } from '../Definitions/index.js';
|
|
12
|
+
import { NodeFactory } from '../Devices/NodeFactory.js';
|
|
11
13
|
import { CommandsOf, DriversOf, ISYNode } from '../ISYNode.js';
|
|
14
|
+
import { ISYBridgedDeviceBehavior } from '../Matter/Behaviors/ISYBridgedDeviceBehavior.js';
|
|
15
|
+
import { ISYOnOffBehavior } from '../Matter/Behaviors/Insteon/ISYOnOffBehavior.js';
|
|
16
|
+
import type { PickOfType, Remove } from '../Utils.js';
|
|
12
17
|
import { ClusterType } from './ClusterType.js';
|
|
13
|
-
import type { Family } from '../Definitions/index.js';
|
|
14
18
|
|
|
15
19
|
// #region Type aliases (16)
|
|
16
20
|
|
|
@@ -84,15 +88,12 @@ export type CommandMapping<B, D> =
|
|
|
84
88
|
// behavior?: typeof ClusterBehavior;
|
|
85
89
|
|
|
86
90
|
// }
|
|
87
|
-
export type DeviceToClusterMap<T extends ISYNode<Family, any, any, any>, D extends
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
: never;
|
|
94
|
-
export type EndpointMapping<A extends { behaviors: any }, D extends ISYNode<Family, any, any, any>> = {
|
|
95
|
-
[K in Capitalize<StringKeys<A['behaviors']>>]?: BehaviorMapping<A['behaviors'][Uncapitalize<K>], D>; //{
|
|
91
|
+
export type DeviceToClusterMap<T extends ISYNode<Family, any, any, any>, D extends MutableEndpoint> = {
|
|
92
|
+
deviceType: D;
|
|
93
|
+
mapping: EndpointMapping<D, T>;
|
|
94
|
+
};
|
|
95
|
+
export type EndpointMapping<A extends MutableEndpoint, D extends ISYNode<Family, any, any, any>> = {
|
|
96
|
+
[K in StringKeys<PickOfType<A['behaviors'], ClusterBehavior>> as Capitalize<K>]?: A['behaviors'][K] extends ClusterBehavior ? BehaviorMapping<A['behaviors'][K], D> : undefined; //{
|
|
96
97
|
/*attributes?: AttributeMapping<A['behaviors'][Uncapitalize<K>], D>;
|
|
97
98
|
commands?: CommandMapping<A['behaviors'][Uncapitalize<K>], D>;*/
|
|
98
99
|
//};
|
|
@@ -115,8 +116,9 @@ export type EndpointMapping1<A extends MutableEndpoint, K> = {
|
|
|
115
116
|
attributes?: SBAttributeMapping<A['behaviors'], K>;
|
|
116
117
|
commands?: SBCommandMapping<A['behaviors'], K>;
|
|
117
118
|
};
|
|
119
|
+
//@ts-ignore
|
|
118
120
|
export type FamilyToClusterMap<T extends Family.Insteon | Family.ZWave | Family.ZigBee> = { Family: T } & {
|
|
119
|
-
[Type in keyof Devices.Insteon]?: DeviceToClusterMap<InstanceType<Devices.Insteon[Type]>,
|
|
121
|
+
[Type in Extract<keyof Devices.Insteon, `${string}Node`> as Remove<Type, 'Node'>]?: DeviceToClusterMap<InstanceType<Devices.Insteon[Type]>, MutableEndpoint>;
|
|
120
122
|
};
|
|
121
123
|
export type SBAttributeMapping<SB extends SupportedBehaviors, D> = {
|
|
122
124
|
[K in keyof SB]: Partial<Record<any, DriversOf<D> | { driver: DriversOf<D>; converter?: string }>>;
|
|
@@ -139,32 +141,43 @@ export type parameterMapping = {
|
|
|
139
141
|
export class MappingRegistry {
|
|
140
142
|
// #region Properties (1)
|
|
141
143
|
|
|
142
|
-
public static map: Map<Family,Map<string, DeviceToClusterMap<
|
|
144
|
+
public static map: Map<Family, Map<string, DeviceToClusterMap<ISYNode, MutableEndpoint>>> = new Map();
|
|
145
|
+
|
|
146
|
+
public static cache: { [x: string]: DeviceToClusterMap<ISYNode, MutableEndpoint> } = {};
|
|
143
147
|
|
|
144
148
|
// #endregion Properties (1)
|
|
145
149
|
|
|
146
150
|
// #region Public Static Methods (3)
|
|
147
151
|
|
|
148
|
-
public static getMapping<T extends ISYNode<any,any,any,any>>(device:
|
|
149
|
-
|
|
150
|
-
{
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
152
|
+
public static getMapping<T extends ISYNode<any, any, any, any>>(device: T): DeviceToClusterMap<T, MutableEndpoint> {
|
|
153
|
+
let m = this.cache[device.address];
|
|
154
|
+
if (!m) {
|
|
155
|
+
if (MappingRegistry.map.has(device.family)) {
|
|
156
|
+
let g = MappingRegistry.map.get(device.family);
|
|
157
|
+
//let m: DeviceToClusterMap<T,MutableEndpoint>;
|
|
158
|
+
if (g.has(device.constructor.name)) {
|
|
159
|
+
m = g.get(device.constructor.name);
|
|
160
|
+
} else if (g.has(device.nodeDefId)) {
|
|
161
|
+
m = g.get(device.nodeDefId);
|
|
162
|
+
} else if (g.has(device.type)) {
|
|
163
|
+
m = g.get(device.type);
|
|
164
|
+
}
|
|
165
|
+
if (!m) {
|
|
166
|
+
for (var nodeDefId of NodeFactory.getImplements(device)) {
|
|
167
|
+
if (g.has(nodeDefId)) {
|
|
168
|
+
device.logger(`Mapping found to ${Family[device.family]}.${nodeDefId}`, 'info');
|
|
169
|
+
m = g.get(nodeDefId);
|
|
170
|
+
g.set(device.nodeDefId, m);
|
|
171
|
+
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
if (m !== null) this.cache[device.address] = m;
|
|
163
177
|
}
|
|
164
|
-
|
|
165
178
|
}
|
|
166
|
-
return null;
|
|
167
179
|
|
|
180
|
+
return m;
|
|
168
181
|
}
|
|
169
182
|
|
|
170
183
|
public static getMappingForBehavior<T extends ISYNode<any, any, any, any>, B extends ClusterBehavior>(device: T, behavior: B): BehaviorMapping<B, T> {
|
|
@@ -176,40 +189,43 @@ export class MappingRegistry {
|
|
|
176
189
|
}
|
|
177
190
|
}
|
|
178
191
|
//@ts-ignore
|
|
179
|
-
public static register(map: Partial<FamilyToClusterMap<any>> | {[x in Paths<typeof Devices>]: DeviceToClusterMap<any,any>}) {
|
|
180
|
-
if(
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
if(!MappingRegistry.map.has(map.Family))
|
|
184
|
-
{
|
|
192
|
+
public static register(map: Partial<FamilyToClusterMap<any>> | { [x in Paths<typeof Devices>]: DeviceToClusterMap<any, any> }) {
|
|
193
|
+
if ('Family' in map) {
|
|
194
|
+
let regMap: Map<string, DeviceToClusterMap<any, any>>;
|
|
195
|
+
if (!MappingRegistry.map.has(map.Family)) {
|
|
185
196
|
MappingRegistry.map.set(map.Family, new Map());
|
|
186
197
|
}
|
|
198
|
+
|
|
187
199
|
regMap = MappingRegistry.map.get(map.Family);
|
|
188
200
|
for (var key in map) {
|
|
189
201
|
if (key !== 'Family') {
|
|
190
|
-
|
|
191
|
-
|
|
202
|
+
let m = map[key] as DeviceToClusterMap<ISYNode, MutableEndpoint>;
|
|
203
|
+
|
|
204
|
+
m = { deviceType: m.deviceType.with(BridgedDeviceBasicInformationBehavior, ISYBridgedDeviceBehavior), mapping: m.mapping };
|
|
205
|
+
regMap.set(key, m);
|
|
206
|
+
regMap.set(Insteon[key]?.name, m);
|
|
207
|
+
regMap.set(Insteon[key].nodeDefId, m);
|
|
208
|
+
|
|
209
|
+
//TODO: This is a hack to allow for the Insteon devices to be registered by name
|
|
192
210
|
}
|
|
193
211
|
}
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
{
|
|
197
|
-
let regMap : Map<string, DeviceToClusterMap<any, any>>;
|
|
212
|
+
} else {
|
|
213
|
+
let regMap: Map<string, DeviceToClusterMap<any, any>>;
|
|
198
214
|
for (var key in map) {
|
|
199
|
-
const keys = key.split(
|
|
215
|
+
const keys = key.split('.');
|
|
200
216
|
let x = Devices[keys[0]][keys[1]] as typeof ISYNode<any, any, any, any>;
|
|
201
|
-
if(!MappingRegistry.map.has(x.family))
|
|
202
|
-
{
|
|
217
|
+
if (!MappingRegistry.map.has(x.family)) {
|
|
203
218
|
MappingRegistry.map.set(x.family, new Map());
|
|
204
219
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
regMap = MappingRegistry.map.get(x.family);
|
|
220
|
+
//{family, key} = key.split(".")[0]
|
|
208
221
|
|
|
209
|
-
|
|
210
|
-
|
|
222
|
+
regMap = MappingRegistry.map.get(x.family);
|
|
223
|
+
let m = map[key] as DeviceToClusterMap<ISYNode, MutableEndpoint>;
|
|
224
|
+
m = { deviceType: m.deviceType.with(BridgedDeviceBasicInformationBehavior, ISYBridgedDeviceBehavior), mapping: m.mapping };
|
|
211
225
|
|
|
212
|
-
|
|
226
|
+
regMap.set(keys[1], m);
|
|
227
|
+
regMap.set(x.name, m);
|
|
228
|
+
}
|
|
213
229
|
}
|
|
214
230
|
}
|
|
215
231
|
|
package/src/Model/NodeInfo.ts
CHANGED
|
@@ -131,7 +131,7 @@ export function family<F extends Family>(nodeInfo: NodeInfo<any>): nodeInfo is N
|
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
export function isDynamic(nodeInfo: NodeInfo<any>): nodeInfo is DynamicNodeInfo {
|
|
134
|
-
return
|
|
134
|
+
return [Family.ZWave, Family.ZigBee].includes(nodeInfo.family);
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
export function isStatic(nodeInfo: NodeInfo<any>): nodeInfo is StaticNodeInfo {
|
package/src/Utils.ts
CHANGED
|
@@ -20,10 +20,48 @@ export type PickOfType<T, U> = { [K in keyof T]: T[K] extends U ? (any extends T
|
|
|
20
20
|
|
|
21
21
|
export type Paths<T> = T extends object ? { [K in keyof T]: `${Exclude<K, symbol>}${'' | `.${Paths<T[K]>}`}` }[keyof T] : never;
|
|
22
22
|
|
|
23
|
+
export type Prev = [never, 0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
export type RelaxTypes<V> =
|
|
27
|
+
V extends number ? number
|
|
28
|
+
: V extends bigint ? bigint
|
|
29
|
+
: V extends object ?
|
|
30
|
+
V extends (...args: any[]) => any ?
|
|
31
|
+
V
|
|
32
|
+
: {
|
|
33
|
+
[K in keyof V]: RelaxTypes<V[K]>;
|
|
34
|
+
}
|
|
35
|
+
: V;
|
|
36
|
+
|
|
37
|
+
type p = Prev[10];
|
|
38
|
+
export type Join<K, P> =
|
|
39
|
+
K extends string | number ?
|
|
40
|
+
P extends string | number ?
|
|
41
|
+
`${K}${'' extends P ? '' : '.'}${P}`
|
|
42
|
+
: never
|
|
43
|
+
: never;
|
|
44
|
+
export type PathsWithLimit<T, D extends number = 10> =
|
|
45
|
+
[D] extends [never] ? never
|
|
46
|
+
: T extends object ? { [K in keyof T]-?: K extends string | number ? `${K}` | Join<K, PathsWithLimit<T[K], Prev[D]>> : never }[keyof T]
|
|
47
|
+
: '';
|
|
48
|
+
|
|
49
|
+
export type Leaves<T, D extends number = 10> =
|
|
50
|
+
[D] extends [never] ? never
|
|
51
|
+
: T extends object ? { [K in keyof T]-?: Join<K, Leaves<T[K], Prev[D]>> }[keyof T]
|
|
52
|
+
: '';
|
|
53
|
+
|
|
23
54
|
export function getEnumValueByEnumKey<E extends { [index: string]: number }, T extends keyof E>(enumType: E, enumKey: T): E[T] {
|
|
24
55
|
return enumType[enumKey];
|
|
25
56
|
}
|
|
26
57
|
|
|
58
|
+
export type Replace<K extends string, T extends string, U extends string> = K extends `${infer L}${T}${infer R}` ? `${L}${U}${R}` : K;
|
|
59
|
+
|
|
60
|
+
export type Remove<K extends string, T extends string> = K extends `${infer L}${T}${infer R}` ? `${L}${R}` : K;
|
|
61
|
+
|
|
62
|
+
export type ReplaceAll<K extends string, T extends string, U extends string> = K extends `${infer L}${T}${infer R}` ? `${L}${U}${ReplaceAll<R, T, U>}` : K;
|
|
63
|
+
|
|
64
|
+
|
|
27
65
|
export function getEnumKeyByEnumValue<E extends { [index: string]: number }, T extends E[keyof E]>(enumType: E, enumValue: E[T]): T {
|
|
28
66
|
return Object.keys(enumType).find((key) => enumType[key] === enumValue) as unknown as T;
|
|
29
67
|
}
|
package/tsconfig.json
CHANGED
|
@@ -27,6 +27,12 @@
|
|
|
27
27
|
"src/Definitions/Global/*.ts",
|
|
28
28
|
],
|
|
29
29
|
"exclude": [
|
|
30
|
-
|
|
30
|
+
|
|
31
|
+
"src/Devices/ZigBeeLegacy/Generated/*",
|
|
32
|
+
"src/Devices/Poly/Generated/*",
|
|
33
|
+
"src/Devices/Brultech/Generated/*",
|
|
34
|
+
|
|
35
|
+
"src/Devices/NCD/Generated/*",
|
|
36
|
+
"src/Devices/Scene/Generated/*",
|
|
31
37
|
]
|
|
32
38
|
}
|