def capability_attributes(self) -> dict[str, Any] | None: """Return the capability attributes.""" supported_features = self.supported_features data = { ATTR_HVAC_MODES: self.hvac_modes, ATTR_MIN_TEMP: show_temp(self.opp, self.min_temp, self.temperature_unit, self.precision), ATTR_MAX_TEMP: show_temp(self.opp, self.max_temp, self.temperature_unit, self.precision), } if self.target_temperature_step: data[ATTR_TARGET_TEMP_STEP] = self.target_temperature_step if supported_features & SUPPORT_TARGET_HUMIDITY: data[ATTR_MIN_HUMIDITY] = self.min_humidity data[ATTR_MAX_HUMIDITY] = self.max_humidity if supported_features & SUPPORT_FAN_MODE: data[ATTR_FAN_MODES] = self.fan_modes if supported_features & SUPPORT_PRESET_MODE: data[ATTR_PRESET_MODES] = self.preset_modes if supported_features & SUPPORT_SWING_MODE: data[ATTR_SWING_MODES] = self.swing_modes return data
def extra_state_attributes(self): """Return the optional state attributes.""" return { "supply_temperature": show_temp( self.opp, self.supply_temperature, self.temperature_unit, self.precision, ), "temp_setpoint": show_temp( self.opp, self._controller.temp_setpoint, self.temperature_unit, PRECISION_HALVES, ), "control_zone": self._controller.zone_ctrl, "control_zone_name": self.control_zone_name, # Feature SUPPORT_TARGET_TEMPERATURE controls both displaying target temp & setting it # As the feature is turned off for zone control, report target temp as extra state attribute "control_zone_setpoint": show_temp( self.opp, self.control_zone_setpoint, self.temperature_unit, PRECISION_HALVES, ), }
def state_attributes(self): """Return the state attributes.""" data = {} if self.temperature is not None: data[ATTR_WEATHER_TEMPERATURE] = show_temp(self.opp, self.temperature, self.temperature_unit, self.precision) humidity = self.humidity if humidity is not None: data[ATTR_WEATHER_HUMIDITY] = round(humidity) ozone = self.ozone if ozone is not None: data[ATTR_WEATHER_OZONE] = ozone pressure = self.pressure if pressure is not None: data[ATTR_WEATHER_PRESSURE] = pressure wind_bearing = self.wind_bearing if wind_bearing is not None: data[ATTR_WEATHER_WIND_BEARING] = wind_bearing wind_speed = self.wind_speed if wind_speed is not None: data[ATTR_WEATHER_WIND_SPEED] = wind_speed visibility = self.visibility if visibility is not None: data[ATTR_WEATHER_VISIBILITY] = visibility attribution = self.attribution if attribution is not None: data[ATTR_WEATHER_ATTRIBUTION] = attribution if self.forecast is not None: forecast = [] for forecast_entry in self.forecast: forecast_entry = dict(forecast_entry) forecast_entry[ATTR_FORECAST_TEMP] = show_temp( self.opp, forecast_entry[ATTR_FORECAST_TEMP], self.temperature_unit, self.precision, ) if ATTR_FORECAST_TEMP_LOW in forecast_entry: forecast_entry[ATTR_FORECAST_TEMP_LOW] = show_temp( self.opp, forecast_entry[ATTR_FORECAST_TEMP_LOW], self.temperature_unit, self.precision, ) forecast.append(forecast_entry) data[ATTR_FORECAST] = forecast return data
def state_attributes(self) -> dict[str, Any]: """Return the optional state attributes.""" supported_features = self.supported_features data = { ATTR_CURRENT_TEMPERATURE: show_temp( self.opp, self.current_temperature, self.temperature_unit, self.precision, ), } if supported_features & SUPPORT_TARGET_TEMPERATURE: data[ATTR_TEMPERATURE] = show_temp( self.opp, self.target_temperature, self.temperature_unit, self.precision, ) if supported_features & SUPPORT_TARGET_TEMPERATURE_RANGE: data[ATTR_TARGET_TEMP_HIGH] = show_temp( self.opp, self.target_temperature_high, self.temperature_unit, self.precision, ) data[ATTR_TARGET_TEMP_LOW] = show_temp( self.opp, self.target_temperature_low, self.temperature_unit, self.precision, ) if self.current_humidity is not None: data[ATTR_CURRENT_HUMIDITY] = self.current_humidity if supported_features & SUPPORT_TARGET_HUMIDITY: data[ATTR_HUMIDITY] = self.target_humidity if supported_features & SUPPORT_FAN_MODE: data[ATTR_FAN_MODE] = self.fan_mode if self.hvac_action: data[ATTR_HVAC_ACTION] = self.hvac_action if supported_features & SUPPORT_PRESET_MODE: data[ATTR_PRESET_MODE] = self.preset_mode if supported_features & SUPPORT_SWING_MODE: data[ATTR_SWING_MODE] = self.swing_mode if supported_features & SUPPORT_AUX_HEAT: data[ATTR_AUX_HEAT] = STATE_ON if self.is_aux_heat else STATE_OFF return data
def capability_attributes(self): """Return capability attributes.""" supported_features = self.supported_features or 0 data = { ATTR_MIN_TEMP: show_temp( self.opp, self.min_temp, self.temperature_unit, self.precision ), ATTR_MAX_TEMP: show_temp( self.opp, self.max_temp, self.temperature_unit, self.precision ), } if supported_features & SUPPORT_OPERATION_MODE: data[ATTR_OPERATION_LIST] = self.operation_list return data
def state_attributes(self): """Return the optional state attributes.""" data = { ATTR_CURRENT_TEMPERATURE: show_temp( self.opp, self.current_temperature, self.temperature_unit, self.precision, ), ATTR_TEMPERATURE: show_temp( self.opp, self.target_temperature, self.temperature_unit, self.precision, ), ATTR_TARGET_TEMP_HIGH: show_temp( self.opp, self.target_temperature_high, self.temperature_unit, self.precision, ), ATTR_TARGET_TEMP_LOW: show_temp( self.opp, self.target_temperature_low, self.temperature_unit, self.precision, ), } supported_features = self.supported_features if supported_features & SUPPORT_OPERATION_MODE: data[ATTR_OPERATION_MODE] = self.current_operation if supported_features & SUPPORT_AWAY_MODE: is_away = self.is_away_mode_on data[ATTR_AWAY_MODE] = STATE_ON if is_away else STATE_OFF return data
def extra_state_attributes(self): """Return the optional device state attributes.""" data = {} if self.external_temperature is not None: data[ATTR_EXTERNAL_TEMPERATURE] = show_temp( self.opp, self.external_temperature, self.temperature_unit, PRECISION_TENTHS, ) if self.smart_temperature: data[ATTR_SMART_TEMPERATURE] = self.smart_temperature if self.occupied is not None: data[ATTR_OCCUPIED] = self.occupied if self.eco_target is not None: data[ATTR_ECO_TARGET] = self.eco_target return data