UNPKG

homebridge-cmd4

Version:

Exec Plugin for Homebridge supporting all accessorys and characteristics

942 lines (689 loc) 115 kB
{ "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