update
This commit is contained in:
		
							parent
							
								
									5bee18fde0
								
							
						
					
					
						commit
						fbdb262a61
					
				|  | @ -72,7 +72,7 @@ END { | |||
| 			if(nVals[char]>0){ | ||||
| 				printf("<td><ul>") | ||||
| 				for(k=0;k<nVals[char];k++) | ||||
| 					printf("<li>%s (%d)  %s</li>",vals[char,k],k,default[char]==k?":small_orange_diamond:":"") | ||||
| 					printf("<li><b>%s (%d) </b> %s</li>",vals[char,k],k,default[char]==k?":small_orange_diamond:":"") | ||||
| 				printf("</ul></td>") | ||||
| 			} else { | ||||
| 				printf("<td align=\"center\">%s</td>",default[char]) | ||||
|  |  | |||
							
								
								
									
										218
									
								
								tools/test.md
								
								
								
								
							
							
						
						
									
										218
									
								
								tools/test.md
								
								
								
								
							|  | @ -1,7 +1,7 @@ | |||
| ## AccessoryInformation (3E) | ||||
| <details><summary> Required Identification Information.  For each Accessory in a HomeSpan device this <i>must</i> be included as the first Service.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>Identify (14) :small_blue_diamond:</b><ul><li> the Home App sets this to RUN_ID when it wants the device to run its identification routine</li></ul></td><td align="center">bool</td><td align="center">PW</td><td align="center">0</td><td align="center">1</td><td><ul><li>IDLE (0)  :small_orange_diamond:</li><li>RUN_ID (1)  </li></ul></td></tr> | ||||
| <tr><td><b>Identify (14) :small_blue_diamond:</b><ul><li> the Home App sets this to RUN_ID when it wants the device to run its identification routine</li></ul></td><td align="center">bool</td><td align="center">PW</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>IDLE (0) </b> :small_orange_diamond:</li><li><b>RUN_ID (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>FirmwareRevision (52) </b><ul><li> must be in form x[.y[.z]] - informational only</li></ul></td><td align="center">string</td><td align="center">PR+EV</td><td align="center">-</td><td align="center">-</td><td align="center">"1.0.0"</td></tr> | ||||
| <tr><td><b>Manufacturer (20) </b><ul><li> any string - informational only</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"HomeSpan"</td></tr> | ||||
| <tr><td><b>Model (21) </b><ul><li> any string - informational only</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"HomeSpan-ESP32"</td></tr> | ||||
|  | @ -13,19 +13,19 @@ | |||
| ## AirPurifier (BB) | ||||
| <details><summary> Defines a basic Air Purifier with an optional fan.  Optional Linked Services: <b>FilterMaintenance</b>, <b>AirQualitySensor</b>, <b>Fan</b>, and <b>Slat</b></summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>Active (B0) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>INACTIVE (0)  :small_orange_diamond:</li><li>ACTIVE (1)  </li></ul></td></tr> | ||||
| <tr><td><b>CurrentAirPurifierState (A9) :small_blue_diamond:</b><ul><li> indicates current state of air purification</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">2</td><td><ul><li>INACTIVE (0)  </li><li>IDLE (1)  :small_orange_diamond:</li><li>PURIFYING (2)  </li></ul></td></tr> | ||||
| <tr><td><b>TargetAirPurifierState (A8) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>MANUAL (0)  </li><li>AUTO (1)  :small_orange_diamond:</li></ul></td></tr> | ||||
| <tr><td><b>Active (B0) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>INACTIVE (0) </b> :small_orange_diamond:</li><li><b>ACTIVE (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>CurrentAirPurifierState (A9) :small_blue_diamond:</b><ul><li> indicates current state of air purification</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">2</td><td><ul><li><b>INACTIVE (0) </b> </li><li><b>IDLE (1) </b> :small_orange_diamond:</li><li><b>PURIFYING (2) </b> </li></ul></td></tr> | ||||
| <tr><td><b>TargetAirPurifierState (A8) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>MANUAL (0) </b> </li><li><b>AUTO (1) </b> :small_orange_diamond:</li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>RotationSpeed (29) </b><ul><li></li></ul></td><td align="center">float</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>SwingMode (B6) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV+PW</td><td align="center">0</td><td align="center">1</td><td><ul><li>SWING_DISABLED (0)  :small_orange_diamond:</li><li>SWING_ENABLED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>LockPhysicalControls (A7) </b><ul><li> indicates if local control lock is enabled</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>CONTROL_LOCK_DISABLED (0)  :small_orange_diamond:</li><li>CONTROL_LOCK_ENABLED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>SwingMode (B6) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV+PW</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>SWING_DISABLED (0) </b> :small_orange_diamond:</li><li><b>SWING_ENABLED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>LockPhysicalControls (A7) </b><ul><li> indicates if local control lock is enabled</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>CONTROL_LOCK_DISABLED (0) </b> :small_orange_diamond:</li><li><b>CONTROL_LOCK_ENABLED (1) </b> </li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## AirQualitySensor (8D) | ||||
| <details><summary> Defines an Air Quality Sensor. </summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>AirQuality (95) :small_blue_diamond:</b><ul><li> a subjective description</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">5</td><td><ul><li>UNKNOWN (0)  :small_orange_diamond:</li><li>EXCELLENT (1)  </li><li>GOOD (2)  </li><li>FAIR (3)  </li><li>INFERIOR (4)  </li><li>POOR (5)  </li></ul></td></tr> | ||||
| <tr><td><b>AirQuality (95) :small_blue_diamond:</b><ul><li> a subjective description</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">5</td><td><ul><li><b>UNKNOWN (0) </b> :small_orange_diamond:</li><li><b>EXCELLENT (1) </b> </li><li><b>GOOD (2) </b> </li><li><b>FAIR (3) </b> </li><li><b>INFERIOR (4) </b> </li><li><b>POOR (5) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>OzoneDensity (C3) </b><ul><li> measured in µg/m<sup>3</sup></li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1000</td><td align="center">0</td></tr> | ||||
| <tr><td><b>NitrogenDioxideDensity (C4) </b><ul><li> measured in µg/m<sup>3</sup></li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1000</td><td align="center">0</td></tr> | ||||
|  | @ -34,29 +34,29 @@ | |||
| <tr><td><b>PM10Density (C7) </b><ul><li> 10-micron particulate density, measured in µg/m<sup>3</sup></li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1000</td><td align="center">0</td></tr> | ||||
| <tr><td><b>VOCDensity (C8) </b><ul><li></li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1000</td><td align="center">0</td></tr> | ||||
| <tr><td><b>StatusActive (75) </b><ul><li></li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td align="center">1</td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NO_FAULT (0)  :small_orange_diamond:</li><li>FAULT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_TAMPERED (0)  :small_orange_diamond:</li><li>TAMPERED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_LOW_BATTERY (0)  :small_orange_diamond:</li><li>LOW_BATTERY (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NO_FAULT (0) </b> :small_orange_diamond:</li><li><b>FAULT (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_TAMPERED (0) </b> :small_orange_diamond:</li><li><b>TAMPERED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_LOW_BATTERY (0) </b> :small_orange_diamond:</li><li><b>LOW_BATTERY (1) </b> </li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## BatteryService (96) | ||||
| <details><summary> Defines a standalone Battery Service.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>BatteryLevel (68) :small_blue_diamond:</b><ul><li> measured as a percentage</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>ChargingState (8F) :small_blue_diamond:</b><ul><li> indicates state of battery charging</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">2</td><td><ul><li>NOT_CHARGING (0)  :small_orange_diamond:</li><li>CHARGING (1)  </li><li>NOT_CHARGEABLE (2)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_LOW_BATTERY (0)  :small_orange_diamond:</li><li>LOW_BATTERY (1)  </li></ul></td></tr> | ||||
| <tr><td><b>ChargingState (8F) :small_blue_diamond:</b><ul><li> indicates state of battery charging</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">2</td><td><ul><li><b>NOT_CHARGING (0) </b> :small_orange_diamond:</li><li><b>CHARGING (1) </b> </li><li><b>NOT_CHARGEABLE (2) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_LOW_BATTERY (0) </b> :small_orange_diamond:</li><li><b>LOW_BATTERY (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## CarbonDioxideSensor (97) | ||||
| <details><summary> Defines a Carbon Dioxide Sensor.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>CarbonDioxideDetected (92) :small_blue_diamond:</b><ul><li> indicates if abnormal level is detected</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NORMAL (0)  :small_orange_diamond:</li><li>ABNORMAL (1)  </li></ul></td></tr> | ||||
| <tr><td><b>CarbonDioxideDetected (92) :small_blue_diamond:</b><ul><li> indicates if abnormal level is detected</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NORMAL (0) </b> :small_orange_diamond:</li><li><b>ABNORMAL (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>StatusActive (75) </b><ul><li></li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td align="center">1</td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NO_FAULT (0)  :small_orange_diamond:</li><li>FAULT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_TAMPERED (0)  :small_orange_diamond:</li><li>TAMPERED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_LOW_BATTERY (0)  :small_orange_diamond:</li><li>LOW_BATTERY (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NO_FAULT (0) </b> :small_orange_diamond:</li><li><b>FAULT (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_TAMPERED (0) </b> :small_orange_diamond:</li><li><b>TAMPERED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_LOW_BATTERY (0) </b> :small_orange_diamond:</li><li><b>LOW_BATTERY (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>CarbonDioxideLevel (93) </b><ul><li> measured on parts per million (ppm)</li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">100000</td><td align="center">0</td></tr> | ||||
| <tr><td><b>CarbonDioxidePeakLevel (94) </b><ul><li> measured in parts per million (ppm)</li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">100000</td><td align="center">0</td></tr> | ||||
| </table></details> | ||||
|  | @ -64,12 +64,12 @@ | |||
| ## CarbonMonoxideSensor (7F) | ||||
| <details><summary> Defines a Carbon Monoxide Sensor.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>CarbonMonoxideDetected (69) :small_blue_diamond:</b><ul><li> indicates if abnormal level is detected</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NORMAL (0)  :small_orange_diamond:</li><li>ABNORMAL (1)  </li></ul></td></tr> | ||||
| <tr><td><b>CarbonMonoxideDetected (69) :small_blue_diamond:</b><ul><li> indicates if abnormal level is detected</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NORMAL (0) </b> :small_orange_diamond:</li><li><b>ABNORMAL (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>StatusActive (75) </b><ul><li></li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td align="center">1</td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NO_FAULT (0)  :small_orange_diamond:</li><li>FAULT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_TAMPERED (0)  :small_orange_diamond:</li><li>TAMPERED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_LOW_BATTERY (0)  :small_orange_diamond:</li><li>LOW_BATTERY (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NO_FAULT (0) </b> :small_orange_diamond:</li><li><b>FAULT (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_TAMPERED (0) </b> :small_orange_diamond:</li><li><b>TAMPERED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_LOW_BATTERY (0) </b> :small_orange_diamond:</li><li><b>LOW_BATTERY (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>CarbonMonoxideLevel (90) </b><ul><li> measured in parts per million (ppm)</li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>CarbonMonoxidePeakLevel (91) </b><ul><li> measured in parts per million (ppm)</li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| </table></details> | ||||
|  | @ -77,12 +77,12 @@ | |||
| ## ContactSensor (80) | ||||
| <details><summary> Defines a Contact Sensor.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>ContactSensorState (6A) :small_blue_diamond:</b><ul><li> indictates if contact is detected (i.e. closed)</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>DETECTED (0)  </li><li>NOT_DETECTED (1)  :small_orange_diamond:</li></ul></td></tr> | ||||
| <tr><td><b>ContactSensorState (6A) :small_blue_diamond:</b><ul><li> indictates if contact is detected (i.e. closed)</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>DETECTED (0) </b> </li><li><b>NOT_DETECTED (1) </b> :small_orange_diamond:</li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>StatusActive (75) </b><ul><li></li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td align="center">1</td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NO_FAULT (0)  :small_orange_diamond:</li><li>FAULT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_TAMPERED (0)  :small_orange_diamond:</li><li>TAMPERED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_LOW_BATTERY (0)  :small_orange_diamond:</li><li>LOW_BATTERY (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NO_FAULT (0) </b> :small_orange_diamond:</li><li><b>FAULT (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_TAMPERED (0) </b> :small_orange_diamond:</li><li><b>TAMPERED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_LOW_BATTERY (0) </b> :small_orange_diamond:</li><li><b>LOW_BATTERY (1) </b> </li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## Door (81) | ||||
|  | @ -91,41 +91,41 @@ | |||
| <tr><td><b>CurrentPosition (6D) :small_blue_diamond:</b><ul><li> current position (as a percentage) from fully closed (0) to full open (100)</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>TargetPosition (7C) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>ObstructionDetected (24) </b><ul><li> indicates if obstruction is detected</li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_DETECTED (0)  :small_orange_diamond:</li><li>DETECTED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>ObstructionDetected (24) </b><ul><li> indicates if obstruction is detected</li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_DETECTED (0) </b> :small_orange_diamond:</li><li><b>DETECTED (1) </b> </li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## Doorbell (121) | ||||
| <details><summary> Defines a Doorbell.  Can be used on a standalone basis or in conjunction with a <b>LockMechanism</b> Service.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>ProgrammableSwitchEvent (73) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV+NV</td><td align="center">0</td><td align="center">2</td><td><ul><li>SINGLE_PRESS (0)  :small_orange_diamond:</li><li>DOUBLE_PRESS (1)  </li><li>LONG_PRESS (2)  </li></ul></td></tr> | ||||
| <tr><td><b>ProgrammableSwitchEvent (73) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV+NV</td><td align="center">0</td><td align="center">2</td><td><ul><li><b>SINGLE_PRESS (0) </b> :small_orange_diamond:</li><li><b>DOUBLE_PRESS (1) </b> </li><li><b>LONG_PRESS (2) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## Fan (B7) | ||||
| <details><summary> Defines a Fan.  Can be used in conjunction with a <b>LightBulb</b> Service to create a Lighted Ceiling Fan.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>Active (B0) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>INACTIVE (0)  :small_orange_diamond:</li><li>ACTIVE (1)  </li></ul></td></tr> | ||||
| <tr><td><b>Active (B0) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>INACTIVE (0) </b> :small_orange_diamond:</li><li><b>ACTIVE (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>CurrentFanState (AF) </b><ul><li> indicates current state of a fan</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">2</td><td><ul><li>INACTIVE (0)  </li><li>IDLE (1)  :small_orange_diamond:</li><li>BLOWING (2)  </li></ul></td></tr> | ||||
| <tr><td><b>TargetFanState (BF) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>MANUAL (0)  </li><li>AUTO (1)  :small_orange_diamond:</li></ul></td></tr> | ||||
| <tr><td><b>RotationDirection (28) </b><ul><li></li></ul></td><td align="center">int</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>CLOCKWISE (0)  :small_orange_diamond:</li><li>COUNTERCLOCKWISE (1)  </li></ul></td></tr> | ||||
| <tr><td><b>CurrentFanState (AF) </b><ul><li> indicates current state of a fan</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">2</td><td><ul><li><b>INACTIVE (0) </b> </li><li><b>IDLE (1) </b> :small_orange_diamond:</li><li><b>BLOWING (2) </b> </li></ul></td></tr> | ||||
| <tr><td><b>TargetFanState (BF) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>MANUAL (0) </b> </li><li><b>AUTO (1) </b> :small_orange_diamond:</li></ul></td></tr> | ||||
| <tr><td><b>RotationDirection (28) </b><ul><li></li></ul></td><td align="center">int</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>CLOCKWISE (0) </b> :small_orange_diamond:</li><li><b>COUNTERCLOCKWISE (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>RotationSpeed (29) </b><ul><li></li></ul></td><td align="center">float</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>SwingMode (B6) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV+PW</td><td align="center">0</td><td align="center">1</td><td><ul><li>SWING_DISABLED (0)  :small_orange_diamond:</li><li>SWING_ENABLED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>LockPhysicalControls (A7) </b><ul><li> indicates if local control lock is enabled</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>CONTROL_LOCK_DISABLED (0)  :small_orange_diamond:</li><li>CONTROL_LOCK_ENABLED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>SwingMode (B6) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV+PW</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>SWING_DISABLED (0) </b> :small_orange_diamond:</li><li><b>SWING_ENABLED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>LockPhysicalControls (A7) </b><ul><li> indicates if local control lock is enabled</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>CONTROL_LOCK_DISABLED (0) </b> :small_orange_diamond:</li><li><b>CONTROL_LOCK_ENABLED (1) </b> </li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## Faucet (D7) | ||||
| <details><summary> Defines the master control for a multi-Valve appliance.  Linked Services: <b>Valve</b> (at least one <i>required</i>), and <b>HeaterCooler</b> (optional).</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>Active (B0) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>INACTIVE (0)  :small_orange_diamond:</li><li>ACTIVE (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NO_FAULT (0)  :small_orange_diamond:</li><li>FAULT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>Active (B0) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>INACTIVE (0) </b> :small_orange_diamond:</li><li><b>ACTIVE (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NO_FAULT (0) </b> :small_orange_diamond:</li><li><b>FAULT (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## FilterMaintenance (BA) | ||||
| <details><summary> Defines a Filter Maintainence check.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>FilterChangeIndication (AC) :small_blue_diamond:</b><ul><li> indicates state of filter</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NO_CHANGE_NEEDED (0)  :small_orange_diamond:</li><li>CHANGE_NEEDED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>FilterChangeIndication (AC) :small_blue_diamond:</b><ul><li> indicates state of filter</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NO_CHANGE_NEEDED (0) </b> :small_orange_diamond:</li><li><b>CHANGE_NEEDED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>FilterLifeLevel (AB) </b><ul><li> measures as a percentage of remaining life</li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>ResetFilterIndication (AD) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW</td><td align="center">1</td><td align="center">1</td><td align="center">0</td></tr> | ||||
|  | @ -134,11 +134,11 @@ | |||
| ## GarageDoorOpener (41) | ||||
| <details><summary> Defines a motorized Garage Door Opener.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>CurrentDoorState (E) :small_blue_diamond:</b><ul><li> indicates current state of a door</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">4</td><td><ul><li>OPEN (0)  </li><li>CLOSED (1)  :small_orange_diamond:</li><li>OPENING (2)  </li><li>CLOSING (3)  </li><li>STOPPED (4)  </li></ul></td></tr> | ||||
| <tr><td><b>TargetDoorState (32) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>OPEN (0)  </li><li>CLOSED (1)  :small_orange_diamond:</li></ul></td></tr> | ||||
| <tr><td><b>ObstructionDetected (24) :small_blue_diamond:</b><ul><li> indicates if obstruction is detected</li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_DETECTED (0)  :small_orange_diamond:</li><li>DETECTED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>LockCurrentState (1D) </b><ul><li> indictates state of a lock</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">3</td><td><ul><li>UNLOCKED (0)  :small_orange_diamond:</li><li>LOCKED (1)  </li><li>JAMMED (2)  </li><li>UNKNOWN (3)  </li></ul></td></tr> | ||||
| <tr><td><b>LockTargetState (1E) </b><ul><li> indicates desired state of lock</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>UNLOCK (0)  :small_orange_diamond:</li><li>LOCK (1)  </li></ul></td></tr> | ||||
| <tr><td><b>CurrentDoorState (E) :small_blue_diamond:</b><ul><li> indicates current state of a door</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">4</td><td><ul><li><b>OPEN (0) </b> </li><li><b>CLOSED (1) </b> :small_orange_diamond:</li><li><b>OPENING (2) </b> </li><li><b>CLOSING (3) </b> </li><li><b>STOPPED (4) </b> </li></ul></td></tr> | ||||
| <tr><td><b>TargetDoorState (32) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>OPEN (0) </b> </li><li><b>CLOSED (1) </b> :small_orange_diamond:</li></ul></td></tr> | ||||
| <tr><td><b>ObstructionDetected (24) :small_blue_diamond:</b><ul><li> indicates if obstruction is detected</li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_DETECTED (0) </b> :small_orange_diamond:</li><li><b>DETECTED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>LockCurrentState (1D) </b><ul><li> indictates state of a lock</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">3</td><td><ul><li><b>UNLOCKED (0) </b> :small_orange_diamond:</li><li><b>LOCKED (1) </b> </li><li><b>JAMMED (2) </b> </li><li><b>UNKNOWN (3) </b> </li></ul></td></tr> | ||||
| <tr><td><b>LockTargetState (1E) </b><ul><li> indicates desired state of lock</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>UNLOCK (0) </b> :small_orange_diamond:</li><li><b>LOCK (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>Version (37) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"1.0.0"</td></tr> | ||||
| </table></details> | ||||
|  | @ -146,33 +146,33 @@ | |||
| ## HeaterCooler (BC) | ||||
| <details><summary> Defines a standalone Heater, Cooler, or combined Heater/Cooler.  Can be used with a separate <b>Fan</b> Service and/or <b>Slat</b> Service to extend functionality.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>Active (B0) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>INACTIVE (0)  :small_orange_diamond:</li><li>ACTIVE (1)  </li></ul></td></tr> | ||||
| <tr><td><b>Active (B0) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>INACTIVE (0) </b> :small_orange_diamond:</li><li><b>ACTIVE (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>CurrentTemperature (11) :small_blue_diamond:</b><ul><li> current temperature measured in Celsius</li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>CurrentHeaterCoolerState (B1) :small_blue_diamond:</b><ul><li> indicates whether appliance is currently heating, cooling, idle, or off</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">3</td><td><ul><li>INACTIVE (0)  </li><li>IDLE (1)  :small_orange_diamond:</li><li>HEATING (2)  </li><li>COOLING (3)  </li></ul></td></tr> | ||||
| <tr><td><b>TargetHeaterCoolerState (B2) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">2</td><td><ul><li>AUTO (0)  :small_orange_diamond:</li><li>HEAT (1)  </li><li>COOL (2)  </li></ul></td></tr> | ||||
| <tr><td><b>CurrentHeaterCoolerState (B1) :small_blue_diamond:</b><ul><li> indicates whether appliance is currently heating, cooling, idle, or off</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">3</td><td><ul><li><b>INACTIVE (0) </b> </li><li><b>IDLE (1) </b> :small_orange_diamond:</li><li><b>HEATING (2) </b> </li><li><b>COOLING (3) </b> </li></ul></td></tr> | ||||
| <tr><td><b>TargetHeaterCoolerState (B2) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">2</td><td><ul><li><b>AUTO (0) </b> :small_orange_diamond:</li><li><b>HEAT (1) </b> </li><li><b>COOL (2) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>RotationSpeed (29) </b><ul><li></li></ul></td><td align="center">float</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>TemperatureDisplayUnits (36) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>CELSIUS (0)  :small_orange_diamond:</li><li>FAHRENHEIT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>SwingMode (B6) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV+PW</td><td align="center">0</td><td align="center">1</td><td><ul><li>SWING_DISABLED (0)  :small_orange_diamond:</li><li>SWING_ENABLED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>TemperatureDisplayUnits (36) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>CELSIUS (0) </b> :small_orange_diamond:</li><li><b>FAHRENHEIT (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>SwingMode (B6) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV+PW</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>SWING_DISABLED (0) </b> :small_orange_diamond:</li><li><b>SWING_ENABLED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>CoolingThresholdTemperature (D) </b><ul><li> cooling turns on when temperature (in Celsius) rises above this threshold</li></ul></td><td align="center">float</td><td align="center">PR+PW+EV</td><td align="center">10</td><td align="center">35</td><td align="center">10</td></tr> | ||||
| <tr><td><b>HeatingThresholdTemperature (12) </b><ul><li> heating turns on when temperature (in Celsius) falls below this threshold</li></ul></td><td align="center">float</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">25</td><td align="center">16</td></tr> | ||||
| <tr><td><b>LockPhysicalControls (A7) </b><ul><li> indicates if local control lock is enabled</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>CONTROL_LOCK_DISABLED (0)  :small_orange_diamond:</li><li>CONTROL_LOCK_ENABLED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>LockPhysicalControls (A7) </b><ul><li> indicates if local control lock is enabled</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>CONTROL_LOCK_DISABLED (0) </b> :small_orange_diamond:</li><li><b>CONTROL_LOCK_ENABLED (1) </b> </li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## HumidifierDehumidifier (BD) | ||||
| <details><summary> Defines a Humidifer, Dehumidifier, or combined Humidifer/Dehumidifier.  Can be used with a separate <b>Fan</b> Service and/or <b>Slat</b> Service to extend functionality.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>Active (B0) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>INACTIVE (0)  :small_orange_diamond:</li><li>ACTIVE (1)  </li></ul></td></tr> | ||||
| <tr><td><b>Active (B0) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>INACTIVE (0) </b> :small_orange_diamond:</li><li><b>ACTIVE (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>CurrentRelativeHumidity (10) :small_blue_diamond:</b><ul><li>current humidity measured as a percentage</li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>CurrentHumidifierDehumidifierState (B3) :small_blue_diamond:</b><ul><li> indicates current state of humidifier/dehumidifer</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">3</td><td><ul><li>INACTIVE (0)  </li><li>IDLE (1)  :small_orange_diamond:</li><li>HUMIDIFYING (2)  </li><li>DEHUMIDIFYING (3)  </li></ul></td></tr> | ||||
| <tr><td><b>TargetHumidifierDehumidifierState (B4) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">2</td><td><ul><li>AUTO (0)  :small_orange_diamond:</li><li>HUMIDIFY (1)  </li><li>DEHUMIDIFY (2)  </li></ul></td></tr> | ||||
| <tr><td><b>CurrentHumidifierDehumidifierState (B3) :small_blue_diamond:</b><ul><li> indicates current state of humidifier/dehumidifer</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">3</td><td><ul><li><b>INACTIVE (0) </b> </li><li><b>IDLE (1) </b> :small_orange_diamond:</li><li><b>HUMIDIFYING (2) </b> </li><li><b>DEHUMIDIFYING (3) </b> </li></ul></td></tr> | ||||
| <tr><td><b>TargetHumidifierDehumidifierState (B4) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">2</td><td><ul><li><b>AUTO (0) </b> :small_orange_diamond:</li><li><b>HUMIDIFY (1) </b> </li><li><b>DEHUMIDIFY (2) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>RelativeHumidityDehumidifierThreshold (C9) </b><ul><li></li></ul></td><td align="center">float</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">100</td><td align="center">50</td></tr> | ||||
| <tr><td><b>RelativeHumidityHumidifierThreshold (CA) </b><ul><li></li></ul></td><td align="center">float</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">100</td><td align="center">50</td></tr> | ||||
| <tr><td><b>RotationSpeed (29) </b><ul><li></li></ul></td><td align="center">float</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>SwingMode (B6) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV+PW</td><td align="center">0</td><td align="center">1</td><td><ul><li>SWING_DISABLED (0)  :small_orange_diamond:</li><li>SWING_ENABLED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>SwingMode (B6) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV+PW</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>SWING_DISABLED (0) </b> :small_orange_diamond:</li><li><b>SWING_ENABLED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>WaterLevel (B5) </b><ul><li></li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>LockPhysicalControls (A7) </b><ul><li> indicates if local control lock is enabled</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>CONTROL_LOCK_DISABLED (0)  :small_orange_diamond:</li><li>CONTROL_LOCK_ENABLED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>LockPhysicalControls (A7) </b><ul><li> indicates if local control lock is enabled</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>CONTROL_LOCK_DISABLED (0) </b> :small_orange_diamond:</li><li><b>CONTROL_LOCK_ENABLED (1) </b> </li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## HumiditySensor (82) | ||||
|  | @ -181,16 +181,16 @@ | |||
| <tr><td><b>CurrentRelativeHumidity (10) :small_blue_diamond:</b><ul><li>current humidity measured as a percentage</li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>StatusActive (75) </b><ul><li></li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td align="center">1</td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NO_FAULT (0)  :small_orange_diamond:</li><li>FAULT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_TAMPERED (0)  :small_orange_diamond:</li><li>TAMPERED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_LOW_BATTERY (0)  :small_orange_diamond:</li><li>LOW_BATTERY (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NO_FAULT (0) </b> :small_orange_diamond:</li><li><b>FAULT (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_TAMPERED (0) </b> :small_orange_diamond:</li><li><b>TAMPERED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_LOW_BATTERY (0) </b> :small_orange_diamond:</li><li><b>LOW_BATTERY (1) </b> </li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## InputSource (D9) | ||||
| <details><summary> Defines an Input Source for a TV.  Use <i>only</i> as a Linked Service for the <b>Television</b> Service.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>ConfiguredName (E3) </b><ul><li></li></ul></td><td align="center">string</td><td align="center">PW+PR+EV</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>IsConfigured (D6) </b><ul><li> indicates if a predefined Service has been configured</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_CONFIGURED (0)  :small_orange_diamond:</li><li>CONFIGURED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>IsConfigured (D6) </b><ul><li> indicates if a predefined Service has been configured</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_CONFIGURED (0) </b> :small_orange_diamond:</li><li><b>CONFIGURED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Identifier (E6) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint32</td><td align="center">PR</td><td align="center">0</td><td align="center">255</td><td align="center">0</td></tr> | ||||
| <tr><td><b>CurrentVisibilityState (135) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td align="center">0</td></tr> | ||||
| <tr><td><b>TargetVisibilityState (134) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td align="center">0</td></tr> | ||||
|  | @ -199,28 +199,28 @@ | |||
| ## IrrigationSystem (CF) | ||||
| <details><summary> Defines an Irrigation System.  Linked Services: <b>Valve</b> Service (at least one <i>required</i>).</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>Active (B0) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>INACTIVE (0)  :small_orange_diamond:</li><li>ACTIVE (1)  </li></ul></td></tr> | ||||
| <tr><td><b>ProgramMode (D1) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">2</td><td><ul><li>NONE (0)  :small_orange_diamond:</li><li>SCHEDULED (1)  </li><li>SCHEDULE_OVERRIDEN (2)  </li></ul></td></tr> | ||||
| <tr><td><b>InUse (D2) :small_blue_diamond:</b><ul><li> if Service is set to active, this indictes whether it is currently in use</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_IN_USE (0)  :small_orange_diamond:</li><li>IN_USE (1)  </li></ul></td></tr> | ||||
| <tr><td><b>Active (B0) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>INACTIVE (0) </b> :small_orange_diamond:</li><li><b>ACTIVE (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>ProgramMode (D1) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">2</td><td><ul><li><b>NONE (0) </b> :small_orange_diamond:</li><li><b>SCHEDULED (1) </b> </li><li><b>SCHEDULE_OVERRIDEN (2) </b> </li></ul></td></tr> | ||||
| <tr><td><b>InUse (D2) :small_blue_diamond:</b><ul><li> if Service is set to active, this indictes whether it is currently in use</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_IN_USE (0) </b> :small_orange_diamond:</li><li><b>IN_USE (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>RemainingDuration (D4) </b><ul><li></li></ul></td><td align="center">uint32</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">3600</td><td align="center">60</td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NO_FAULT (0)  :small_orange_diamond:</li><li>FAULT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NO_FAULT (0) </b> :small_orange_diamond:</li><li><b>FAULT (1) </b> </li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## LeakSensor (83) | ||||
| <details><summary> Defines a Leak Sensor.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>LeakDetected (70) :small_blue_diamond:</b><ul><li> indictates if a leak is detected</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_DETECTED (0)  :small_orange_diamond:</li><li>DETECTED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>LeakDetected (70) :small_blue_diamond:</b><ul><li> indictates if a leak is detected</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_DETECTED (0) </b> :small_orange_diamond:</li><li><b>DETECTED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>StatusActive (75) </b><ul><li></li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td align="center">1</td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NO_FAULT (0)  :small_orange_diamond:</li><li>FAULT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_TAMPERED (0)  :small_orange_diamond:</li><li>TAMPERED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_LOW_BATTERY (0)  :small_orange_diamond:</li><li>LOW_BATTERY (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NO_FAULT (0) </b> :small_orange_diamond:</li><li><b>FAULT (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_TAMPERED (0) </b> :small_orange_diamond:</li><li><b>TAMPERED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_LOW_BATTERY (0) </b> :small_orange_diamond:</li><li><b>LOW_BATTERY (1) </b> </li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## LightBulb (43) | ||||
| <details><summary> Defines any type of Light.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>On (25) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">bool</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>OFF (0)  :small_orange_diamond:</li><li>ON (1)  </li></ul></td></tr> | ||||
| <tr><td><b>On (25) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">bool</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>OFF (0) </b> :small_orange_diamond:</li><li><b>ON (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Brightness (8) </b><ul><li> measured as a percentage</li></ul></td><td align="center">int</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>Hue (13) </b><ul><li> color (in degrees) from red (0) to green (120) to blue (240) and back to red (360)</li></ul></td><td align="center">float</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">360</td><td align="center">0</td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
|  | @ -234,18 +234,18 @@ | |||
| <tr><td><b>CurrentAmbientLightLevel (6B) :small_blue_diamond:</b><ul><li> measured in Lux (lumens/m<sup>2</sup></li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0.0001</td><td align="center">100000</td><td align="center">1</td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>StatusActive (75) </b><ul><li></li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td align="center">1</td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NO_FAULT (0)  :small_orange_diamond:</li><li>FAULT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_TAMPERED (0)  :small_orange_diamond:</li><li>TAMPERED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_LOW_BATTERY (0)  :small_orange_diamond:</li><li>LOW_BATTERY (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NO_FAULT (0) </b> :small_orange_diamond:</li><li><b>FAULT (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_TAMPERED (0) </b> :small_orange_diamond:</li><li><b>TAMPERED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_LOW_BATTERY (0) </b> :small_orange_diamond:</li><li><b>LOW_BATTERY (1) </b> </li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## LockMechanism (45) | ||||
| <details><summary> Defines an electronic Lock.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>LockCurrentState (1D) :small_blue_diamond:</b><ul><li> indictates state of a lock</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">3</td><td><ul><li>UNLOCKED (0)  :small_orange_diamond:</li><li>LOCKED (1)  </li><li>JAMMED (2)  </li><li>UNKNOWN (3)  </li></ul></td></tr> | ||||
| <tr><td><b>LockTargetState (1E) :small_blue_diamond:</b><ul><li> indicates desired state of lock</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>UNLOCK (0)  :small_orange_diamond:</li><li>LOCK (1)  </li></ul></td></tr> | ||||
| <tr><td><b>LockCurrentState (1D) :small_blue_diamond:</b><ul><li> indictates state of a lock</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">3</td><td><ul><li><b>UNLOCKED (0) </b> :small_orange_diamond:</li><li><b>LOCKED (1) </b> </li><li><b>JAMMED (2) </b> </li><li><b>UNKNOWN (3) </b> </li></ul></td></tr> | ||||
| <tr><td><b>LockTargetState (1E) :small_blue_diamond:</b><ul><li> indicates desired state of lock</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>UNLOCK (0) </b> :small_orange_diamond:</li><li><b>LOCK (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>Mute (11A) :small_blue_diamond:</b><ul><li> not used</li></ul></td><td align="center">bool</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>OFF (0)  :small_orange_diamond:</li><li>ON (1)  </li></ul></td></tr> | ||||
| <tr><td><b>Mute (11A) :small_blue_diamond:</b><ul><li> not used</li></ul></td><td align="center">bool</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>OFF (0) </b> :small_orange_diamond:</li><li><b>ON (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>Volume (119) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| </table></details> | ||||
|  | @ -253,52 +253,52 @@ | |||
| ## MotionSensor (85) | ||||
| <details><summary> Defines a Motion Sensor.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>MotionDetected (22) :small_blue_diamond:</b><ul><li> indicates if motion is detected</li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_DETECTED (0)  :small_orange_diamond:</li><li>DETECTED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>MotionDetected (22) :small_blue_diamond:</b><ul><li> indicates if motion is detected</li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_DETECTED (0) </b> :small_orange_diamond:</li><li><b>DETECTED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>StatusActive (75) </b><ul><li></li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td align="center">1</td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NO_FAULT (0)  :small_orange_diamond:</li><li>FAULT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_TAMPERED (0)  :small_orange_diamond:</li><li>TAMPERED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_LOW_BATTERY (0)  :small_orange_diamond:</li><li>LOW_BATTERY (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NO_FAULT (0) </b> :small_orange_diamond:</li><li><b>FAULT (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_TAMPERED (0) </b> :small_orange_diamond:</li><li><b>TAMPERED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_LOW_BATTERY (0) </b> :small_orange_diamond:</li><li><b>LOW_BATTERY (1) </b> </li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## OccupancySensor (86) | ||||
| <details><summary> Defines and Occupancy Sensor.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>OccupancyDetected (71) :small_blue_diamond:</b><ul><li> indicates if occupanccy is detected</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_DETECTED (0)  :small_orange_diamond:</li><li>DETECTED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>OccupancyDetected (71) :small_blue_diamond:</b><ul><li> indicates if occupanccy is detected</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_DETECTED (0) </b> :small_orange_diamond:</li><li><b>DETECTED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>StatusActive (75) </b><ul><li></li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td align="center">1</td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NO_FAULT (0)  :small_orange_diamond:</li><li>FAULT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_TAMPERED (0)  :small_orange_diamond:</li><li>TAMPERED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_LOW_BATTERY (0)  :small_orange_diamond:</li><li>LOW_BATTERY (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NO_FAULT (0) </b> :small_orange_diamond:</li><li><b>FAULT (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_TAMPERED (0) </b> :small_orange_diamond:</li><li><b>TAMPERED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_LOW_BATTERY (0) </b> :small_orange_diamond:</li><li><b>LOW_BATTERY (1) </b> </li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## Outlet (47) | ||||
| <details><summary> Defines an controllable Outlet used to power any light or appliance.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>On (25) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">bool</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>OFF (0)  :small_orange_diamond:</li><li>ON (1)  </li></ul></td></tr> | ||||
| <tr><td><b>OutletInUse (26) :small_blue_diamond:</b><ul><li> indicates if an appliance or light is plugged into the outlet, regardless of whether on or off </li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_IN_USE (0)  :small_orange_diamond:</li><li>IN_USE (1)  </li></ul></td></tr> | ||||
| <tr><td><b>On (25) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">bool</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>OFF (0) </b> :small_orange_diamond:</li><li><b>ON (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>OutletInUse (26) :small_blue_diamond:</b><ul><li> indicates if an appliance or light is plugged into the outlet, regardless of whether on or off </li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_IN_USE (0) </b> :small_orange_diamond:</li><li><b>IN_USE (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## SecuritySystem (7E) | ||||
| <details><summary> Defines a Security System.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>SecuritySystemCurrentState (66) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">4</td><td><ul><li>ARMED_STAY (0)  </li><li>ARMED_AWAY (1)  </li><li>ARMED_NIGHT (2)  </li><li>DISARMED (3)  :small_orange_diamond:</li><li>ALARM_TRIGGERED (4)  </li></ul></td></tr> | ||||
| <tr><td><b>SecuritySystemTargetState (67) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">3</td><td><ul><li>ARM_STAY (0)  </li><li>ARM_AWAY (1)  </li><li>ARM_NIGHT (2)  </li><li>DISARM (3)  :small_orange_diamond:</li></ul></td></tr> | ||||
| <tr><td><b>SecuritySystemCurrentState (66) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">4</td><td><ul><li><b>ARMED_STAY (0) </b> </li><li><b>ARMED_AWAY (1) </b> </li><li><b>ARMED_NIGHT (2) </b> </li><li><b>DISARMED (3) </b> :small_orange_diamond:</li><li><b>ALARM_TRIGGERED (4) </b> </li></ul></td></tr> | ||||
| <tr><td><b>SecuritySystemTargetState (67) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">3</td><td><ul><li><b>ARM_STAY (0) </b> </li><li><b>ARM_AWAY (1) </b> </li><li><b>ARM_NIGHT (2) </b> </li><li><b>DISARM (3) </b> :small_orange_diamond:</li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>SecuritySystemAlarmType (8E) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>KNOWN (0)  :small_orange_diamond:</li><li>UNKNOWN (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NO_FAULT (0)  :small_orange_diamond:</li><li>FAULT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_TAMPERED (0)  :small_orange_diamond:</li><li>TAMPERED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>ServiceLabelNamespace (CD) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR</td><td align="center">0</td><td align="center">1</td><td><ul><li>DOTS (0)  </li><li>NUMERALS (1)  :small_orange_diamond:</li></ul></td></tr> | ||||
| <tr><td><b>SecuritySystemAlarmType (8E) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>KNOWN (0) </b> :small_orange_diamond:</li><li><b>UNKNOWN (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NO_FAULT (0) </b> :small_orange_diamond:</li><li><b>FAULT (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_TAMPERED (0) </b> :small_orange_diamond:</li><li><b>TAMPERED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>ServiceLabelNamespace (CD) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>DOTS (0) </b> </li><li><b>NUMERALS (1) </b> :small_orange_diamond:</li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## Slat (B9) | ||||
| <details><summary> Defines a motorized ventilation Slat(s).</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>CurrentSlatState (AA) :small_blue_diamond:</b><ul><li> indicates current state of slats</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">2</td><td><ul><li>FIXED (0)  :small_orange_diamond:</li><li>JAMMED (1)  </li><li>SWINGING (2)  </li></ul></td></tr> | ||||
| <tr><td><b>SlatType (C0) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR</td><td align="center">0</td><td align="center">1</td><td><ul><li>HORIZONTAL (0)  :small_orange_diamond:</li><li>VERTICAL (1)  </li></ul></td></tr> | ||||
| <tr><td><b>CurrentSlatState (AA) :small_blue_diamond:</b><ul><li> indicates current state of slats</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">2</td><td><ul><li><b>FIXED (0) </b> :small_orange_diamond:</li><li><b>JAMMED (1) </b> </li><li><b>SWINGING (2) </b> </li></ul></td></tr> | ||||
| <tr><td><b>SlatType (C0) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>HORIZONTAL (0) </b> :small_orange_diamond:</li><li><b>VERTICAL (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>SwingMode (B6) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV+PW</td><td align="center">0</td><td align="center">1</td><td><ul><li>SWING_DISABLED (0)  :small_orange_diamond:</li><li>SWING_ENABLED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>SwingMode (B6) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV+PW</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>SWING_DISABLED (0) </b> :small_orange_diamond:</li><li><b>SWING_ENABLED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>CurrentTiltAngle (C1) </b><ul><li> angle (in degrees) of slats from fully up or left (-90) to fully open (0) to fully down or right (90)</li></ul></td><td align="center">int</td><td align="center">PR+EV</td><td align="center">-90</td><td align="center">90</td><td align="center">0</td></tr> | ||||
| <tr><td><b>TargetTiltAngle (C2) </b><ul><li></li></ul></td><td align="center">int</td><td align="center">PW+PR+EV</td><td align="center">-90</td><td align="center">90</td><td align="center">0</td></tr> | ||||
| </table></details> | ||||
|  | @ -306,13 +306,13 @@ | |||
| ## SmokeSensor (87) | ||||
| <details><summary> Defines a Smoke Sensor.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>SmokeDetected (76) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_DETECTED (0)  :small_orange_diamond:</li><li>DETECTED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>SmokeDetected (76) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_DETECTED (0) </b> :small_orange_diamond:</li><li><b>DETECTED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>StatusActive (75) </b><ul><li></li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td align="center">1</td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NO_FAULT (0)  :small_orange_diamond:</li><li>FAULT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_TAMPERED (0)  :small_orange_diamond:</li><li>TAMPERED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_LOW_BATTERY (0)  :small_orange_diamond:</li><li>LOW_BATTERY (1)  </li></ul></td></tr> | ||||
| <tr><td><b>Mute (11A) :small_blue_diamond:</b><ul><li> not used</li></ul></td><td align="center">bool</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>OFF (0)  :small_orange_diamond:</li><li>ON (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NO_FAULT (0) </b> :small_orange_diamond:</li><li><b>FAULT (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_TAMPERED (0) </b> :small_orange_diamond:</li><li><b>TAMPERED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_LOW_BATTERY (0) </b> :small_orange_diamond:</li><li><b>LOW_BATTERY (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Mute (11A) :small_blue_diamond:</b><ul><li> not used</li></ul></td><td align="center">bool</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>OFF (0) </b> :small_orange_diamond:</li><li><b>ON (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>Volume (119) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| </table></details> | ||||
|  | @ -320,21 +320,21 @@ | |||
| ## StatelessProgrammableSwitch (89) | ||||
| <details><summary> Defines a "Stateless" Programmable Switch that can be used to trigger actions in the Home App.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>ProgrammableSwitchEvent (73) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV+NV</td><td align="center">0</td><td align="center">2</td><td><ul><li>SINGLE_PRESS (0)  :small_orange_diamond:</li><li>DOUBLE_PRESS (1)  </li><li>LONG_PRESS (2)  </li></ul></td></tr> | ||||
| <tr><td><b>ProgrammableSwitchEvent (73) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV+NV</td><td align="center">0</td><td align="center">2</td><td><ul><li><b>SINGLE_PRESS (0) </b> :small_orange_diamond:</li><li><b>DOUBLE_PRESS (1) </b> </li><li><b>LONG_PRESS (2) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## Switch (49) | ||||
| <details><summary> Defines a generic Switch.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>On (25) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">bool</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>OFF (0)  :small_orange_diamond:</li><li>ON (1)  </li></ul></td></tr> | ||||
| <tr><td><b>On (25) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">bool</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>OFF (0) </b> :small_orange_diamond:</li><li><b>ON (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## Television (D8) | ||||
| <details><summary> Defines a TV.  Optional Linked Services: <b>InputSource</b> and <b>TelevisionSpeaker</b>.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>Active (B0) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>INACTIVE (0)  :small_orange_diamond:</li><li>ACTIVE (1)  </li></ul></td></tr> | ||||
| <tr><td><b>Active (B0) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>INACTIVE (0) </b> :small_orange_diamond:</li><li><b>ACTIVE (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>ConfiguredName (E3) </b><ul><li></li></ul></td><td align="center">string</td><td align="center">PW+PR+EV</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>ActiveIdentifier (E7) </b><ul><li> the Identifier of the current Input Source</li></ul></td><td align="center">uint32</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">255</td><td align="center">0</td></tr> | ||||
| <tr><td><b>RemoteKey (E1) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW</td><td align="center">0</td><td align="center">16</td><td align="center">0</td></tr> | ||||
|  | @ -354,19 +354,19 @@ | |||
| <tr><td><b>CurrentTemperature (11) :small_blue_diamond:</b><ul><li> current temperature measured in Celsius</li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>StatusActive (75) </b><ul><li></li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td align="center">1</td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NO_FAULT (0)  :small_orange_diamond:</li><li>FAULT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_TAMPERED (0)  :small_orange_diamond:</li><li>TAMPERED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_LOW_BATTERY (0)  :small_orange_diamond:</li><li>LOW_BATTERY (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NO_FAULT (0) </b> :small_orange_diamond:</li><li><b>FAULT (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusTampered (7A) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_TAMPERED (0) </b> :small_orange_diamond:</li><li><b>TAMPERED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusLowBattery (79) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_LOW_BATTERY (0) </b> :small_orange_diamond:</li><li><b>LOW_BATTERY (1) </b> </li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## Thermostat (4A) | ||||
| <details><summary> Defines a Thermostat used to control a furnace, air conditioner, or both.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>CurrentHeatingCoolingState (F) :small_blue_diamond:</b><ul><li> indicates whether appliance is currently heating, cooling, or just idle</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">2</td><td><ul><li>IDLE (0)  :small_orange_diamond:</li><li>HEATING (1)  </li><li>COOLING (2)  </li></ul></td></tr> | ||||
| <tr><td><b>TargetHeatingCoolingState (33) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">3</td><td><ul><li>OFF (0)  :small_orange_diamond:</li><li>HEAT (1)  </li><li>COOL (2)  </li><li>AUTO (3)  </li></ul></td></tr> | ||||
| <tr><td><b>CurrentHeatingCoolingState (F) :small_blue_diamond:</b><ul><li> indicates whether appliance is currently heating, cooling, or just idle</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">2</td><td><ul><li><b>IDLE (0) </b> :small_orange_diamond:</li><li><b>HEATING (1) </b> </li><li><b>COOLING (2) </b> </li></ul></td></tr> | ||||
| <tr><td><b>TargetHeatingCoolingState (33) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">3</td><td><ul><li><b>OFF (0) </b> :small_orange_diamond:</li><li><b>HEAT (1) </b> </li><li><b>COOL (2) </b> </li><li><b>AUTO (3) </b> </li></ul></td></tr> | ||||
| <tr><td><b>CurrentTemperature (11) :small_blue_diamond:</b><ul><li> current temperature measured in Celsius</li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>TargetTemperature (35) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">float</td><td align="center">PW+PR+EV</td><td align="center">10</td><td align="center">38</td><td align="center">16</td></tr> | ||||
| <tr><td><b>TemperatureDisplayUnits (36) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>CELSIUS (0)  :small_orange_diamond:</li><li>FAHRENHEIT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>TemperatureDisplayUnits (36) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>CELSIUS (0) </b> :small_orange_diamond:</li><li><b>FAHRENHEIT (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>CoolingThresholdTemperature (D) </b><ul><li> cooling turns on when temperature (in Celsius) rises above this threshold</li></ul></td><td align="center">float</td><td align="center">PR+PW+EV</td><td align="center">10</td><td align="center">35</td><td align="center">10</td></tr> | ||||
| <tr><td><b>CurrentRelativeHumidity (10) </b><ul><li>current humidity measured as a percentage</li></ul></td><td align="center">float</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>HeatingThresholdTemperature (12) </b><ul><li> heating turns on when temperature (in Celsius) falls below this threshold</li></ul></td><td align="center">float</td><td align="center">PR+PW+EV</td><td align="center">0</td><td align="center">25</td><td align="center">16</td></tr> | ||||
|  | @ -377,13 +377,13 @@ | |||
| ## Valve (D0) | ||||
| <details><summary> Defines an electronic Valve.  Can be used standalone or as a Linked Service in conjunction with the <b>Faucet</b> and <b>IrrigationSystem</b> Services.</summary><br><table> | ||||
| <tr><th>Characteristic</th><th>Format</th><th>Perms</th><th>Min</th><th>Max</th><th>Constants/Defaults</th></tr> | ||||
| <tr><td><b>Active (B0) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>INACTIVE (0)  :small_orange_diamond:</li><li>ACTIVE (1)  </li></ul></td></tr> | ||||
| <tr><td><b>InUse (D2) :small_blue_diamond:</b><ul><li> if Service is set to active, this indictes whether it is currently in use</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_IN_USE (0)  :small_orange_diamond:</li><li>IN_USE (1)  </li></ul></td></tr> | ||||
| <tr><td><b>Active (B0) :small_blue_diamond:</b><ul><li> indicates if the Service is active/on</li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>INACTIVE (0) </b> :small_orange_diamond:</li><li><b>ACTIVE (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>InUse (D2) :small_blue_diamond:</b><ul><li> if Service is set to active, this indictes whether it is currently in use</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_IN_USE (0) </b> :small_orange_diamond:</li><li><b>IN_USE (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>ValveType (D5) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">3</td><td align="center">0</td></tr> | ||||
| <tr><td><b>SetDuration (D3) </b><ul><li></li></ul></td><td align="center">uint32</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">3600</td><td align="center">60</td></tr> | ||||
| <tr><td><b>RemainingDuration (D4) </b><ul><li></li></ul></td><td align="center">uint32</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">3600</td><td align="center">60</td></tr> | ||||
| <tr><td><b>IsConfigured (D6) </b><ul><li> indicates if a predefined Service has been configured</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_CONFIGURED (0)  :small_orange_diamond:</li><li>CONFIGURED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NO_FAULT (0)  :small_orange_diamond:</li><li>FAULT (1)  </li></ul></td></tr> | ||||
| <tr><td><b>IsConfigured (D6) </b><ul><li> indicates if a predefined Service has been configured</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_CONFIGURED (0) </b> :small_orange_diamond:</li><li><b>CONFIGURED (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>StatusFault (77) </b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NO_FAULT (0) </b> :small_orange_diamond:</li><li><b>FAULT (1) </b> </li></ul></td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
|  | @ -393,7 +393,7 @@ | |||
| <tr><td><b>CurrentPosition (6D) :small_blue_diamond:</b><ul><li> current position (as a percentage) from fully closed (0) to full open (100)</li></ul></td><td align="center">uint8</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>TargetPosition (7C) :small_blue_diamond:</b><ul><li></li></ul></td><td align="center">uint8</td><td align="center">PW+PR+EV</td><td align="center">0</td><td align="center">100</td><td align="center">0</td></tr> | ||||
| <tr><td><b>Name (23) </b><ul><li> default name of a Service used <i>only</i> during initial pairing</li></ul></td><td align="center">string</td><td align="center">PR</td><td align="center">-</td><td align="center">-</td><td align="center">"unnamed"</td></tr> | ||||
| <tr><td><b>ObstructionDetected (24) </b><ul><li> indicates if obstruction is detected</li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_DETECTED (0)  :small_orange_diamond:</li><li>DETECTED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>ObstructionDetected (24) </b><ul><li> indicates if obstruction is detected</li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_DETECTED (0) </b> :small_orange_diamond:</li><li><b>DETECTED (1) </b> </li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
| ## WindowCovering (8C) | ||||
|  | @ -406,6 +406,6 @@ | |||
| <tr><td><b>TargetHorizontalTiltAngle (7B) </b><ul><li></li></ul></td><td align="center">int</td><td align="center">PW+PR+EV</td><td align="center">-90</td><td align="center">90</td><td align="center">0</td></tr> | ||||
| <tr><td><b>CurrentVerticalTiltAngle (6E) </b><ul><li> current angle (in degrees) of slats from fully left (-90) to fully open (0) to fully right (90)</li></ul></td><td align="center">int</td><td align="center">PR+EV</td><td align="center">-90</td><td align="center">90</td><td align="center">0</td></tr> | ||||
| <tr><td><b>TargetVerticalTiltAngle (7D) </b><ul><li></li></ul></td><td align="center">int</td><td align="center">PW+PR+EV</td><td align="center">-90</td><td align="center">90</td><td align="center">0</td></tr> | ||||
| <tr><td><b>ObstructionDetected (24) </b><ul><li> indicates if obstruction is detected</li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li>NOT_DETECTED (0)  :small_orange_diamond:</li><li>DETECTED (1)  </li></ul></td></tr> | ||||
| <tr><td><b>ObstructionDetected (24) </b><ul><li> indicates if obstruction is detected</li></ul></td><td align="center">bool</td><td align="center">PR+EV</td><td align="center">0</td><td align="center">1</td><td><ul><li><b>NOT_DETECTED (0) </b> :small_orange_diamond:</li><li><b>DETECTED (1) </b> </li></ul></td></tr> | ||||
| </table></details> | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Gregg
						Gregg