homebridge-cmd4
Version:
Exec Plugin for Homebridge supporting all accessorys and characteristics
1,013 lines (999 loc) • 129 kB
JavaScript
'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