@@ -911,6 +911,17 @@ def _appliance_status_available(data: dict[str, Any]) -> bool:
911911 ) is not None
912912
913913
914+ def _heat_demand_type_state (data : dict [str , Any ]) -> str | None :
915+ """Map /heatSources/flameIndication to a stable demand-type state key."""
916+ raw = _val (data , "/heatSources/flameIndication" )
917+ if not isinstance (raw , str ):
918+ return None
919+ value = raw .strip ().lower ()
920+ if value in {"off" , "ch" , "dhw" }:
921+ return value
922+ return None
923+
924+
914925# Zone /status -> HVAC action. Unknown values map to None (unknown), never to
915926# COOLING — these appliances are heating-only.
916927_ZONE_STATUS_ACTIONS = {
@@ -1519,6 +1530,7 @@ def _pointtapi_sensor_descriptions(
15191530 key = "/system/appliance/causeCode" ,
15201531 translation_key = "cause_code" ,
15211532 entity_category = EntityCategory .DIAGNOSTIC ,
1533+ value_fn = _appliance_cause_code ,
15221534 ),
15231535 BoschPoinTTAPISensorEntityDescription (
15241536 key = "/system/appliance/status" ,
@@ -1559,6 +1571,11 @@ def _pointtapi_sensor_descriptions(
15591571 native_unit_of_measurement = "%" ,
15601572 icon = "mdi:signal-cellular-2" ,
15611573 ),
1574+ BoschPoinTTAPISensorEntityDescription (
1575+ key = "/heatSources/flameIndication" ,
1576+ translation_key = "heat_demand_type" ,
1577+ value_fn = _heat_demand_type_state ,
1578+ ),
15621579 BoschPoinTTAPISensorEntityDescription (
15631580 key = "/heatSources/returnTemperature" ,
15641581 translation_key = "return_temperature" ,
0 commit comments