isy-nodejs 1.0.7-alpha.0 → 1.0.8-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/CodeFactory.js +12 -6
- package/dist/esm/CodeGeneration/CodeFactory.js.map +1 -1
- package/dist/esm/CodeGeneration/NodeClassFactory.js +16 -7
- package/dist/esm/CodeGeneration/NodeClassFactory.js.map +1 -1
- package/dist/esm/Definitions/Global/Commands.js +6 -7
- package/dist/esm/Definitions/Global/Commands.js.map +1 -1
- package/dist/esm/Definitions/Global/Drivers.js +36 -23
- package/dist/esm/Definitions/Global/Drivers.js.map +1 -1
- package/dist/esm/Definitions/Insteon/generated/Boolean.js +10 -0
- package/dist/esm/Definitions/Insteon/generated/Boolean.js.map +1 -1
- package/dist/esm/Definitions/Insteon/generated/Error.js +10 -0
- package/dist/esm/Definitions/Insteon/generated/Error.js.map +1 -1
- package/dist/esm/Definitions/Insteon/generated/Lock.js +26 -0
- package/dist/esm/Definitions/Insteon/generated/Lock.js.map +1 -1
- package/dist/esm/Definitions/Insteon/generated/OnLevelRelay.js +10 -0
- package/dist/esm/Definitions/Insteon/generated/OnLevelRelay.js.map +1 -1
- package/{src/Devices/ISYMultiNodeDevice.ts → dist/esm/Devices/CompositeDevice.js} +108 -9
- package/dist/esm/Devices/CompositeDevice.js.map +1 -0
- package/dist/esm/Devices/DeviceFactory.js +1 -1
- package/dist/esm/Devices/DeviceFactory.js.map +1 -1
- package/dist/esm/Devices/ISYDeviceNode.js +1 -0
- package/dist/esm/Devices/ISYDeviceNode.js.map +1 -1
- package/dist/esm/Devices/ISYMultiNodeDevice.js +25 -1
- package/dist/esm/Devices/ISYMultiNodeDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/BinaryControl.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/BinaryControl.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js +8 -8
- package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js +8 -8
- package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js +8 -8
- package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js +8 -8
- package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js +5 -5
- package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/DoorLock.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/DoorLock.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/EzrainInput.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/EzrainInput.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js +14 -14
- package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js +12 -12
- package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js +7 -7
- package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/IrLincTx.js +5 -5
- package/dist/esm/Devices/Insteon/Generated/IrLincTx.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/KeypadButton.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/KeypadButton.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js +8 -8
- package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/OnOffControl.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/OnOffControl.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/Pir2844.js +10 -10
- package/dist/esm/Devices/Insteon/Generated/Pir2844.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/Pir2844c.js +10 -10
- package/dist/esm/Devices/Insteon/Generated/Pir2844c.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/RelayLamp.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/RelayLamp.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js +5 -5
- package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js +5 -5
- package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/Siren.js +9 -9
- package/dist/esm/Devices/Insteon/Generated/Siren.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/SirenAlert.js +5 -5
- package/dist/esm/Devices/Insteon/Generated/SirenAlert.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/TempLinc.js +12 -12
- package/dist/esm/Devices/Insteon/Generated/TempLinc.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/Thermostat.js +12 -12
- package/dist/esm/Devices/Insteon/Generated/Thermostat.js.map +1 -1
- package/dist/esm/Devices/Insteon/Generated/X10.js +6 -6
- package/dist/esm/Devices/Insteon/Generated/X10.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonDeviceFactory.js +20 -11
- package/dist/esm/Devices/Insteon/InsteonDeviceFactory.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonDimmableDevice.js +2 -4
- package/dist/esm/Devices/Insteon/InsteonDimmableDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonDimmerOutletDevice.js +2 -2
- package/dist/esm/Devices/Insteon/InsteonDimmerOutletDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonDoorWindowSensorDevice.js +20 -7
- package/dist/esm/Devices/Insteon/InsteonDoorWindowSensorDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonFanDevice.js +17 -34
- package/dist/esm/Devices/Insteon/InsteonFanDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonOnOffOutletDevice.js +3 -13
- package/dist/esm/Devices/Insteon/InsteonOnOffOutletDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/InsteonRelayDevice.js +0 -16
- package/dist/esm/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
- package/dist/esm/Devices/Insteon/index.js +10 -11
- package/dist/esm/Devices/Insteon/index.js.map +1 -1
- package/dist/esm/Devices/Lutron/Generated/LoadShed.js +6 -6
- package/dist/esm/Devices/Lutron/Generated/LoadShed.js.map +1 -1
- package/dist/esm/Devices/NodeFactory.js.map +1 -1
- package/dist/esm/Devices/UDI/Generated/Channel.js +7 -7
- package/dist/esm/Devices/UDI/Generated/Channel.js.map +1 -1
- package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js +10 -10
- package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js.map +1 -1
- package/dist/esm/Devices/UDI/Generated/Main.js +7 -7
- package/dist/esm/Devices/UDI/Generated/Main.js.map +1 -1
- package/dist/esm/Devices/UDI/Generated/PulseCounter.js +8 -8
- package/dist/esm/Devices/UDI/Generated/PulseCounter.js.map +1 -1
- package/dist/esm/Devices/UDI/Generated/Relay.js +6 -6
- package/dist/esm/Devices/UDI/Generated/Relay.js.map +1 -1
- package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js +6 -6
- package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js.map +1 -1
- package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js +9 -9
- package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js.map +1 -1
- package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js +6 -6
- package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js.map +1 -1
- package/dist/esm/Devices/ZigBee/ZWaveBaseDevice.js +9 -0
- package/dist/esm/Devices/ZigBee/ZWaveBaseDevice.js.map +1 -0
- package/dist/esm/Devices/ZigBee/ZigBeeBase.js +9 -0
- package/dist/esm/Devices/ZigBee/ZigBeeBase.js.map +1 -0
- package/dist/esm/Devices/ZigBee/index.js +3 -0
- package/dist/esm/Devices/ZigBee/index.js.map +1 -0
- package/dist/esm/ISY.js +19 -3
- package/dist/esm/ISY.js.map +1 -1
- package/dist/esm/ISYNode.js.map +1 -1
- package/dist/esm/Matter/Behaviors/BehaviorRegistry.js +37 -5
- package/dist/esm/Matter/Behaviors/BehaviorRegistry.js.map +1 -1
- package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js +6 -1
- package/dist/esm/Matter/Behaviors/ISYClusterBehavior.js.map +1 -1
- package/dist/esm/Matter/Behaviors/Insteon/DimmerLevelControlBehavior.js +24 -0
- package/dist/esm/Matter/Behaviors/Insteon/DimmerLevelControlBehavior.js.map +1 -0
- package/dist/esm/Matter/Behaviors/Insteon/ISYDimmableBehavior.js +23 -0
- package/dist/esm/Matter/Behaviors/Insteon/ISYDimmableBehavior.js.map +1 -0
- package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js +4 -4
- package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js.map +1 -1
- package/dist/esm/Matter/Behaviors/Insteon/IdentifyBehavior.js +23 -0
- package/dist/esm/Matter/Behaviors/Insteon/IdentifyBehavior.js.map +1 -0
- package/dist/esm/Matter/Behaviors/Insteon/RelayOnOffBehavior.js +24 -0
- package/dist/esm/Matter/Behaviors/Insteon/RelayOnOffBehavior.js.map +1 -0
- package/dist/esm/Matter/Behaviors/Insteon/index.js +4 -0
- package/dist/esm/Matter/Behaviors/Insteon/index.js.map +1 -0
- package/dist/esm/Matter/Bridge/Server.js +22 -11
- package/dist/esm/Matter/Bridge/Server.js.map +1 -1
- package/dist/esm/Matter/Mappings/Insteon.js.map +1 -1
- package/dist/esm/Matter/Mappings/MappingRegistry.js +5 -4
- package/dist/esm/Matter/Mappings/MappingRegistry.js.map +1 -1
- package/dist/esm/Registry.js +77 -0
- package/dist/esm/Registry.js.map +1 -0
- package/dist/esm/Utils.js +12 -0
- package/dist/esm/Utils.js.map +1 -1
- package/dist/esm/types/CodeGeneration/CodeFactory.d.ts +6 -5
- package/dist/esm/types/CodeGeneration/CodeFactory.d.ts.map +1 -1
- package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
- package/dist/esm/types/Definitions/Global/Commands.d.ts +4 -4
- package/dist/esm/types/Definitions/Global/Commands.d.ts.map +1 -1
- package/dist/esm/types/Definitions/Global/Drivers.d.ts +10 -8
- package/dist/esm/types/Definitions/Global/Drivers.d.ts.map +1 -1
- package/dist/esm/types/Definitions/Global/Events.d.ts +3 -3
- package/dist/esm/types/Definitions/Global/Events.d.ts.map +1 -1
- package/dist/esm/types/Definitions/Insteon/generated/Boolean.d.ts +4 -0
- package/dist/esm/types/Definitions/Insteon/generated/Boolean.d.ts.map +1 -1
- package/dist/esm/types/Definitions/Insteon/generated/Error.d.ts +4 -0
- package/dist/esm/types/Definitions/Insteon/generated/Error.d.ts.map +1 -1
- package/dist/esm/types/Definitions/Insteon/generated/Lock.d.ts +6 -0
- package/dist/esm/types/Definitions/Insteon/generated/Lock.d.ts.map +1 -1
- package/dist/esm/types/Definitions/Insteon/generated/OnLevelRelay.d.ts +4 -0
- package/dist/esm/types/Definitions/Insteon/generated/OnLevelRelay.d.ts.map +1 -1
- package/dist/esm/types/Devices/CompositeDevice.d.ts +64 -0
- package/dist/esm/types/Devices/CompositeDevice.d.ts.map +1 -0
- package/dist/esm/types/Devices/EndpointFor.d.ts +3 -2
- package/dist/esm/types/Devices/EndpointFor.d.ts.map +1 -1
- package/dist/esm/types/Devices/ISYDeviceNode.d.ts +4 -1
- package/dist/esm/types/Devices/ISYDeviceNode.d.ts.map +1 -1
- package/dist/esm/types/Devices/ISYMultiNodeDevice.d.ts +25 -1
- package/dist/esm/types/Devices/ISYMultiNodeDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts +2 -3
- package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +8 -6
- package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonDeviceFactory.d.ts +7 -2
- package/dist/esm/types/Devices/Insteon/InsteonDeviceFactory.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonDimmableDevice.d.ts +2 -2
- package/dist/esm/types/Devices/Insteon/InsteonDimmableDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonDimmerOutletDevice.d.ts +2 -2
- package/dist/esm/types/Devices/Insteon/InsteonDimmerOutletDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonDoorWindowSensorDevice.d.ts +17 -5
- package/dist/esm/types/Devices/Insteon/InsteonDoorWindowSensorDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts +18 -16
- 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/InsteonOnOffOutletDevice.d.ts +8 -7
- package/dist/esm/types/Devices/Insteon/InsteonOnOffOutletDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts +0 -1
- package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
- package/dist/esm/types/Devices/Insteon/index.d.ts +10 -11
- package/dist/esm/types/Devices/Insteon/index.d.ts.map +1 -1
- package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts +2 -3
- package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts.map +1 -1
- package/dist/esm/types/Devices/NodeFactory.d.ts +1 -1
- package/dist/esm/types/Devices/NodeFactory.d.ts.map +1 -1
- package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts +2 -3
- package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts.map +1 -1
- package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts +2 -3
- package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts.map +1 -1
- package/dist/esm/types/Devices/UDI/Generated/Main.d.ts +2 -3
- package/dist/esm/types/Devices/UDI/Generated/Main.d.ts.map +1 -1
- package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts +2 -3
- package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts.map +1 -1
- package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts +2 -3
- package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts.map +1 -1
- package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts +2 -3
- package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts.map +1 -1
- package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts +2 -3
- package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts.map +1 -1
- package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts +2 -3
- package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts.map +1 -1
- package/dist/esm/types/Devices/ZigBee/ZWaveBaseDevice.d.ts +10 -0
- package/dist/esm/types/Devices/ZigBee/ZWaveBaseDevice.d.ts.map +1 -0
- package/dist/esm/types/Devices/ZigBee/ZigBeeBase.d.ts +10 -0
- package/dist/esm/types/Devices/ZigBee/ZigBeeBase.d.ts.map +1 -0
- package/dist/esm/types/Devices/ZigBee/index.d.ts +2 -0
- package/dist/esm/types/Devices/ZigBee/index.d.ts.map +1 -0
- package/dist/esm/types/ISY.d.ts.map +1 -1
- package/dist/esm/types/ISYDevice.d.ts +3 -5
- package/dist/esm/types/ISYDevice.d.ts.map +1 -1
- package/dist/esm/types/ISYNode.d.ts +32 -25
- package/dist/esm/types/ISYNode.d.ts.map +1 -1
- package/dist/esm/types/Matter/Behaviors/BehaviorRegistry.d.ts +9 -5
- package/dist/esm/types/Matter/Behaviors/BehaviorRegistry.d.ts.map +1 -1
- package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts +8 -5
- package/dist/esm/types/Matter/Behaviors/ISYClusterBehavior.d.ts.map +1 -1
- package/dist/esm/types/Matter/Behaviors/Insteon/DimmerLevelControlBehavior.d.ts +321 -0
- package/dist/esm/types/Matter/Behaviors/Insteon/DimmerLevelControlBehavior.d.ts.map +1 -0
- package/dist/esm/types/Matter/Behaviors/Insteon/ISYDimmableBehavior.d.ts +42 -0
- package/dist/esm/types/Matter/Behaviors/Insteon/ISYDimmableBehavior.d.ts.map +1 -0
- package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts +4 -4
- package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts.map +1 -1
- package/dist/esm/types/Matter/Behaviors/Insteon/IdentifyBehavior.d.ts +24 -0
- package/dist/esm/types/Matter/Behaviors/Insteon/IdentifyBehavior.d.ts.map +1 -0
- package/dist/esm/types/Matter/Behaviors/Insteon/RelayOnOffBehavior.d.ts +241 -0
- package/dist/esm/types/Matter/Behaviors/Insteon/RelayOnOffBehavior.d.ts.map +1 -0
- package/dist/esm/types/Matter/Behaviors/Insteon/index.d.ts +4 -0
- package/dist/esm/types/Matter/Behaviors/Insteon/index.d.ts.map +1 -0
- package/dist/esm/types/Matter/Bridge/Server.d.ts.map +1 -1
- package/dist/esm/types/Matter/Mappings/MappingRegistry.d.ts +4173 -42
- package/dist/esm/types/Matter/Mappings/MappingRegistry.d.ts.map +1 -1
- package/dist/esm/types/Model/EnumDefinition.d.ts +1 -1
- package/dist/esm/types/Registry.d.ts +37 -0
- package/dist/esm/types/Registry.d.ts.map +1 -0
- package/dist/esm/types/Utils.d.ts +13 -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/CodeFactory.ts +16 -8
- package/src/CodeGeneration/NodeClassFactory.ts +7 -9
- package/src/Definitions/Global/Commands.ts +16 -13
- package/src/Definitions/Global/Drivers.ts +56 -36
- package/src/Definitions/Global/Events.ts +4 -4
- package/src/Definitions/Insteon/generated/Boolean.ts +9 -0
- package/src/Definitions/Insteon/generated/Error.ts +9 -0
- package/src/Definitions/Insteon/generated/Lock.ts +28 -0
- package/src/Definitions/Insteon/generated/OnLevelRelay.ts +11 -0
- package/src/Devices/Brultech/Generated/Channel.ts +8 -9
- package/src/Devices/Brultech/Generated/Main.ts +11 -12
- package/src/Devices/CompositeDevice.ts +277 -0
- package/src/Devices/DeviceFactory.ts +1 -1
- package/src/Devices/ISYDeviceNode.ts +8 -2
- package/src/Devices/Insteon/Generated/AlertModuleArmed.ts +7 -8
- package/src/Devices/Insteon/Generated/AlertModuleSiren.ts +7 -8
- package/src/Devices/Insteon/Generated/BallastRelayLampSwitch.ts +7 -8
- package/src/Devices/Insteon/Generated/BinaryAlarm.ts +7 -8
- package/src/Devices/Insteon/Generated/BinaryControl.ts +7 -8
- package/src/Devices/Insteon/Generated/DimmerLamp.ts +9 -10
- package/src/Devices/Insteon/Generated/DimmerLampSwitch.ts +9 -10
- package/src/Devices/Insteon/Generated/DimmerLampSwitchLed.ts +9 -10
- package/src/Devices/Insteon/Generated/DimmerMotorSwitch.ts +9 -10
- package/src/Devices/Insteon/Generated/DimmerSwitch.ts +6 -7
- package/src/Devices/Insteon/Generated/DoorLock.ts +7 -8
- package/src/Devices/Insteon/Generated/Ezio2x4Input.ts +7 -8
- package/src/Devices/Insteon/Generated/Ezio2x4Output.ts +7 -8
- package/src/Devices/Insteon/Generated/EzrainInput.ts +7 -8
- package/src/Devices/Insteon/Generated/EzrainOutput.ts +7 -8
- package/src/Devices/Insteon/Generated/FanLincMotor.ts +7 -8
- package/src/Devices/Insteon/Generated/I3KeypadFlags.ts +15 -16
- package/src/Devices/Insteon/Generated/I3PaddleFlags.ts +13 -14
- package/src/Devices/Insteon/Generated/ImeterSolo.ts +8 -9
- package/src/Devices/Insteon/Generated/IrLincTx.ts +6 -7
- package/src/Devices/Insteon/Generated/KeypadButton.ts +7 -8
- package/src/Devices/Insteon/Generated/KeypadDimmer.ts +9 -10
- package/src/Devices/Insteon/Generated/KeypadRelay.ts +7 -8
- package/src/Devices/Insteon/Generated/OnOffControl.ts +7 -8
- package/src/Devices/Insteon/Generated/Pir2844.ts +11 -12
- package/src/Devices/Insteon/Generated/Pir2844OnOff.ts +7 -8
- package/src/Devices/Insteon/Generated/Pir2844c.ts +11 -12
- package/src/Devices/Insteon/Generated/RelayLamp.ts +7 -8
- package/src/Devices/Insteon/Generated/RelayLampSwitch.ts +7 -8
- package/src/Devices/Insteon/Generated/RelayLampSwitchLed.ts +7 -8
- package/src/Devices/Insteon/Generated/RelaySwitch.ts +6 -7
- package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.ts +6 -7
- package/src/Devices/Insteon/Generated/RemoteLinc2.ts +7 -8
- package/src/Devices/Insteon/Generated/Siren.ts +10 -11
- package/src/Devices/Insteon/Generated/SirenAlert.ts +6 -7
- package/src/Devices/Insteon/Generated/TempLinc.ts +13 -14
- package/src/Devices/Insteon/Generated/Thermostat.ts +13 -14
- package/src/Devices/Insteon/Generated/X10.ts +7 -8
- package/src/Devices/Insteon/InsteonDeviceFactory.ts +26 -12
- package/src/Devices/Insteon/InsteonDimmableDevice.ts +4 -4
- package/src/Devices/Insteon/InsteonDimmerOutletDevice.ts +3 -2
- package/src/Devices/Insteon/InsteonDoorWindowSensorDevice.ts +30 -7
- package/src/Devices/Insteon/InsteonFanDevice.ts +21 -36
- package/src/Devices/Insteon/InsteonOnOffOutletDevice.ts +5 -17
- package/src/Devices/Insteon/InsteonRelayDevice.ts +2 -3
- package/src/Devices/Insteon/index.ts +10 -14
- package/src/Devices/Lutron/Generated/LoadShed.ts +7 -8
- package/src/Devices/NCD/Generated/Relay.ts +19 -23
- package/src/Devices/NodeFactory.ts +1 -1
- package/src/Devices/Poly/Generated/MatterBridge.ts +6 -7
- package/src/Devices/Scene/Generated/Scene.ts +5 -6
- package/src/Devices/UDI/Generated/Channel.ts +8 -9
- package/src/Devices/UDI/Generated/Em3MainChannel.ts +11 -12
- package/src/Devices/UDI/Generated/Main.ts +8 -9
- package/src/Devices/UDI/Generated/PulseCounter.ts +9 -10
- package/src/Devices/UDI/Generated/Relay.ts +7 -8
- package/src/Devices/UDI/Generated/TemperatureSensor.ts +7 -8
- package/src/Devices/ZWave/Generated/ColorSwitch.ts +17 -18
- package/src/Devices/ZWave/Generated/DimmerSwitch.ts +7 -8
- package/src/Devices/ZigBee/ZigBeeBase.ts +22 -0
- package/src/Devices/ZigBee/index.ts +13 -0
- package/src/Devices/ZigBeeLegacy/Generated/Relay.ts +22 -20
- package/src/Devices/ZigBeeLegacy/Generated/Thermostat.ts +92 -76
- package/src/ISY.ts +27 -5
- package/src/ISYDevice.ts +4 -3
- package/src/ISYNode.ts +48 -32
- package/src/Matter/Behaviors/BehaviorRegistry.ts +44 -8
- package/src/Matter/Behaviors/ISYClusterBehavior.ts +15 -6
- package/src/Matter/Behaviors/Insteon/DimmerLevelControlBehavior.ts +30 -0
- package/src/Matter/Behaviors/Insteon/IdentifyBehavior.ts +26 -0
- package/src/Matter/Behaviors/Insteon/RelayOnOffBehavior.ts +34 -0
- package/src/Matter/Behaviors/Insteon/index.ts +3 -0
- package/src/Matter/Bridge/Server.ts +93 -85
- package/src/Matter/Mappings/Insteon.ts +3 -3
- package/src/Matter/Mappings/MappingRegistry.ts +29 -40
- package/src/Registry.ts +112 -0
- package/src/Utils.ts +29 -0
- package/src/Devices/Insteon/DimmerLampSwitch.ts +0 -207
- package/src/Devices/Insteon/InsteonRelaySwitchDevice.ts +0 -11
- package/src/Devices/Insteon/RelayLampSwitch.ts +0 -132
- package/src/Matter/Behaviors/Insteon/ISYOnOffBehavior.ts +0 -66
|
@@ -1,26 +1,62 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { RelaxTypes } from '../../Utils.js';
|
|
3
|
-
|
|
1
|
+
import { Behavior, type ClusterBehavior } from '@matter/node';
|
|
2
|
+
import type { LabelsOf, RelaxTypes } from '../../Utils.js';
|
|
3
|
+
|
|
4
|
+
import type { ISYNode } from '../../ISYNode.js';
|
|
5
|
+
import { NodeFactory } from '../../Devices/NodeFactory.js';
|
|
6
|
+
import { Registry } from '../../Registry.js';
|
|
7
|
+
import type { Constructor } from 'type-fest';
|
|
8
|
+
import type { ISYDeviceNode } from '../../Devices/ISYDeviceNode.js';
|
|
9
|
+
import { Family } from '../../Definitions/Global/Families.js';
|
|
4
10
|
|
|
5
11
|
|
|
6
12
|
|
|
7
13
|
export namespace BehaviorRegistry
|
|
8
14
|
{
|
|
9
15
|
|
|
16
|
+
const registry = new Registry<string, Behavior.Type>();
|
|
17
|
+
|
|
18
|
+
export function register<T extends Behavior.Type, F extends Family, P extends ISYNode<F>>(behavior: T & {cluster: {name: string}, nodeClass: Constructor<P>}, family?: keyof typeof Family): void
|
|
19
|
+
{
|
|
20
|
+
if(family)
|
|
21
|
+
{
|
|
22
|
+
registry.register(behavior.cluster.name.toLowerCase(), behavior, family);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
registry.register(behavior.cluster.name.toLowerCase(), behavior, behavior.nodeClass as unknown as typeof ISYNode);
|
|
26
|
+
}
|
|
10
27
|
|
|
11
|
-
|
|
28
|
+
export function get<T extends ISYDeviceNode<any,any,any,any>>(node: T, cluster: string): Behavior.Type
|
|
29
|
+
{
|
|
30
|
+
return registry.get(node, cluster.toLowerCase());
|
|
31
|
+
}
|
|
12
32
|
|
|
13
|
-
|
|
33
|
+
/*const registry: {[x:string]: Behavior.Type} = {};
|
|
34
|
+
const nodeLevelRegistry: {[x:string]: {[x:string]: Behavior.Type}} = {};
|
|
14
35
|
|
|
15
|
-
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
register<T extends Behavior.Type>(behavior: T & {cluster: {name: string}, nodeClass: {nodeDefId}} ): void
|
|
16
39
|
{
|
|
17
40
|
registry[behavior.cluster.name.toLowerCase()] = behavior;
|
|
41
|
+
nodeLevelRegistry[behavior.nodeClass.nodeDefId] = nodeLevelRegistry[behavior.
|
|
42
|
+
nodeClass.nodeDefId] ?? {};
|
|
43
|
+
nodeLevelRegistry[behavior.nodeClass.nodeDefId][behavior.cluster.name.toLowerCase()] = behavior;
|
|
44
|
+
|
|
18
45
|
}
|
|
19
46
|
|
|
20
|
-
|
|
47
|
+
function get(nodeClass: typeof ISYNode, cluster: string): Behavior.Type
|
|
21
48
|
{
|
|
49
|
+
if(nodeLevelRegistry[nodeClass.nodeDefId])
|
|
50
|
+
return nodeLevelRegistry[nodeClass.nodeDefId][cluster.toLowerCase()];
|
|
51
|
+
else
|
|
52
|
+
for (const nodeDefId in NodeFactory.getImplements(nodeClass))
|
|
53
|
+
{
|
|
54
|
+
if(nodeLevelRegistry[nodeDefId][cluster.toLowerCase()])
|
|
55
|
+
return nodeLevelRegistry[nodeDefId][cluster.toLowerCase()];
|
|
56
|
+
}
|
|
22
57
|
return registry[cluster.toLowerCase()];
|
|
23
|
-
|
|
58
|
+
|
|
59
|
+
}*/
|
|
24
60
|
|
|
25
61
|
|
|
26
62
|
}
|
|
@@ -8,6 +8,8 @@ import type { DriversOf, ISYNode } from '../../ISYNode.js';
|
|
|
8
8
|
import type { ClusterMapping } from '../Mappings/MappingRegistry.js';
|
|
9
9
|
import { ISYBridgedDeviceBehavior } from './ISYBridgedDeviceBehavior.js';
|
|
10
10
|
import { isYieldExpression } from 'typescript';
|
|
11
|
+
import { getConstructor, type ConstructorOf, type Factory } from '../../Utils.js';
|
|
12
|
+
import { CompositeDevice } from '../../Devices/CompositeDevice.js';
|
|
11
13
|
|
|
12
14
|
// #region Type aliases (6)
|
|
13
15
|
|
|
@@ -15,9 +17,10 @@ export type ClusterForBehavior<B> = B extends ClusterBehavior.Type<infer C, infe
|
|
|
15
17
|
export type ConstructedType<B extends Constructor<any>> = B extends Constructor<infer C> ? C : never;
|
|
16
18
|
// <reference path="MatterDevice.js" />
|
|
17
19
|
// @ts-ignore
|
|
18
|
-
export
|
|
20
|
+
export interface DeviceBehavior<P extends ISYNode<any, any, any, any>, T extends { cluster? }> {
|
|
19
21
|
device: P;
|
|
20
22
|
|
|
23
|
+
|
|
21
24
|
bridgedDeviceBehavior: ISYBridgedDeviceBehavior<P>;
|
|
22
25
|
|
|
23
26
|
//ts-ignore
|
|
@@ -26,7 +29,7 @@ export type DeviceBehavior<P extends ISYNode<any, any, any, any>, T extends { cl
|
|
|
26
29
|
handlePropertyChange(chg: PropertyChange<P>): void;
|
|
27
30
|
};
|
|
28
31
|
type NotUnknown<T extends ClusterBehavior> = T extends { cluster: { name: 'Unknown' } } ? never : T;
|
|
29
|
-
export type PropertyChange<P extends ISYNode
|
|
32
|
+
export type PropertyChange<P extends ISYNode> = {
|
|
30
33
|
driver: keyof DriversOf<P>;
|
|
31
34
|
newValue: any;
|
|
32
35
|
oldValue: any;
|
|
@@ -38,13 +41,15 @@ type t = ClusterForBehavior<LevelControlBehavior>;
|
|
|
38
41
|
|
|
39
42
|
// #region Functions (1)
|
|
40
43
|
|
|
41
|
-
export function ISYClusterBehavior<T extends Constructor<ClusterBehavior> & { cluster }, P extends ISYNode<any, any, any, any>>(
|
|
44
|
+
export function ISYClusterBehavior<T extends Constructor<ClusterBehavior> & { cluster }, P extends ISYNode<any, any, any, any>> (
|
|
42
45
|
base: T,
|
|
43
|
-
p: Constructor<P>
|
|
44
|
-
): typeof base & { new (...args: any[]): DeviceBehavior<P, T> } {
|
|
45
|
-
|
|
46
|
+
p: Constructor<P> | Factory<P>
|
|
47
|
+
): typeof base & { new (...args: any[]): DeviceBehavior<P, T> } & {nodeClass: Constructor<P>} {
|
|
48
|
+
let s = class ISYClusterBehavior extends base implements DeviceBehavior<P, T> {
|
|
46
49
|
_device: P;
|
|
47
50
|
|
|
51
|
+
static nodeClass = getConstructor(p);
|
|
52
|
+
|
|
48
53
|
handlers: { [x in keyof DriversOf<P>]: (newValue, oldValue, formattedValue) => void } = {} as any;
|
|
49
54
|
|
|
50
55
|
bridgedDeviceBehavior: ISYBridgedDeviceBehavior<P>;
|
|
@@ -101,6 +106,8 @@ export function ISYClusterBehavior<T extends Constructor<ClusterBehavior> & { cl
|
|
|
101
106
|
return (this._device = this._device ?? (this.agent.get(ISYBridgedDeviceBehavior).device as P));
|
|
102
107
|
}
|
|
103
108
|
|
|
109
|
+
|
|
110
|
+
|
|
104
111
|
async handlePropertyChange({ driver, newValue, oldValue, formattedValue }: PropertyChange<P>) {
|
|
105
112
|
// for (const key2 in this.map.attributes) {
|
|
106
113
|
//await this.initialize();
|
|
@@ -123,6 +130,8 @@ export function ISYClusterBehavior<T extends Constructor<ClusterBehavior> & { cl
|
|
|
123
130
|
// }
|
|
124
131
|
}
|
|
125
132
|
};
|
|
133
|
+
s.nodeClass = getConstructor(p);
|
|
134
|
+
return s;
|
|
126
135
|
}
|
|
127
136
|
|
|
128
137
|
// #endregion Functions (1)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { MaybePromise } from '@matter/general';
|
|
2
|
+
import { DimmableLightRequirements } from '@matter/node/devices';
|
|
3
|
+
import { Converter } from '../../../Converters.js';
|
|
4
|
+
import { IdEffect } from '../../../Definitions/ZigBee/index.js';
|
|
5
|
+
import * as Insteon from '../../../Devices/Insteon/index.js';
|
|
6
|
+
import { BehaviorRegistry } from '../BehaviorRegistry.js';
|
|
7
|
+
import { ISYClusterBehavior } from '../ISYClusterBehavior.js';
|
|
8
|
+
import { IdentifyBehavior } from './IdentifyBehavior.js';
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
export class DimmerLevelControlBehavior extends ISYClusterBehavior(DimmableLightRequirements.LevelControlServer, Insteon.DimmerLamp) {
|
|
13
|
+
override async initialize(_options?: {}) {
|
|
14
|
+
await super.initialize(_options);
|
|
15
|
+
/*this.state.onLevel = Converter.get('Level255toZero.LightingLevel').to(this.device.drivers.OL)*/
|
|
16
|
+
//this.state.currentLevel = this.device.drivers.ST.value;
|
|
17
|
+
//this.state.onLevel = this.device.drivers.OL;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
override setLevel(level: number): MaybePromise<void> {
|
|
21
|
+
level = Converter.Matter.LevelFrom0To255.LightingLevel.from(level);
|
|
22
|
+
|
|
23
|
+
if (level > 0) {
|
|
24
|
+
return this.device.on(level);
|
|
25
|
+
} else {
|
|
26
|
+
return this.device.off();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
BehaviorRegistry.register(DimmerLevelControlBehavior);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DimmableLightRequirements } from '@matter/node/devices';
|
|
2
|
+
import { Identify } from '@project-chip/matter.js/cluster';
|
|
3
|
+
import * as Insteon from '../../../Devices/Insteon/index.js';
|
|
4
|
+
import { ISYClusterBehavior } from '../ISYClusterBehavior.js';
|
|
5
|
+
import { BehaviorRegistry } from '../BehaviorRegistry.js';
|
|
6
|
+
|
|
7
|
+
export class IdentifyBehavior extends ISYClusterBehavior(DimmableLightRequirements.IdentifyServer, Insteon.Relay) {
|
|
8
|
+
override async initialize(_options?: {}) {
|
|
9
|
+
await super.initialize(_options);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
override async identify() {
|
|
13
|
+
return this.device.beep(100);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
override async triggerEffect(request: Identify.TriggerEffectRequest) {
|
|
17
|
+
switch (request.effectIdentifier) {
|
|
18
|
+
case Identify.EffectIdentifier.Blink:
|
|
19
|
+
return this.device.on(100).then(() => this.device.off());
|
|
20
|
+
default:
|
|
21
|
+
return this.device.beep(100);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
BehaviorRegistry.register(IdentifyBehavior);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { OnOffLightRequirements } from '@project-chip/matter.js/devices/OnOffLightDevice';
|
|
2
|
+
import { InsteonRelayDevice } from '../../../Devices/Insteon/InsteonRelayDevice.js';
|
|
3
|
+
|
|
4
|
+
import { ISYClusterBehavior, type PropertyChange } from '../ISYClusterBehavior.js';
|
|
5
|
+
|
|
6
|
+
import { BehaviorRegistry } from '../BehaviorRegistry.js';
|
|
7
|
+
import { Insteon } from '../../../Devices/index.js';
|
|
8
|
+
|
|
9
|
+
export class RelayOnOffBehavior extends ISYClusterBehavior(OnOffLightRequirements.OnOffServer, Insteon.RelayLamp) {
|
|
10
|
+
override async initialize(_options?: {}) {
|
|
11
|
+
await super.initialize(_options);
|
|
12
|
+
|
|
13
|
+
//this.state.onOff = this.device.status;
|
|
14
|
+
//this.state.onOff = await this.device.state;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
override on = async () => {
|
|
18
|
+
await this.device.on();
|
|
19
|
+
|
|
20
|
+
//this.device.commands.DON = true;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
override async off() {
|
|
24
|
+
await this.device.off();
|
|
25
|
+
|
|
26
|
+
// this.device.drivers = false;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
override async handlePropertyChange({ driver, newValue, oldValue, formattedValue }) {
|
|
30
|
+
return super.handlePropertyChange({ driver, newValue, oldValue, formattedValue });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
BehaviorRegistry.register(RelayOnOffBehavior);
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import { LogLevel, logLevelFromString, Logger as MatterLogger } from '@matter/general';
|
|
2
|
-
import { Endpoint, EndpointServer, Environment, MutableEndpoint, ServerNode, StorageService, VendorId } from '@matter/main';
|
|
2
|
+
import { ClusterBehavior, Endpoint, EndpointServer, Environment, MutableEndpoint, ServerNode, StorageService, VendorId } from '@matter/main';
|
|
3
3
|
import { AggregatorEndpoint } from '@matter/main/endpoints/aggregator';
|
|
4
4
|
import { logEndpoint } from '@matter/main/protocol';
|
|
5
|
+
import { QrCode } from '@matter/main/types';
|
|
5
6
|
import PackageJson from '@project-chip/matter.js/package.json' with { type: 'json' };
|
|
6
7
|
import path from 'path';
|
|
7
8
|
import { format, loggers } from 'winston';
|
|
9
|
+
import { DimmerLamp, RelayLamp } from '../../Devices/Insteon/index.js';
|
|
8
10
|
import { ISYDeviceNode } from '../../Devices/ISYDeviceNode.js';
|
|
9
11
|
import { ISY } from '../../ISY.js';
|
|
10
12
|
import type { ISYNode } from '../../ISYNode.js';
|
|
11
|
-
|
|
13
|
+
|
|
12
14
|
import '../Mappings/index.js';
|
|
13
|
-
import { RelayLamp, DimmerLamp } from '../../Devices/Insteon/index.js';
|
|
14
15
|
import { MappingRegistry } from '../Mappings/MappingRegistry.js';
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
import { DimmerLevelControlBehavior } from '../Behaviors/Insteon/DimmerLevelControlBehavior.js';
|
|
17
|
+
import { RelayOnOffBehavior } from '../Behaviors/Insteon/index.js';
|
|
18
|
+
import { BehaviorRegistry } from '../Behaviors/BehaviorRegistry.js';
|
|
19
|
+
import { isClusterServer } from '@project-chip/matter.js/cluster';
|
|
20
|
+
import type { ISYDevice } from '../../ISYDevice.js';
|
|
18
21
|
|
|
19
22
|
// #region Interfaces (1)
|
|
20
23
|
|
|
@@ -44,7 +47,7 @@ export interface Config {
|
|
|
44
47
|
}
|
|
45
48
|
|
|
46
49
|
export interface DeviceOptions {
|
|
47
|
-
|
|
50
|
+
applyTo:
|
|
48
51
|
| {
|
|
49
52
|
classes: (typeof ISYNode<any, any, any, any>)[];
|
|
50
53
|
}
|
|
@@ -64,9 +67,7 @@ export interface DeviceOptions {
|
|
|
64
67
|
|
|
65
68
|
// #region Functions (3)
|
|
66
69
|
|
|
67
|
-
let t
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
let t: MutableEndpoint;
|
|
70
71
|
|
|
71
72
|
export function create(isy?: ISY, config?: Config): Promise<ServerNode> {
|
|
72
73
|
return createMatterServer(isy, config);
|
|
@@ -87,10 +88,8 @@ export function appliesTo(node: ISYNode<any>, deviceOptions: DeviceOptions): boo
|
|
|
87
88
|
}
|
|
88
89
|
|
|
89
90
|
export function getDeviceOptions(node: ISYNode<any>, deviceOptions: DeviceOptions[]): DeviceOptions['options'] {
|
|
90
|
-
if(deviceOptions)
|
|
91
|
-
|
|
92
|
-
if(Array.isArray(deviceOptions))
|
|
93
|
-
{
|
|
91
|
+
if (deviceOptions) {
|
|
92
|
+
if (Array.isArray(deviceOptions)) {
|
|
94
93
|
for (const options of deviceOptions) {
|
|
95
94
|
if (appliesTo(node, options)) {
|
|
96
95
|
return options.options; //TODO: rank by specificity
|
|
@@ -204,82 +203,93 @@ export async function createMatterServer(isy?: ISY, config?: Config): Promise<Se
|
|
|
204
203
|
logger.info(`Bridge aggregator added`);
|
|
205
204
|
let endpoints = 0;
|
|
206
205
|
for (const node of isy.nodeMap.values()) {
|
|
207
|
-
let device = node as ISYDeviceNode<any,
|
|
208
|
-
|
|
209
|
-
{
|
|
210
|
-
let deviceOptions = getDeviceOptions(node, config.DeviceOptions);
|
|
211
|
-
if(deviceOptions?.label)
|
|
206
|
+
let device = node as ISYDeviceNode<any,any,any,any>
|
|
207
|
+
if(device.parentAddress !== device.address)
|
|
212
208
|
{
|
|
213
|
-
device.label = deviceOptions.label;
|
|
214
|
-
}
|
|
215
|
-
if (deviceOptions?.exclude) {
|
|
216
209
|
continue;
|
|
217
210
|
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
211
|
+
try {
|
|
212
|
+
let deviceOptions = getDeviceOptions(node, config.DeviceOptions);
|
|
213
|
+
if (deviceOptions?.label) {
|
|
214
|
+
device.label = deviceOptions.label;
|
|
215
|
+
}
|
|
216
|
+
if (deviceOptions?.exclude) {
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
let uniqueId = `${device.address.replaceAll(' ', '_').replaceAll('.', '_')}`;
|
|
220
|
+
if (device.enabled) {
|
|
221
|
+
//const name = `OnOff ${isASocket ? "Socket" : "Light"} ${i}`;
|
|
225
222
|
|
|
223
|
+
//@ts-ignore
|
|
224
|
+
//of (DimmableLightDevice.with(BridgedDeviceBasicInformationServer, ISYBridgedDeviceBehavior, ISYOnOffBehavior, ISYDimmableBehavior)) | typeof (OnOffLightDevice.with(BridgedDeviceBasicInformationServer, ISYBridgedDeviceBehavior, ISYOnOffBehavior));*/
|
|
225
|
+
let deviceType = MappingRegistry.getMapping(device)?.deviceType;
|
|
226
226
|
|
|
227
227
|
|
|
228
|
-
|
|
229
|
-
if (DimmerLamp.isImplementedBy(device)) {
|
|
228
|
+
let baseBehavior = deviceType;
|
|
230
229
|
|
|
231
|
-
|
|
232
|
-
// if(device instanceof InsteonSwitchDevice)
|
|
233
|
-
// {
|
|
234
|
-
// baseBehavior = DimmerSwitchDevice.with(BridgedDeviceBasicInformationServer);
|
|
235
|
-
}
|
|
236
|
-
else if (RelayLamp.isImplementedBy(device)) {
|
|
237
|
-
baseBehavior = deviceType?.with(ISYOnOffBehavior);
|
|
238
|
-
// if(device instanceof InsteonSwitchDevice)
|
|
239
|
-
// {
|
|
240
|
-
// baseBehavior = OnOffLightSwitchDevice.with(BridgedDeviceBasicInformationServer);
|
|
241
|
-
// }
|
|
242
|
-
}
|
|
230
|
+
let b = deviceType?.behaviors;
|
|
243
231
|
|
|
244
|
-
|
|
232
|
+
for (let s in b)
|
|
233
|
+
{
|
|
234
|
+
let behavior = deviceType.behaviors[s] as ClusterBehavior.Type;
|
|
235
|
+
if(behavior.cluster && behavior.cluster.name !== 'Unknown')
|
|
236
|
+
{
|
|
237
|
+
let b = BehaviorRegistry.get(device,behavior.cluster.name);
|
|
238
|
+
if(b)
|
|
239
|
+
{
|
|
240
|
+
baseBehavior = deviceType.with(b);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
245
244
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
245
|
+
/*if (DimmerLamp.isImplementedBy(device)) {
|
|
246
|
+
baseBehavior = deviceType?.with(RelayOnOffBehavior, DimmerLevelControlBehavior);
|
|
247
|
+
// if(device instanceof InsteonSwitchDevice)
|
|
248
|
+
// {
|
|
249
|
+
// baseBehavior = DimmerSwitchDevice.with(BridgedDeviceBasicInformationServer);
|
|
250
|
+
} else if (RelayLamp.isImplementedBy(device)) {
|
|
251
|
+
baseBehavior = deviceType?.with(RelayOnOffBehavior);
|
|
252
|
+
// if(device instanceof InsteonSwitchDevice)
|
|
253
|
+
// {
|
|
254
|
+
// baseBehavior = OnOffLightSwitchDevice.with(BridgedDeviceBasicInformationServer);
|
|
255
|
+
// }
|
|
256
|
+
}*/
|
|
257
|
+
|
|
258
|
+
if (baseBehavior !== undefined) {
|
|
259
|
+
logger.info(`Device ${device.label} (${device.address}) with NodeDefId = ${device.nodeDefId} mapped to ${deviceType.name}`);
|
|
260
|
+
//@ts-ignore
|
|
261
|
+
const endpoint = new Endpoint(baseBehavior, {
|
|
262
|
+
id: uniqueId,
|
|
263
|
+
isyNode: {
|
|
264
|
+
address: device.address
|
|
265
|
+
},
|
|
266
|
+
|
|
267
|
+
bridgedDeviceBasicInformation: {
|
|
268
|
+
nodeLabel: device.label.rightWithToken(32),
|
|
269
|
+
vendorName: device instanceof ISYDeviceNode ? device.manufacturer : isy.vendorName,
|
|
270
|
+
vendorId: VendorId(config.vendorId),
|
|
271
|
+
productName: device.productName.leftWithToken(32),
|
|
272
|
+
productLabel: device.model.leftWithToken(64),
|
|
273
|
+
|
|
274
|
+
hardwareVersion: Number(device.version),
|
|
275
|
+
hardwareVersionString: `v.${device.version}`,
|
|
276
|
+
softwareVersion: Number(device.version),
|
|
277
|
+
softwareVersionString: `v.${device.version}`,
|
|
278
|
+
|
|
279
|
+
serialNumber: uniqueId,
|
|
280
|
+
reachable: true,
|
|
281
|
+
uniqueId: device.address
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
await aggregator.add(endpoint);
|
|
286
|
+
logger.info(`Endpoint added ${JSON.stringify(endpoint.id)} for ${device.label} (${device.address})`);
|
|
287
|
+
endpoints++;
|
|
288
|
+
//endpoints.push({0:endpoint,1:device});
|
|
289
|
+
}
|
|
290
|
+
//endpoint.lifecycle.ready.on(()=> device.initialize(endpoint as any));
|
|
278
291
|
}
|
|
279
|
-
|
|
280
|
-
}}
|
|
281
|
-
catch(e)
|
|
282
|
-
{
|
|
292
|
+
} catch (e) {
|
|
283
293
|
logger.error(`Error adding endpoint for ${device.label} (${device.address}): ${e.message}`);
|
|
284
294
|
}
|
|
285
295
|
|
|
@@ -289,7 +299,6 @@ export async function createMatterServer(isy?: ISY, config?: Config): Promise<Se
|
|
|
289
299
|
* If the code in these change handlers fail then the change is also rolled back and not executed and an error is
|
|
290
300
|
* reported back to the controller.
|
|
291
301
|
*/
|
|
292
|
-
|
|
293
302
|
}
|
|
294
303
|
logger.info(`${endpoints} endpoints added to bridge.`);
|
|
295
304
|
/**
|
|
@@ -366,15 +375,14 @@ async function initializeConfiguration(isy: ISY, config?: Config): Promise<Confi
|
|
|
366
375
|
environment.vars.set('discriminator', config.discriminator);
|
|
367
376
|
}
|
|
368
377
|
|
|
369
|
-
if(config.vendorId)
|
|
378
|
+
if (config.vendorId) {
|
|
370
379
|
environment.vars.set('vendorid', config.vendorId);
|
|
371
380
|
}
|
|
372
381
|
|
|
373
|
-
if(config.productId)
|
|
382
|
+
if (config.productId) {
|
|
374
383
|
environment.vars.set('productid', config.productId);
|
|
375
384
|
}
|
|
376
385
|
|
|
377
|
-
|
|
378
386
|
environment.vars.set('uniqueid', isy.id.replaceAll(':', '_'));
|
|
379
387
|
|
|
380
388
|
//logger.info(`Matter configuration: ${JSON.stringify(environment.vars)}`);
|
|
@@ -387,7 +395,7 @@ async function initializeConfiguration(isy: ISY, config?: Config): Promise<Confi
|
|
|
387
395
|
const productId = environment.vars.number('productid') ?? (await deviceStorage.get('productid', isy.productId));
|
|
388
396
|
const productName = environment.vars.string('productname') ?? (await deviceStorage.get('productname', isy.productName));
|
|
389
397
|
const port = environment.vars.number('port') ?? 5540;
|
|
390
|
-
const uniqueId = environment.vars.string(
|
|
398
|
+
const uniqueId = environment.vars.string('uniqueid') ?? (await deviceStorage.get('uniqueid', isy.id.replaceAll(':', '_')));
|
|
391
399
|
|
|
392
400
|
// Persist basic data to keep them also on restart
|
|
393
401
|
await deviceStorage.set({
|
|
@@ -55,13 +55,13 @@ export const map: FamilyToClusterMap<Family.Insteon> = {
|
|
|
55
55
|
},
|
|
56
56
|
commands: { setLevel: { command: 'DON' } }
|
|
57
57
|
}
|
|
58
|
-
} as EndpointMapping<DimmableLightDevice, Insteon.
|
|
58
|
+
} as EndpointMapping<DimmableLightDevice, InstanceType<typeof Insteon.DimmerLamp.Node>>
|
|
59
59
|
},
|
|
60
60
|
DimmerLampSwitch: {
|
|
61
61
|
deviceType: DimmableLightDevice,
|
|
62
62
|
// @ts-ignore
|
|
63
63
|
mapping: {
|
|
64
|
-
|
|
64
|
+
|
|
65
65
|
OnOff: {
|
|
66
66
|
attributes: {
|
|
67
67
|
onOff: { driver: 'ST', converter: 'Percent.Boolean' }
|
|
@@ -78,7 +78,7 @@ export const map: FamilyToClusterMap<Family.Insteon> = {
|
|
|
78
78
|
},
|
|
79
79
|
commands: { setLevel: { command: 'DON' } }
|
|
80
80
|
}
|
|
81
|
-
} as EndpointMapping<DimmableLightDevice, Insteon.
|
|
81
|
+
} as EndpointMapping<DimmableLightDevice, InstanceType<typeof Insteon.DimmerLamp.Node>>
|
|
82
82
|
}
|
|
83
83
|
};
|
|
84
84
|
|
|
@@ -1,22 +1,23 @@
|
|
|
1
|
+
import * as Cluster from '@matter/types/cluster';
|
|
1
2
|
import type * as Clusters from '@matter/types/clusters';
|
|
2
|
-
import * as Cluster from '@matter/types/cluster'
|
|
3
3
|
|
|
4
|
-
import type { Converter } from '../../Converters.js';
|
|
5
|
-
import { DriverType } from '../../Definitions/Global/Drivers.js';
|
|
6
|
-
import { Devices, Insteon } from '../../Devices/index.js';
|
|
7
|
-
import type {Simplify, SimplifyDeep} from 'type-fest';
|
|
8
4
|
import { ClusterBehavior, MutableEndpoint, SupportedBehaviors } from '@matter/main';
|
|
9
5
|
import { DimmableLightDevice, OnOffLightDevice } from '@matter/main/devices';
|
|
10
6
|
import { BridgedDeviceBasicInformationBehavior } from '@matter/node/behaviors';
|
|
11
7
|
import type { DeviceTypeDefinition } from '@project-chip/matter.js/device';
|
|
8
|
+
import type { Simplify, SimplifyDeep } from 'type-fest';
|
|
9
|
+
import type { Converter } from '../../Converters.js';
|
|
10
|
+
import { DriverType } from '../../Definitions/Global/Drivers.js';
|
|
12
11
|
import { Family } from '../../Definitions/index.js';
|
|
13
12
|
import type { Constructor } from '../../Devices/Constructor.js';
|
|
14
13
|
import { NodeFactory } from '../../Devices/NodeFactory.js';
|
|
14
|
+
import { Devices, Insteon } from '../../Devices/index.js';
|
|
15
15
|
import { CommandsOf, DriversOf, ISYNode } from '../../ISYNode.js';
|
|
16
16
|
import { ClusterType } from '../../Model/ClusterType.js';
|
|
17
17
|
import type { PathsWithLimit, PickOfType, Remove } from '../../Utils.js';
|
|
18
18
|
import { ISYBridgedDeviceBehavior } from '../Behaviors/ISYBridgedDeviceBehavior.js';
|
|
19
|
-
import {
|
|
19
|
+
import { BehaviorRegistry } from '../Behaviors/BehaviorRegistry.js';
|
|
20
|
+
|
|
20
21
|
|
|
21
22
|
// #region Type aliases (16)
|
|
22
23
|
|
|
@@ -27,7 +28,6 @@ export type AttributeMapping<B, D> =
|
|
|
27
28
|
export type ClusterMapping<B, T extends ISYNode<any, any, any, any>> = {
|
|
28
29
|
attributes?: ClusterAttributeMapping<B, T>;
|
|
29
30
|
commands?: ClusterCommandMapping<B, T>;
|
|
30
|
-
|
|
31
31
|
};
|
|
32
32
|
export type ClusterAttributeMapping<A, K> = {
|
|
33
33
|
[key in keyof Cluster.ClusterType.AttributesOf<A>]: { driver: Extract<keyof DriversOf<K>, string>; converter?: Converter.KnownConverters } | Extract<keyof DriversOf<K>, string>;
|
|
@@ -91,43 +91,33 @@ export type CommandMapping<B, D> =
|
|
|
91
91
|
// behavior?: typeof ClusterBehavior;
|
|
92
92
|
|
|
93
93
|
// }
|
|
94
|
-
export interface DeviceToClusterMap<T extends ISYNode<Family, any, any, any>, D extends MutableEndpoint>
|
|
94
|
+
export interface DeviceToClusterMap<T extends ISYNode<Family, any, any, any>, D extends MutableEndpoint> {
|
|
95
95
|
deviceType: D;
|
|
96
96
|
mapping: EndpointMapping<D, T>;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
}
|
|
101
98
|
|
|
102
99
|
export interface Mapping<T extends ISYNode, D extends MutableEndpoint> {
|
|
103
100
|
deviceType: D;
|
|
104
101
|
|
|
105
102
|
nodeType?: T;
|
|
106
103
|
mapping?: {
|
|
107
|
-
[K in keyof D['behaviors']]?:
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
104
|
+
[K in keyof D['behaviors']]?: {
|
|
105
|
+
attributes?: {
|
|
106
|
+
[K2 in keyof Cluster.ClusterType.AttributesOf<D['behaviors'][K]>]: { driver: keyof DriversOf<T>; converter?: Converter.KnownConverters } | keyof DriversOf<T>;
|
|
107
|
+
};
|
|
108
|
+
commands?: {
|
|
109
|
+
[K2 in keyof Cluster.ClusterType.CommandsOf<D['behaviors'][K]>]: { command: keyof CommandsOf<T>; converter?: Converter.KnownConverters } | keyof CommandsOf<T>;
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
};
|
|
119
113
|
}
|
|
120
114
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
115
|
+
function addA<T extends ISYNode<any, any, any, any>, D extends MutableEndpoint>(mapping1: Mapping<T, D>, mapping2: Mapping<T, D>): Mapping<T, D> {
|
|
116
|
+
return { deviceType: mapping1.deviceType, nodeType: mapping1.nodeType, mapping: { ...mapping1.mapping, ...mapping2.mapping } };
|
|
117
|
+
}
|
|
128
118
|
|
|
129
119
|
export type EndpointMapping<A extends MutableEndpoint, D extends ISYNode<Family, any, any, any>> = {
|
|
130
|
-
[K in StringKeys<A['behaviors']>]?: ClusterMapping<A['behaviors'][K],D
|
|
120
|
+
[K in StringKeys<A['behaviors']>]?: ClusterMapping<A['behaviors'][K], D>; //{
|
|
131
121
|
/*attributes?: AttributeMapping<A['behaviors'][Uncapitalize<K>], D>;
|
|
132
122
|
commands?: CommandMapping<A['behaviors'][Uncapitalize<K>], D>;*/
|
|
133
123
|
//};
|
|
@@ -154,13 +144,10 @@ export type EndpointMapping1<A extends MutableEndpoint, K> = {
|
|
|
154
144
|
|
|
155
145
|
type SupportedFamily = Family.Insteon | Family.ZWave | Family.ZigBee;
|
|
156
146
|
export type FamilyToClusterMap<T extends SupportedFamily> = { Family: T } & {
|
|
157
|
-
[Type in
|
|
147
|
+
[Type in keyof Devices.Insteon]?: Devices.Insteon[Type] extends {Node: Constructor<ISYNode<any,any,any,any>>} ?DeviceToClusterMap<InstanceType<Devices.Insteon[Type]["Node"]>, MutableEndpoint> : undefined;
|
|
158
148
|
};
|
|
159
149
|
|
|
160
|
-
interface ISYtoMatterMapping<N extends ISYNode, M extends MutableEndpoint> extends DeviceToClusterMap<N, M> {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}
|
|
150
|
+
interface ISYtoMatterMapping<N extends ISYNode, M extends MutableEndpoint> extends DeviceToClusterMap<N, M> {}
|
|
164
151
|
|
|
165
152
|
export function add<const F extends SupportedFamily, const T extends ISYNode<F>, const D extends MutableEndpoint>(
|
|
166
153
|
familyToClusterMap: FamilyToClusterMap<F>,
|
|
@@ -275,7 +262,10 @@ export class MappingRegistry {
|
|
|
275
262
|
|
|
276
263
|
regMap = MappingRegistry.map.get(x.family);
|
|
277
264
|
let m = map[key] as DeviceToClusterMap<ISYNode, MutableEndpoint>;
|
|
278
|
-
|
|
265
|
+
let deviceType = m.deviceType;
|
|
266
|
+
deviceType = deviceType.with(BridgedDeviceBasicInformationBehavior, ISYBridgedDeviceBehavior);
|
|
267
|
+
|
|
268
|
+
m = { deviceType: deviceType, mapping: m.mapping };
|
|
279
269
|
|
|
280
270
|
regMap.set(keys[1], m);
|
|
281
271
|
regMap.set(x.name, m);
|
|
@@ -299,8 +289,7 @@ var clusterMap = {
|
|
|
299
289
|
}
|
|
300
290
|
};
|
|
301
291
|
|
|
302
|
-
|
|
303
|
-
interface SimplyEndpointMapping<T extends ISYNode<Family, any, any, any>,K extends MutableEndpoint> extends SimplifyDeep<ISYtoMatterMapping<T,K>> {}
|
|
292
|
+
interface SimplyEndpointMapping<T extends ISYNode<Family, any, any, any>, K extends MutableEndpoint> extends SimplifyDeep<ISYtoMatterMapping<T, K>> {}
|
|
304
293
|
|
|
305
294
|
/*
|
|
306
295
|
const map = {
|