homebridge-cmd4
Version:
Exec Plugin for Homebridge supporting all accessorys and characteristics
942 lines (689 loc) • 115 kB
JSON
{
"bridge":
{
"name": "MAC Test Homebridge",
"username": "CC:22:3D:E3:CE:30",
"port": 51826,
"pin": "555-55-555"
},
"platforms" :
[
{
"platform": "Cmd4",
"name": "Cmd4",
"debug": false, // Output debug logs
"allowTLV8": false, // Allow TLV8 Characteristics
// These cannot be described easily
// in JSON format. They are usually
// binary formats.
// The default is false.
"outputConstants": false, // Instead of numeric values, output
// the value in string form.
// The default is false.
"accessories" :
[
{
"type": "Fanv1",
"displayName": "MyV1Fan", // Not a characteristic, but a function parameter
// Required characteristics
"on": "FALSE", // 0 - "FALSE"
// 1 - "TRUE"
// Optional Characteristics
"name": "MyV1Fan",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
// Paramaters to state_cmd are:
// Get <accessory name> <characteristic>
// Set <accessory name> <characteristic> <value>
// "Note": There is no need for an on_cmd or off_cmd
// with this kind of detail.
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "Fan",
"displayName": "MyFan", // Not a characteristic, but a function parameter
// Required Characteristics
"on": "FALSE", // 0 - "FALSE"
// 1 - "TRUE"
// Optional Characteristics
"rotationDirection": "COUNTER_CLOCKWISE", // 0 - "CLOCKWISE"
// 1 - "COUNTER_CLOCKWISE"
"rotationSpeed": 100, // Range: 0-100, Step: 1
"name": "MyFan",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"outputConstants": true, // For this accessory, output constants
// polling requires a state_cmd and state_cmd is
// used with your own scripts. Here for example only.
//"polling": [
// {"characteristic": "rotationDirection", "interval": 40, "timeout": 8000},
// {"characteristic": "on", "interval": 40, "timeout": 8000}
//],
"stateChangeResponseTime": 3 // Default (Seconds)
// Paramaters to state_cmd are:
// Get <accessory name> <characteristic>
// Set <accessory name> <characteristic> <value>
// "Note": There is no need for an on_cmd or off_cmd
// with this kind of detail.
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "Fanv2",
"displayName": "MyV2Fan", // Not a characteristic, but a function parameter
// Required Characteristics
"active": "INACTIVE", // 0 - "INACTIVE"
// 1 - "ACTIVE"
// Optional Characteristics
"currentFanState": "IDLE",
// 0 - "INACTIVE"
// 1 - "IDLE"
// 2 - "BLOWING_AIR"
"targetFanState": "AUTO",
// 0 - "MANUAL"
// 1 - "AUTO"
"lockPhysicalControls": "CONTROL_LOCK_DISABLED", // 0 - "CONTROL_LOCK_DISABLED"
// 1 - "CONTROL_LOCK_ENABLED"
"rotationDirection": "CLOCKWISE", // 0 - "COUNTER_CLOCKWISE"
// 1 - "CLOCKWISE"
"rotationSpeed": 100, // Range: 0-100, Step: 1
"swingMode": "SWING_ENABLED", // 0 - "SWING_DISABLED",
// 1 - "SWING_ENABLED"
"name": "MyV2Fan",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "GarageDoorOpener",
"displayName": "MyGarageDoorOpener", // Not a characteristic, but a function parameter
// Required Characteristics
"currentDoorState": "OPEN", // 0 - "OPEN"
// 1 - "CLOSED"
// 2 - "OPENING"
// 3 - "CLOSING"
// 4 - "STOPPED"
"targetDoorState": "OPEN", // 0 - "OPEN"
// 1 - "CLOSED"
"obstructionDetected": "FALSE", // 0 - "FALSE"
// 1 - "TRUE"
// Optional Characteristics
"lockCurrentState": "UNSECURED", // 0 - "UNSECURED"
// 1 - "SECURED"
// 2 - "JAMMED"
// 3 - "UNKNOWN"
"lockTargetState": "UNSECURED", // 0 - "UNSECURED"
// 1 - "SECURED"
"name": "MyGarageDoorOpener",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific - Interval is in second, Timeout in msec
// (polling per characteristic)
// Define the characteristic, its Interval and Timeout
// polling requires a state_cmd and state_cmd is
// used with your own scripts. Here for example only.
// "polling": [
// {"characteristic": "currentDoorState", "interval": 540, "timeout": 8000},
// {"characteristic": "obstructionDetected", "interval": 540, "timeout": 8000},
// {"characteristic": "lockCurrentState", "interval": 540, "timeout": 8000}
// ],
"stateChangeResponseTime": 10, // Default (Seconds)
// This is just a dumb example of a prefix
"state_cmd_prefix": "node"
//"state_cmd": ".homebridge/< yourScriptHere >"
},
{
"type": "Lightbulb",
"displayName": "MyOnOffLight", // Not a characteristic, but a function parameter
// Required Characteristics
"on": "FALSE", // 0 - "FALSE"
// 1 - "TRUE"
// Optional Characteristics
// Not Defining brightness determines that it is an On/Off Light
// "Brightness":
// "Hue":
// "Saturation":
"name": "MyOnOffLight",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// "ColorTemperature":
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "Lightbulb",
"displayName": "MyDimmableLight", // Not a characteristic, but a function parameter
// Required
"on": "FALSE", // 0 - "FALSE"
// 1 - "TRUE"
// Optional Characteristics
// Defining brightness determines that it is dimmmable
"brightness": 8, // Range: 0-100, Step: 1
"hue": 8, // Range: 0-360, Step: 1
"saturation": 8, // Range: 0-100, Step: 1
"colorTemperature": 8, // Range: 140-500, Step: 1
"name": "MyDimmableLight",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "LockManagement",
"displayName": "MyLockManagement", // Not a characteristic, but a function parameter
// Required Characteristics
// All TLV8 Characteristics are removed by default,
// unless 'allowTLV8' is set, at your own peril.
// Setting most will cause Homebridge with HomeKit or Eve.
// to not allow you to connect.
// "lockControlPoint": 0, // Format TLV8
"version": "1.2.3", // Format: String
// Optional Characteristics
// All TLV8 Characteristics are removed by default,
// unless 'allowTLV8' is set, at your own peril.
// Setting most will cause Homebridge with HomeKit or Eve.
// to not allow you to connect.
// "logs": 0, // Format: TLV8
"audioFeedback": "FALSE",
// 0 - "FALSE"
// 1 - "TRUE"
"lockManagementAutoSecurityTimeout":
20, // Format: UINT32
// "Units": Seconds
"administratorOnlyAccess": "FALSE", // 0 - "FALSE"
// 1 - "TRUE"
"lockLastKnownAction": "SECURED_PHYSICALLY_INTERIOR",
// 0 - "SECURED_PHYSICALLY_INTERIOR"
// 1 - "UNSECURED_PHYSICALLY_INTERIOR"
// 2 - "SECURED_PHYSICALLY_EXTERIOR"
// 3 - "UNSECURED_PHYSICALLY_EXTERIOR"
// 4 - "SECURED_BY_KEYPAD"
// 5 - "UNSECURED_BY_KEYPAD"
// 6 - "SECURED_REMOTELY"
// 7 - "UNSECURED_REMOTELY"
// 8 - "SECURED_BY_AUTO_SECURE_TIMEOUT"
"currentDoorState": "OPEN", // 0 - "OPEN"
// 1 - "CLOSED"
// 2 - "OPENING"
// 3 - "CLOSING"
// 4 - "STOPPED"
"motionDetected": "FALSE", // 0 - "FALSE"
// 1 - "TRUE"
"name": "MyLockManagement",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "LockMechanism",
"displayName": "MyLockMechanism", // Not a characteristic, but a function parameter
// Required Characteristics
"lockCurrentState": "UNSECURED", // 0 - "UNSECURED"
// 1 - "SECURED"
// 2 - "JAMMED"
// 3 - "UNKNOWN"
"lockTargetState": "UNSECURED", // 0 - "UNSECURED"
// 1 - "SECURED"
"name": "MyLockMechanism",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "Outlet",
"displayName": "MyOutlet", // Not a characteristic, but a function parameter
// Required Characteristics
"on": "FALSE", // 0 - "FALSE"
// 1 - "TRUE"
"outletInUse": "FALSE", // 0 - "FALSE"
// 1 - "TRUE"
// Optional Characteristics
"name": "MyOutlet",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "Switch",
"displayName": "MySwitch", // Not a characteristic, but a function parameter
// Required Characteristics
"on": "FALSE", // 0 - "FALSE"
// 1 - "TRUE"
// Optional Characteristics
"name": "MySwitch",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "Thermostat",
"displayName": "MyThermostat", // Not a characteristic, but a function parameter
// Required Characteristics
"currentHeatingCoolingState":
"OFF", // 0 - "OFF"
// 1 - "HEAT"
// 2 - "COOL"
"targetHeatingCoolingState":
"OFF", // 0 - "OFF"
// 1 - "HEAT"
// 2 - "COOL"
// 3 - "AUTO"
"currentTemperature": 22.2, // Range: 0-100, Step: 0.1
// "Units": CELCIUS
"targetTemperature": 22.2, // Range: 10-38, Step: 0.1
// "Units": CELCIUS
"temperatureDisplayUnits": "CELSIUS", // 0 - "CELSIUS"
// 1 - "FAHRENHEIT"
// Optional Characteristics
"currentRelativeHumidity": 60, // Range: 0-100, Step: 1
// Format: float
// Units: Percentage
"targetRelativeHumidity": 60, // Range: 0-100, Step: 1
// Format: float
// Units: Percentage
"coolingThresholdTemperature":
22.2, // Range 10-35, Step: 0.1
// Units: CELCIUS
"heatingThresholdTemperature":
25.2, // Range 0-25, Step: 0.1
// Units: CELCIUS
"name": "MyThermostat",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific - Interval is in second, Timeout in msec
// - Notice Two characteristics being polled !!!
// at different intervals.
// - Also Required as fakegato option below uses them.
// polling requires a state_cmd and state_cmd is
// used with your own scripts. Here for example only.
//"polling": [
// {"characteristic": "currentHeatingCoolingState", "interval": 540, "timeout": 8000},
// {"characteristic": "currentTemperature", "interval": 60, "timeout": 8000},
// {"characteristic": "targetTemperature", "interval": 60, "timeout": 8000}
//],
// Cmd4 Specific
"stateChangeResponseTime": 10 // (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >",
// Cmd4 fakegato lets you specify what type of logging and
// the characteristics to be logged.
// i.e. thermo and tracking currentTemperature and
// targetTemperature.
// See https://github.com/simont77/fakegato-history
// for full description of fields.
// You must also define them for polling, or the value would never change.
// fakegato requires a state_cmd and state_cmd is
// used with your own scripts. Here for example only.
//"fakegato": {"eve": "thermo",
// "currentTemp": "CurrentTemperature",
// "setTemp": "TargetTemperature",
// "valvePosition": 0,
// "storage": "fs",
// "storagePath": ".homebridge/FakegatoStorage",
// "folder": "folderName",
// "keyPath": "/place/to/store/my/keys/"
// }
},
{
"type": "AirQualitySensor",
"displayName": "MyAirQualitySensor", // Not a characteristic, but a function parameter
// Required Characteristics
"airQuality": "EXCELLENT", // 0 - "UNKNOWN"
// 1 - "EXCELLENT"
// 2 - "GOOD"
// 3 - "FAIR"
// 4 - "INFERIOR"
// 5 - "POOR"
"ozoneDensity": 50, // Range 0-1000, Step 1
"nitrogenDioxideDensity": 50, // Range 0-1000, Step 1
"sulphurDioxideDensity": 50, // Range 0-1000, Step 1
"pm2_5Density": 50, // Range 0-1000, Step 1
// Optional Characteristics
"pm10Density": 50, // Range 0-1000, Step 1
"vocDensity": 50, // Range 0-1000, Step 1
"statusActive": "TRUE", // 0 - "FALSE"
// 1 - "TRUE"
"statusFault": "NO_FAULT", // 0 - "NO_FAULT"
// 1 - "GENERAL_FAULT"
"statusTampered": "NOT_TAMPERED", // 0 - "NOT_TAMPERED"
// 1 - "TAMPERED"
"statusLowBattery": "BATTERY_LEVEL_NORMAL", // 0 - "BATTERY_LEVEL_NORMAL"
// 1 - "BATTERY_LEVEL_LOW"
"name": "MyAirQualitySensor",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "SecuritySystem",
"displayName": "MySecuritySystem", // Not a characteristic, but a function parameter
// Required Characteristics
"securitySystemCurrentState":
"DISARMED", // 0 - "STAY_ARM"
// 1 - "AWAY_ARM"
// 2 - "NIGHT_ARM"
// 3 - "DISARMED"
// 4 - "ALARM_TRIGGERED"
"securitySystemTargetState":
"DISARM", // 0 - "STAY_ARM"
// 1 - "AWAY_ARM"
// 2 - "NIGHT_ARM"
// 3 - "DISARM"
// Optional Characteristics
"securitySystemAlarmType": 0, // Range: 0-1, Step 1
// Meaning Unknown
"statusFault": "NO_FAULT", // 0 - "NO_FAULT"
// 1 - "GENERAL_FAULT"
"statusTampered": "NOT_TAMPERED", // 0 - "NOT_TAMPERED"
// 1 - "TAMPERED"
"name": "MySecuritySystem",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "CarbonMonoxideSensor",
"displayName": "MyCOSensor", // Not a characteristic, but a function parameter
// Required Characteristics
"carbonMonoxideDetected": "CO_LEVELS_NORMAL", // 0 - "CO_LEVELS_NORMAL"
// 1 - "CO_LEVELS_ABNORMAL"
// Optional Characteristics
"statusActive": "TRUE", // 0 - "FALSE"
// 1 - "TRUE"
"statusFault": "NO_FAULT", // 0 - "NO_FAULT"
// 1 - "GENERAL_FAULT"
"statusTampered": "NOT_TAMPERED", // 0 - "NOT_TAMPERED"
// 1 - "TAMPERED"
"statusLowBattery": "BATTERY_LEVEL_NORMAL", // 0 - "BATTERY_LEVEL_NORMAL"
// 1 - "BATTERY_LEVEL_LOW"
"carbonMonoxideLevel": 0, // Range: 0-100,
// Format: float
"carbonMonoxidePeakLevel": 0, // Range: 0-100,
// Format: float
"name": "MyCOSensor",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "ContactSensor",
"displayName": "MyContactSensor", // Not a characteristic, but a function parameter
// Required Characteristics
"contactSensorState": "CONTACT_DETECTED", // 0 - "CONTACT_DETECTED"
// 1 - "CONTACT_NOT_DETECTED"
// Optional Characteristics
"statusActive": "TRUE", // 0 - "FALSE"
// 1 - "TRUE"
"statusFault": "NO_FAULT", // 0 - "NO_FAULT"
// 1 - "GENERAL_FAULT"
"statusTampered": "NOT_TAMPERED", // 0 - "NOT_TAMPERED"
// 1 - "TAMPERED"
"statusLowBattery": "BATTERY_LEVEL_NORMAL", // 0 - "BATTERY_LEVEL_NORMAL"
// 1 - "BATTERY_LEVEL_LOW"
"name": "MyContactSensor",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "Door",
"displayName": "MyDoor", // Not a characteristic, but a function parameter
// Required Characteristics
"currentPosition": 0, // Range: 0 - 100, Step 1
"targetPosition": 0, // Range: 0 - 100, Step 1
"positionState": "STOPPED", // 0 - "DECREASING"
// 1 - "INCREASING"
// 2 - "STOPPED"
// Optional Characteristics
"holdPosition": "FALSE", // 0 - "FALSE"
// 1 - "TRUE"
"obstructionDetected": "FALSE", // 0 - "FALSE"
// 1 - "TRUE"
"name": "MyDoor",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific - Interval is in second, Timeout in msec
// (polling per characteristic)
// Required as fakegato option below uses them.
// polling requires a state_cmd and state_cmd is
// used with your own scripts. Here for example only.
//"polling": [
// {"characteristic": "currentPosition", "interval": 80, "timeout": 8000},
// {"characteristic": "obstructionDetected", "interval": 50, "timeout": 8000}
//],
// Cmd4 fakegato lets you specify what type of logging and
// the characteristics to be logged.
// i.e. door and tracking statusActive
// You must also define them for polling, or the value would never change.
// fakegato requires a state_cmd and state_cmd is
// used with your own scripts. Here for example only.
//"fakegato": {"eve": "door",
// "status": "currentPosition",
// "storage": "fs",
// "storagePath": ".homebridge/FakegatoStorage",
// "folder": "folderName",
// "keyPath": "/place/to/store/my/keys/"
// },
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "HumiditySensor",
"displayName": "MyHumiditySensor", // Not a characteristic, but a function parameter
// Required Characteristics
"currentRelativeHumidity": 1, // Range: 0-100, Step: 1
// Format: float
// Units: Percentage
// Optional Characteristics
"statusActive": "TRUE", // 0 - "FALSE"
// 1 - "TRUE"
"statusFault": "NO_FAULT", // 0 - "NO_FAULT"
// 1 - "GENERAL_FAULT"
"statusTampered": "NOT_TAMPERED", // 0 - "NOT_TAMPERED"
// 1 - "TAMPERED"
"statusLowBattery": "BATTERY_LEVEL_NORMAL", // 0 - "BATTERY_LEVEL_NORMAL"
// 1 - "BATTERY_LEVEL_LOW"
"name": "MyHumiditySensor",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >",
// Cmd4 Specific - Interval is in second, Timeout in msec
// (polling per characteristic)
// Required as fakegato option below uses them.
// polling requires a state_cmd and state_cmd is
// used with your own scripts. Here for example only.
//"polling": [
// {"characteristic": "currentRelativeHumidity", "interval": 50, "timeout": 8000}
//],
// Cmd4 fakegato lets you specify what type of logging and
// the characteristics to be logged.
// i.e. thermo and tracking currentTemperature and
// targetTemperature.
// You must also define them for polling, or the value would never change.
// fakegato requires a state_cmd and state_cmd is
// used with your own scripts. Here for example only.
//"fakegato": {"eve": "room",
// "temp": 0,
// "humidity": "currentRelativeHumidity",
// "ppm": 0,
// "storage": "fs",
// "storagePath": ".homebridge/FakegatoStorage",
// "folder": "folderName",
// "keyPath": "/place/to/store/my/keys/"
// }
},
{
"type": "LeakSensor",
"displayName": "MyLeakSensor", // Not a characteristic, but a function parameter
// Required Characteristics
"leakDetected": "LEAK_NOT_DETECTED", // 0 - "LEAK_NOT_DETECTED"
// 1 - "LEAK_DETECTED"
// Optional Characteristics
"statusActive": "TRUE", // 0 - "FALSE"
// 1 - "TRUE"
"statusFault": "NO_FAULT", // 0 - "NO_FAULT"
// 1 - "GENERAL_FAULT"
"statusTampered": "NOT_TAMPERED", // 0 - "NOT_TAMPERED"
// 1 - "TAMPERED"
"statusLowBattery": "BATTERY_LEVEL_NORMAL", // 0 - "BATTERY_LEVEL_NORMAL"
// 1 - "BATTERY_LEVEL_LOW"
"name": "MyLeakSensor",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "LightSensor",
"displayName": "MyLightSensor", // Not a characteristic, but a function parameter
// Required Characteristics
"currentAmbientLightLevel": 1, // Range: 0.0001-100000
// Format: float
// Optional Characteristics
"statusActive": "TRUE", // 0 - "FALSE"
// 1 - "TRUE"
"statusFault": "NO_FAULT", // 0 - "NO_FAULT"
// 1 - "GENERAL_FAULT"
"statusTampered": "NOT_TAMPERED", // 0 - "NOT_TAMPERED"
// 1 - "TAMPERED"
"statusLowBattery": "BATTERY_LEVEL_NORMAL", // 0 - "BATTERY_LEVEL_NORMAL"
// 1 - "BATTERY_LEVEL_LOW"
"name": "MyLightSensor",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "MotionSensor",
"displayName": "MyMotionSensor", // Not a characteristic, but a function parameter
// Required Characteristics
"motionDetected": "FALSE", // 0 - "FALSE"
// 1 - "TRUE"
// Optional Characteristics
"statusActive": "TRUE", // 0 - "FALSE"
// 1 - "TRUE"
"statusFault": "NO_FAULT", // 0 - "NO_FAULT"
// 1 - "GENERAL_FAULT"
"statusTampered": "NOT_TAMPERED", // 0 - "NOT_TAMPERED"
// 1 - "TAMPERED"
"statusLowBattery": "BATTERY_LEVEL_NORMAL", // 0 - "BATTERY_LEVEL_NORMAL"
// 1 - "BATTERY_LEVEL_LOW"
"name": "MyMotionSensor",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "OccupancySensor",
"displayName": "MyOccupancySensor", // Not a characteristic, but a function parameter
// Required Characteristics
"occupancyDetected": "OCCUPANCY_NOT_DETECTED", // 0 - "OCCUPANCY_NOT_DETECTED"
// 1 - "OCCUPANCY_DETECTED"
// Optional Characteristics
"statusActive": "TRUE", // 0 - "FALSE"
// 1 - "TRUE"
"statusFault": "NO_FAULT", // 0 - "NO_FAULT"
// 1 - "GENERAL_FAULT"
"statusTampered": "NOT_TAMPERED", // 0 - "NOT_TAMPERED"
// 1 - "TAMPERED"
"statusLowBattery": "BATTERY_LEVEL_NORMAL", // 0 - "BATTERY_LEVEL_NORMAL"
// 1 - "BATTERY_LEVEL_LOW"
"name": "MyOccupancySensor",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "SmokeSensor",
"displayName": "MySmokeSensor", // Not a characteristic, but a function parameter
// Required Characteristics
"smokeDetected": "SMOKE_NOT_DETECTED", // 0 - "SMOKE_NOT_DETECTED"
// 1 - "SMOKE_DETECTED"
// Optional Characteristics
"statusActive": "TRUE", // 0 - "FALSE"
// 1 - "TRUE"
"statusFault": "NO_FAULT", // 0 - "NO_FAULT"
// 1 - "GENERAL_FAULT"
"statusTampered": "NOT_TAMPERED", // 0 - "NOT_TAMPERED"
// 1 - "TAMPERED"
"statusLowBattery": "BATTERY_LEVEL_NORMAL", // 0 - "BATTERY_LEVEL_NORMAL"
// 1 - "BATTERY_LEVEL_LOW"
"name": "MySmokeSensor",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "node .homebridge/< yourScriptHere >"
},
{
"type": "StatefulProgrammableSwitch",
"displayName": "MyStatefulProgrammableSwitch",
// Not a characteristic, but a function parameter
// Required Characteristics
"programmableSwitchEvent": "SINGLE_PRESS", // 0 - "SINGLE_PRESS"
// 1 - "DOUBLE_PRESS"
// 2 - "LONG_PRESS"
"programmableSwitchOutputState":
0, // Range: 0-1, Step 1
// "Meaning": ???
// Optional Characteristics
"name": "MyStatefulProgrammableSwitch",
"manufacturer": "Somebody", // Available for all accessories
"model": "Anything", // Available for all accessories
"serialNumber": "12345", // Available for all accessories
// Cmd4 Specific
"stateChangeResponseTime": 3 // Default (Seconds)
//"state_cmd": "n