This commit is contained in:
Gregg 2024-01-18 21:57:21 -06:00
parent 7c3d9755c5
commit 2b6d5c5e41
2 changed files with 375 additions and 603 deletions

View File

@ -16,15 +16,14 @@ BEGIN {
currentService=x[2] currentService=x[2]
services[nServs++]=currentService services[nServs++]=currentService
uuid[currentService]=x[3] uuid[currentService]=x[3]
nReqs[currentService]=0 nChars[currentService]=0
nOpts[currentService]=0
} }
else if(x[1]=="REQ") else if(x[1]=="REQ" || x[1]=="OPT"){
reqs[currentService,nReqs[currentService]++]=x[2] servChars[currentService,nChars[currentService]]=x[2]
servReq[currentService,nChars[currentService]]=(x[1]=="REQ")
else if(x[1]=="OPT") nChars[currentService]++
opts[currentService,nOpts[currentService]++]=x[2] }
else if(x[1]=="CREATE_CHAR"){ else if(x[1]=="CREATE_CHAR"){
char=x[3] char=x[3]
@ -60,17 +59,16 @@ BEGIN {
for(i=0;i<nServs;i++){ for(i=0;i<nServs;i++){
s=services[i] s=services[i]
printf("<details><summary>## %s (%s)</summary>\n",s,uuid[s]) printf("<details><summary>%s (%s)</summary>\n",s,uuid[s])
for(j=0;j<nReqs[s];j++){ printf("<table>\n")
print " REQ:" reqs[s,j] for(j=0;j<nChars[s];j++){
print default[reqs[s,j]], min[reqs[s,j]], max[reqs[s,j]] char=servChars[s,j]
for(k=0;k<nVals[reqs[s,j]];k++) printf("<tr><td>%s%s%s</td>",servReq[s,j]?"<b>":"",char,servReq[s,j]?"</b>":"")
print vals[reqs[s,j],k] #for(k=0;k<nVals[reqs[s,j]];k++)
#print vals[reqs[s,j],k]
printf("</tr>\n")
} }
for(j=0;j<nOpts[s];j++){ print "</table></details>"
print " OPT:" opts[s,j]
}
print "</details>"
} }
} }

View File

@ -1,586 +1,360 @@
<details><summary>## AccessoryInformation (3E)</summary> <details><summary>AccessoryInformation (3E)</summary>
REQ:Identify <table>
false 0 1 <tr><td><b>Identify</b></td></tr>
<tr><td>FirmwareRevision</td></tr>
OPT:FirmwareRevision <tr><td>Manufacturer</td></tr>
OPT:Manufacturer <tr><td>Model</td></tr>
OPT:Model <tr><td>Name</td></tr>
OPT:Name <tr><td>SerialNumber</td></tr>
OPT:SerialNumber <tr><td>HardwareRevision</td></tr>
OPT:HardwareRevision <tr><td>AccessoryFlags</td></tr>
OPT:AccessoryFlags </table></details>
</details> <details><summary>AirPurifier (BB)</summary>
<details><summary>## AirPurifier (BB)</summary> <table>
REQ:Active <tr><td><b>Active</b></td></tr>
0 0 1 <tr><td><b>CurrentAirPurifierState</b></td></tr>
INACTIVE <tr><td><b>TargetAirPurifierState</b></td></tr>
ACIVE <tr><td>Name</td></tr>
<tr><td>RotationSpeed</td></tr>
REQ:CurrentAirPurifierState <tr><td>SwingMode</td></tr>
1 0 2 <tr><td>LockPhysicalControls</td></tr>
INACTIVE </table></details>
IDLE <details><summary>AirQualitySensor (8D)</summary>
PURIFYING <table>
<tr><td><b>AirQuality</b></td></tr>
REQ:TargetAirPurifierState <tr><td>Name</td></tr>
1 0 1 <tr><td>OzoneDensity</td></tr>
MANUAL <tr><td>NitrogenDioxideDensity</td></tr>
AUTO <tr><td>SulphurDioxideDensity</td></tr>
<tr><td>PM25Density</td></tr>
OPT:Name <tr><td>PM10Density</td></tr>
OPT:RotationSpeed <tr><td>VOCDensity</td></tr>
OPT:SwingMode <tr><td>StatusActive</td></tr>
OPT:LockPhysicalControls <tr><td>StatusFault</td></tr>
</details> <tr><td>StatusTampered</td></tr>
<details><summary>## AirQualitySensor (8D)</summary> <tr><td>StatusLowBattery</td></tr>
REQ:AirQuality </table></details>
0 0 5 <details><summary>BatteryService (96)</summary>
UNKNOWN <table>
EXCELLENT <tr><td><b>BatteryLevel</b></td></tr>
GOOD <tr><td><b>ChargingState</b></td></tr>
FAIR <tr><td><b>StatusLowBattery</b></td></tr>
INFERIOR <tr><td>Name</td></tr>
POOR </table></details>
<details><summary>CarbonDioxideSensor (97)</summary>
OPT:Name <table>
OPT:OzoneDensity <tr><td><b>CarbonDioxideDetected</b></td></tr>
OPT:NitrogenDioxideDensity <tr><td>Name</td></tr>
OPT:SulphurDioxideDensity <tr><td>StatusActive</td></tr>
OPT:PM25Density <tr><td>StatusFault</td></tr>
OPT:PM10Density <tr><td>StatusTampered</td></tr>
OPT:VOCDensity <tr><td>StatusLowBattery</td></tr>
OPT:StatusActive <tr><td>CarbonDioxideLevel</td></tr>
OPT:StatusFault <tr><td>CarbonDioxidePeakLevel</td></tr>
OPT:StatusTampered </table></details>
OPT:StatusLowBattery <details><summary>CarbonMonoxideSensor (7F)</summary>
</details> <table>
<details><summary>## BatteryService (96)</summary> <tr><td><b>CarbonMonoxideDetected</b></td></tr>
REQ:BatteryLevel <tr><td>Name</td></tr>
0 0 100 <tr><td>StatusActive</td></tr>
<tr><td>StatusFault</td></tr>
REQ:ChargingState <tr><td>StatusTampered</td></tr>
0 0 2 <tr><td>StatusLowBattery</td></tr>
NOT_CHARGING <tr><td>CarbonMonoxideLevel</td></tr>
CHARGING <tr><td>CarbonMonoxidePeakLevel</td></tr>
NOT_CHARGEABLE </table></details>
<details><summary>ContactSensor (80)</summary>
REQ:StatusLowBattery <table>
0 0 1 <tr><td><b>ContactSensorState</b></td></tr>
NOT_LOW_BATTERY <tr><td>Name</td></tr>
LOW_BATTERY <tr><td>StatusActive</td></tr>
<tr><td>StatusFault</td></tr>
OPT:Name <tr><td>StatusTampered</td></tr>
</details> <tr><td>StatusLowBattery</td></tr>
<details><summary>## CarbonDioxideSensor (97)</summary> </table></details>
REQ:CarbonDioxideDetected <details><summary>Door (81)</summary>
0 0 1 <table>
NORMAL <tr><td><b>CurrentPosition</b></td></tr>
ABNORMAL <tr><td><b>TargetPosition</b></td></tr>
<tr><td><b>PositionState</b></td></tr>
OPT:Name <tr><td>Name</td></tr>
OPT:StatusActive <tr><td>HoldPosition</td></tr>
OPT:StatusFault <tr><td>ObstructionDetected</td></tr>
OPT:StatusTampered </table></details>
OPT:StatusLowBattery <details><summary>Doorbell (121)</summary>
OPT:CarbonDioxideLevel <table>
OPT:CarbonDioxidePeakLevel <tr><td><b>ProgrammableSwitchEvent</b></td></tr>
</details> <tr><td>Name</td></tr>
<details><summary>## CarbonMonoxideSensor (7F)</summary> <tr><td>Volume</td></tr>
REQ:CarbonMonoxideDetected <tr><td>Brightness</td></tr>
0 0 1 </table></details>
NORMAL <details><summary>Fan (B7)</summary>
ABNORMAL <table>
<tr><td><b>Active</b></td></tr>
OPT:Name <tr><td>Name</td></tr>
OPT:StatusActive <tr><td>CurrentFanState</td></tr>
OPT:StatusFault <tr><td>TargetFanState</td></tr>
OPT:StatusTampered <tr><td>RotationDirection</td></tr>
OPT:StatusLowBattery <tr><td>RotationSpeed</td></tr>
OPT:CarbonMonoxideLevel <tr><td>SwingMode</td></tr>
OPT:CarbonMonoxidePeakLevel <tr><td>LockPhysicalControls</td></tr>
</details> </table></details>
<details><summary>## ContactSensor (80)</summary> <details><summary>Faucet (D7)</summary>
REQ:ContactSensorState <table>
1 0 1 <tr><td><b>Active</b></td></tr>
DETECTED <tr><td>StatusFault</td></tr>
NOT_DETECTED <tr><td>Name</td></tr>
</table></details>
OPT:Name <details><summary>FilterMaintenance (BA)</summary>
OPT:StatusActive <table>
OPT:StatusFault <tr><td><b>FilterChangeIndication</b></td></tr>
OPT:StatusTampered <tr><td>Name</td></tr>
OPT:StatusLowBattery <tr><td>FilterLifeLevel</td></tr>
</details> <tr><td>ResetFilterIndication</td></tr>
<details><summary>## Door (81)</summary> </table></details>
REQ:CurrentPosition <details><summary>GarageDoorOpener (41)</summary>
0 0 100 <table>
<tr><td><b>CurrentDoorState</b></td></tr>
REQ:TargetPosition <tr><td><b>TargetDoorState</b></td></tr>
0 0 100 <tr><td><b>ObstructionDetected</b></td></tr>
<tr><td>LockCurrentState</td></tr>
REQ:PositionState <tr><td>LockTargetState</td></tr>
2 0 2 <tr><td>Name</td></tr>
GOING_TO_MINIMUM </table></details>
GOING_TO_MAXIMUM <details><summary>HAPProtocolInformation (A2)</summary>
STOPPED <table>
<tr><td><b>Version</b></td></tr>
OPT:Name </table></details>
OPT:HoldPosition <details><summary>HeaterCooler (BC)</summary>
OPT:ObstructionDetected <table>
</details> <tr><td><b>Active</b></td></tr>
<details><summary>## Doorbell (121)</summary> <tr><td><b>CurrentTemperature</b></td></tr>
REQ:ProgrammableSwitchEvent <tr><td><b>CurrentHeaterCoolerState</b></td></tr>
0 0 2 <tr><td><b>TargetHeaterCoolerState</b></td></tr>
SINGLE_PRESS <tr><td>Name</td></tr>
DOUBLE_PRESS <tr><td>RotationSpeed</td></tr>
LONG_PRESS <tr><td>TemperatureDisplayUnits</td></tr>
<tr><td>SwingMode</td></tr>
OPT:Name <tr><td>CoolingThresholdTemperature</td></tr>
OPT:Volume <tr><td>HeatingThresholdTemperature</td></tr>
OPT:Brightness <tr><td>LockPhysicalControls</td></tr>
</details> </table></details>
<details><summary>## Fan (B7)</summary> <details><summary>HumidifierDehumidifier (BD)</summary>
REQ:Active <table>
0 0 1 <tr><td><b>Active</b></td></tr>
INACTIVE <tr><td><b>CurrentRelativeHumidity</b></td></tr>
ACIVE <tr><td><b>CurrentHumidifierDehumidifierState</b></td></tr>
<tr><td><b>TargetHumidifierDehumidifierState</b></td></tr>
OPT:Name <tr><td>Name</td></tr>
OPT:CurrentFanState <tr><td>RelativeHumidityDehumidifierThreshold</td></tr>
OPT:TargetFanState <tr><td>RelativeHumidityHumidifierThreshold</td></tr>
OPT:RotationDirection <tr><td>RotationSpeed</td></tr>
OPT:RotationSpeed <tr><td>SwingMode</td></tr>
OPT:SwingMode <tr><td>WaterLevel</td></tr>
OPT:LockPhysicalControls <tr><td>LockPhysicalControls</td></tr>
</details> </table></details>
<details><summary>## Faucet (D7)</summary> <details><summary>HumiditySensor (82)</summary>
REQ:Active <table>
0 0 1 <tr><td><b>CurrentRelativeHumidity</b></td></tr>
INACTIVE <tr><td>Name</td></tr>
ACIVE <tr><td>StatusActive</td></tr>
<tr><td>StatusFault</td></tr>
OPT:StatusFault <tr><td>StatusTampered</td></tr>
OPT:Name <tr><td>StatusLowBattery</td></tr>
</details> </table></details>
<details><summary>## FilterMaintenance (BA)</summary> <details><summary>InputSource (D9)</summary>
REQ:FilterChangeIndication <table>
0 0 1 <tr><td>ConfiguredName</td></tr>
NO_CHANGE_NEEDED <tr><td>IsConfigured</td></tr>
CHANGE_NEEDED <tr><td><b>Identifier</b></td></tr>
<tr><td>CurrentVisibilityState</td></tr>
OPT:Name <tr><td>TargetVisibilityState</td></tr>
OPT:FilterLifeLevel </table></details>
OPT:ResetFilterIndication <details><summary>IrrigationSystem (CF)</summary>
</details> <table>
<details><summary>## GarageDoorOpener (41)</summary> <tr><td><b>Active</b></td></tr>
REQ:CurrentDoorState <tr><td><b>ProgramMode</b></td></tr>
1 0 4 <tr><td><b>InUse</b></td></tr>
OPEN <tr><td>RemainingDuration</td></tr>
CLOSED <tr><td>StatusFault</td></tr>
OPENING </table></details>
CLOSING <details><summary>LeakSensor (83)</summary>
STOPPED <table>
<tr><td><b>LeakDetected</b></td></tr>
REQ:TargetDoorState <tr><td>Name</td></tr>
1 0 1 <tr><td>StatusActive</td></tr>
OPEN <tr><td>StatusFault</td></tr>
CLOSED <tr><td>StatusTampered</td></tr>
<tr><td>StatusLowBattery</td></tr>
REQ:ObstructionDetected </table></details>
false 0 1 <details><summary>LightBulb (43)</summary>
<table>
OPT:LockCurrentState <tr><td><b>On</b></td></tr>
OPT:LockTargetState <tr><td>Brightness</td></tr>
OPT:Name <tr><td>Hue</td></tr>
</details> <tr><td>Name</td></tr>
<details><summary>## HAPProtocolInformation (A2)</summary> <tr><td>Saturation</td></tr>
REQ:Version <tr><td>ColorTemperature</td></tr>
</table></details>
</details> <details><summary>LightSensor (84)</summary>
<details><summary>## HeaterCooler (BC)</summary> <table>
REQ:Active <tr><td><b>CurrentAmbientLightLevel</b></td></tr>
0 0 1 <tr><td>Name</td></tr>
INACTIVE <tr><td>StatusActive</td></tr>
ACIVE <tr><td>StatusFault</td></tr>
<tr><td>StatusTampered</td></tr>
REQ:CurrentTemperature <tr><td>StatusLowBattery</td></tr>
0 0 100 </table></details>
<details><summary>LockMechanism (45)</summary>
REQ:CurrentHeaterCoolerState <table>
1 0 3 <tr><td><b>LockCurrentState</b></td></tr>
INACTIVE <tr><td><b>LockTargetState</b></td></tr>
IDLE <tr><td>Name</td></tr>
HEATING </table></details>
COOLING <details><summary>Microphone (112)</summary>
<table>
REQ:TargetHeaterCoolerState <tr><td><b>Mute</b></td></tr>
0 0 2 <tr><td>Name</td></tr>
AUTO <tr><td>Volume</td></tr>
HEAT </table></details>
COOL <details><summary>MotionSensor (85)</summary>
<table>
OPT:Name <tr><td><b>MotionDetected</b></td></tr>
OPT:RotationSpeed <tr><td>Name</td></tr>
OPT:TemperatureDisplayUnits <tr><td>StatusActive</td></tr>
OPT:SwingMode <tr><td>StatusFault</td></tr>
OPT:CoolingThresholdTemperature <tr><td>StatusTampered</td></tr>
OPT:HeatingThresholdTemperature <tr><td>StatusLowBattery</td></tr>
OPT:LockPhysicalControls </table></details>
</details> <details><summary>OccupancySensor (86)</summary>
<details><summary>## HumidifierDehumidifier (BD)</summary> <table>
REQ:Active <tr><td><b>OccupancyDetected</b></td></tr>
0 0 1 <tr><td>Name</td></tr>
INACTIVE <tr><td>StatusActive</td></tr>
ACIVE <tr><td>StatusFault</td></tr>
<tr><td>StatusTampered</td></tr>
REQ:CurrentRelativeHumidity <tr><td>StatusLowBattery</td></tr>
0 0 100 </table></details>
<details><summary>Outlet (47)</summary>
REQ:CurrentHumidifierDehumidifierState <table>
1 0 3 <tr><td><b>On</b></td></tr>
INACTIVE <tr><td><b>OutletInUse</b></td></tr>
IDLE <tr><td>Name</td></tr>
HUMIDIFYING </table></details>
DEHUMIDIFYING <details><summary>SecuritySystem (7E)</summary>
<table>
REQ:TargetHumidifierDehumidifierState <tr><td><b>SecuritySystemCurrentState</b></td></tr>
0 0 2 <tr><td><b>SecuritySystemTargetState</b></td></tr>
AUTO <tr><td>Name</td></tr>
HUMIDIFY <tr><td>SecuritySystemAlarmType</td></tr>
DEHUMIDIFY <tr><td>StatusFault</td></tr>
<tr><td>StatusTampered</td></tr>
OPT:Name </table></details>
OPT:RelativeHumidityDehumidifierThreshold <details><summary>ServiceLabel (CC)</summary>
OPT:RelativeHumidityHumidifierThreshold <table>
OPT:RotationSpeed <tr><td><b>ServiceLabelNamespace</b></td></tr>
OPT:SwingMode </table></details>
OPT:WaterLevel <details><summary>Slat (B9)</summary>
OPT:LockPhysicalControls <table>
</details> <tr><td><b>CurrentSlatState</b></td></tr>
<details><summary>## HumiditySensor (82)</summary> <tr><td><b>SlatType</b></td></tr>
REQ:CurrentRelativeHumidity <tr><td>Name</td></tr>
0 0 100 <tr><td>SwingMode</td></tr>
<tr><td>CurrentTiltAngle</td></tr>
OPT:Name <tr><td>TargetTiltAngle</td></tr>
OPT:StatusActive </table></details>
OPT:StatusFault <details><summary>SmokeSensor (87)</summary>
OPT:StatusTampered <table>
OPT:StatusLowBattery <tr><td><b>SmokeDetected</b></td></tr>
</details> <tr><td>Name</td></tr>
<details><summary>## InputSource (D9)</summary> <tr><td>StatusActive</td></tr>
REQ:Identifier <tr><td>StatusFault</td></tr>
0 0 255 <tr><td>StatusTampered</td></tr>
<tr><td>StatusLowBattery</td></tr>
OPT:ConfiguredName </table></details>
OPT:IsConfigured <details><summary>Speaker (113)</summary>
OPT:CurrentVisibilityState <table>
OPT:TargetVisibilityState <tr><td><b>Mute</b></td></tr>
</details> <tr><td>Name</td></tr>
<details><summary>## IrrigationSystem (CF)</summary> <tr><td>Volume</td></tr>
REQ:Active </table></details>
0 0 1 <details><summary>StatelessProgrammableSwitch (89)</summary>
INACTIVE <table>
ACIVE <tr><td><b>ProgrammableSwitchEvent</b></td></tr>
<tr><td>Name</td></tr>
REQ:ProgramMode <tr><td>ServiceLabelIndex</td></tr>
0 0 2 </table></details>
NONE <details><summary>Switch (49)</summary>
SCHEDULED <table>
SCHEDULE_OVERRIDEN <tr><td><b>On</b></td></tr>
<tr><td>Name</td></tr>
REQ:InUse </table></details>
0 0 1 <details><summary>Television (D8)</summary>
NOT_IN_USE <table>
IN_USE <tr><td><b>Active</b></td></tr>
<tr><td>ConfiguredName</td></tr>
OPT:RemainingDuration <tr><td>ActiveIdentifier</td></tr>
OPT:StatusFault <tr><td>RemoteKey</td></tr>
</details> <tr><td>PowerModeSelection</td></tr>
<details><summary>## LeakSensor (83)</summary> </table></details>
REQ:LeakDetected <details><summary>TelevisionSpeaker (113)</summary>
0 0 1 <table>
NOT_DETECTED <tr><td><b>VolumeControlType</b></td></tr>
DETECTED <tr><td><b>VolumeSelector</b></td></tr>
</table></details>
OPT:Name <details><summary>TemperatureSensor (8A)</summary>
OPT:StatusActive <table>
OPT:StatusFault <tr><td><b>CurrentTemperature</b></td></tr>
OPT:StatusTampered <tr><td>Name</td></tr>
OPT:StatusLowBattery <tr><td>StatusActive</td></tr>
</details> <tr><td>StatusFault</td></tr>
<details><summary>## LightBulb (43)</summary> <tr><td>StatusTampered</td></tr>
REQ:On <tr><td>StatusLowBattery</td></tr>
false 0 1 </table></details>
<details><summary>Thermostat (4A)</summary>
OPT:Brightness <table>
OPT:Hue <tr><td><b>CurrentHeatingCoolingState</b></td></tr>
OPT:Name <tr><td><b>TargetHeatingCoolingState</b></td></tr>
OPT:Saturation <tr><td><b>CurrentTemperature</b></td></tr>
OPT:ColorTemperature <tr><td><b>TargetTemperature</b></td></tr>
</details> <tr><td><b>TemperatureDisplayUnits</b></td></tr>
<details><summary>## LightSensor (84)</summary> <tr><td>CoolingThresholdTemperature</td></tr>
REQ:CurrentAmbientLightLevel <tr><td>CurrentRelativeHumidity</td></tr>
1 0.0001 100000 <tr><td>HeatingThresholdTemperature</td></tr>
<tr><td>Name</td></tr>
OPT:Name <tr><td>TargetRelativeHumidity</td></tr>
OPT:StatusActive </table></details>
OPT:StatusFault <details><summary>Valve (D0)</summary>
OPT:StatusTampered <table>
OPT:StatusLowBattery <tr><td><b>Active</b></td></tr>
</details> <tr><td><b>InUse</b></td></tr>
<details><summary>## LockMechanism (45)</summary> <tr><td><b>ValveType</b></td></tr>
REQ:LockCurrentState <tr><td>SetDuration</td></tr>
0 0 3 <tr><td>RemainingDuration</td></tr>
UNLOCKED <tr><td>IsConfigured</td></tr>
LOCKED <tr><td>ServiceLabelIndex</td></tr>
JAMMED <tr><td>StatusFault</td></tr>
UNKNOWN <tr><td>Name</td></tr>
</table></details>
REQ:LockTargetState <details><summary>Window (8B)</summary>
0 0 1 <table>
UNLOCK <tr><td><b>CurrentPosition</b></td></tr>
LOCK <tr><td><b>TargetPosition</b></td></tr>
<tr><td><b>PositionState</b></td></tr>
OPT:Name <tr><td>Name</td></tr>
</details> <tr><td>HoldPosition</td></tr>
<details><summary>## Microphone (112)</summary> <tr><td>ObstructionDetected</td></tr>
REQ:Mute </table></details>
false 0 1 <details><summary>WindowCovering (8C)</summary>
OFF <table>
ON <tr><td><b>TargetPosition</b></td></tr>
<tr><td><b>CurrentPosition</b></td></tr>
OPT:Name <tr><td><b>PositionState</b></td></tr>
OPT:Volume <tr><td>Name</td></tr>
</details> <tr><td>HoldPosition</td></tr>
<details><summary>## MotionSensor (85)</summary> <tr><td>CurrentHorizontalTiltAngle</td></tr>
REQ:MotionDetected <tr><td>TargetHorizontalTiltAngle</td></tr>
false 0 1 <tr><td>CurrentVerticalTiltAngle</td></tr>
<tr><td>TargetVerticalTiltAngle</td></tr>
OPT:Name <tr><td>ObstructionDetected</td></tr>
OPT:StatusActive </table></details>
OPT:StatusFault
OPT:StatusTampered
OPT:StatusLowBattery
</details>
<details><summary>## OccupancySensor (86)</summary>
REQ:OccupancyDetected
0 0 1
NOT_DETECTED
DETECTED
OPT:Name
OPT:StatusActive
OPT:StatusFault
OPT:StatusTampered
OPT:StatusLowBattery
</details>
<details><summary>## Outlet (47)</summary>
REQ:On
false 0 1
REQ:OutletInUse
false 0 1
OPT:Name
</details>
<details><summary>## SecuritySystem (7E)</summary>
REQ:SecuritySystemCurrentState
3 0 4
ARMED_STAY
ARMED_AWAY
ARMED_NIGHT
DISARMED
ALARM_TRIGGERED
REQ:SecuritySystemTargetState
3 0 3
ARM_STAY
ARM_AWAY
ARM_NIGHT
DISARM
OPT:Name
OPT:SecuritySystemAlarmType
OPT:StatusFault
OPT:StatusTampered
</details>
<details><summary>## ServiceLabel (CC)</summary>
REQ:ServiceLabelNamespace
1 0 1
DOTS
NUMERALS
</details>
<details><summary>## Slat (B9)</summary>
REQ:CurrentSlatState
0 0 2
FIXED
JAMMED
SWINGING
REQ:SlatType
0 0 1
HORIZONTAL
VERTICAL
OPT:Name
OPT:SwingMode
OPT:CurrentTiltAngle
OPT:TargetTiltAngle
</details>
<details><summary>## SmokeSensor (87)</summary>
REQ:SmokeDetected
0 0 1
NOT_DETECTED
DETECTED
OPT:Name
OPT:StatusActive
OPT:StatusFault
OPT:StatusTampered
OPT:StatusLowBattery
</details>
<details><summary>## Speaker (113)</summary>
REQ:Mute
false 0 1
OFF
ON
OPT:Name
OPT:Volume
</details>
<details><summary>## StatelessProgrammableSwitch (89)</summary>
REQ:ProgrammableSwitchEvent
0 0 2
SINGLE_PRESS
DOUBLE_PRESS
LONG_PRESS
OPT:Name
OPT:ServiceLabelIndex
</details>
<details><summary>## Switch (49)</summary>
REQ:On
false 0 1
OPT:Name
</details>
<details><summary>## Television (D8)</summary>
REQ:Active
0 0 1
INACTIVE
ACIVE
OPT:ConfiguredName
OPT:ActiveIdentifier
OPT:RemoteKey
OPT:PowerModeSelection
</details>
<details><summary>## TelevisionSpeaker (113)</summary>
REQ:VolumeControlType
0 0 3
REQ:VolumeSelector
0 0 1
</details>
<details><summary>## TemperatureSensor (8A)</summary>
REQ:CurrentTemperature
0 0 100
OPT:Name
OPT:StatusActive
OPT:StatusFault
OPT:StatusTampered
OPT:StatusLowBattery
</details>
<details><summary>## Thermostat (4A)</summary>
REQ:CurrentHeatingCoolingState
0 0 2
OFF
HEATING
COOLING
REQ:TargetHeatingCoolingState
0 0 3
OFF
HEAT
COOL
AUTO
REQ:CurrentTemperature
0 0 100
REQ:TargetTemperature
16 10 38
REQ:TemperatureDisplayUnits
0 0 1
CELSIUS
FAHRENHEIT
OPT:CoolingThresholdTemperature
OPT:CurrentRelativeHumidity
OPT:HeatingThresholdTemperature
OPT:Name
OPT:TargetRelativeHumidity
</details>
<details><summary>## Valve (D0)</summary>
REQ:Active
0 0 1
INACTIVE
ACIVE
REQ:InUse
0 0 1
NOT_IN_USE
IN_USE
REQ:ValveType
0 0 3
OPT:SetDuration
OPT:RemainingDuration
OPT:IsConfigured
OPT:ServiceLabelIndex
OPT:StatusFault
OPT:Name
</details>
<details><summary>## Window (8B)</summary>
REQ:CurrentPosition
0 0 100
REQ:TargetPosition
0 0 100
REQ:PositionState
2 0 2
GOING_TO_MINIMUM
GOING_TO_MAXIMUM
STOPPED
OPT:Name
OPT:HoldPosition
OPT:ObstructionDetected
</details>
<details><summary>## WindowCovering (8C)</summary>
REQ:TargetPosition
0 0 100
REQ:CurrentPosition
0 0 100
REQ:PositionState
2 0 2
GOING_TO_MINIMUM
GOING_TO_MAXIMUM
STOPPED
OPT:Name
OPT:HoldPosition
OPT:CurrentHorizontalTiltAngle
OPT:TargetHorizontalTiltAngle
OPT:CurrentVerticalTiltAngle
OPT:TargetVerticalTiltAngle
OPT:ObstructionDetected
</details>