diff --git a/src/Span.h b/src/Span.h
index cbddad3..e4dc67e 100644
--- a/src/Span.h
+++ b/src/Span.h
@@ -331,7 +331,7 @@ namespace Service {
CREATE_SERV(StatelessProgrammableSwitch,89) // Defines a "Stateless" Programmable Switch that can be used to trigger actions in the Home App.
REQ(ProgrammableSwitchEvent);
OPT(Name);
- OPT_DEP(ServiceLabelIndex);
+ OPT(ServiceLabelIndex);
END_SERV
CREATE_SERV(Switch,49) // Defines a generic Switch.
@@ -381,7 +381,7 @@ namespace Service {
OPT(SetDuration);
OPT(RemainingDuration);
OPT(IsConfigured);
- OPT_DEP(ServiceLabelIndex);
+ OPT(ServiceLabelIndex);
OPT(StatusFault);
OPT(Name);
END_SERV
@@ -452,9 +452,9 @@ namespace Characteristic {
CREATE_CHAR(uint8_t,CurrentHeatingCoolingState,0,0,2,IDLE,HEATING,COOLING); // indicates whether appliance is currently heating, cooling, or just idle
CREATE_CHAR(uint8_t,CurrentHeaterCoolerState,1,0,3,INACTIVE,IDLE,HEATING,COOLING); // indicates whether appliance is currently heating, cooling, idle, or off
CREATE_CHAR(uint8_t,CurrentMediaState,0,0,5);
- CREATE_CHAR(double,CurrentRelativeHumidity,0,0,100); //current humidity measured as a percentage
+ CREATE_CHAR(double,CurrentRelativeHumidity,0,0,100); // current humidity measured as a percentage
CREATE_CHAR(double,CurrentTemperature,0,0,100); // current temperature measured in Celsius
- CREATE_CHAR(int,CurrentTiltAngle,0,-90,90); // angle (in degrees) of slats from fully up or left (-90) to fully open (0) to fully down or right (90)
+ CREATE_CHAR(int,CurrentTiltAngle,0,-90,90); // current angle (in degrees) of slats from fully up or left (-90) to fully open (0) to fully down or right (90)
CREATE_CHAR(double,FilterLifeLevel,0,0,100); // measures as a percentage of remaining life
CREATE_CHAR(uint8_t,FilterChangeIndication,0,0,1,NO_CHANGE_NEEDED,CHANGE_NEEDED); // indicates state of filter
CREATE_CHAR(const char *,FirmwareRevision,"1.0.0",0,1); // must be in form x[.y[.z]] - informational only
@@ -462,7 +462,7 @@ namespace Characteristic {
CREATE_CHAR(double,HeatingThresholdTemperature,16,0,25); // heating turns on when temperature (in Celsius) falls below this threshold
CREATE_CHAR(boolean,HoldPosition,false,0,1); // deprecated
CREATE_CHAR(double,Hue,0,0,360); // color (in degrees) from red (0) to green (120) to blue (240) and back to red (360)
- CREATE_CHAR(boolean,Identify,0,0,1,IDLE,RUN_ID); // the Home App sets this to RUN_ID when it wants the device to run its identification routine
+ CREATE_CHAR(boolean,Identify,0,0,1,UNUSED,RUN_ID); // the Home App sets this to RUN_ID when it wants the device to run its identification routine
CREATE_CHAR(uint32_t,Identifier,0,0,255);
CREATE_CHAR(uint8_t,InputDeviceType,0,0,6);
CREATE_CHAR(uint8_t,InputSourceType,0,0,10);
@@ -488,55 +488,55 @@ namespace Characteristic {
CREATE_CHAR(double,PM10Density,0,0,1000); // 10-micron particulate density, measured in µg/m3
CREATE_CHAR(uint8_t,PositionState,2,0,2,GOING_TO_MINIMUM,GOING_TO_MAXIMUM,STOPPED); // deprecated
CREATE_CHAR(uint8_t,PowerModeSelection,0,0,1);
- CREATE_CHAR(uint8_t,ProgramMode,0,0,2,NONE,SCHEDULED,SCHEDULE_OVERRIDEN);
- CREATE_CHAR(uint8_t,ProgrammableSwitchEvent,0,0,2,SINGLE_PRESS,DOUBLE_PRESS,LONG_PRESS);
- CREATE_CHAR(double,RelativeHumidityDehumidifierThreshold,50,0,100);
- CREATE_CHAR(double,RelativeHumidityHumidifierThreshold,50,0,100);
- CREATE_CHAR(uint32_t,RemainingDuration,60,0,3600);
+ CREATE_CHAR(uint8_t,ProgramMode,0,0,2,NONE,SCHEDULED,SCHEDULE_OVERRIDEN); // indicates if pre-scheduled program is running
+ CREATE_CHAR(uint8_t,ProgrammableSwitchEvent,0,0,2,SINGLE_PRESS,DOUBLE_PRESS,LONG_PRESS); // specifies type of button press
+ CREATE_CHAR(double,RelativeHumidityDehumidifierThreshold,50,0,100); // dehumidfier turns on when humidity rises above this threshold
+ CREATE_CHAR(double,RelativeHumidityHumidifierThreshold,50,0,100); // humidfier turns on when humidity falls below this threshold
+ CREATE_CHAR(uint32_t,RemainingDuration,60,0,3600); // duration (in seconds) remaining for Service to be active/on
CREATE_CHAR(uint8_t,RemoteKey,0,0,16);
- CREATE_CHAR(uint8_t,ResetFilterIndication,0,1,1);
- CREATE_CHAR(int,RotationDirection,0,0,1,CLOCKWISE,COUNTERCLOCKWISE);
- CREATE_CHAR(double,RotationSpeed,0,0,100);
- CREATE_CHAR(double,Saturation,0,0,100);
- CREATE_CHAR(uint8_t,SecuritySystemAlarmType,0,0,1,KNOWN,UNKNOWN);
- CREATE_CHAR(uint8_t,SecuritySystemCurrentState,3,0,4,ARMED_STAY,ARMED_AWAY,ARMED_NIGHT,DISARMED,ALARM_TRIGGERED);
- CREATE_CHAR(uint8_t,SecuritySystemTargetState,3,0,3,ARM_STAY,ARM_AWAY,ARM_NIGHT,DISARM);
- CREATE_CHAR(const char *,SerialNumber,"HS-12345",0,1);
- CREATE_CHAR(uint8_t,ServiceLabelIndex,1,1,255);
- CREATE_CHAR(uint8_t,ServiceLabelNamespace,1,0,1,DOTS,NUMERALS);
- CREATE_CHAR(uint8_t,SlatType,0,0,1,HORIZONTAL,VERTICAL);
+ CREATE_CHAR(uint8_t,ResetFilterIndication,0,0,1,UNUSED,RESET_FILTER); // the Home App sets this to RESET_FILTER when it wants to reset the FilterChangeIndication
+ CREATE_CHAR(int,RotationDirection,0,0,1,CLOCKWISE,COUNTERCLOCKWISE); // indicates the rotation direction of a fan
+ CREATE_CHAR(double,RotationSpeed,0,0,100); // measured as a percentage
+ CREATE_CHAR(double,Saturation,0,0,100); // color saturation, measured as a percentage
+ CREATE_CHAR(uint8_t,SecuritySystemAlarmType,0,0,1,KNOWN,UNKNOWN); // indicates whether alarm was triggered for known reason
+ CREATE_CHAR(uint8_t,SecuritySystemCurrentState,3,0,4,ARMED_STAY,ARMED_AWAY,ARMED_NIGHT,DISARMED,ALARM_TRIGGERED); // indicates current state of the security system
+ CREATE_CHAR(uint8_t,SecuritySystemTargetState,3,0,3,ARM_STAY,ARM_AWAY,ARM_NIGHT,DISARM); // indicates desired state of the security system
+ CREATE_CHAR(const char *,SerialNumber,"HS-12345",0,1); // any string - informational only
+ CREATE_CHAR(uint8_t,ServiceLabelIndex,1,1,255); // numerical index used to distinguish multiple copies of the same Service within an Accessory
+ CREATE_CHAR(uint8_t,ServiceLabelNamespace,1,0,1,DOTS,NUMERALS); // unused
+ CREATE_CHAR(uint8_t,SlatType,0,0,1,HORIZONTAL,VERTICAL); // indicates the direction of a slat or group of slats
CREATE_CHAR(uint8_t,SleepDiscoveryMode,0,0,1);
- CREATE_CHAR(uint8_t,SmokeDetected,0,0,1,NOT_DETECTED,DETECTED);
- CREATE_CHAR(boolean,StatusActive,1,0,1);
- CREATE_CHAR(uint8_t,StatusFault,0,0,1,NO_FAULT,FAULT);
- CREATE_CHAR(uint8_t,StatusJammed,0,0,1,NOT_JAMMED,JAMMED);
- CREATE_CHAR(uint8_t,StatusLowBattery,0,0,1,NOT_LOW_BATTERY,LOW_BATTERY);
- CREATE_CHAR(uint8_t,StatusTampered,0,0,1,NOT_TAMPERED,TAMPERED);
- CREATE_CHAR(double,SulphurDioxideDensity,0,0,1000);
- CREATE_CHAR(uint8_t,SwingMode,0,0,1,SWING_DISABLED,SWING_ENABLED);
- CREATE_CHAR(uint8_t,TargetAirPurifierState,1,0,1,MANUAL,AUTO);
- CREATE_CHAR(uint8_t,TargetFanState,1,0,1,MANUAL,AUTO);
- CREATE_CHAR(int,TargetTiltAngle,0,-90,90);
- CREATE_CHAR(uint8_t,TargetHeaterCoolerState,0,0,2,AUTO,HEAT,COOL);
- CREATE_CHAR(uint32_t,SetDuration,60,0,3600);
- CREATE_CHAR(int,TargetHorizontalTiltAngle,0,-90,90);
- CREATE_CHAR(uint8_t,TargetHumidifierDehumidifierState,0,0,2,AUTO,HUMIDIFY,DEHUMIDIFY);
- CREATE_CHAR(uint8_t,TargetPosition,0,0,100);
- CREATE_CHAR(uint8_t,TargetDoorState,1,0,1,OPEN,CLOSED);
- CREATE_CHAR(uint8_t,TargetHeatingCoolingState,0,0,3,OFF,HEAT,COOL,AUTO);
- CREATE_CHAR(uint8_t,TargetMediaState,0,0,2);
- CREATE_CHAR(double,TargetRelativeHumidity,0,0,100);
- CREATE_CHAR(double,TargetTemperature,16,10,38);
+ CREATE_CHAR(uint8_t,SmokeDetected,0,0,1,NOT_DETECTED,DETECTED); // indicates if smoke is detected
+ CREATE_CHAR(boolean,StatusActive,1,0,1,NOT_FUNCTIONING,FUNCTIONING); // indicates whether the Service is properly functioning
+ CREATE_CHAR(uint8_t,StatusFault,0,0,1,NO_FAULT,FAULT); // indicates whether the Service has a fault
+ CREATE_CHAR(uint8_t,StatusJammed,0,0,1,NOT_JAMMED,JAMMED); // indicates whether the Service has been "jammed"
+ CREATE_CHAR(uint8_t,StatusLowBattery,0,0,1,NOT_LOW_BATTERY,LOW_BATTERY); // indicates state of battery
+ CREATE_CHAR(uint8_t,StatusTampered,0,0,1,NOT_TAMPERED,TAMPERED); // indicates whether the Service has been tampered with
+ CREATE_CHAR(double,SulphurDioxideDensity,0,0,1000); // measured in µg/m3
+ CREATE_CHAR(uint8_t,SwingMode,0,0,1,SWING_DISABLED,SWING_ENABLED); // indicates whether swing-nmode is enabled
+ CREATE_CHAR(uint8_t,TargetAirPurifierState,1,0,1,MANUAL,AUTO); // indicates desired state of air purifier
+ CREATE_CHAR(uint8_t,TargetFanState,1,0,1,MANUAL,AUTO); // indicates desired state of fan
+ CREATE_CHAR(int,TargetTiltAngle,0,-90,90); // indicated desired angle (in degrees) of slats from fully up or left (-90) to fully open (0) to fully down or right (90)
+ CREATE_CHAR(uint8_t,TargetHeaterCoolerState,0,0,2,AUTO,HEAT,COOL); // indicates desired state of heater/cooler
+ CREATE_CHAR(uint32_t,SetDuration,60,0,3600); // specifies the duration (in seconds) for a Service to remain on once activated
+ CREATE_CHAR(int,TargetHorizontalTiltAngle,0,-90,90); // indicates desired angle (in degrees) of slats from fully up (-90) to fully open (0) to fully down (90)
+ CREATE_CHAR(uint8_t,TargetHumidifierDehumidifierState,0,0,2,AUTO,HUMIDIFY,DEHUMIDIFY); // indicates desired state of humidifier/dehumidifier
+ CREATE_CHAR(uint8_t,TargetPosition,0,0,100); // indicates target position (as a percentage) from fully closed (0) to full open (100)
+ CREATE_CHAR(uint8_t,TargetDoorState,1,0,1,OPEN,CLOSED); // indicates desires state of door
+ CREATE_CHAR(uint8_t,TargetHeatingCoolingState,0,0,3,OFF,HEAT,COOL,AUTO); // indicates desired state of appliance
+ CREATE_CHAR(uint8_t,TargetMediaState,0,0,2); // unused
+ CREATE_CHAR(double,TargetRelativeHumidity,0,0,100); // indicates desired humidity measured as a percentage
+ CREATE_CHAR(double,TargetTemperature,16,10,38); // indicates desired temperature measure in Celsius
CREATE_CHAR(uint8_t,TargetVisibilityState,0,0,1);
- CREATE_CHAR(uint8_t,TemperatureDisplayUnits,0,0,1,CELSIUS,FAHRENHEIT);
- CREATE_CHAR(int,TargetVerticalTiltAngle,0,-90,90);
- CREATE_CHAR(uint8_t,ValveType,0,0,3);
- CREATE_CHAR(const char *,Version,"1.0.0",0,1);
- CREATE_CHAR(double,VOCDensity,0,0,1000);
- CREATE_CHAR(uint8_t,Volume,0,0,100);
+ CREATE_CHAR(uint8_t,TemperatureDisplayUnits,0,0,1,CELSIUS,FAHRENHEIT); // indicates the desired units to display the temperature on the device itself (has no effect on Home App)
+ CREATE_CHAR(int,TargetVerticalTiltAngle,0,-90,90); // indicates desired angle (in degrees) of slats from fully left (-90) to fully open (0) to fully right (90)
+ CREATE_CHAR(uint8_t,ValveType,0,0,3,GENERIC,IRRIGATION,SHOWER_HEAD,FAUCET); // indicates the type of valve
+ CREATE_CHAR(const char *,Version,"1.0.0",0,1); // unused
+ CREATE_CHAR(double,VOCDensity,0,0,1000); // measured in µg/m3
+ CREATE_CHAR(uint8_t,Volume,0,0,100); // unused
CREATE_CHAR(uint8_t,VolumeControlType,0,0,3);
CREATE_CHAR(uint8_t,VolumeSelector,0,0,1);
- CREATE_CHAR(double,WaterLevel,0,0,100);
+ CREATE_CHAR(double,WaterLevel,0,0,100); // measured as a percentage
}
diff --git a/tools/test.md b/tools/test.md
index 593f945..3e146ed 100644
--- a/tools/test.md
+++ b/tools/test.md
@@ -1,12 +1,12 @@
## AccessoryInformation (3E)
Required Identification Information. For each Accessory in a HomeSpan device this must be included as the first Service.
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
-Identify (14) :small_blue_diamond:- the Home App sets this to RUN_ID when it wants the device to run its identification routine
| bool | PW | 0 | 1 | - IDLE (0) :heavy_check_mark:
- RUN_ID (1)
|
+Identify (14) :small_blue_diamond:- the Home App sets this to RUN_ID when it wants the device to run its identification routine
| bool | PW | 0 | 1 | - UNUSED (0) :heavy_check_mark:
- RUN_ID (1)
|
FirmwareRevision (52) - must be in form x[.y[.z]] - informational only
| string | PR+EV | - | - | "1.0.0" |
Manufacturer (20) - any string - informational only
| string | PR | - | - | "HomeSpan" |
Model (21) - any string - informational only
| string | PR | - | - | "HomeSpan-ESP32" |
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| SerialNumber (30) | string | PR | - | - | "HS-12345" |
+SerialNumber (30) - any string - informational only
| string | PR | - | - | "HS-12345" |
HardwareRevision (53) - must be in form x[.y[.z]] - informational only
| string | PR | - | - | "1.0.0" |
@@ -15,10 +15,10 @@
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
Active (B0) :small_blue_diamond:- indicates if the Service is active/on
| uint8 | PW+PR+EV | 0 | 1 | - INACTIVE (0) :heavy_check_mark:
- ACTIVE (1)
|
CurrentAirPurifierState (A9) :small_blue_diamond:- indicates current state of air purification
| uint8 | PR+EV | 0 | 2 | - INACTIVE (0)
- IDLE (1) :heavy_check_mark:
- PURIFYING (2)
|
-| TargetAirPurifierState (A8) :small_blue_diamond: | uint8 | PW+PR+EV | 0 | 1 | - MANUAL (0)
- AUTO (1) :heavy_check_mark:
|
+TargetAirPurifierState (A8) :small_blue_diamond:- indicates desired state of air purifier
| uint8 | PW+PR+EV | 0 | 1 | - MANUAL (0)
- AUTO (1) :heavy_check_mark:
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| RotationSpeed (29) | float | PR+PW+EV | 0 | 100 | 0 |
-| SwingMode (B6) | uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0) :heavy_check_mark:
- SWING_ENABLED (1)
|
+| RotationSpeed (29) | float | PR+PW+EV | 0 | 100 | 0 |
+SwingMode (B6) - indicates whether swing-nmode is enabled
| uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0) :heavy_check_mark:
- SWING_ENABLED (1)
|
LockPhysicalControls (A7) - indicates if local control lock is enabled
| uint8 | PW+PR+EV | 0 | 1 | - CONTROL_LOCK_DISABLED (0) :heavy_check_mark:
- CONTROL_LOCK_ENABLED (1)
|
@@ -29,14 +29,14 @@
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
| OzoneDensity (C3) | float | PR+EV | 0 | 1000 | 0 |
| NitrogenDioxideDensity (C4) | float | PR+EV | 0 | 1000 | 0 |
-| SulphurDioxideDensity (C5) | float | PR+EV | 0 | 1000 | 0 |
+| SulphurDioxideDensity (C5) | float | PR+EV | 0 | 1000 | 0 |
PM25Density (C6) - 2.5-micron particulate density, measured in µg/m3
| float | PR+EV | 0 | 1000 | 0 |
PM10Density (C7) - 10-micron particulate density, measured in µg/m3
| float | PR+EV | 0 | 1000 | 0 |
-| VOCDensity (C8) | float | PR+EV | 0 | 1000 | 0 |
-| StatusActive (75) | bool | PR+EV | 0 | 1 | 1 |
-| StatusFault (77) | uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
-| StatusTampered (7A) | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
-| StatusLowBattery (79) | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
+| VOCDensity (C8) | float | PR+EV | 0 | 1000 | 0 |
+StatusActive (75) - indicates whether the Service is properly functioning
| bool | PR+EV | 0 | 1 | - NOT_FUNCTIONING (0)
- FUNCTIONING (1) :heavy_check_mark:
|
+StatusFault (77) - indicates whether the Service has a fault
| uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
+StatusTampered (7A) - indicates whether the Service has been tampered with
| uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
+StatusLowBattery (79) - indicates state of battery
| uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
## BatteryService (96)
@@ -44,7 +44,7 @@
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
| BatteryLevel (68) :small_blue_diamond: | uint8 | PR+EV | 0 | 100 | 0 |
ChargingState (8F) :small_blue_diamond:- indicates state of battery charging
| uint8 | PR+EV | 0 | 2 | - NOT_CHARGING (0) :heavy_check_mark:
- CHARGING (1)
- NOT_CHARGEABLE (2)
|
-| StatusLowBattery (79) :small_blue_diamond: | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
+StatusLowBattery (79) :small_blue_diamond:- indicates state of battery
| uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
@@ -53,10 +53,10 @@
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
CarbonDioxideDetected (92) :small_blue_diamond:- indicates if abnormal level is detected
| uint8 | PR+EV | 0 | 1 | - NORMAL (0) :heavy_check_mark:
- ABNORMAL (1)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| StatusActive (75) | bool | PR+EV | 0 | 1 | 1 |
-| StatusFault (77) | uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
-| StatusTampered (7A) | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
-| StatusLowBattery (79) | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
+StatusActive (75) - indicates whether the Service is properly functioning
| bool | PR+EV | 0 | 1 | - NOT_FUNCTIONING (0)
- FUNCTIONING (1) :heavy_check_mark:
|
+StatusFault (77) - indicates whether the Service has a fault
| uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
+StatusTampered (7A) - indicates whether the Service has been tampered with
| uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
+StatusLowBattery (79) - indicates state of battery
| uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
CarbonDioxideLevel (93) - measured on parts per million (ppm)
| float | PR+EV | 0 | 100000 | 0 |
CarbonDioxidePeakLevel (94) - measured in parts per million (ppm)
| float | PR+EV | 0 | 100000 | 0 |
@@ -66,10 +66,10 @@
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
CarbonMonoxideDetected (69) :small_blue_diamond:- indicates if abnormal level is detected
| uint8 | PR+EV | 0 | 1 | - NORMAL (0) :heavy_check_mark:
- ABNORMAL (1)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| StatusActive (75) | bool | PR+EV | 0 | 1 | 1 |
-| StatusFault (77) | uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
-| StatusTampered (7A) | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
-| StatusLowBattery (79) | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
+StatusActive (75) - indicates whether the Service is properly functioning
| bool | PR+EV | 0 | 1 | - NOT_FUNCTIONING (0)
- FUNCTIONING (1) :heavy_check_mark:
|
+StatusFault (77) - indicates whether the Service has a fault
| uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
+StatusTampered (7A) - indicates whether the Service has been tampered with
| uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
+StatusLowBattery (79) - indicates state of battery
| uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
CarbonMonoxideLevel (90) - measured in parts per million (ppm)
| float | PR+EV | 0 | 100 | 0 |
CarbonMonoxidePeakLevel (91) - measured in parts per million (ppm)
| float | PR+EV | 0 | 100 | 0 |
@@ -79,17 +79,17 @@
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
ContactSensorState (6A) :small_blue_diamond:- indictates if contact is detected (i.e. closed)
| uint8 | PR+EV | 0 | 1 | - DETECTED (0)
- NOT_DETECTED (1) :heavy_check_mark:
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| StatusActive (75) | bool | PR+EV | 0 | 1 | 1 |
-| StatusFault (77) | uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
-| StatusTampered (7A) | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
-| StatusLowBattery (79) | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
+StatusActive (75) - indicates whether the Service is properly functioning
| bool | PR+EV | 0 | 1 | - NOT_FUNCTIONING (0)
- FUNCTIONING (1) :heavy_check_mark:
|
+StatusFault (77) - indicates whether the Service has a fault
| uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
+StatusTampered (7A) - indicates whether the Service has been tampered with
| uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
+StatusLowBattery (79) - indicates state of battery
| uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
## Door (81)
Defines a motorized Door.
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
CurrentPosition (6D) :small_blue_diamond:- current position (as a percentage) from fully closed (0) to full open (100)
| uint8 | PR+EV | 0 | 100 | 0 |
-| TargetPosition (7C) :small_blue_diamond: | uint8 | PW+PR+EV | 0 | 100 | 0 |
+TargetPosition (7C) :small_blue_diamond:- indicates target position (as a percentage) from fully closed (0) to full open (100)
| uint8 | PW+PR+EV | 0 | 100 | 0 |
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
ObstructionDetected (24) - indicates if obstruction is detected
| bool | PR+EV | 0 | 1 | - NOT_DETECTED (0) :heavy_check_mark:
- DETECTED (1)
|
@@ -97,7 +97,7 @@
## Doorbell (121)
Defines a Doorbell. Can be used on a standalone basis or in conjunction with a LockMechanism Service.
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
-| ProgrammableSwitchEvent (73) :small_blue_diamond: | uint8 | PR+EV+NV | 0 | 2 | - SINGLE_PRESS (0) :heavy_check_mark:
- DOUBLE_PRESS (1)
- LONG_PRESS (2)
|
+ProgrammableSwitchEvent (73) :small_blue_diamond:- specifies type of button press
| uint8 | PR+EV+NV | 0 | 2 | - SINGLE_PRESS (0) :heavy_check_mark:
- DOUBLE_PRESS (1)
- LONG_PRESS (2)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
@@ -107,10 +107,10 @@
Active (B0) :small_blue_diamond:- indicates if the Service is active/on
| uint8 | PW+PR+EV | 0 | 1 | - INACTIVE (0) :heavy_check_mark:
- ACTIVE (1)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
CurrentFanState (AF) - indicates current state of a fan
| uint8 | PR+EV | 0 | 2 | - INACTIVE (0)
- IDLE (1) :heavy_check_mark:
- BLOWING (2)
|
-| TargetFanState (BF) | uint8 | PW+PR+EV | 0 | 1 | - MANUAL (0)
- AUTO (1) :heavy_check_mark:
|
-| RotationDirection (28) | int | PR+PW+EV | 0 | 1 | - CLOCKWISE (0) :heavy_check_mark:
- COUNTERCLOCKWISE (1)
|
-| RotationSpeed (29) | float | PR+PW+EV | 0 | 100 | 0 |
-| SwingMode (B6) | uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0) :heavy_check_mark:
- SWING_ENABLED (1)
|
+TargetFanState (BF) - indicates desired state of fan
| uint8 | PW+PR+EV | 0 | 1 | - MANUAL (0)
- AUTO (1) :heavy_check_mark:
|
+RotationDirection (28) - indicates the rotation direction of a fan
| int | PR+PW+EV | 0 | 1 | - CLOCKWISE (0) :heavy_check_mark:
- COUNTERCLOCKWISE (1)
|
+| RotationSpeed (29) | float | PR+PW+EV | 0 | 100 | 0 |
+SwingMode (B6) - indicates whether swing-nmode is enabled
| uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0) :heavy_check_mark:
- SWING_ENABLED (1)
|
LockPhysicalControls (A7) - indicates if local control lock is enabled
| uint8 | PW+PR+EV | 0 | 1 | - CONTROL_LOCK_DISABLED (0) :heavy_check_mark:
- CONTROL_LOCK_ENABLED (1)
|
@@ -118,7 +118,7 @@
Defines the master control for a multi-Valve appliance. Linked Services: Valve (at least one required), and HeaterCooler (optional).
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
Active (B0) :small_blue_diamond:- indicates if the Service is active/on
| uint8 | PW+PR+EV | 0 | 1 | - INACTIVE (0) :heavy_check_mark:
- ACTIVE (1)
|
-| StatusFault (77) | uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
+StatusFault (77) - indicates whether the Service has a fault
| uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
@@ -128,19 +128,19 @@
FilterChangeIndication (AC) :small_blue_diamond:- indicates state of filter
| uint8 | PR+EV | 0 | 1 | - NO_CHANGE_NEEDED (0) :heavy_check_mark:
- CHANGE_NEEDED (1)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
FilterLifeLevel (AB) - measures as a percentage of remaining life
| float | PR+EV | 0 | 100 | 0 |
-| ResetFilterIndication (AD) | uint8 | PW | 1 | 1 | 0 |
+ResetFilterIndication (AD) - the Home App sets this to RESET_FILTER when it wants to reset the FilterChangeIndication
| uint8 | PW | 0 | 1 | - UNUSED (0) :heavy_check_mark:
- RESET_FILTER (1)
|
## GarageDoorOpener (41)
Defines a motorized Garage Door Opener.
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
CurrentDoorState (E) :small_blue_diamond:- indicates current state of a door
| uint8 | PR+EV | 0 | 4 | - OPEN (0)
- CLOSED (1) :heavy_check_mark:
- OPENING (2)
- CLOSING (3)
- STOPPED (4)
|
-| TargetDoorState (32) :small_blue_diamond: | uint8 | PW+PR+EV | 0 | 1 | - OPEN (0)
- CLOSED (1) :heavy_check_mark:
|
+TargetDoorState (32) :small_blue_diamond:- indicates desires state of door
| uint8 | PW+PR+EV | 0 | 1 | - OPEN (0)
- CLOSED (1) :heavy_check_mark:
|
ObstructionDetected (24) :small_blue_diamond:- indicates if obstruction is detected
| bool | PR+EV | 0 | 1 | - NOT_DETECTED (0) :heavy_check_mark:
- DETECTED (1)
|
LockCurrentState (1D) - indictates state of a lock
| uint8 | PR+EV | 0 | 3 | - UNLOCKED (0) :heavy_check_mark:
- LOCKED (1)
- JAMMED (2)
- UNKNOWN (3)
|
LockTargetState (1E) - indicates desired state of lock
| uint8 | PW+PR+EV | 0 | 1 | - UNLOCK (0) :heavy_check_mark:
- LOCK (1)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| Version (37) :small_blue_diamond: | string | PR | - | - | "1.0.0" |
+| Version (37) :small_blue_diamond: | string | PR | - | - | "1.0.0" |
## HeaterCooler (BC)
@@ -149,11 +149,11 @@
Active (B0) :small_blue_diamond:- indicates if the Service is active/on
| uint8 | PW+PR+EV | 0 | 1 | - INACTIVE (0) :heavy_check_mark:
- ACTIVE (1)
|
CurrentTemperature (11) :small_blue_diamond:- current temperature measured in Celsius
| float | PR+EV | 0 | 100 | 0 |
CurrentHeaterCoolerState (B1) :small_blue_diamond:- indicates whether appliance is currently heating, cooling, idle, or off
| uint8 | PR+EV | 0 | 3 | - INACTIVE (0)
- IDLE (1) :heavy_check_mark:
- HEATING (2)
- COOLING (3)
|
-| TargetHeaterCoolerState (B2) :small_blue_diamond: | uint8 | PW+PR+EV | 0 | 2 | - AUTO (0) :heavy_check_mark:
- HEAT (1)
- COOL (2)
|
+TargetHeaterCoolerState (B2) :small_blue_diamond:- indicates desired state of heater/cooler
| uint8 | PW+PR+EV | 0 | 2 | - AUTO (0) :heavy_check_mark:
- HEAT (1)
- COOL (2)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| RotationSpeed (29) | float | PR+PW+EV | 0 | 100 | 0 |
-| TemperatureDisplayUnits (36) | uint8 | PW+PR+EV | 0 | 1 | - CELSIUS (0) :heavy_check_mark:
- FAHRENHEIT (1)
|
-| SwingMode (B6) | uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0) :heavy_check_mark:
- SWING_ENABLED (1)
|
+| RotationSpeed (29) | float | PR+PW+EV | 0 | 100 | 0 |
+TemperatureDisplayUnits (36) - indicates the desired units to display the temperature on the device itself (has no effect on Home App)
| uint8 | PW+PR+EV | 0 | 1 | - CELSIUS (0) :heavy_check_mark:
- FAHRENHEIT (1)
|
+SwingMode (B6) - indicates whether swing-nmode is enabled
| uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0) :heavy_check_mark:
- SWING_ENABLED (1)
|
CoolingThresholdTemperature (D) - cooling turns on when temperature (in Celsius) rises above this threshold
| float | PR+PW+EV | 10 | 35 | 10 |
HeatingThresholdTemperature (12) - heating turns on when temperature (in Celsius) falls below this threshold
| float | PR+PW+EV | 0 | 25 | 16 |
LockPhysicalControls (A7) - indicates if local control lock is enabled
| uint8 | PW+PR+EV | 0 | 1 | - CONTROL_LOCK_DISABLED (0) :heavy_check_mark:
- CONTROL_LOCK_ENABLED (1)
|
@@ -163,27 +163,27 @@
Defines a Humidifer, Dehumidifier, or combined Humidifer/Dehumidifier. Can be used with a separate Fan Service and/or Slat Service to extend functionality.
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
Active (B0) :small_blue_diamond:- indicates if the Service is active/on
| uint8 | PW+PR+EV | 0 | 1 | - INACTIVE (0) :heavy_check_mark:
- ACTIVE (1)
|
-CurrentRelativeHumidity (10) :small_blue_diamond:- current humidity measured as a percentage
| float | PR+EV | 0 | 100 | 0 |
+CurrentRelativeHumidity (10) :small_blue_diamond:- current humidity measured as a percentage
| float | PR+EV | 0 | 100 | 0 |
CurrentHumidifierDehumidifierState (B3) :small_blue_diamond:- indicates current state of humidifier/dehumidifer
| uint8 | PR+EV | 0 | 3 | - INACTIVE (0)
- IDLE (1) :heavy_check_mark:
- HUMIDIFYING (2)
- DEHUMIDIFYING (3)
|
-| TargetHumidifierDehumidifierState (B4) :small_blue_diamond: | uint8 | PW+PR+EV | 0 | 2 | - AUTO (0) :heavy_check_mark:
- HUMIDIFY (1)
- DEHUMIDIFY (2)
|
+TargetHumidifierDehumidifierState (B4) :small_blue_diamond:- indicates desired state of humidifier/dehumidifier
| uint8 | PW+PR+EV | 0 | 2 | - AUTO (0) :heavy_check_mark:
- HUMIDIFY (1)
- DEHUMIDIFY (2)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| RelativeHumidityDehumidifierThreshold (C9) | float | PR+PW+EV | 0 | 100 | 50 |
-| RelativeHumidityHumidifierThreshold (CA) | float | PR+PW+EV | 0 | 100 | 50 |
-| RotationSpeed (29) | float | PR+PW+EV | 0 | 100 | 0 |
-| SwingMode (B6) | uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0) :heavy_check_mark:
- SWING_ENABLED (1)
|
-| WaterLevel (B5) | float | PR+EV | 0 | 100 | 0 |
+RelativeHumidityDehumidifierThreshold (C9) - dehumidfier turns on when humidity rises above this threshold
| float | PR+PW+EV | 0 | 100 | 50 |
+RelativeHumidityHumidifierThreshold (CA) - humidfier turns on when humidity falls below this threshold
| float | PR+PW+EV | 0 | 100 | 50 |
+| RotationSpeed (29) | float | PR+PW+EV | 0 | 100 | 0 |
+SwingMode (B6) - indicates whether swing-nmode is enabled
| uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0) :heavy_check_mark:
- SWING_ENABLED (1)
|
+| WaterLevel (B5) | float | PR+EV | 0 | 100 | 0 |
LockPhysicalControls (A7) - indicates if local control lock is enabled
| uint8 | PW+PR+EV | 0 | 1 | - CONTROL_LOCK_DISABLED (0) :heavy_check_mark:
- CONTROL_LOCK_ENABLED (1)
|
## HumiditySensor (82)
Defines a Humidity Sensor.
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
-CurrentRelativeHumidity (10) :small_blue_diamond:- current humidity measured as a percentage
| float | PR+EV | 0 | 100 | 0 |
+CurrentRelativeHumidity (10) :small_blue_diamond:- current humidity measured as a percentage
| float | PR+EV | 0 | 100 | 0 |
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| StatusActive (75) | bool | PR+EV | 0 | 1 | 1 |
-| StatusFault (77) | uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
-| StatusTampered (7A) | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
-| StatusLowBattery (79) | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
+StatusActive (75) - indicates whether the Service is properly functioning
| bool | PR+EV | 0 | 1 | - NOT_FUNCTIONING (0)
- FUNCTIONING (1) :heavy_check_mark:
|
+StatusFault (77) - indicates whether the Service has a fault
| uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
+StatusTampered (7A) - indicates whether the Service has been tampered with
| uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
+StatusLowBattery (79) - indicates state of battery
| uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
## InputSource (D9)
@@ -200,10 +200,10 @@
Defines an Irrigation System. Linked Services: Valve Service (at least one required).
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
Active (B0) :small_blue_diamond:- indicates if the Service is active/on
| uint8 | PW+PR+EV | 0 | 1 | - INACTIVE (0) :heavy_check_mark:
- ACTIVE (1)
|
-| ProgramMode (D1) :small_blue_diamond: | uint8 | PR+EV | 0 | 2 | - NONE (0) :heavy_check_mark:
- SCHEDULED (1)
- SCHEDULE_OVERRIDEN (2)
|
+ProgramMode (D1) :small_blue_diamond:- indicates if pre-scheduled program is running
| uint8 | PR+EV | 0 | 2 | - NONE (0) :heavy_check_mark:
- SCHEDULED (1)
- SCHEDULE_OVERRIDEN (2)
|
InUse (D2) :small_blue_diamond:- if Service is set to active, this indictes whether it is currently in use
| uint8 | PR+EV | 0 | 1 | - NOT_IN_USE (0) :heavy_check_mark:
- IN_USE (1)
|
-| RemainingDuration (D4) | uint32 | PR+EV | 0 | 3600 | 60 |
-| StatusFault (77) | uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
+RemainingDuration (D4) - duration (in seconds) remaining for Service to be active/on
| uint32 | PR+EV | 0 | 3600 | 60 |
+StatusFault (77) - indicates whether the Service has a fault
| uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
## LeakSensor (83)
@@ -211,10 +211,10 @@
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
LeakDetected (70) :small_blue_diamond:- indictates if a leak is detected
| uint8 | PR+EV | 0 | 1 | - NOT_DETECTED (0) :heavy_check_mark:
- DETECTED (1)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| StatusActive (75) | bool | PR+EV | 0 | 1 | 1 |
-| StatusFault (77) | uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
-| StatusTampered (7A) | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
-| StatusLowBattery (79) | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
+StatusActive (75) - indicates whether the Service is properly functioning
| bool | PR+EV | 0 | 1 | - NOT_FUNCTIONING (0)
- FUNCTIONING (1) :heavy_check_mark:
|
+StatusFault (77) - indicates whether the Service has a fault
| uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
+StatusTampered (7A) - indicates whether the Service has been tampered with
| uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
+StatusLowBattery (79) - indicates state of battery
| uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
## LightBulb (43)
@@ -224,7 +224,7 @@
| Brightness (8) | int | PR+PW+EV | 0 | 100 | 0 |
Hue (13) - color (in degrees) from red (0) to green (120) to blue (240) and back to red (360)
| float | PR+PW+EV | 0 | 360 | 0 |
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| Saturation (2F) | float | PR+PW+EV | 0 | 100 | 0 |
+Saturation (2F) - color saturation, measured as a percentage
| float | PR+PW+EV | 0 | 100 | 0 |
ColorTemperature (CE) - measured in inverse megaKelvin (= 1,000,000 / Kelvin)
| uint32 | PR+PW+EV | 140 | 500 | 200 |
@@ -233,10 +233,10 @@
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
CurrentAmbientLightLevel (6B) :small_blue_diamond:- measured in Lux (lumens/m2
| float | PR+EV | 0.0001 | 100000 | 1 |
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| StatusActive (75) | bool | PR+EV | 0 | 1 | 1 |
-| StatusFault (77) | uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
-| StatusTampered (7A) | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
-| StatusLowBattery (79) | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
+StatusActive (75) - indicates whether the Service is properly functioning
| bool | PR+EV | 0 | 1 | - NOT_FUNCTIONING (0)
- FUNCTIONING (1) :heavy_check_mark:
|
+StatusFault (77) - indicates whether the Service has a fault
| uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
+StatusTampered (7A) - indicates whether the Service has been tampered with
| uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
+StatusLowBattery (79) - indicates state of battery
| uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
## LockMechanism (45)
@@ -247,7 +247,7 @@
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
| Mute (11A) :small_blue_diamond: | bool | PW+PR+EV | 0 | 1 | - OFF (0) :heavy_check_mark:
- ON (1)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| Volume (119) | uint8 | PW+PR+EV | 0 | 100 | 0 |
+| Volume (119) | uint8 | PW+PR+EV | 0 | 100 | 0 |
## MotionSensor (85)
@@ -255,10 +255,10 @@
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
MotionDetected (22) :small_blue_diamond:- indicates if motion is detected
| bool | PR+EV | 0 | 1 | - NOT_DETECTED (0) :heavy_check_mark:
- DETECTED (1)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| StatusActive (75) | bool | PR+EV | 0 | 1 | 1 |
-| StatusFault (77) | uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
-| StatusTampered (7A) | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
-| StatusLowBattery (79) | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
+StatusActive (75) - indicates whether the Service is properly functioning
| bool | PR+EV | 0 | 1 | - NOT_FUNCTIONING (0)
- FUNCTIONING (1) :heavy_check_mark:
|
+StatusFault (77) - indicates whether the Service has a fault
| uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
+StatusTampered (7A) - indicates whether the Service has been tampered with
| uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
+StatusLowBattery (79) - indicates state of battery
| uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
## OccupancySensor (86)
@@ -266,10 +266,10 @@
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
OccupancyDetected (71) :small_blue_diamond:- indicates if occupanccy is detected
| uint8 | PR+EV | 0 | 1 | - NOT_DETECTED (0) :heavy_check_mark:
- DETECTED (1)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| StatusActive (75) | bool | PR+EV | 0 | 1 | 1 |
-| StatusFault (77) | uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
-| StatusTampered (7A) | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
-| StatusLowBattery (79) | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
+StatusActive (75) - indicates whether the Service is properly functioning
| bool | PR+EV | 0 | 1 | - NOT_FUNCTIONING (0)
- FUNCTIONING (1) :heavy_check_mark:
|
+StatusFault (77) - indicates whether the Service has a fault
| uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
+StatusTampered (7A) - indicates whether the Service has been tampered with
| uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
+StatusLowBattery (79) - indicates state of battery
| uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
## Outlet (47)
@@ -283,45 +283,46 @@
## SecuritySystem (7E)
Defines a Security System.
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
-| SecuritySystemCurrentState (66) :small_blue_diamond: | uint8 | PR+EV | 0 | 4 | - ARMED_STAY (0)
- ARMED_AWAY (1)
- ARMED_NIGHT (2)
- DISARMED (3) :heavy_check_mark:
- ALARM_TRIGGERED (4)
|
-| SecuritySystemTargetState (67) :small_blue_diamond: | uint8 | PW+PR+EV | 0 | 3 | - ARM_STAY (0)
- ARM_AWAY (1)
- ARM_NIGHT (2)
- DISARM (3) :heavy_check_mark:
|
+SecuritySystemCurrentState (66) :small_blue_diamond:- indicates current state of the security system
| uint8 | PR+EV | 0 | 4 | - ARMED_STAY (0)
- ARMED_AWAY (1)
- ARMED_NIGHT (2)
- DISARMED (3) :heavy_check_mark:
- ALARM_TRIGGERED (4)
|
+SecuritySystemTargetState (67) :small_blue_diamond:- indicates desired state of the security system
| uint8 | PW+PR+EV | 0 | 3 | - ARM_STAY (0)
- ARM_AWAY (1)
- ARM_NIGHT (2)
- DISARM (3) :heavy_check_mark:
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| SecuritySystemAlarmType (8E) | uint8 | PR+EV | 0 | 1 | - KNOWN (0) :heavy_check_mark:
- UNKNOWN (1)
|
-| StatusFault (77) | uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
-| StatusTampered (7A) | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
-| ServiceLabelNamespace (CD) :small_blue_diamond: | uint8 | PR | 0 | 1 | - DOTS (0)
- NUMERALS (1) :heavy_check_mark:
|
+SecuritySystemAlarmType (8E) - indicates whether alarm was triggered for known reason
| uint8 | PR+EV | 0 | 1 | - KNOWN (0) :heavy_check_mark:
- UNKNOWN (1)
|
+StatusFault (77) - indicates whether the Service has a fault
| uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
+StatusTampered (7A) - indicates whether the Service has been tampered with
| uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
+| ServiceLabelNamespace (CD) :small_blue_diamond: | uint8 | PR | 0 | 1 | - DOTS (0)
- NUMERALS (1) :heavy_check_mark:
|
## Slat (B9)
Defines a motorized ventilation Slat(s).
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
CurrentSlatState (AA) :small_blue_diamond:- indicates current state of slats
| uint8 | PR+EV | 0 | 2 | - FIXED (0) :heavy_check_mark:
- JAMMED (1)
- SWINGING (2)
|
-| SlatType (C0) :small_blue_diamond: | uint8 | PR | 0 | 1 | - HORIZONTAL (0) :heavy_check_mark:
- VERTICAL (1)
|
+SlatType (C0) :small_blue_diamond:- indicates the direction of a slat or group of slats
| uint8 | PR | 0 | 1 | - HORIZONTAL (0) :heavy_check_mark:
- VERTICAL (1)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| SwingMode (B6) | uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0) :heavy_check_mark:
- SWING_ENABLED (1)
|
-CurrentTiltAngle (C1) - angle (in degrees) of slats from fully up or left (-90) to fully open (0) to fully down or right (90)
| int | PR+EV | -90 | 90 | 0 |
-| TargetTiltAngle (C2) | int | PW+PR+EV | -90 | 90 | 0 |
+SwingMode (B6) - indicates whether swing-nmode is enabled
| uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0) :heavy_check_mark:
- SWING_ENABLED (1)
|
+CurrentTiltAngle (C1) - current angle (in degrees) of slats from fully up or left (-90) to fully open (0) to fully down or right (90)
| int | PR+EV | -90 | 90 | 0 |
+TargetTiltAngle (C2) - indicated desired angle (in degrees) of slats from fully up or left (-90) to fully open (0) to fully down or right (90)
| int | PW+PR+EV | -90 | 90 | 0 |
## SmokeSensor (87)
Defines a Smoke Sensor.
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
-| SmokeDetected (76) :small_blue_diamond: | uint8 | PR+EV | 0 | 1 | - NOT_DETECTED (0) :heavy_check_mark:
- DETECTED (1)
|
+SmokeDetected (76) :small_blue_diamond:- indicates if smoke is detected
| uint8 | PR+EV | 0 | 1 | - NOT_DETECTED (0) :heavy_check_mark:
- DETECTED (1)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| StatusActive (75) | bool | PR+EV | 0 | 1 | 1 |
-| StatusFault (77) | uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
-| StatusTampered (7A) | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
-| StatusLowBattery (79) | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
+StatusActive (75) - indicates whether the Service is properly functioning
| bool | PR+EV | 0 | 1 | - NOT_FUNCTIONING (0)
- FUNCTIONING (1) :heavy_check_mark:
|
+StatusFault (77) - indicates whether the Service has a fault
| uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
+StatusTampered (7A) - indicates whether the Service has been tampered with
| uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
+StatusLowBattery (79) - indicates state of battery
| uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
| Mute (11A) :small_blue_diamond: | bool | PW+PR+EV | 0 | 1 | - OFF (0) :heavy_check_mark:
- ON (1)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| Volume (119) | uint8 | PW+PR+EV | 0 | 100 | 0 |
+| Volume (119) | uint8 | PW+PR+EV | 0 | 100 | 0 |
## StatelessProgrammableSwitch (89)
Defines a "Stateless" Programmable Switch that can be used to trigger actions in the Home App.
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
-| ProgrammableSwitchEvent (73) :small_blue_diamond: | uint8 | PR+EV+NV | 0 | 2 | - SINGLE_PRESS (0) :heavy_check_mark:
- DOUBLE_PRESS (1)
- LONG_PRESS (2)
|
+ProgrammableSwitchEvent (73) :small_blue_diamond:- specifies type of button press
| uint8 | PR+EV+NV | 0 | 2 | - SINGLE_PRESS (0) :heavy_check_mark:
- DOUBLE_PRESS (1)
- LONG_PRESS (2)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
+ServiceLabelIndex (CB) - numerical index used to distinguish multiple copies of the same Service within an Accessory
| uint8 | PR | 1 | 255 | 1 |
## Switch (49)
@@ -353,25 +354,25 @@
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
CurrentTemperature (11) :small_blue_diamond:- current temperature measured in Celsius
| float | PR+EV | 0 | 100 | 0 |
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| StatusActive (75) | bool | PR+EV | 0 | 1 | 1 |
-| StatusFault (77) | uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
-| StatusTampered (7A) | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
-| StatusLowBattery (79) | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
+StatusActive (75) - indicates whether the Service is properly functioning
| bool | PR+EV | 0 | 1 | - NOT_FUNCTIONING (0)
- FUNCTIONING (1) :heavy_check_mark:
|
+StatusFault (77) - indicates whether the Service has a fault
| uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
+StatusTampered (7A) - indicates whether the Service has been tampered with
| uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0) :heavy_check_mark:
- TAMPERED (1)
|
+StatusLowBattery (79) - indicates state of battery
| uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0) :heavy_check_mark:
- LOW_BATTERY (1)
|
## Thermostat (4A)
Defines a Thermostat used to control a furnace, air conditioner, or both.
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
CurrentHeatingCoolingState (F) :small_blue_diamond:- indicates whether appliance is currently heating, cooling, or just idle
| uint8 | PR+EV | 0 | 2 | - IDLE (0) :heavy_check_mark:
- HEATING (1)
- COOLING (2)
|
-| TargetHeatingCoolingState (33) :small_blue_diamond: | uint8 | PW+PR+EV | 0 | 3 | - OFF (0) :heavy_check_mark:
- HEAT (1)
- COOL (2)
- AUTO (3)
|
+TargetHeatingCoolingState (33) :small_blue_diamond:- indicates desired state of appliance
| uint8 | PW+PR+EV | 0 | 3 | - OFF (0) :heavy_check_mark:
- HEAT (1)
- COOL (2)
- AUTO (3)
|
CurrentTemperature (11) :small_blue_diamond:- current temperature measured in Celsius
| float | PR+EV | 0 | 100 | 0 |
-| TargetTemperature (35) :small_blue_diamond: | float | PW+PR+EV | 10 | 38 | 16 |
-| TemperatureDisplayUnits (36) :small_blue_diamond: | uint8 | PW+PR+EV | 0 | 1 | - CELSIUS (0) :heavy_check_mark:
- FAHRENHEIT (1)
|
+TargetTemperature (35) :small_blue_diamond:- indicates desired temperature measure in Celsius
| float | PW+PR+EV | 10 | 38 | 16 |
+TemperatureDisplayUnits (36) :small_blue_diamond:- indicates the desired units to display the temperature on the device itself (has no effect on Home App)
| uint8 | PW+PR+EV | 0 | 1 | - CELSIUS (0) :heavy_check_mark:
- FAHRENHEIT (1)
|
CoolingThresholdTemperature (D) - cooling turns on when temperature (in Celsius) rises above this threshold
| float | PR+PW+EV | 10 | 35 | 10 |
-CurrentRelativeHumidity (10) - current humidity measured as a percentage
| float | PR+EV | 0 | 100 | 0 |
+CurrentRelativeHumidity (10) - current humidity measured as a percentage
| float | PR+EV | 0 | 100 | 0 |
HeatingThresholdTemperature (12) - heating turns on when temperature (in Celsius) falls below this threshold
| float | PR+PW+EV | 0 | 25 | 16 |
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
-| TargetRelativeHumidity (34) | float | PW+PR+EV | 0 | 100 | 0 |
+TargetRelativeHumidity (34) - indicates desired humidity measured as a percentage
| float | PW+PR+EV | 0 | 100 | 0 |
## Valve (D0)
@@ -379,11 +380,12 @@
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
Active (B0) :small_blue_diamond:- indicates if the Service is active/on
| uint8 | PW+PR+EV | 0 | 1 | - INACTIVE (0) :heavy_check_mark:
- ACTIVE (1)
|
InUse (D2) :small_blue_diamond:- if Service is set to active, this indictes whether it is currently in use
| uint8 | PR+EV | 0 | 1 | - NOT_IN_USE (0) :heavy_check_mark:
- IN_USE (1)
|
-| ValveType (D5) :small_blue_diamond: | uint8 | PR+EV | 0 | 3 | 0 |
-| SetDuration (D3) | uint32 | PW+PR+EV | 0 | 3600 | 60 |
-| RemainingDuration (D4) | uint32 | PR+EV | 0 | 3600 | 60 |
+ValveType (D5) :small_blue_diamond:- indicates the type of valve
| uint8 | PR+EV | 0 | 3 | - GENERIC (0) :heavy_check_mark:
- IRRIGATION (1)
- SHOWER_HEAD (2)
- FAUCET (3)
|
+SetDuration (D3) - specifies the duration (in seconds) for a Service to remain on once activated
| uint32 | PW+PR+EV | 0 | 3600 | 60 |
+RemainingDuration (D4) - duration (in seconds) remaining for Service to be active/on
| uint32 | PR+EV | 0 | 3600 | 60 |
IsConfigured (D6) - indicates if a predefined Service has been configured
| uint8 | PR+EV | 0 | 1 | - NOT_CONFIGURED (0) :heavy_check_mark:
- CONFIGURED (1)
|
-| StatusFault (77) | uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
+ServiceLabelIndex (CB) - numerical index used to distinguish multiple copies of the same Service within an Accessory
| uint8 | PR | 1 | 255 | 1 |
+StatusFault (77) - indicates whether the Service has a fault
| uint8 | PR+EV | 0 | 1 | - NO_FAULT (0) :heavy_check_mark:
- FAULT (1)
|
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
@@ -391,7 +393,7 @@
Defines a motorized Window.
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
CurrentPosition (6D) :small_blue_diamond:- current position (as a percentage) from fully closed (0) to full open (100)
| uint8 | PR+EV | 0 | 100 | 0 |
-| TargetPosition (7C) :small_blue_diamond: | uint8 | PW+PR+EV | 0 | 100 | 0 |
+TargetPosition (7C) :small_blue_diamond:- indicates target position (as a percentage) from fully closed (0) to full open (100)
| uint8 | PW+PR+EV | 0 | 100 | 0 |
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
ObstructionDetected (24) - indicates if obstruction is detected
| bool | PR+EV | 0 | 1 | - NOT_DETECTED (0) :heavy_check_mark:
- DETECTED (1)
|
@@ -399,13 +401,13 @@
## WindowCovering (8C)
Defines a motorized Window Shade, Screen, Awning, etc.
| Characteristic | Format | Perms | Min | Max | Constants/Defaults |
-| TargetPosition (7C) :small_blue_diamond: | uint8 | PW+PR+EV | 0 | 100 | 0 |
+TargetPosition (7C) :small_blue_diamond:- indicates target position (as a percentage) from fully closed (0) to full open (100)
| uint8 | PW+PR+EV | 0 | 100 | 0 |
CurrentPosition (6D) :small_blue_diamond:- current position (as a percentage) from fully closed (0) to full open (100)
| uint8 | PR+EV | 0 | 100 | 0 |
Name (23) - default name of a Service used only during initial pairing
| string | PR | - | - | "unnamed" |
CurrentHorizontalTiltAngle (6C) - current angle (in degrees) of slats from fully up (-90) to fully open (0) to fully down (90)
| int | PR+EV | -90 | 90 | 0 |
-| TargetHorizontalTiltAngle (7B) | int | PW+PR+EV | -90 | 90 | 0 |
+TargetHorizontalTiltAngle (7B) - indicates desired angle (in degrees) of slats from fully up (-90) to fully open (0) to fully down (90)
| int | PW+PR+EV | -90 | 90 | 0 |
CurrentVerticalTiltAngle (6E) - current angle (in degrees) of slats from fully left (-90) to fully open (0) to fully right (90)
| int | PR+EV | -90 | 90 | 0 |
-| TargetVerticalTiltAngle (7D) | int | PW+PR+EV | -90 | 90 | 0 |
+TargetVerticalTiltAngle (7D) - indicates desired angle (in degrees) of slats from fully left (-90) to fully open (0) to fully right (90)
| int | PW+PR+EV | -90 | 90 | 0 |
ObstructionDetected (24) - indicates if obstruction is detected
| bool | PR+EV | 0 | 1 | - NOT_DETECTED (0) :heavy_check_mark:
- DETECTED (1)
|