UNPKG

homebridge-cmd4

Version:

Exec Plugin for Homebridge supporting all accessorys and characteristics

1,013 lines (999 loc) 129 kB
'use strict'; const constants = require( "../cmd4Constants" ); // The sObject.defineProperty is to resolve a lint issue. // See utils/indexOfEnumLintTest.js for further information. let indexOfEnum = require( "../utils/indexOfEnum" ); Object.defineProperty( exports, "indexOfEnum", { enumerable: true, get: function ( ){ return indexOfEnum.indexOfEnum; } }); var CMD4_DEVICE_TYPE_ENUM = { AccessControl: 0, AccessoryRuntimeInformation: 1, AccessoryInformation: 2, AirPurifier: 3, AirQualitySensor: 4, BatteryService: 5, BridgeConfiguration: 6, BridgingState: 7, CamaeraEventRecordingManagement: 8, CameraControl: 9, CameraRTPStreamManagement: 10, CameraOperatingMode: 11, CarbonDioxideSensor: 12, CarbonMonoxideSensor: 13, ContactSensor: 14, Diagnostics: 15, Door: 16, DoorBell: 17, Fan: 18, Fanv1: 19, Fanv2: 20, Faucet: 21, FilterMaintenance: 22, GarageDoorOpener: 23, HeaterCooler: 24, HumidifierDehumidifier: 25, HumiditySensor: 26, InputSource: 27, IrrigationSystem: 28, LeakSensor: 29, LightSensor: 30, Lightbulb: 31, LockManagement: 32, LockMechanism: 33, Microphone: 34, MotionSensor: 35, OccupancySensor: 36, Outlet: 37, Pairing: 38, PowerManagement: 39, ProtocolInformation: 40, Relay: 41, SecuritySystem: 42, ServiceLabel: 43, Siri: 44, Slats: 45, SmartSpeaker: 46, SmokeSensor: 47, Speaker: 48, StatefulProgrammableSwitch: 49, StatelessProgrammableSwitch: 50, Switch: 51, TargetControl: 52, TargetControlManagement: 53, Television: 54, TelevisionSpeaker: 55, TemperatureSensor: 56, Thermostat: 57, TimeInformation: 58, TransferTransportManagement: 59, Tunnel: 60, Valve: 61, WiFiRouter: 62, WiFiSatellite: 63, Window: 64, WindowCovering: 65, AccessoryMetrics: 66, AssetUpdate: 67, Assistant: 68, AudioStreamManagement: 69, Battery: 70, CameraRecordingManagement: 71, CloudRelay: 72, DataStreamTransportManagement: 73, NFCAccess: 74, SiriEndpoint: 75, ThreadTransport: 76, // New Mar 2024 AccessCode: 77, FirmwareUpdate: 78, TapManagement: 79, WiFiTransport: 80, EOL: 81, properties:{}, devEnumIndexToC: function( index ) { return CMD4_DEVICE_TYPE_ENUM.properties[ index ].deviceName; }, indexOfEnum: function( deviceName ) { return CMD4_DEVICE_TYPE_ENUM.properties.indexOfEnum( i => i.deviceName === deviceName ); }, }; // Export both the init function and the uninitialized data for unit testing module.exports = { init: function ( CMD4_ACC_TYPE_ENUM, Service, Characteristic, Categories ) { // Fill in the properties of each device (Must be done at runtime) CMD4_DEVICE_TYPE_ENUM.properties = { 0: { deviceName:'AccessControl', deprecated: false, UUID: "000000DA-0000-1000-8000-0026BB765291", service: Service.AccessControl, defaultCategory: Categories.OTHER, publishExternally: false, deviceStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.AccessControlLevel, defaultValue: 0, // min 0, max 2 relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.PasswordSetting ], defaultPollingCharacteristics: [] }, 1: { deviceName:'AccessoryRuntimeInformation', deprecated: false, UUID: "00000239-0000-1000-8000-0026BB765291", service: Service.AccessoryRuntimeInformation, defaultCategory: Categories.OTHER, publishExternally: false, deviceStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.Ping, defaultValue: 0, // Type is DATA, therefore Who Knows relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.ActivityInterval, CMD4_ACC_TYPE_ENUM.HeartBeat, CMD4_ACC_TYPE_ENUM.SleepInterval ], defaultPollingCharacteristics: [] }, 2: { deviceName:'AccessoryInformation', deprecated: false, UUID: "0000003E-0000-1000-8000-0026BB765291", service: Service.AccessoryInformation, defaultCategory: Categories.OTHER, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.Identify, defaultValue: 1, // Format: Bool relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.Manufacturer, defaultValue: 'Cmd4', // Format: String relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.Model, defaultValue: 'Model', // Format: String relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.Name, defaultValue: 'My_AccessoryInformation', relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.SerialNumber, defaultValue: 'ABC001', // Format: String relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.FirmwareRevision, defaultValue: '100.1.1', // Format: String relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.HardwareRevision, CMD4_ACC_TYPE_ENUM.AccessoryFlags ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.Identify ] }, 3: { deviceName:'AirPurifier', deprecated: false, UUID: "000000BB-0000-1000-8000-0026BB765291", service: Service.AirPurifier, defaultCategory: Categories.AIR_PURIFIER, publishExternally: false, devicesStateChangeDefaultTime: constants.SLOW_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.Active, defaultValue: Characteristic.Active.ACTIVE, relatedCurrentAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.Active ], relatedTargetAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.Active ] }, {type: CMD4_ACC_TYPE_ENUM.CurrentAirPurifierState, defaultValue: Characteristic.CurrentAirPurifierState.PURIFYING_AIR, relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.TargetAirPurifierState ] }, {type: CMD4_ACC_TYPE_ENUM.TargetAirPurifierState, defaultValue: Characteristic.TargetAirPurifierState.AUTO, relatedCurrentAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.CurrentAirPurifierState ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.LockPhysicalControls, CMD4_ACC_TYPE_ENUM.Name, CMD4_ACC_TYPE_ENUM.SwingMode, CMD4_ACC_TYPE_ENUM.RotationSpeed ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.Active ] }, 4: { deviceName:'AirQualitySensor', deprecated: false, UUID: "0000008D-0000-1000-8000-0026BB765291", service: Service.AirQualitySensor, defaultCategory: Categories.OTHER, publishExternally: false, devicesStateChangeDefaultTime: constants.FAST_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.AirQuality, defaultValue: Characteristic.AirQuality.GOOD, relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.StatusActive, CMD4_ACC_TYPE_ENUM.StatusFault, CMD4_ACC_TYPE_ENUM.StatusTampered, CMD4_ACC_TYPE_ENUM.StatusLowBattery, CMD4_ACC_TYPE_ENUM.Name, CMD4_ACC_TYPE_ENUM.OzoneDensity, CMD4_ACC_TYPE_ENUM.NitrogenDioxideDensity, CMD4_ACC_TYPE_ENUM.SulphurDioxideDensity, CMD4_ACC_TYPE_ENUM.PM2_5Density, CMD4_ACC_TYPE_ENUM.PM10Density, CMD4_ACC_TYPE_ENUM.VOCDensity, CMD4_ACC_TYPE_ENUM.CarbonMonoxideLevel, CMD4_ACC_TYPE_ENUM.CarbonDioxideLevel ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.AirQuality ] }, 5: { deviceName:'BatteryService', // Use Battery instead deprecated: true, UUID: "00000096-0000-1000-8000-0026BB765291", //service: Service.Battery, service: null, defaultCategory: Categories.OTHER, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ //{type: CMD4_ACC_TYPE_ENUM.BatteryLevel, // defaultValue: 50, // Range 0-100 // relatedCurrentAccTypeEnumArray: [ ], // relatedTargetAccTypeEnumArray: [ ] //}, //{type: CMD4_ACC_TYPE_ENUM.ChargingState, // defaultValue: Characteristic.ChargingState.NOT_CHARGING, // relatedCurrentAccTypeEnumArray: [ ], // relatedTargetAccTypeEnumArray: [ ] //}, //{type: CMD4_ACC_TYPE_ENUM.StatusLowBattery, // defaultValue: Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL, // relatedCurrentAccTypeEnumArray: [ ], // relatedTargetAccTypeEnumArray: [ ] //} ], optionalCharacteristics: [ //CMD4_ACC_TYPE_ENUM.Name ], defaultPollingCharacteristics: [ //CMD4_ACC_TYPE_ENUM.StatusLowBattery ] }, // @deprecated Removed and not used anymore as of homebridge v2 6: { deviceName:'BridgeConfiguration', deprecated: true, UUID: "000000A1-0000-1000-8000-0026BB765291", // service: Service.BridgeConfiguration, service: null, // defaultCategory: Categories.BRIDGE, defaultCategory: null, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ //{type: CMD4_ACC_TYPE_ENUM.ConfigureBridgedAccessoryStatus, // defaultValue: 0, // Format: TLV8 // relatedCurrentAccTypeEnumArray: [ ], // relatedTargetAccTypeEnumArray: [ ] //} ], optionalCharacteristics: [ //CMD4_ACC_TYPE_ENUM.ConfigureBridgedAccessoryStatus, //CMD4_ACC_TYPE_ENUM.DiscoverBridgedAccessories, //CMD4_ACC_TYPE_ENUM.DiscoveredBridgedAccessories, //CMD4_ACC_TYPE_ENUM.ConfigureBridgedAccessory ], defaultPollingCharacteristics: [ //CMD4_ACC_TYPE_ENUM.ConfigureBridgedAccessoryStatus ] }, // @deprecated Removed and not used anymore as of homebridge v2 7: { deviceName:'BridgingState', deprecated: true, UUID: "00000062-0000-1000-8000-0026BB765291", // @deprecated Removed and not used anymore as of homebridge v2 // service: Service.BridgingState, service: null, // defaultCategory: Categories.BRIDGE, defaultCategory: null, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ //{type: CMD4_ACC_TYPE_ENUM.Reachable, // defaultValue: 1, // Format: Bool // relatedCurrentAccTypeEnumArray: [ ], // relatedTargetAccTypeEnumArray: [ ] //}, //{type: CMD4_ACC_TYPE_ENUM.LinkQuality, // defaultValue: 1, // Format: Uint8 // Range: 1-4, Step: 1 // relatedCurrentAccTypeEnumArray: [ ], // relatedTargetAccTypeEnumArray: [ ] //}, //{type: CMD4_ACC_TYPE_ENUM.AccessoryIdentifier, // defaultValue: "id999", // Format: String // relatedCurrentAccTypeEnumArray: [ ], // relatedTargetAccTypeEnumArray: [ ] //}, //{type: CMD4_ACC_TYPE_ENUM.Category, // defaultValue: 16, // Format: Uint16 // Range: 1-16, Step 1 // relatedCurrentAccTypeEnumArray: [ ], // relatedTargetAccTypeEnumArray: [ ] //} ], optionalCharacteristics: [ //CMD4_ACC_TYPE_ENUM.Name ], defaultPollingCharacteristics: [ //CMD4_ACC_TYPE_ENUM.Reachable ] }, 8: { deviceName:'CameraEventRecordingManagement', // Use CameraRecordingManagement deprecated: true, UUID: "00000204-0000-1000-8000-0026BB765291", //service: Service.CameraRecordingManagement, service: null, defaultCategory: Categories.OTHER, publishExternally: false, deviceStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ //{type: CMD4_ACC_TYPE_ENUM.Active, // defaultValue: Characteristic.Active.ACTIVE, // relatedCurrentAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.Active ], // relatedTargetAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.Active ] //}, //{type: CMD4_ACC_TYPE_ENUM.SupportedCameraRecordingConfiguration, // defaultValue: 0, // Format: TLV8 // relatedCurrentAccTypeEnumArray: [ ], // relatedTargetAccTypeEnumArray: [ ] //}, //{type: CMD4_ACC_TYPE_ENUM.SupportedVideoRecordingConfiguration, // defaultValue: 0, // Format: TLV8 // relatedCurrentAccTypeEnumArray: [ ], // relatedTargetAccTypeEnumArray: [ ] //}, //{type: CMD4_ACC_TYPE_ENUM.SupportedAudioRecordingConfiguration, // defaultValue: 0, // Format: TLV8 // relatedCurrentAccTypeEnumArray: [ ], // relatedTargetAccTypeEnumArray: [ ] //}, //{type: CMD4_ACC_TYPE_ENUM.SelectedCameraRecordingConfiguration, // defaultValue: 0, // Format: TLV8 // relatedCurrentAccTypeEnumArray: [ ], // relatedTargetAccTypeEnumArray: [ ] //}, ], optionalCharacteristics: [ //CMD4_ACC_TYPE_ENUM.RecordingAudioActive ], defaultPollingCharacteristics: [ //CMD4_ACC_TYPE_ENUM.Active ] }, // @deprecated Removed and not used anymore as of homebridge v2 9: { deviceName:'CameraControl', deprecated: true, UUID: "00000111-0000-1000-8000-0026BB765291", // service: Service.CameraControl, service: null, //defaultCategory: Categories.OTHER, defaultCategory: null, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ //{type: CMD4_ACC_TYPE_ENUM.On, // defaultValue: 1, // Format: Bool // relatedCurrentAccTypeEnumArray: [ ], // relatedTargetAccTypeEnumArray: [ ] //} ], optionalCharacteristics: [ //CMD4_ACC_TYPE_ENUM.CurrentHorizontalTiltAngle, //CMD4_ACC_TYPE_ENUM.CurrentVerticalTiltAngle, //CMD4_ACC_TYPE_ENUM.TargetHorizontalTiltAngle, //CMD4_ACC_TYPE_ENUM.TargetVerticalTiltAngle, //CMD4_ACC_TYPE_ENUM.NightVision, //CMD4_ACC_TYPE_ENUM.OpticalZoom, //CMD4_ACC_TYPE_ENUM.DigitalZoom, //CMD4_ACC_TYPE_ENUM.ImageRotation, //CMD4_ACC_TYPE_ENUM.ImageMirroring, //CMD4_ACC_TYPE_ENUM.Name ], defaultPollingCharacteristics: [ //CMD4_ACC_TYPE_ENUM.On ] }, 10: { deviceName:'CameraRTPStreamManagement', deprecated: false, UUID: "00000110-0000-1000-8000-0026BB765291", service: Service.CameraRTPStreamManagement, defaultCategory: Categories.OTHER, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.SupportedVideoStreamConfiguration, defaultValue: 0, // Format: TLV8 relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.SupportedAudioStreamConfiguration, defaultValue: 0, // Format: TLV8 relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.SupportedRTPConfiguration, defaultValue: 0, // Format: TLV8 relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.SelectedRTPStreamConfiguration, defaultValue: 0, // Format: TLV8 relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.StreamingStatus, defaultValue: 0, // Format: TLV8 relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.SetupEndpoints, defaultValue: 0, // Format: TLV8 relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.Name ], defaultPollingCharacteristics: [ ] }, 11: { deviceName:'CameraOperatingMode', deprecated: false, UUID: "0000021A-0000-1000-8000-0026BB765291", service: Service.CameraOperatingMode, defaultCategory: Categories.OTHER, publishExternally: false, deviceStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.EventSnapshotsActive, defaultValue: Characteristic.EventSnapshotsActive.DISABLE, relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.HomeKitCameraActive, defaultValue: Characteristic.HomeKitCameraActive.OFF, relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.CameraOperatingModeIndicator, CMD4_ACC_TYPE_ENUM.ManuallyDisabled, CMD4_ACC_TYPE_ENUM.NightVision, CMD4_ACC_TYPE_ENUM.PeriodicSnapshotsActive, CMD4_ACC_TYPE_ENUM.ThirdPartyCameraActive, CMD4_ACC_TYPE_ENUM.DiagonalFieldOfView ], defaultPollingCharacteristics: [] }, 12: { deviceName:'CarbonDioxideSensor', deprecated: false, UUID: "00000097-0000-1000-8000-0026BB765291", service: Service.CarbonDioxideSensor, defaultCategory: Categories.SENSOR, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.CarbonDioxideDetected, defaultValue: Characteristic.CarbonDioxideDetected.CO2_LEVELS_NORMAL, relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.StatusActive, CMD4_ACC_TYPE_ENUM.StatusFault, CMD4_ACC_TYPE_ENUM.StatusLowBattery, CMD4_ACC_TYPE_ENUM.StatusTampered, CMD4_ACC_TYPE_ENUM.CarbonDioxideLevel, CMD4_ACC_TYPE_ENUM.CarbonDioxidePeakLevel, CMD4_ACC_TYPE_ENUM.Name ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.CarbonDioxideDetected ] }, 13: { deviceName:'CarbonMonoxideSensor', deprecated: false, UUID: "0000007F-0000-1000-8000-0026BB765291", service: Service.CarbonMonoxideSensor, defaultCategory: Categories.SENSOR, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.CarbonMonoxideDetected, defaultValue: Characteristic.CarbonMonoxideDetected.CO_LEVELS_NORMAL, relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.StatusActive, CMD4_ACC_TYPE_ENUM.StatusFault, CMD4_ACC_TYPE_ENUM.StatusLowBattery, CMD4_ACC_TYPE_ENUM.StatusTampered, CMD4_ACC_TYPE_ENUM.CarbonMonoxideLevel, CMD4_ACC_TYPE_ENUM.CarbonMonoxidePeakLevel, CMD4_ACC_TYPE_ENUM.Name ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.CarbonMonoxideDetected ] }, 14: { deviceName:'ContactSensor', deprecated: false, UUID: "00000080-0000-1000-8000-0026BB765291", service: Service.ContactSensor, defaultCategory: Categories.SENSOR, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.ContactSensorState, defaultValue: Characteristic.ContactSensorState.CONTACT_NOT_DETECTED, relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.StatusActive, CMD4_ACC_TYPE_ENUM.StatusFault, CMD4_ACC_TYPE_ENUM.StatusTampered, CMD4_ACC_TYPE_ENUM.StatusLowBattery, CMD4_ACC_TYPE_ENUM.Name ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.ContactSensorState ] }, 15: { deviceName:'Diagnostics', deprecated: false, UUID: "00000237-0000-1000-8000-0026BB765291", service: Service.Diagnostics, defaultCategory: Categories.OTHER, publishExternally: false, deviceStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.SupportedDiagnosticsSnapshot, defaultValue: 0, // Format: TLV8 relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ // None ], defaultPollingCharacteristics: [] }, 16: { deviceName:'Door', deprecated: false, UUID: "00000081-0000-1000-8000-0026BB765291", service: Service.Door, defaultCategory: Categories.DOOR, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.CurrentPosition, defaultValue: 0, // Range 0 - 100 relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.TargetPosition ] }, {type: CMD4_ACC_TYPE_ENUM.PositionState, defaultValue: Characteristic.PositionState.STOPPED, relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.TargetPosition, defaultValue: 0, // Range 0 - 100 relatedCurrentAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.CurrentPosition ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.HoldPosition, CMD4_ACC_TYPE_ENUM.ObstructionDetected, CMD4_ACC_TYPE_ENUM.Name ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.CurrentPosition, CMD4_ACC_TYPE_ENUM.TargetPosition ] }, 17: { deviceName:'DoorBell', deprecated: false, UUID: "00000121-0000-1000-8000-0026BB765291", service: Service.Doorbell, defaultCategory: Categories.OTHER, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.ProgrammableSwitchEvent, defaultValue: Characteristic.ProgrammableSwitchEvent.SINGLE_PRESS, relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.Brightness, CMD4_ACC_TYPE_ENUM.Mute, CMD4_ACC_TYPE_ENUM.Name, CMD4_ACC_TYPE_ENUM.Volume, CMD4_ACC_TYPE_ENUM.OperatingStateResponse ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.ProgrammableSwitchEvent ] }, 18: { deviceName:'Fan', deprecated: false, UUID: "00000040-0000-1000-8000-0026BB765291", service: Service.Fan, defaultCategory: Categories.FAN, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.On, defaultValue: 0, // Format: Bool relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.RotationDirection, CMD4_ACC_TYPE_ENUM.RotationSpeed, CMD4_ACC_TYPE_ENUM.Name ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.On ] }, 19: { deviceName:'Fanv1', deprecated: false, UUID: "00000040-0000-1000-8000-0026BB765291", service: Service.Fan, defaultCategory: Categories.FAN, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.On, defaultValue: 0, // Format: Bool relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.RotationDirection, CMD4_ACC_TYPE_ENUM.RotationSpeed, CMD4_ACC_TYPE_ENUM.Name ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.On ] }, 20: { deviceName:'Fanv2', deprecated: false, UUID: "000000B7-0000-1000-8000-0026BB765291", service: Service.Fanv2, defaultCategory: Categories.FAN, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.Active, defaultValue: Characteristic.Active.ACTIVE, relatedCurrentAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.Active ], relatedTargetAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.Active ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.CurrentFanState, CMD4_ACC_TYPE_ENUM.TargetFanState, CMD4_ACC_TYPE_ENUM.LockPhysicalControls, CMD4_ACC_TYPE_ENUM.Name, CMD4_ACC_TYPE_ENUM.RotationDirection, CMD4_ACC_TYPE_ENUM.RotationSpeed, CMD4_ACC_TYPE_ENUM.SwingMode ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.Active ] }, 21: { deviceName:'Faucet', deprecated: false, UUID: "000000D7-0000-1000-8000-0026BB765291", service: Service.Faucet, defaultCategory: Categories.FAUCET, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.Active, defaultValue: Characteristic.Active.ACTIVE, relatedCurrentAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.Active ], relatedTargetAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.Active ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.Name, CMD4_ACC_TYPE_ENUM.StatusFault ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.Active ] }, 22: { deviceName:'FilterMaintenance', deprecated: false, UUID: "000000BA-0000-1000-8000-0026BB765291", service: Service.FilterMaintenance, defaultCategory: Categories.OTHER, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.FilterChangeIndication, defaultValue: Characteristic.FilterChangeIndication.FILTER_OK, relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.FilterLifeLevel, CMD4_ACC_TYPE_ENUM.ResetFilterIndication, CMD4_ACC_TYPE_ENUM.Name ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.FilterChangeIndication ] }, 23: { deviceName:'GarageDoorOpener', deprecated: false, UUID: "00000041-0000-1000-8000-0026BB765291", service: Service.GarageDoorOpener, defaultCategory: Categories.GARAGE_DOOR_OPENER, publishExternally: false, devicesStateChangeDefaultTime: constants.SLOW_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.CurrentDoorState, defaultValue: Characteristic.CurrentDoorState.OPEN, relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.TargetDoorState ] }, {type: CMD4_ACC_TYPE_ENUM.TargetDoorState, defaultValue: Characteristic.TargetDoorState.OPEN, relatedCurrentAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.CurrentDoorState ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.ObstructionDetected, defaultValue: 1, // Format: Bool relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.LockCurrentState, CMD4_ACC_TYPE_ENUM.LockTargetState, CMD4_ACC_TYPE_ENUM.Name ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.CurrentDoorState, CMD4_ACC_TYPE_ENUM.TargetDoorState ] }, 24: { deviceName:'HeaterCooler', deprecated: false, UUID: "000000BC-0000-1000-8000-0026BB765291", service: Service.HeaterCooler, defaultCategory: Categories.AIR_HEATER, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.Active, defaultValue: Characteristic.Active.ACTIVE, relatedCurrentAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.Active ], relatedTargetAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.Active ] }, {type: CMD4_ACC_TYPE_ENUM.CurrentHeaterCoolerState, defaultValue: Characteristic.CurrentHeaterCoolerState.INACTIVE, relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.TargetHeaterCoolerState ] }, {type: CMD4_ACC_TYPE_ENUM.TargetHeaterCoolerState, defaultValue: Characteristic.TargetHeaterCoolerState.HEAT, relatedCurrentAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.CurrentHeaterCoolerState ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.CurrentTemperature, defaultValue: 22.2, // Range: 0 - 100, Step: 0.1 // Format: float // Units: CELSIUS relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.LockPhysicalControls, CMD4_ACC_TYPE_ENUM.Name, CMD4_ACC_TYPE_ENUM.RotationSpeed, CMD4_ACC_TYPE_ENUM.SwingMode, CMD4_ACC_TYPE_ENUM.CoolingThresholdTemperature, CMD4_ACC_TYPE_ENUM.HeatingThresholdTemperature, CMD4_ACC_TYPE_ENUM.TemperatureDisplayUnits ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.Active ] }, 25: { deviceName:'HumidifierDehumidifier', deprecated: false, UUID: "000000BD-0000-1000-8000-0026BB765291", service: Service.HumidifierDehumidifier, defaultCategory: Categories.OTHER, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.CurrentRelativeHumidity, defaultValue: 60, // Range: 0 - 100, Step: 1 // Format: float // Units: CELSIUS relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.CurrentHumidifierDehumidifierState, defaultValue: Characteristic.CurrentHumidifierDehumidifierState.IDLE, relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.TargetHumidifierDehumidifierState ] }, {type: CMD4_ACC_TYPE_ENUM.TargetHumidifierDehumidifierState, defaultValue: Characteristic.TargetHumidifierDehumidifierState.DEHUMIDIFIER, relatedCurrentAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.CurrentHumidifierDehumidifierState ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.Active, defaultValue: Characteristic.Active.ACTIVE, relatedCurrentAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.Active ], relatedTargetAccTypeEnumArray: [ CMD4_ACC_TYPE_ENUM.Active ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.LockPhysicalControls, CMD4_ACC_TYPE_ENUM.Name, CMD4_ACC_TYPE_ENUM.RelativeHumidityDehumidifierThreshold, CMD4_ACC_TYPE_ENUM.RelativeHumidityHumidifierThreshold, CMD4_ACC_TYPE_ENUM.RotationSpeed, CMD4_ACC_TYPE_ENUM.SwingMode, CMD4_ACC_TYPE_ENUM.WaterLevel ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.Active ] }, 26: { deviceName:'HumiditySensor', deprecated: false, UUID: "00000082-0000-1000-8000-0026BB765291", service: Service.HumiditySensor, defaultCategory: Categories.SENSOR, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.CurrentRelativeHumidity, defaultValue: 60, // Range: 0 - 100, Step: 1 // Format: float // Units: CELSIUS relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.Name, CMD4_ACC_TYPE_ENUM.StatusActive, CMD4_ACC_TYPE_ENUM.StatusFault, CMD4_ACC_TYPE_ENUM.StatusTampered, CMD4_ACC_TYPE_ENUM.StatusLowBattery ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.CurrentRelativeHumidity ] }, 27: { deviceName:'InputSource', deprecated: false, UUID: "000000D9-0000-1000-8000-0026BB765291", service: Service.InputSource, defaultCategory: Categories.OTHER, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_ACC_TYPE_ENUM.ConfiguredName, defaultValue: "My_InputSource", // Format: String relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.InputSourceType, defaultValue: Characteristic.InputSourceType.HOME_SCREEN, relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.IsConfigured, defaultValue: Characteristic.IsConfigured.CONFIGURED, relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] }, {type: CMD4_ACC_TYPE_ENUM.CurrentVisibilityState, defaultValue: Characteristic.CurrentVisibilityState.SHOWN, relatedCurrentAccTypeEnumArray: [ ], relatedTargetAccTypeEnumArray: [ ] } ], optionalCharacteristics: [ CMD4_ACC_TYPE_ENUM.Identifier, CMD4_ACC_TYPE_ENUM.InputDeviceType, CMD4_ACC_TYPE_ENUM.TargetVisibilityState, CMD4_ACC_TYPE_ENUM.Name ], defaultPollingCharacteristics: [ CMD4_ACC_TYPE_ENUM.CurrentVisibilityState ] }, 28: { deviceName:'IrrigationSystem', deprecated: false, UUID: "000000CF-0000-1000-8000-0026BB765291", service: Service.IrrigationSystem, defaultCategory: Categories.SPRINKLER, publishExternally: false, devicesStateChangeDefaultTime: constants.MEDIUM_STATE_CHANGE_RESPONSE_TIME, requiredCharacteristics: [ {type: CMD4_A