diff --git a/src/Span.h b/src/Span.h
index d5a8bcf..1d3b922 100644
--- a/src/Span.h
+++ b/src/Span.h
@@ -421,72 +421,72 @@ namespace Service {
namespace Characteristic {
- CREATE_CHAR(uint32_t,AccessoryFlags,1,1,1); // This is not really used anywhere 1/3
- CREATE_CHAR(uint8_t,Active,0,0,1,INACTIVE,ACTIVE);
- CREATE_CHAR(uint32_t,ActiveIdentifier,0,0,255);
- CREATE_CHAR(uint8_t,AirQuality,0,0,5,UNKNOWN,EXCELLENT,GOOD,FAIR,INFERIOR,POOR);
- CREATE_CHAR(uint8_t,BatteryLevel,0,0,100);
- CREATE_CHAR(int,Brightness,0,0,100);
- CREATE_CHAR(double,CarbonMonoxideLevel,0,0,100);
- CREATE_CHAR(double,CarbonMonoxidePeakLevel,0,0,100);
- CREATE_CHAR(uint8_t,CarbonMonoxideDetected,0,0,1,NORMAL,ABNORMAL);
- CREATE_CHAR(double,CarbonDioxideLevel,0,0,100000);
- CREATE_CHAR(double,CarbonDioxidePeakLevel,0,0,100000);
- CREATE_CHAR(uint8_t,CarbonDioxideDetected,0,0,1,NORMAL,ABNORMAL);
- CREATE_CHAR(uint8_t,ChargingState,0,0,2,NOT_CHARGING,CHARGING,NOT_CHARGEABLE);
- CREATE_CHAR(uint8_t,ClosedCaptions,0,0,1);
- CREATE_CHAR(double,CoolingThresholdTemperature,10,10,35);
- CREATE_CHAR(uint32_t,ColorTemperature,200,140,500);
- CREATE_CHAR(uint8_t,ContactSensorState,1,0,1,DETECTED,NOT_DETECTED);
+ CREATE_CHAR(uint32_t,AccessoryFlags,1,1,1); // not applicable for HomeSpan
+ CREATE_CHAR(uint8_t,Active,0,0,1,INACTIVE,ACTIVE); // indicates if the Service is active/on
+ CREATE_CHAR(uint32_t,ActiveIdentifier,0,0,255); // the Identifier of the current Input Source
+ CREATE_CHAR(uint8_t,AirQuality,0,0,5,UNKNOWN,EXCELLENT,GOOD,FAIR,INFERIOR,POOR); // a subjective description
+ CREATE_CHAR(uint8_t,BatteryLevel,0,0,100); // measured as a percentage
+ CREATE_CHAR(int,Brightness,0,0,100); // measured as a percentage
+ CREATE_CHAR(double,CarbonMonoxideLevel,0,0,100); // measured in parts per million (ppm)
+ CREATE_CHAR(double,CarbonMonoxidePeakLevel,0,0,100); // measured in parts per million (ppm)
+ CREATE_CHAR(uint8_t,CarbonMonoxideDetected,0,0,1,NORMAL,ABNORMAL); // indicates if abnormal level is detected
+ CREATE_CHAR(double,CarbonDioxideLevel,0,0,100000); // measured on parts per million (ppm)
+ CREATE_CHAR(double,CarbonDioxidePeakLevel,0,0,100000); // measured in parts per million (ppm)
+ CREATE_CHAR(uint8_t,CarbonDioxideDetected,0,0,1,NORMAL,ABNORMAL); // indicates if abnormal level is detected
+ CREATE_CHAR(uint8_t,ChargingState,0,0,2,NOT_CHARGING,CHARGING,NOT_CHARGEABLE); // indicates state of battery charging
+ CREATE_CHAR(uint8_t,ClosedCaptions,0,0,1); // unused by any Service
+ CREATE_CHAR(double,CoolingThresholdTemperature,10,10,35); // cooling turns on when temperature (in Celsius) rises above this threshold
+ CREATE_CHAR(uint32_t,ColorTemperature,200,140,500); // measured in inverse megaKelvin (= 1,000,000 / Kelvin)
+ CREATE_CHAR(uint8_t,ContactSensorState,1,0,1,DETECTED,NOT_DETECTED); // indictates if contact is detected (i.e. closed)
CREATE_CHAR(const char *,ConfiguredName,"unnamed",0,1);
- CREATE_CHAR(double,CurrentAmbientLightLevel,1,0.0001,100000);
- CREATE_CHAR(int,CurrentHorizontalTiltAngle,0,-90,90);
- CREATE_CHAR(uint8_t,CurrentAirPurifierState,1,0,2,INACTIVE,IDLE,PURIFYING);
- CREATE_CHAR(uint8_t,CurrentSlatState,0,0,2,FIXED,JAMMED,SWINGING);
- CREATE_CHAR(uint8_t,CurrentPosition,0,0,100);
- CREATE_CHAR(int,CurrentVerticalTiltAngle,0,-90,90);
+ CREATE_CHAR(double,CurrentAmbientLightLevel,1,0.0001,100000); // measured in Lux (lumens/m2
+ CREATE_CHAR(int,CurrentHorizontalTiltAngle,0,-90,90); // current angle (in degrees) of slats from fully up (-90) to fully open (0) to fully down (90)
+ CREATE_CHAR(uint8_t,CurrentAirPurifierState,1,0,2,INACTIVE,IDLE,PURIFYING); // indicates current state of air purification
+ CREATE_CHAR(uint8_t,CurrentSlatState,0,0,2,FIXED,JAMMED,SWINGING); // indicates current state of slats
+ CREATE_CHAR(uint8_t,CurrentPosition,0,0,100); // current position (as a percentage) from fully closed (0) to full open (100)
+ CREATE_CHAR(int,CurrentVerticalTiltAngle,0,-90,90); // current angle (in degrees) of slats from fully left (-90) to fully open (0) to fully right (90)
CREATE_CHAR(uint8_t,CurrentVisibilityState,0,0,1);
- CREATE_CHAR(uint8_t,CurrentHumidifierDehumidifierState,1,0,3,INACTIVE,IDLE,HUMIDIFYING,DEHUMIDIFYING);
- CREATE_CHAR(uint8_t,CurrentDoorState,1,0,4,OPEN,CLOSED,OPENING,CLOSING,STOPPED);
- CREATE_CHAR(uint8_t,CurrentFanState,1,0,2,INACTIVE,IDLE,BLOWING);
- CREATE_CHAR(uint8_t,CurrentHeatingCoolingState,0,0,2,OFF,HEATING,COOLING);
- CREATE_CHAR(uint8_t,CurrentHeaterCoolerState,1,0,3,INACTIVE,IDLE,HEATING,COOLING);
+ CREATE_CHAR(uint8_t,CurrentHumidifierDehumidifierState,1,0,3,INACTIVE,IDLE,HUMIDIFYING,DEHUMIDIFYING); // indicates current state of humidifier/dehumidifer
+ CREATE_CHAR(uint8_t,CurrentDoorState,1,0,4,OPEN,CLOSED,OPENING,CLOSING,STOPPED); // indicates current state of a door
+ CREATE_CHAR(uint8_t,CurrentFanState,1,0,2,INACTIVE,IDLE,BLOWING); // indicates current state of a fan
+ 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);
- CREATE_CHAR(double,CurrentTemperature,0,0,100);
- CREATE_CHAR(int,CurrentTiltAngle,0,-90,90);
- CREATE_CHAR(double,FilterLifeLevel,0,0,100);
- CREATE_CHAR(uint8_t,FilterChangeIndication,0,0,1,NO_CHANGE_NEEDED,CHANGE_NEEDED);
- CREATE_CHAR(const char *,FirmwareRevision,"1.0.0",0,1);
- CREATE_CHAR(const char *,HardwareRevision,"1.0.0",0,1);
- CREATE_CHAR(double,HeatingThresholdTemperature,16,0,25);
- CREATE_CHAR(boolean,HoldPosition,false,0,1);
- CREATE_CHAR(double,Hue,0,0,360);
- CREATE_CHAR(boolean,Identify,false,0,1);
+ 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(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
+ CREATE_CHAR(const char *,HardwareRevision,"1.0.0",0,1); // must be in form x[.y[.z]] - informational only
+ 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,false,0,1,IDLE,RUN_ID); // the Home App set 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);
- CREATE_CHAR(uint8_t,InUse,0,0,1,NOT_IN_USE,IN_USE);
- CREATE_CHAR(uint8_t,IsConfigured,0,0,1,NOT_CONFIGURED,CONFIGURED);
- CREATE_CHAR(uint8_t,LeakDetected,0,0,1,NOT_DETECTED,DETECTED);
- CREATE_CHAR(uint8_t,LockCurrentState,0,0,3,UNLOCKED,LOCKED,JAMMED,UNKNOWN);
- CREATE_CHAR(uint8_t,LockPhysicalControls,0,0,1,CONTROL_LOCK_DISABLED,CONTROL_LOCK_ENABLED);
- CREATE_CHAR(uint8_t,LockTargetState,0,0,1,UNLOCK,LOCK);
- CREATE_CHAR(const char *,Manufacturer,"HomeSpan",0,1);
- CREATE_CHAR(const char *,Model,"HomeSpan-ESP32",0,1);
- CREATE_CHAR(boolean,MotionDetected,false,0,1);
- CREATE_CHAR(boolean,Mute,false,0,1,OFF,ON);
- CREATE_CHAR(const char *,Name,"unnamed",0,1);
- CREATE_CHAR(double,NitrogenDioxideDensity,0,0,1000);
- CREATE_CHAR(boolean,ObstructionDetected,false,0,1);
- CREATE_CHAR(double,PM25Density,0,0,1000);
- CREATE_CHAR(uint8_t,OccupancyDetected,0,0,1,NOT_DETECTED,DETECTED);
- CREATE_CHAR(boolean,OutletInUse,false,0,1);
- CREATE_CHAR(boolean,On,false,0,1);
- CREATE_CHAR(double,OzoneDensity,0,0,1000);
+ CREATE_CHAR(uint8_t,InUse,0,0,1,NOT_IN_USE,IN_USE); // if Service is set to active, this indictes whether it is currently in use
+ CREATE_CHAR(uint8_t,IsConfigured,0,0,1,NOT_CONFIGURED,CONFIGURED); // indicates if a predefined Service has been configured
+ CREATE_CHAR(uint8_t,LeakDetected,0,0,1,NOT_DETECTED,DETECTED); // indictates if a leak is detected
+ CREATE_CHAR(uint8_t,LockCurrentState,0,0,3,UNLOCKED,LOCKED,JAMMED,UNKNOWN); // indictates state of a lock
+ CREATE_CHAR(uint8_t,LockPhysicalControls,0,0,1,CONTROL_LOCK_DISABLED,CONTROL_LOCK_ENABLED); // indicates if local control lock is enabled
+ CREATE_CHAR(uint8_t,LockTargetState,0,0,1,UNLOCK,LOCK); // indicates desired state of lock
+ CREATE_CHAR(const char *,Manufacturer,"HomeSpan",0,1); // any string - informational only
+ CREATE_CHAR(const char *,Model,"HomeSpan-ESP32",0,1); // any string - informational only
+ CREATE_CHAR(boolean,MotionDetected,false,0,1,NOT_DETECTED,DETECTED); // indicates if motion is detected
+ CREATE_CHAR(boolean,Mute,false,0,1,OFF,ON); // not used
+ CREATE_CHAR(const char *,Name,"unnamed",0,1); // default name of a Service used only during initial pairing
+ CREATE_CHAR(double,NitrogenDioxideDensity,0,0,1000); // measured in micrograms/m3
+ CREATE_CHAR(boolean,ObstructionDetected,false,0,1,NOT_DETECTED,DETECTED); // indicates if obstruction is detected
+ CREATE_CHAR(double,PM25Density,0,0,1000); // 2.5-micron particulate density, measured in micrograms/m3
+ CREATE_CHAR(uint8_t,OccupancyDetected,0,0,1,NOT_DETECTED,DETECTED); // indicates if occupanccy is detected
+ CREATE_CHAR(boolean,OutletInUse,false,0,1,NOT_IN_USE,IN_USE); // indicates if an appliance or light is plugged into the outlet, regardless of whether on or off
+ CREATE_CHAR(boolean,On,false,0,1,OFF,ON); // indicates if the Service is active/on
+ CREATE_CHAR(double,OzoneDensity,0,0,1000); // measured in micrograms/m3
CREATE_CHAR(uint8_t,PictureMode,0,0,13);
- CREATE_CHAR(double,PM10Density,0,0,1000);
- CREATE_CHAR(uint8_t,PositionState,2,0,2,GOING_TO_MINIMUM,GOING_TO_MAXIMUM,STOPPED);
+ CREATE_CHAR(double,PM10Density,0,0,1000); // 10-micron particulate density, measured in micrograms/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);
diff --git a/tools/test.md b/tools/test.md
index 64cc58c..e7cd705 100644
--- a/tools/test.md
+++ b/tools/test.md
@@ -1,42 +1,42 @@
## AccessoryInformation (3E)
Required Identification Information. For each Accessory in a HomeSpan device this must be included as the first Service.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| Identify | 14 | bool | PW | 0 | 1 | | |
| FirmwareRevision | 52 | string | PR+EV | - | - | | |
| Manufacturer | 20 | string | PR | - | - | | |
| Model | 21 | string | PR | - | - | | |
| Name | 23 | string | PR | - | - | | |
| SerialNumber | 30 | string | PR | - | - | | |
| HardwareRevision | 53 | string | PR | - | - | | |
+
| Identify | 14 | bool | PW | 0 | 1 | | the Home App set this to RUN_ID when it wants the device to run its identification routine |
| FirmwareRevision | 52 | string | PR+EV | - | - | | |
| Manufacturer | 20 | string | PR | - | - | | |
| Model | 21 | string | PR | - | - | | |
| Name | 23 | string | PR | - | - | | |
| SerialNumber | 30 | string | PR | - | - | | |
| HardwareRevision | 53 | string | PR | - | - | | |
## AirPurifier (BB)
Defines a basic Air Purifier with an optional fan. Optional Linked Services: FilterMaintenance, AirQualitySensor, Fan, and Slat
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| Active | B0 | uint8 | PW+PR+EV | 0 | 1 | | |
| CurrentAirPurifierState | A9 | uint8 | PR+EV | 0 | 2 | - INACTIVE (0)
- IDLE (1)
- PURIFYING (2)
| |
| TargetAirPurifierState | A8 | uint8 | PW+PR+EV | 0 | 1 | | |
| Name | 23 | string | PR | - | - | | |
| RotationSpeed | 29 | float | PR+PW+EV | 0 | 100 | | |
| SwingMode | B6 | uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0)
- SWING_ENABLED (1)
| |
| LockPhysicalControls | A7 | uint8 | PW+PR+EV | 0 | 1 | - CONTROL_LOCK_DISABLED (0)
- CONTROL_LOCK_ENABLED (1)
| |
+| Active | B0 | uint8 | PW+PR+EV | 0 | 1 | | indicates if the Service is active/on |
| CurrentAirPurifierState | A9 | uint8 | PR+EV | 0 | 2 | - INACTIVE (0)
- IDLE (1)
- PURIFYING (2)
| indicates current state of air purification |
| TargetAirPurifierState | A8 | uint8 | PW+PR+EV | 0 | 1 | | |
| Name | 23 | string | PR | - | - | | |
| RotationSpeed | 29 | float | PR+PW+EV | 0 | 100 | | |
| SwingMode | B6 | uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0)
- SWING_ENABLED (1)
| |
| LockPhysicalControls | A7 | uint8 | PW+PR+EV | 0 | 1 | - CONTROL_LOCK_DISABLED (0)
- CONTROL_LOCK_ENABLED (1)
| indicates if local control lock is enabled |
## AirQualitySensor (8D)
Defines an Air Quality Sensor.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| AirQuality | 95 | uint8 | PR+EV | 0 | 5 | - UNKNOWN (0)
- EXCELLENT (1)
- GOOD (2)
- FAIR (3)
- INFERIOR (4)
- POOR (5)
| |
| Name | 23 | string | PR | - | - | | |
| OzoneDensity | C3 | float | PR+EV | 0 | 1000 | | |
| NitrogenDioxideDensity | C4 | float | PR+EV | 0 | 1000 | | |
| SulphurDioxideDensity | C5 | float | PR+EV | 0 | 1000 | | |
| PM25Density | C6 | float | PR+EV | 0 | 1000 | | |
| PM10Density | C7 | float | PR+EV | 0 | 1000 | | |
| VOCDensity | C8 | float | PR+EV | 0 | 1000 | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
+| AirQuality | 95 | uint8 | PR+EV | 0 | 5 | - UNKNOWN (0)
- EXCELLENT (1)
- GOOD (2)
- FAIR (3)
- INFERIOR (4)
- POOR (5)
| a subjective description |
| Name | 23 | string | PR | - | - | | |
| OzoneDensity | C3 | float | PR+EV | 0 | 1000 | | measured in micrograms/m3 |
| NitrogenDioxideDensity | C4 | float | PR+EV | 0 | 1000 | | measured in micrograms/m3 |
| SulphurDioxideDensity | C5 | float | PR+EV | 0 | 1000 | | |
| PM25Density | C6 | float | PR+EV | 0 | 1000 | | 2.5-micron particulate density, measured in micrograms/m3 |
| PM10Density | C7 | float | PR+EV | 0 | 1000 | | 10-micron particulate density, measured in micrograms/m3 |
| VOCDensity | C8 | float | PR+EV | 0 | 1000 | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
## BatteryService (96)
Defines a standalone Battery Service.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| BatteryLevel | 68 | uint8 | PR+EV | 0 | 100 | | |
| ChargingState | 8F | uint8 | PR+EV | 0 | 2 | - NOT_CHARGING (0)
- CHARGING (1)
- NOT_CHARGEABLE (2)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
| Name | 23 | string | PR | - | - | | |
+| BatteryLevel | 68 | uint8 | PR+EV | 0 | 100 | | measured as a percentage |
| ChargingState | 8F | uint8 | PR+EV | 0 | 2 | - NOT_CHARGING (0)
- CHARGING (1)
- NOT_CHARGEABLE (2)
| indicates state of battery charging |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
| Name | 23 | string | PR | - | - | | |
## CarbonDioxideSensor (97)
Defines a Carbon Dioxide Sensor.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| CarbonDioxideDetected | 92 | uint8 | PR+EV | 0 | 1 | | |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
| CarbonDioxideLevel | 93 | float | PR+EV | 0 | 100000 | | |
| CarbonDioxidePeakLevel | 94 | float | PR+EV | 0 | 100000 | | |
+| CarbonDioxideDetected | 92 | uint8 | PR+EV | 0 | 1 | | indicates if abnormal level is detected |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
| CarbonDioxideLevel | 93 | float | PR+EV | 0 | 100000 | | measured on parts per million (ppm) |
| CarbonDioxidePeakLevel | 94 | float | PR+EV | 0 | 100000 | | measured in parts per million (ppm) |
## CarbonMonoxideSensor (7F)
Defines a Carbon Monoxide Sensor.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| CarbonMonoxideDetected | 69 | uint8 | PR+EV | 0 | 1 | | |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
| CarbonMonoxideLevel | 90 | float | PR+EV | 0 | 100 | | |
| CarbonMonoxidePeakLevel | 91 | float | PR+EV | 0 | 100 | | |
+| CarbonMonoxideDetected | 69 | uint8 | PR+EV | 0 | 1 | | indicates if abnormal level is detected |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
| CarbonMonoxideLevel | 90 | float | PR+EV | 0 | 100 | | measured in parts per million (ppm) |
| CarbonMonoxidePeakLevel | 91 | float | PR+EV | 0 | 100 | | measured in parts per million (ppm) |
## ContactSensor (80)
Defines a Contact Sensor.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| ContactSensorState | 6A | uint8 | PR+EV | 0 | 1 | - DETECTED (0)
- NOT_DETECTED (1)
| |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
+| ContactSensorState | 6A | uint8 | PR+EV | 0 | 1 | - DETECTED (0)
- NOT_DETECTED (1)
| indictates if contact is detected (i.e. closed) |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
## Door (81)
Defines a motorized Door.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| CurrentPosition | 6D | uint8 | PR+EV | 0 | 100 | | |
| TargetPosition | 7C | uint8 | PW+PR+EV | 0 | 100 | | |
| Name | 23 | string | PR | - | - | | |
| ObstructionDetected | 24 | bool | PR+EV | 0 | 1 | | |
+| CurrentPosition | 6D | uint8 | PR+EV | 0 | 100 | | current position (as a percentage) from fully closed (0) to full open (100) |
| TargetPosition | 7C | uint8 | PW+PR+EV | 0 | 100 | | |
| Name | 23 | string | PR | - | - | | |
| ObstructionDetected | 24 | bool | PR+EV | 0 | 1 | - NOT_DETECTED (0)
- DETECTED (1)
| indicates if obstruction is detected |
## Doorbell (121)
Defines a Doorbell. Can be used on a standalone basis or in conjunction with a LockMechanism Service.
@@ -46,82 +46,82 @@
## Fan (B7)
Defines a Fan. Can be used in conjunction with a LightBulb Service to create a Lighted Ceiling Fan.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| Active | B0 | uint8 | PW+PR+EV | 0 | 1 | | |
| Name | 23 | string | PR | - | - | | |
| CurrentFanState | AF | uint8 | PR+EV | 0 | 2 | - INACTIVE (0)
- IDLE (1)
- BLOWING (2)
| |
| TargetFanState | BF | uint8 | PW+PR+EV | 0 | 1 | | |
| RotationDirection | 28 | int | PR+PW+EV | 0 | 1 | - CLOCKWISE (0)
- COUNTERCLOCKWISE (1)
| |
| RotationSpeed | 29 | float | PR+PW+EV | 0 | 100 | | |
| SwingMode | B6 | uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0)
- SWING_ENABLED (1)
| |
| LockPhysicalControls | A7 | uint8 | PW+PR+EV | 0 | 1 | - CONTROL_LOCK_DISABLED (0)
- CONTROL_LOCK_ENABLED (1)
| |
+| Active | B0 | uint8 | PW+PR+EV | 0 | 1 | | indicates if the Service is active/on |
| Name | 23 | string | PR | - | - | | |
| CurrentFanState | AF | uint8 | PR+EV | 0 | 2 | - INACTIVE (0)
- IDLE (1)
- BLOWING (2)
| indicates current state of a fan |
| TargetFanState | BF | uint8 | PW+PR+EV | 0 | 1 | | |
| RotationDirection | 28 | int | PR+PW+EV | 0 | 1 | - CLOCKWISE (0)
- COUNTERCLOCKWISE (1)
| |
| RotationSpeed | 29 | float | PR+PW+EV | 0 | 100 | | |
| SwingMode | B6 | uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0)
- SWING_ENABLED (1)
| |
| LockPhysicalControls | A7 | uint8 | PW+PR+EV | 0 | 1 | - CONTROL_LOCK_DISABLED (0)
- CONTROL_LOCK_ENABLED (1)
| indicates if local control lock is enabled |
## Faucet (D7)
Defines the master control for a multi-Valve appliance. Linked Services: Valve (at least one required), and HeaterCooler (optional).
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| Active | B0 | uint8 | PW+PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| Name | 23 | string | PR | - | - | | |
+| Active | B0 | uint8 | PW+PR+EV | 0 | 1 | | indicates if the Service is active/on |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| Name | 23 | string | PR | - | - | | |
## FilterMaintenance (BA)
Defines a Filter Maintainence check.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| FilterChangeIndication | AC | uint8 | PR+EV | 0 | 1 | - NO_CHANGE_NEEDED (0)
- CHANGE_NEEDED (1)
| |
| Name | 23 | string | PR | - | - | | |
| FilterLifeLevel | AB | float | PR+EV | 0 | 100 | | |
| ResetFilterIndication | AD | uint8 | PW | 1 | 1 | | |
+| FilterChangeIndication | AC | uint8 | PR+EV | 0 | 1 | - NO_CHANGE_NEEDED (0)
- CHANGE_NEEDED (1)
| indicates state of filter |
| Name | 23 | string | PR | - | - | | |
| FilterLifeLevel | AB | float | PR+EV | 0 | 100 | | measures as a percentage of remaining life |
| ResetFilterIndication | AD | uint8 | PW | 1 | 1 | | |
## GarageDoorOpener (41)
Defines a motorized Garage Door Opener.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| CurrentDoorState | E | uint8 | PR+EV | 0 | 4 | - OPEN (0)
- CLOSED (1)
- OPENING (2)
- CLOSING (3)
- STOPPED (4)
| |
| TargetDoorState | 32 | uint8 | PW+PR+EV | 0 | 1 | | |
| ObstructionDetected | 24 | bool | PR+EV | 0 | 1 | | |
| LockCurrentState | 1D | uint8 | PR+EV | 0 | 3 | - UNLOCKED (0)
- LOCKED (1)
- JAMMED (2)
- UNKNOWN (3)
| |
| LockTargetState | 1E | uint8 | PW+PR+EV | 0 | 1 | | |
| Name | 23 | string | PR | - | - | | |
| Version | 37 | string | PR | - | - | | |
+| CurrentDoorState | E | uint8 | PR+EV | 0 | 4 | - OPEN (0)
- CLOSED (1)
- OPENING (2)
- CLOSING (3)
- STOPPED (4)
| indicates current state of a door |
| TargetDoorState | 32 | uint8 | PW+PR+EV | 0 | 1 | | |
| ObstructionDetected | 24 | bool | PR+EV | 0 | 1 | - NOT_DETECTED (0)
- DETECTED (1)
| indicates if obstruction is detected |
| LockCurrentState | 1D | uint8 | PR+EV | 0 | 3 | - UNLOCKED (0)
- LOCKED (1)
- JAMMED (2)
- UNKNOWN (3)
| indictates state of a lock |
| LockTargetState | 1E | uint8 | PW+PR+EV | 0 | 1 | | indicates desired state of lock |
| Name | 23 | string | PR | - | - | | |
| Version | 37 | string | PR | - | - | | |
## HeaterCooler (BC)
Defines a standalone Heater, Cooler, or combined Heater/Cooler. Can be used with a separate Fan Service and/or Slat Service to extend functionality.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| Active | B0 | uint8 | PW+PR+EV | 0 | 1 | | |
| CurrentTemperature | 11 | float | PR+EV | 0 | 100 | | |
| CurrentHeaterCoolerState | B1 | uint8 | PR+EV | 0 | 3 | - INACTIVE (0)
- IDLE (1)
- HEATING (2)
- COOLING (3)
| |
| TargetHeaterCoolerState | B2 | uint8 | PW+PR+EV | 0 | 2 | | |
| Name | 23 | string | PR | - | - | | |
| RotationSpeed | 29 | float | PR+PW+EV | 0 | 100 | | |
| TemperatureDisplayUnits | 36 | uint8 | PW+PR+EV | 0 | 1 | - CELSIUS (0)
- FAHRENHEIT (1)
| |
| SwingMode | B6 | uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0)
- SWING_ENABLED (1)
| |
| CoolingThresholdTemperature | D | float | PR+PW+EV | 10 | 35 | | |
| HeatingThresholdTemperature | 12 | float | PR+PW+EV | 0 | 25 | | |
| LockPhysicalControls | A7 | uint8 | PW+PR+EV | 0 | 1 | - CONTROL_LOCK_DISABLED (0)
- CONTROL_LOCK_ENABLED (1)
| |
+| Active | B0 | uint8 | PW+PR+EV | 0 | 1 | | indicates if the Service is active/on |
| CurrentTemperature | 11 | float | PR+EV | 0 | 100 | | current temperature measured in Celsius |
| CurrentHeaterCoolerState | B1 | uint8 | PR+EV | 0 | 3 | - INACTIVE (0)
- IDLE (1)
- HEATING (2)
- COOLING (3)
| indicates whether appliance is currently heating, cooling, idle, or off |
| TargetHeaterCoolerState | B2 | uint8 | PW+PR+EV | 0 | 2 | | |
| Name | 23 | string | PR | - | - | | |
| RotationSpeed | 29 | float | PR+PW+EV | 0 | 100 | | |
| TemperatureDisplayUnits | 36 | uint8 | PW+PR+EV | 0 | 1 | - CELSIUS (0)
- FAHRENHEIT (1)
| |
| SwingMode | B6 | uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0)
- SWING_ENABLED (1)
| |
| CoolingThresholdTemperature | D | float | PR+PW+EV | 10 | 35 | | cooling turns on when temperature (in Celsius) rises above this threshold |
| HeatingThresholdTemperature | 12 | float | PR+PW+EV | 0 | 25 | | heating turns on when temperature (in Celsius) falls below this threshold |
| LockPhysicalControls | A7 | uint8 | PW+PR+EV | 0 | 1 | - CONTROL_LOCK_DISABLED (0)
- CONTROL_LOCK_ENABLED (1)
| indicates if local control lock is enabled |
## HumidifierDehumidifier (BD)
Defines a Humidifer, Dehumidifier, or combined Humidifer/Dehumidifier. Can be used with a separate Fan Service and/or Slat Service to extend functionality.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| Active | B0 | uint8 | PW+PR+EV | 0 | 1 | | |
| CurrentRelativeHumidity | 10 | float | PR+EV | 0 | 100 | | |
| CurrentHumidifierDehumidifierState | B3 | uint8 | PR+EV | 0 | 3 | - INACTIVE (0)
- IDLE (1)
- HUMIDIFYING (2)
- DEHUMIDIFYING (3)
| |
| TargetHumidifierDehumidifierState | B4 | uint8 | PW+PR+EV | 0 | 2 | - AUTO (0)
- HUMIDIFY (1)
- DEHUMIDIFY (2)
| |
| Name | 23 | string | PR | - | - | | |
| RelativeHumidityDehumidifierThreshold | C9 | float | PR+PW+EV | 0 | 100 | | |
| RelativeHumidityHumidifierThreshold | CA | float | PR+PW+EV | 0 | 100 | | |
| RotationSpeed | 29 | float | PR+PW+EV | 0 | 100 | | |
| SwingMode | B6 | uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0)
- SWING_ENABLED (1)
| |
| WaterLevel | B5 | float | PR+EV | 0 | 100 | | |
| LockPhysicalControls | A7 | uint8 | PW+PR+EV | 0 | 1 | - CONTROL_LOCK_DISABLED (0)
- CONTROL_LOCK_ENABLED (1)
| |
+| Active | B0 | uint8 | PW+PR+EV | 0 | 1 | | indicates if the Service is active/on |
| CurrentRelativeHumidity | 10 | float | PR+EV | 0 | 100 | | current humidity measured as a percentage |
| CurrentHumidifierDehumidifierState | B3 | uint8 | PR+EV | 0 | 3 | - INACTIVE (0)
- IDLE (1)
- HUMIDIFYING (2)
- DEHUMIDIFYING (3)
| indicates current state of humidifier/dehumidifer |
| TargetHumidifierDehumidifierState | B4 | uint8 | PW+PR+EV | 0 | 2 | - AUTO (0)
- HUMIDIFY (1)
- DEHUMIDIFY (2)
| |
| Name | 23 | string | PR | - | - | | |
| RelativeHumidityDehumidifierThreshold | C9 | float | PR+PW+EV | 0 | 100 | | |
| RelativeHumidityHumidifierThreshold | CA | float | PR+PW+EV | 0 | 100 | | |
| RotationSpeed | 29 | float | PR+PW+EV | 0 | 100 | | |
| SwingMode | B6 | uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0)
- SWING_ENABLED (1)
| |
| WaterLevel | B5 | float | PR+EV | 0 | 100 | | |
| LockPhysicalControls | A7 | uint8 | PW+PR+EV | 0 | 1 | - CONTROL_LOCK_DISABLED (0)
- CONTROL_LOCK_ENABLED (1)
| indicates if local control lock is enabled |
## HumiditySensor (82)
Defines a Humidity Sensor.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| CurrentRelativeHumidity | 10 | float | PR+EV | 0 | 100 | | |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
+| CurrentRelativeHumidity | 10 | float | PR+EV | 0 | 100 | | current humidity measured as a percentage |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
## InputSource (D9)
Defines an Input Source for a TV. Use only as a Linked Service for the Television Service.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| ConfiguredName | E3 | string | PW+PR+EV | - | - | | |
| IsConfigured | D6 | uint8 | PR+EV | 0 | 1 | - NOT_CONFIGURED (0)
- CONFIGURED (1)
| |
| Identifier | E6 | uint32 | PR | 0 | 255 | | |
| CurrentVisibilityState | 135 | uint8 | PR+EV | 0 | 1 | | |
| TargetVisibilityState | 134 | uint8 | PW+PR+EV | 0 | 1 | | |
+| ConfiguredName | E3 | string | PW+PR+EV | - | - | | |
| IsConfigured | D6 | uint8 | PR+EV | 0 | 1 | - NOT_CONFIGURED (0)
- CONFIGURED (1)
| indicates if a predefined Service has been configured |
| Identifier | E6 | uint32 | PR | 0 | 255 | | |
| CurrentVisibilityState | 135 | uint8 | PR+EV | 0 | 1 | | |
| TargetVisibilityState | 134 | uint8 | PW+PR+EV | 0 | 1 | | |
## IrrigationSystem (CF)
Defines an Irrigation System. Linked Services: Valve Service (at least one required).
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| Active | B0 | uint8 | PW+PR+EV | 0 | 1 | | |
| ProgramMode | D1 | uint8 | PR+EV | 0 | 2 | - NONE (0)
- SCHEDULED (1)
- SCHEDULE_OVERRIDEN (2)
| |
| InUse | D2 | uint8 | PR+EV | 0 | 1 | | |
| RemainingDuration | D4 | uint32 | PR+EV | 0 | 3600 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
+| Active | B0 | uint8 | PW+PR+EV | 0 | 1 | | indicates if the Service is active/on |
| ProgramMode | D1 | uint8 | PR+EV | 0 | 2 | - NONE (0)
- SCHEDULED (1)
- SCHEDULE_OVERRIDEN (2)
| |
| InUse | D2 | uint8 | PR+EV | 0 | 1 | | if Service is set to active, this indictes whether it is currently in use |
| RemainingDuration | D4 | uint32 | PR+EV | 0 | 3600 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
## LeakSensor (83)
Defines a Leak Sensor.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| LeakDetected | 70 | uint8 | PR+EV | 0 | 1 | - NOT_DETECTED (0)
- DETECTED (1)
| |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
+| LeakDetected | 70 | uint8 | PR+EV | 0 | 1 | - NOT_DETECTED (0)
- DETECTED (1)
| indictates if a leak is detected |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
## LightBulb (43)
Defines any type of Light.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| On | 25 | bool | PR+PW+EV | 0 | 1 | | |
| Brightness | 8 | int | PR+PW+EV | 0 | 100 | | |
| Hue | 13 | float | PR+PW+EV | 0 | 360 | | |
| Name | 23 | string | PR | - | - | | |
| Saturation | 2F | float | PR+PW+EV | 0 | 100 | | |
| ColorTemperature | CE | uint32 | PR+PW+EV | 140 | 500 | | |
+| On | 25 | bool | PR+PW+EV | 0 | 1 | | indicates if the Service is active/on |
| Brightness | 8 | int | PR+PW+EV | 0 | 100 | | measured as a percentage |
| Hue | 13 | float | PR+PW+EV | 0 | 360 | | color (in degrees) from red (0) to green (120) to blue (240) and back to red (360) |
| Name | 23 | string | PR | - | - | | |
| Saturation | 2F | float | PR+PW+EV | 0 | 100 | | |
| ColorTemperature | CE | uint32 | PR+PW+EV | 140 | 500 | | measured in inverse megaKelvin (= 1,000,000 / Kelvin) |
## LightSensor (84)
Defines a Light Sensor.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| CurrentAmbientLightLevel | 6B | float | PR+EV | 0.0001 | 100000 | | |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
+| CurrentAmbientLightLevel | 6B | float | PR+EV | 0.0001 | 100000 | | measured in Lux (lumens/m2 |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
## LockMechanism (45)
Defines an electronic Lock.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| LockCurrentState | 1D | uint8 | PR+EV | 0 | 3 | - UNLOCKED (0)
- LOCKED (1)
- JAMMED (2)
- UNKNOWN (3)
| |
| LockTargetState | 1E | uint8 | PW+PR+EV | 0 | 1 | | |
| Name | 23 | string | PR | - | - | | |
| Mute | 11A | bool | PW+PR+EV | 0 | 1 | | |
| Name | 23 | string | PR | - | - | | |
| Volume | 119 | uint8 | PW+PR+EV | 0 | 100 | | |
+| LockCurrentState | 1D | uint8 | PR+EV | 0 | 3 | - UNLOCKED (0)
- LOCKED (1)
- JAMMED (2)
- UNKNOWN (3)
| indictates state of a lock |
| LockTargetState | 1E | uint8 | PW+PR+EV | 0 | 1 | | indicates desired state of lock |
| Name | 23 | string | PR | - | - | | |
| Mute | 11A | bool | PW+PR+EV | 0 | 1 | | not used |
| Name | 23 | string | PR | - | - | | |
| Volume | 119 | uint8 | PW+PR+EV | 0 | 100 | | |
## MotionSensor (85)
Defines a Motion Sensor.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| MotionDetected | 22 | bool | PR+EV | 0 | 1 | | |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
+| MotionDetected | 22 | bool | PR+EV | 0 | 1 | - NOT_DETECTED (0)
- DETECTED (1)
| indicates if motion is detected |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
## OccupancySensor (86)
Defines and Occupancy Sensor.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| OccupancyDetected | 71 | uint8 | PR+EV | 0 | 1 | - NOT_DETECTED (0)
- DETECTED (1)
| |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
+| OccupancyDetected | 71 | uint8 | PR+EV | 0 | 1 | - NOT_DETECTED (0)
- DETECTED (1)
| indicates if occupanccy is detected |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
## Outlet (47)
Defines an controllable Outlet used to power any light or appliance.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| On | 25 | bool | PR+PW+EV | 0 | 1 | | |
| OutletInUse | 26 | bool | PR+EV | 0 | 1 | | |
| Name | 23 | string | PR | - | - | | |
+| On | 25 | bool | PR+PW+EV | 0 | 1 | | indicates if the Service is active/on |
| OutletInUse | 26 | bool | PR+EV | 0 | 1 | | indicates if an appliance or light is plugged into the outlet, regardless of whether on or off |
| Name | 23 | string | PR | - | - | | |
## SecuritySystem (7E)
Defines a Security System.
@@ -131,12 +131,12 @@
## Slat (B9)
Defines a motorized ventilation Slat(s).
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| CurrentSlatState | AA | uint8 | PR+EV | 0 | 2 | - FIXED (0)
- JAMMED (1)
- SWINGING (2)
| |
| SlatType | C0 | uint8 | PR | 0 | 1 | - HORIZONTAL (0)
- VERTICAL (1)
| |
| Name | 23 | string | PR | - | - | | |
| SwingMode | B6 | uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0)
- SWING_ENABLED (1)
| |
| CurrentTiltAngle | C1 | int | PR+EV | -90 | 90 | | |
| TargetTiltAngle | C2 | int | PW+PR+EV | -90 | 90 | | |
+| CurrentSlatState | AA | uint8 | PR+EV | 0 | 2 | - FIXED (0)
- JAMMED (1)
- SWINGING (2)
| indicates current state of slats |
| SlatType | C0 | uint8 | PR | 0 | 1 | - HORIZONTAL (0)
- VERTICAL (1)
| |
| Name | 23 | string | PR | - | - | | |
| SwingMode | B6 | uint8 | PR+EV+PW | 0 | 1 | - SWING_DISABLED (0)
- SWING_ENABLED (1)
| |
| CurrentTiltAngle | C1 | int | PR+EV | -90 | 90 | | angle (in degrees) of slats from fully up or left (-90) to fully open (0) to fully down or right (90) |
| TargetTiltAngle | C2 | int | PW+PR+EV | -90 | 90 | | |
## SmokeSensor (87)
Defines a Smoke Sensor.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| SmokeDetected | 76 | uint8 | PR+EV | 0 | 1 | - NOT_DETECTED (0)
- DETECTED (1)
| |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
| Mute | 11A | bool | PW+PR+EV | 0 | 1 | | |
| Name | 23 | string | PR | - | - | | |
| Volume | 119 | uint8 | PW+PR+EV | 0 | 100 | | |
+| SmokeDetected | 76 | uint8 | PR+EV | 0 | 1 | - NOT_DETECTED (0)
- DETECTED (1)
| |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
| Mute | 11A | bool | PW+PR+EV | 0 | 1 | | not used |
| Name | 23 | string | PR | - | - | | |
| Volume | 119 | uint8 | PW+PR+EV | 0 | 100 | | |
## StatelessProgrammableSwitch (89)
Defines a "Stateless" Programmable Switch that can be used to trigger actions in the Home App.
@@ -146,12 +146,12 @@
## Switch (49)
Defines a generic Switch.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| On | 25 | bool | PR+PW+EV | 0 | 1 | | |
| Name | 23 | string | PR | - | - | | |
+| On | 25 | bool | PR+PW+EV | 0 | 1 | | indicates if the Service is active/on |
| Name | 23 | string | PR | - | - | | |
## Television (D8)
Defines a TV. Optional Linked Services: InputSource and TelevisionSpeaker.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| Active | B0 | uint8 | PW+PR+EV | 0 | 1 | | |
| ConfiguredName | E3 | string | PW+PR+EV | - | - | | |
| ActiveIdentifier | E7 | uint32 | PW+PR+EV | 0 | 255 | | |
| RemoteKey | E1 | uint8 | PW | 0 | 16 | | |
| PowerModeSelection | DF | uint8 | PW | 0 | 1 | | |
+| Active | B0 | uint8 | PW+PR+EV | 0 | 1 | | indicates if the Service is active/on |
| ConfiguredName | E3 | string | PW+PR+EV | - | - | | |
| ActiveIdentifier | E7 | uint32 | PW+PR+EV | 0 | 255 | | the Identifier of the current Input Source |
| RemoteKey | E1 | uint8 | PW | 0 | 16 | | |
| PowerModeSelection | DF | uint8 | PW | 0 | 1 | | |
## TelevisionSpeaker (113)
Defines a Television Speaker that can be controlled via the Remote Control widget on an iPhone. Use only as a Linked Service for the Television Service.
@@ -161,25 +161,25 @@
## TemperatureSensor (8A)
Defines a Temperature Sensor.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| CurrentTemperature | 11 | float | PR+EV | 0 | 100 | | |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
+| CurrentTemperature | 11 | float | PR+EV | 0 | 100 | | current temperature measured in Celsius |
| Name | 23 | string | PR | - | - | | |
| StatusActive | 75 | bool | PR+EV | 0 | 1 | | |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| StatusTampered | 7A | uint8 | PR+EV | 0 | 1 | - NOT_TAMPERED (0)
- TAMPERED (1)
| |
| StatusLowBattery | 79 | uint8 | PR+EV | 0 | 1 | - NOT_LOW_BATTERY (0)
- LOW_BATTERY (1)
| |
## Thermostat (4A)
Defines a Thermostat used to control a furnace, air conditioner, or both.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| CurrentHeatingCoolingState | F | uint8 | PR+EV | 0 | 2 | - OFF (0)
- HEATING (1)
- COOLING (2)
| |
| TargetHeatingCoolingState | 33 | uint8 | PW+PR+EV | 0 | 3 | - OFF (0)
- HEAT (1)
- COOL (2)
- AUTO (3)
| |
| CurrentTemperature | 11 | float | PR+EV | 0 | 100 | | |
| TargetTemperature | 35 | float | PW+PR+EV | 10 | 38 | | |
| TemperatureDisplayUnits | 36 | uint8 | PW+PR+EV | 0 | 1 | - CELSIUS (0)
- FAHRENHEIT (1)
| |
| CoolingThresholdTemperature | D | float | PR+PW+EV | 10 | 35 | | |
| CurrentRelativeHumidity | 10 | float | PR+EV | 0 | 100 | | |
| HeatingThresholdTemperature | 12 | float | PR+PW+EV | 0 | 25 | | |
| Name | 23 | string | PR | - | - | | |
| TargetRelativeHumidity | 34 | float | PW+PR+EV | 0 | 100 | | |
+| CurrentHeatingCoolingState | F | uint8 | PR+EV | 0 | 2 | - IDLE (0)
- HEATING (1)
- COOLING (2)
| indicates whether appliance is currently heating, cooling, or just idle |
| TargetHeatingCoolingState | 33 | uint8 | PW+PR+EV | 0 | 3 | - OFF (0)
- HEAT (1)
- COOL (2)
- AUTO (3)
| |
| CurrentTemperature | 11 | float | PR+EV | 0 | 100 | | current temperature measured in Celsius |
| TargetTemperature | 35 | float | PW+PR+EV | 10 | 38 | | |
| TemperatureDisplayUnits | 36 | uint8 | PW+PR+EV | 0 | 1 | - CELSIUS (0)
- FAHRENHEIT (1)
| |
| CoolingThresholdTemperature | D | float | PR+PW+EV | 10 | 35 | | cooling turns on when temperature (in Celsius) rises above this threshold |
| CurrentRelativeHumidity | 10 | float | PR+EV | 0 | 100 | | current humidity measured as a percentage |
| HeatingThresholdTemperature | 12 | float | PR+PW+EV | 0 | 25 | | heating turns on when temperature (in Celsius) falls below this threshold |
| Name | 23 | string | PR | - | - | | |
| TargetRelativeHumidity | 34 | float | PW+PR+EV | 0 | 100 | | |
## Valve (D0)
Defines an electronic Valve. Can be used standalone or as a Linked Service in conjunction with the Faucet and IrrigationSystem Services.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| Active | B0 | uint8 | PW+PR+EV | 0 | 1 | | |
| InUse | D2 | uint8 | PR+EV | 0 | 1 | | |
| ValveType | D5 | uint8 | PR+EV | 0 | 3 | | |
| SetDuration | D3 | uint32 | PW+PR+EV | 0 | 3600 | | |
| RemainingDuration | D4 | uint32 | PR+EV | 0 | 3600 | | |
| IsConfigured | D6 | uint8 | PR+EV | 0 | 1 | - NOT_CONFIGURED (0)
- CONFIGURED (1)
| |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| Name | 23 | string | PR | - | - | | |
+| Active | B0 | uint8 | PW+PR+EV | 0 | 1 | | indicates if the Service is active/on |
| InUse | D2 | uint8 | PR+EV | 0 | 1 | | if Service is set to active, this indictes whether it is currently in use |
| ValveType | D5 | uint8 | PR+EV | 0 | 3 | | |
| SetDuration | D3 | uint32 | PW+PR+EV | 0 | 3600 | | |
| RemainingDuration | D4 | uint32 | PR+EV | 0 | 3600 | | |
| IsConfigured | D6 | uint8 | PR+EV | 0 | 1 | - NOT_CONFIGURED (0)
- CONFIGURED (1)
| indicates if a predefined Service has been configured |
| StatusFault | 77 | uint8 | PR+EV | 0 | 1 | | |
| Name | 23 | string | PR | - | - | | |
## Window (8B)
Defines a motorized Window.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| CurrentPosition | 6D | uint8 | PR+EV | 0 | 100 | | |
| TargetPosition | 7C | uint8 | PW+PR+EV | 0 | 100 | | |
| Name | 23 | string | PR | - | - | | |
| ObstructionDetected | 24 | bool | PR+EV | 0 | 1 | | |
+| CurrentPosition | 6D | uint8 | PR+EV | 0 | 100 | | current position (as a percentage) from fully closed (0) to full open (100) |
| TargetPosition | 7C | uint8 | PW+PR+EV | 0 | 100 | | |
| Name | 23 | string | PR | - | - | | |
| ObstructionDetected | 24 | bool | PR+EV | 0 | 1 | - NOT_DETECTED (0)
- DETECTED (1)
| indicates if obstruction is detected |
## WindowCovering (8C)
Defines a motorized Window Shade, Screen, Awning, etc.
| Characteristic | UUID | Format | Perms | Min | Max | Constants | Notes |
-| TargetPosition | 7C | uint8 | PW+PR+EV | 0 | 100 | | |
| CurrentPosition | 6D | uint8 | PR+EV | 0 | 100 | | |
| Name | 23 | string | PR | - | - | | |
| CurrentHorizontalTiltAngle | 6C | int | PR+EV | -90 | 90 | | |
| TargetHorizontalTiltAngle | 7B | int | PW+PR+EV | -90 | 90 | | |
| CurrentVerticalTiltAngle | 6E | int | PR+EV | -90 | 90 | | |
| TargetVerticalTiltAngle | 7D | int | PW+PR+EV | -90 | 90 | | |
| ObstructionDetected | 24 | bool | PR+EV | 0 | 1 | | |
+| TargetPosition | 7C | uint8 | PW+PR+EV | 0 | 100 | | |
| CurrentPosition | 6D | uint8 | PR+EV | 0 | 100 | | current position (as a percentage) from fully closed (0) to full open (100) |
| Name | 23 | string | PR | - | - | | |
| CurrentHorizontalTiltAngle | 6C | int | PR+EV | -90 | 90 | | current angle (in degrees) of slats from fully up (-90) to fully open (0) to fully down (90) |
| TargetHorizontalTiltAngle | 7B | int | PW+PR+EV | -90 | 90 | | |
| CurrentVerticalTiltAngle | 6E | int | PR+EV | -90 | 90 | | current angle (in degrees) of slats from fully left (-90) to fully open (0) to fully right (90) |
| TargetVerticalTiltAngle | 7D | int | PW+PR+EV | -90 | 90 | | |
| ObstructionDetected | 24 | bool | PR+EV | 0 | 1 | - NOT_DETECTED (0)
- DETECTED (1)
| indicates if obstruction is detected |