aioafero.v1.models package

Submodules

aioafero.v1.models.dehumidifier module

Representation of an Afero Dehumidifier and its corresponding updates.

class aioafero.v1.models.dehumidifier.Dehumidifier(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.DEHUMIDIFIER, on: ~aioafero.v1.models.features.OnFeature | None = None, mode: ~aioafero.v1.models.features.ModeFeature | None = None, current_humidity: int | None = None, target_humidity: ~aioafero.v1.models.features.NumbersFeature | None = None)[source]

Bases: StandardMixin

Representation of an Afero Dehumidifier.

Parameters:
type: ResourceTypes = 'dehumidifier'
on: OnFeature | None = None
mode: ModeFeature | None = None
current_humidity: int | None = None
target_humidity: NumbersFeature | None = None
__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.DEHUMIDIFIER, on: ~aioafero.v1.models.features.OnFeature | None = None, mode: ~aioafero.v1.models.features.ModeFeature | None = None, current_humidity: int | None = None, target_humidity: ~aioafero.v1.models.features.NumbersFeature | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.dehumidifier.DehumidifierPut(on: OnFeature | None = None, mode: ModeFeature | None = None, target_humidity: NumbersFeature | None = None)[source]

Bases: object

States that can be updated for a Dehumidifier.

Parameters:
on: OnFeature | None = None
mode: ModeFeature | None = None
target_humidity: NumbersFeature | None = None
selects: dict[tuple[str, str | None], SelectFeature] | None
__init__(on: OnFeature | None = None, mode: ModeFeature | None = None, target_humidity: NumbersFeature | None = None) → None
Parameters:
Return type:

None

aioafero.v1.models.device module

Representation of a top-level item.

class aioafero.v1.models.device.Device(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.PARENT_DEVICE)[source]

Bases: StandardMixin

Representation of an Afero parent item.

Parameters:
type: ResourceTypes = 'parent-device'
__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.PARENT_DEVICE) → None
Parameters:
Return type:

None

aioafero.v1.models.exhaust_fan module

Representation of an Afero Exhaust Fan and its corresponding updates.

class aioafero.v1.models.exhaust_fan.ExhaustFan(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.EXHAUST_FAN)[source]

Bases: StandardMixin

Representation of an Afero Exhaust Fan.

Parameters:
type: ResourceTypes = 'exhaust-fan'
__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.EXHAUST_FAN) → None
Parameters:
Return type:

None

class aioafero.v1.models.exhaust_fan.ExhaustFanPut[source]

Bases: object

States that can be updated for an exhaust fan.

numbers: dict[tuple[str, str | None], NumbersFeature] | None
selects: dict[tuple[str, str | None], SelectFeature] | None
__init__() → None
Return type:

None

aioafero.v1.models.fan module

Representation of an Afero Fan and its corresponding updates.

class aioafero.v1.models.fan.Fan(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.FAN, on: ~aioafero.v1.models.features.OnFeature | None = None, speed: ~aioafero.v1.models.features.SpeedFeature | None = None, direction: ~aioafero.v1.models.features.DirectionFeature | None = None, preset: ~aioafero.v1.models.features.PresetFeature | None = None)[source]

Bases: StandardMixin

Representation of an Afero Fan.

Parameters:
type: ResourceTypes = 'fan'
on: OnFeature | None = None
speed: SpeedFeature | None = None
direction: DirectionFeature | None = None
preset: PresetFeature | None = None
property supports_direction

Determine if you can change the direction of the fan.

property supports_on

Determine if you can turn the fan on or off.

property supports_presets

Determine if presets are supported by this fan.

property supports_speed

Determine if a speed feature is supported by this fan.

property is_on: bool

Return bool if fan is currently powered on.

property current_direction: bool

Return if the direction is forward.

property current_speed: int

Current speed of the fan, as a percentage.

property current_preset: str | None

Current fan preset.

__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.FAN, on: ~aioafero.v1.models.features.OnFeature | None = None, speed: ~aioafero.v1.models.features.SpeedFeature | None = None, direction: ~aioafero.v1.models.features.DirectionFeature | None = None, preset: ~aioafero.v1.models.features.PresetFeature | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.fan.FanPut(on: OnFeature | None = None, speed: SpeedFeature | None = None, direction: DirectionFeature | None = None, preset: PresetFeature | None = None)[source]

Bases: object

States that can be updated for a Fan.

Parameters:
on: OnFeature | None = None
speed: SpeedFeature | None = None
direction: DirectionFeature | None = None
preset: PresetFeature | None = None
__init__(on: OnFeature | None = None, speed: SpeedFeature | None = None, direction: DirectionFeature | None = None, preset: PresetFeature | None = None) → None
Parameters:
Return type:

None

aioafero.v1.models.features module

Feature Schemas used by various Afero resources.

class aioafero.v1.models.features.AferoValueEmission(function_class: str, function_instance: str | None, value: Any)[source]

Bases: object

One outbound Afero state derived from a feature.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • value (Any)

function_class: str
function_instance: str | None
value: Any
__init__(function_class: str, function_instance: str | None, value: Any) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • value (Any)

Return type:

None

class aioafero.v1.models.features.AferoFeature(*, function_class: str, function_instance: str | None)[source]

Bases: object

Base feature with required Afero function identity.

Parameters:
  • function_class (str)

  • function_instance (str | None)

function_class: str
function_instance: str | None
property api_value: Any

Value member to send to the Afero API.

iter_afero_values() → list[AferoValueEmission][source]

Return outbound states owned by this feature.

Return type:

list[AferoValueEmission]

__init__(*, function_class: str, function_instance: str | None) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

Return type:

None

class aioafero.v1.models.features.ColorModeFeature(*, function_class: str, function_instance: str | None, mode: str)[source]

Bases: AferoFeature

Represent the current mode (ie white, color) Feature object.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • mode (str)

mode: str
property api_value: str

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, mode: str) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • mode (str)

Return type:

None

class aioafero.v1.models.features.ColorFeature(*, function_class: str, function_instance: str | None, red: int, green: int, blue: int)[source]

Bases: AferoFeature

Represent RGB Feature object.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • red (int)

  • green (int)

  • blue (int)

red: int
green: int
blue: int
property api_value: dict[str, dict[str, int]]

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, red: int, green: int, blue: int) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • red (int)

  • green (int)

  • blue (int)

Return type:

None

class aioafero.v1.models.features.ColorTemperatureFeature(*, function_class: str, function_instance: str | None, temperature: int, supported: list[int], prefix: str = '')[source]

Bases: AferoFeature

Represent Current temperature Feature.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • temperature (int)

  • supported (list[int])

  • prefix (str)

temperature: int
supported: list[int]
prefix: str = ''
property api_value: str

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, temperature: int, supported: list[int], prefix: str = '') → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • temperature (int)

  • supported (list[int])

  • prefix (str)

Return type:

None

class aioafero.v1.models.features.CurrentPositionEnum(*values)[source]

Bases: Enum

Enum with available current position modes.

LOCKED = 'locked'
LOCKING = 'locking'
UNKNOWN = 'unknown'
UNLOCKED = 'unlocked'
UNLOCKING = 'unlocking'
class aioafero.v1.models.features.CurrentPositionFeature(*, function_class: str, function_instance: str | None, position: CurrentPositionEnum)[source]

Bases: AferoFeature

Represents the current position of the lock.

Parameters:
position: CurrentPositionEnum
property api_value: str

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, position: CurrentPositionEnum) → None
Parameters:
Return type:

None

class aioafero.v1.models.features.CurrentTemperatureFeature(*, function_class: str, function_instance: str | None, temperature: float)[source]

Bases: AferoFeature

Represents the current temperature.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • temperature (float)

temperature: float
property api_value: float

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, temperature: float) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • temperature (float)

Return type:

None

class aioafero.v1.models.features.DimmingFeature(*, function_class: str, function_instance: str | None, brightness: int, supported: list[int])[source]

Bases: AferoFeature

Represent Current temperature Feature.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • brightness (int)

  • supported (list[int])

brightness: int
supported: list[int]
property api_value: int

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, brightness: int, supported: list[int]) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • brightness (int)

  • supported (list[int])

Return type:

None

class aioafero.v1.models.features.DirectionFeature(*, function_class: str, function_instance: str | None, forward: bool)[source]

Bases: AferoFeature

Represent Current Fan direction Feature.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • forward (bool)

forward: bool
property api_value: str

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, forward: bool) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • forward (bool)

Return type:

None

class aioafero.v1.models.features.EffectFeature(*, function_class: str, function_instance: str | None, effect: str, effects: dict[str, set[str]])[source]

Bases: AferoFeature

Represent the current effect.

Parameters:
effect: str
effects: dict[str, set[str]]
property api_value: str

Canonical effect value; multi-state emission uses iter_afero_values.

iter_afero_values() → list[AferoValueEmission][source]

Emit ordered color-sequence states for the selected effect.

Return type:

list[AferoValueEmission]

is_preset(effect: str) → bool[source]

Determine if the current state is a preset effect.

Parameters:

effect (str)

Return type:

bool

__init__(*, function_class: str, function_instance: str | None, effect: str, effects: dict[str, set[str]]) → None
Parameters:
Return type:

None

class aioafero.v1.models.features.HVACModeFeature(*, function_class: str, function_instance: str | None, mode: str | None, previous_mode: str | None, supported_modes: set[str], modes: set[str])[source]

Bases: AferoFeature

Represent HVAC Mode Feature.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • mode (str | None)

  • previous_mode (str | None)

  • supported_modes (set[str])

  • modes (set[str])

mode: str | None
previous_mode: str | None
supported_modes: set[str]
modes: set[str]
property api_value: str | None

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, mode: str | None, previous_mode: str | None, supported_modes: set[str], modes: set[str]) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • mode (str | None)

  • previous_mode (str | None)

  • supported_modes (set[str])

  • modes (set[str])

Return type:

None

class aioafero.v1.models.features.ModeFeature(*, function_class: str, function_instance: str | None, mode: str | None, modes: set[str])[source]

Bases: AferoFeature

Represent Current Fan mode Feature.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • mode (str | None)

  • modes (set[str])

mode: str | None
modes: set[str]
property api_value: str | None

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, mode: str | None, modes: set[str]) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • mode (str | None)

  • modes (set[str])

Return type:

None

class aioafero.v1.models.features.NumbersFeature(*, function_class: str, function_instance: str | None, value: float, min: float, max: float, step: float, name: str | None, unit: str | None)[source]

Bases: AferoFeature

Represents a numeric value.

Parameters:
value: float
min: float
max: float
step: float
name: str | None
unit: str | None
property api_value: float

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, value: float, min: float, max: float, step: float, name: str | None, unit: str | None) → None
Parameters:
Return type:

None

class aioafero.v1.models.features.OnFeature(*, function_class: str, function_instance: str | None, on: bool)[source]

Bases: AferoFeature

Represent On Feature object as used by various Afero resources.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • on (bool)

on: bool
property api_value: str

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, on: bool) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • on (bool)

Return type:

None

class aioafero.v1.models.features.OpenFeature(*, function_class: str, function_instance: str | None, open: bool)[source]

Bases: AferoFeature

Represent Open Feature object.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • open (bool)

open: bool
property api_value: str

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, open: bool) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • open (bool)

Return type:

None

class aioafero.v1.models.features.PresetFeature(*, function_class: str, function_instance: str | None, enabled: bool)[source]

Bases: AferoFeature

Represent the current preset.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • enabled (bool)

enabled: bool
property api_value: str

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, enabled: bool) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • enabled (bool)

Return type:

None

class aioafero.v1.models.features.SecuritySensorConfigFeature(*, function_class: str, function_instance: str | None, sensor_id: int, chirpMode: int, triggerType: int, bypassType: int, key_name: str)[source]

Bases: AferoFeature

Represent the current security sensor configuration.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • sensor_id (int)

  • chirpMode (int)

  • triggerType (int)

  • bypassType (int)

  • key_name (str)

sensor_id: int
chirpMode: int
triggerType: int
bypassType: int
key_name: str
property api_value: dict[str, dict[str, int]]

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, sensor_id: int, chirpMode: int, triggerType: int, bypassType: int, key_name: str) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • sensor_id (int)

  • chirpMode (int)

  • triggerType (int)

  • bypassType (int)

  • key_name (str)

Return type:

None

class aioafero.v1.models.features.SelectFeature(*, function_class: str, function_instance: str | None, selected: str, selects: set[str], name: str)[source]

Bases: AferoFeature

Represent available options and currently selected.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • selected (str)

  • selects (set[str])

  • name (str)

selected: str
selects: set[str]
name: str
property api_value: str

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, selected: str, selects: set[str], name: str) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • selected (str)

  • selects (set[str])

  • name (str)

Return type:

None

class aioafero.v1.models.features.SecuritySystemDisarmPin(*, function_class: str, function_instance: str | None, pin: int)[source]

Bases: AferoFeature

Represent the disarm pin feature.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • pin (int)

pin: int
property api_value: str

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, pin: int) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • pin (int)

Return type:

None

class aioafero.v1.models.features.SecuritySensorSirenFeature(*, function_class: str, function_instance: str | None, result_code: int | None, command: int | None)[source]

Bases: AferoFeature

Represent the current state of the siren.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • result_code (int | None)

  • command (int | None)

result_code: int | None
command: int | None
property api_value: dict[str, dict[str, int | None]] | None

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, result_code: int | None, command: int | None) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • result_code (int | None)

  • command (int | None)

Return type:

None

class aioafero.v1.models.features.SpeedFeature(*, function_class: str, function_instance: str | None, speed: int, speeds: list[str])[source]

Bases: AferoFeature

Represent Current Fan speed Feature.

Parameters:
  • function_class (str)

  • function_instance (str | None)

  • speed (int)

  • speeds (list[str])

speed: int
speeds: list[str]
property api_value: str

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, speed: int, speeds: list[str]) → None
Parameters:
  • function_class (str)

  • function_instance (str | None)

  • speed (int)

  • speeds (list[str])

Return type:

None

class aioafero.v1.models.features.TargetTemperatureFeature(*, function_class: str, function_instance: str | None, value: float, min: float, max: float, step: float)[source]

Bases: AferoFeature

Represents the target temperature for auto.

Parameters:
value: float
min: float
max: float
step: float
property api_value: float

Value to send to Afero API.

__init__(*, function_class: str, function_instance: str | None, value: float, min: float, max: float, step: float) → None
Parameters:
Return type:

None

aioafero.v1.models.hvac_mixin module

Handles generic information related to all HVAC devices.

class aioafero.v1.models.hvac_mixin.HVACMixin(*, current_temperature: CurrentTemperatureFeature | None = None, fan_running: bool | None = None, fan_mode: ModeFeature | None = None, hvac_action: str | None = None, hvac_mode: HVACModeFeature | None = None, target_temperature_heating: TargetTemperatureFeature | None = None, target_temperature_cooling: TargetTemperatureFeature | None = None, target_temperature_auto_heating: TargetTemperatureFeature | None = None, target_temperature_auto_cooling: TargetTemperatureFeature | None = None)[source]

Bases: ABC

Mixin for HVAC properties and methods.

Parameters:
current_temperature: CurrentTemperatureFeature | None = None
fan_running: bool | None = None
fan_mode: ModeFeature | None = None
hvac_action: str | None = None
hvac_mode: HVACModeFeature | None = None
target_temperature_heating: TargetTemperatureFeature | None = None
target_temperature_cooling: TargetTemperatureFeature | None = None
target_temperature_auto_heating: TargetTemperatureFeature | None = None
target_temperature_auto_cooling: TargetTemperatureFeature | None = None
property target_temperature: float | None

Temperature which the HVAC will try to achieve.

abstractmethod get_mode_to_check() → str | None[source]

Determine the current mode of the thermostat.

Return type:

str | None

property target_temperature_step: float

Smallest increment for adjusting the temperature.

property target_temperature_max: float | None

Maximum target temperature.

property target_temperature_min: float | None

Minimum target temperature.

property temperature: float | None

Current temperature of the selected mode.

__init__(*, current_temperature: CurrentTemperatureFeature | None = None, fan_running: bool | None = None, fan_mode: ModeFeature | None = None, hvac_action: str | None = None, hvac_mode: HVACModeFeature | None = None, target_temperature_heating: TargetTemperatureFeature | None = None, target_temperature_cooling: TargetTemperatureFeature | None = None, target_temperature_auto_heating: TargetTemperatureFeature | None = None, target_temperature_auto_cooling: TargetTemperatureFeature | None = None) → None
Parameters:
Return type:

None

aioafero.v1.models.light module

Representation of an Afero Light and its corresponding updates.

class aioafero.v1.models.light.LightChannel(brightness: int | None = None, on: bool | None = None)[source]

Bases: object

Per-channel brightness/on for a dual-channel light.

Parameters:
  • brightness (int | None)

  • on (bool | None)

brightness: int | None = None
on: bool | None = None
__init__(brightness: int | None = None, on: bool | None = None) → None
Parameters:
  • brightness (int | None)

  • on (bool | None)

Return type:

None

class aioafero.v1.models.light.Light(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.LIGHT, on: ~aioafero.v1.models.features.OnFeature | None = None, color: ~aioafero.v1.models.features.ColorFeature | None = None, color_mode: ~aioafero.v1.models.features.ColorModeFeature | None = None, color_modes: list[str] | None = None, color_mode_hints: dict[str, list[str]] | None = None, color_temperature: ~aioafero.v1.models.features.ColorTemperatureFeature | None = None, dimming: ~aioafero.v1.models.features.DimmingFeature | None = None, effect: ~aioafero.v1.models.features.EffectFeature | None = None, supports_white: bool = False, channels: dict[str, ~aioafero.v1.models.light.LightChannel] = <factory>)[source]

Bases: StandardMixin

Representation of an Afero Light.

Parameters:
type: ResourceTypes = 'light'
on: OnFeature | None = None
color: ColorFeature | None = None
color_mode: ColorModeFeature | None = None
color_modes: list[str] | None = None
color_mode_hints: dict[str, list[str]] | None = None
color_temperature: ColorTemperatureFeature | None = None
dimming: DimmingFeature | None = None
effect: EffectFeature | None = None
supports_white: bool = False
channels: dict[str, LightChannel]
__post_init__()[source]

Determine if white only is supported.

property supports_color: bool

Return if this light supports color control.

property supports_color_temperature: bool

Return if this light supports color_temperature control.

property supports_color_white: bool

Return if this light supports setting white.

color_mode_has_hint(mode: str, hint: str) → bool[source]

Return True when mode carries the given API category hint.

Parameters:
Return type:

bool

property supports_dimming: bool

Return if this light supports brightness control.

property supports_effects: bool

Return if this light supports brightness control.

property supports_on

If the light can be toggled on or off.

property is_on: bool

Return bool if light is currently powered on.

property brightness: float

Return current brightness of light.

property is_dual_channel: bool

Return True when color and white channels are both present.

channel_brightness(channel: str) → float | None[source]

Return brightness for a channel, if known.

Parameters:

channel (str)

Return type:

float | None

channel_on(channel: str) → bool | None[source]

Return on/off for a channel toggle, if known.

Parameters:

channel (str)

Return type:

bool | None

feature_for_update_comparison(field_name: str, put_feature: object | None) → object | None[source]

Compare channel toggles/dimming against channels, not primary.

Parameters:
  • field_name (str)

  • put_feature (object | None)

Return type:

object | None

__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.LIGHT, on: ~aioafero.v1.models.features.OnFeature | None = None, color: ~aioafero.v1.models.features.ColorFeature | None = None, color_mode: ~aioafero.v1.models.features.ColorModeFeature | None = None, color_modes: list[str] | None = None, color_mode_hints: dict[str, list[str]] | None = None, color_temperature: ~aioafero.v1.models.features.ColorTemperatureFeature | None = None, dimming: ~aioafero.v1.models.features.DimmingFeature | None = None, effect: ~aioafero.v1.models.features.EffectFeature | None = None, supports_white: bool = False, channels: dict[str, ~aioafero.v1.models.light.LightChannel] = <factory>) → None
Parameters:
Return type:

None

class aioafero.v1.models.light.LightPut(on: OnFeature | None = None, color: ColorFeature | None = None, color_mode: ColorModeFeature | None = None, color_temperature: ColorTemperatureFeature | None = None, dimming: DimmingFeature | None = None, effect: EffectFeature | None = None)[source]

Bases: Generic

States that can be updated for a light.

Parameters:
on: OnFeature | None = None
color: ColorFeature | None = None
color_mode: ColorModeFeature | None = None
color_temperature: ColorTemperatureFeature | None = None
dimming: DimmingFeature | None = None
effect: EffectFeature | None = None
numbers: dict[tuple[str, str | None], NumbersFeature] | None
__init__(on: OnFeature | None = None, color: ColorFeature | None = None, color_mode: ColorModeFeature | None = None, color_temperature: ColorTemperatureFeature | None = None, dimming: DimmingFeature | None = None, effect: EffectFeature | None = None) → None
Parameters:
Return type:

None

aioafero.v1.models.lock module

Representation of an Afero Lock and its corresponding updates.

class aioafero.v1.models.lock.Lock(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.LOCK, position: ~aioafero.v1.models.features.CurrentPositionFeature | None = None)[source]

Bases: StandardMixin

Representation of an Afero Lock.

Parameters:
type: ResourceTypes = 'door-lock'
position: CurrentPositionFeature | None = None
__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.LOCK, position: ~aioafero.v1.models.features.CurrentPositionFeature | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.lock.LockPut(position: CurrentPositionFeature | None = None)[source]

Bases: object

States that can be updated for a Lock.

Parameters:

position (CurrentPositionFeature | None)

position: CurrentPositionFeature | None = None
__init__(position: CurrentPositionFeature | None = None) → None
Parameters:

position (CurrentPositionFeature | None)

Return type:

None

aioafero.v1.models.portable_ac module

Representation of an Afero Portable AC and its corresponding updates.

class aioafero.v1.models.portable_ac.PortableAC(*, current_temperature: ~aioafero.v1.models.features.CurrentTemperatureFeature | None = None, fan_running: bool | None = None, fan_mode: ~aioafero.v1.models.features.ModeFeature | None = None, hvac_action: str | None = None, hvac_mode: ~aioafero.v1.models.features.HVACModeFeature | None = None, target_temperature_heating: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_cooling: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_auto_heating: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_auto_cooling: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.PORTABLE_AC)[source]

Bases: StandardMixin, HVACMixin

Representation of an Afero Portable AC.

Parameters:
type: ResourceTypes = 'portable-air-conditioner'
numbers: dict[tuple[str, str | None], NumbersFeature] | None
selects: dict[tuple[str, str | None], SelectFeature] | None
property supports_fan_mode: bool

Can enable fan-only mode.

get_mode_to_check() → str | None[source]

Determine the current mode of the thermostat.

Return type:

str | None

property supports_temperature_range: bool

Range which the thermostat will heat / cool.

__init__(*, current_temperature: ~aioafero.v1.models.features.CurrentTemperatureFeature | None = None, fan_running: bool | None = None, fan_mode: ~aioafero.v1.models.features.ModeFeature | None = None, hvac_action: str | None = None, hvac_mode: ~aioafero.v1.models.features.HVACModeFeature | None = None, target_temperature_heating: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_cooling: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_auto_heating: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_auto_cooling: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.PORTABLE_AC) → None
Parameters:
Return type:

None

class aioafero.v1.models.portable_ac.PortableACPut(current_temperature: CurrentTemperatureFeature | None = None, hvac_mode: HVACModeFeature | None = None, target_temperature_cooling: TargetTemperatureFeature | None = None)[source]

Bases: object

States that can be updated for a Portable AC.

Parameters:
current_temperature: CurrentTemperatureFeature | None = None
hvac_mode: HVACModeFeature | None = None
target_temperature_cooling: TargetTemperatureFeature | None = None
numbers: dict[tuple[str, str | None], NumbersFeature] | None
selects: dict[tuple[str, str | None], SelectFeature] | None
__init__(current_temperature: CurrentTemperatureFeature | None = None, hvac_mode: HVACModeFeature | None = None, target_temperature_cooling: TargetTemperatureFeature | None = None) → None
Parameters:
Return type:

None

aioafero.v1.models.resource module

Generic/base Resource Model(s).

class aioafero.v1.models.resource.ResourceTypes(*values)[source]

Bases: Enum

Type of the supported resources.

DEHUMIDIFIER = 'dehumidifier'
DEVICE = 'metadevice.device'
HOME = 'metadata.home'
ROOM = 'metadata.room'
EXHAUST_FAN = 'exhaust-fan'
FAN = 'fan'
LANDSCAPE_TRANSFORMER = 'landscape-transformer'
LIGHT = 'light'
LOCK = 'door-lock'
PARENT_DEVICE = 'parent-device'
PORTABLE_AC = 'portable-air-conditioner'
POWER_OUTLET = 'power-outlet'
SECURITY_SYSTEM = 'security-system'
SECURITY_SYSTEM_KEYPAD = 'security-system-keypad'
SECURITY_SYSTEM_SENSOR = 'security-system-sensor'
SWITCH = 'switch'
THERMOSTAT = 'thermostat'
UNKNOWN = 'unknown'
WATER_TIMER = 'water-timer'
class aioafero.v1.models.resource.DeviceInformation(device_class: str | None = None, default_image: str | None = None, default_name: str | None = None, manufacturer: str | None = None, model: str | None = None, name: str | None = None, parent_id: str | None = None, wifi_mac: str | None = None, ble_mac: str | None = None, version_data: dict | None = None, children: list[str] | None = None, functions: list[dict[str, Any]] | None = None)[source]

Bases: object

Generic Device Information.

Parameters:
  • device_class (str | None)

  • default_image (str | None)

  • default_name (str | None)

  • manufacturer (str | None)

  • model (str | None)

  • name (str | None)

  • parent_id (str | None)

  • wifi_mac (str | None)

  • ble_mac (str | None)

  • version_data (dict | None)

  • children (list[str] | None)

  • functions (list[dict[str, Any]] | None)

device_class: str | None = None
default_image: str | None = None
default_name: str | None = None
manufacturer: str | None = None
model: str | None = None
name: str | None = None
parent_id: str | None = None
wifi_mac: str | None = None
ble_mac: str | None = None
version_data: dict | None = None
children: list[str] | None = None
functions: list[dict[str, Any]] | None = None
__init__(device_class: str | None = None, default_image: str | None = None, default_name: str | None = None, manufacturer: str | None = None, model: str | None = None, name: str | None = None, parent_id: str | None = None, wifi_mac: str | None = None, ble_mac: str | None = None, version_data: dict | None = None, children: list[str] | None = None, functions: list[dict[str, Any]] | None = None) → None
Parameters:
  • device_class (str | None)

  • default_image (str | None)

  • default_name (str | None)

  • manufacturer (str | None)

  • model (str | None)

  • name (str | None)

  • parent_id (str | None)

  • wifi_mac (str | None)

  • ble_mac (str | None)

  • version_data (dict | None)

  • children (list[str] | None)

  • functions (list[dict[str, Any]] | None)

Return type:

None

aioafero.v1.models.security_system module

Representation of an Afero Security System and its corresponding updates.

class aioafero.v1.models.security_system.SecuritySystem(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.SECURITY_SYSTEM, alarm_state: ~aioafero.v1.models.features.ModeFeature | None = None, siren_action: ~aioafero.v1.models.features.SecuritySensorSirenFeature | None = None)[source]

Bases: StandardMixin

Representation of an Afero Security Panel.

Parameters:
type: ResourceTypes = 'security-system'
alarm_state: ModeFeature | None = None
siren_action: SecuritySensorSirenFeature | None = None
property supports_away: bool

States if the panel supports away mode.

property supports_arm_bypass: bool

States if the panel supports arm-bypass mode.

property supports_home: bool

States if the panel supports home mode.

property supports_night: bool

States if the panel supports night mode.

property supports_vacation: bool

States if the panel supports vacation mode.

property supports_trigger: bool

States if the panel supports manually triggering.

__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.SECURITY_SYSTEM, alarm_state: ~aioafero.v1.models.features.ModeFeature | None = None, siren_action: ~aioafero.v1.models.features.SecuritySensorSirenFeature | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.security_system.SecuritySystemPut(alarm_state: ModeFeature | None = None, siren_action: SecuritySensorSirenFeature | None = None, disarm_pin: SecuritySystemDisarmPin | None = None)[source]

Bases: object

States that can be updated for a Security System.

Parameters:
alarm_state: ModeFeature | None = None
siren_action: SecuritySensorSirenFeature | None = None
disarm_pin: SecuritySystemDisarmPin | None = None
numbers: dict[tuple[str, str | None], NumbersFeature] | None
selects: dict[tuple[str, str | None], SelectFeature] | None
__init__(alarm_state: ModeFeature | None = None, siren_action: SecuritySensorSirenFeature | None = None, disarm_pin: SecuritySystemDisarmPin | None = None) → None
Parameters:
Return type:

None

aioafero.v1.models.security_system_keypad module

Representation of an Afero Security System Keypad and its corresponding updates.

class aioafero.v1.models.security_system_keypad.SecuritySystemKeypad(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.SECURITY_SYSTEM_KEYPAD)[source]

Bases: StandardMixin

Representation of an Afero Security Keypad.

Parameters:
type: ResourceTypes = 'security-system-keypad'
__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.SECURITY_SYSTEM_KEYPAD) → None
Parameters:
Return type:

None

class aioafero.v1.models.security_system_keypad.SecuritySystemKeypadPut[source]

Bases: object

States that can be updated for a Security System Keypad.

selects: dict[tuple[str, str | None], SelectFeature] | None
__init__() → None
Return type:

None

aioafero.v1.models.security_system_sensor module

Representation of an Afero Security System Sensor (derived) and its corresponding updates.

class aioafero.v1.models.security_system_sensor.SecuritySystemSensor(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.SECURITY_SYSTEM_SENSOR, config_key: str | None = None)[source]

Bases: StandardMixin

Representation of a security system sensor.

Parameters:
type: ResourceTypes = 'security-system-sensor'
config_key: str | None = None
property instance

Instance for the split device.

__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.SECURITY_SYSTEM_SENSOR, config_key: str | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.security_system_sensor.SecuritySystemSensorPut[source]

Bases: object

States that can be updated for a Security System Sensor.

sensor_config: SecuritySensorConfigFeature | None = None
__init__() → None
Return type:

None

aioafero.v1.models.sensor module

Representation of an Afero Sensor and its corresponding updates.

class aioafero.v1.models.sensor.AferoSensor(id: str, owner: str, value: str | int | float | None, unit: str | None = None, instance: str | None = None)[source]

Bases: object

Sensor that can return any value.

Parameters:
id: str
owner: str
value: str | int | float | None
unit: str | None = None
instance: str | None = None
__init__(id: str, owner: str, value: str | int | float | None, unit: str | None = None, instance: str | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.sensor.AferoBinarySensor(id: str, owner: str, current_value: str | int, _error: str | int, unit: str | None = None, instance: str | None = None)[source]

Bases: object

Sensor that can return True (alerting) or False (normal).

Parameters:
id: str
owner: str
current_value: str | int
unit: str | None = None
instance: str | None = None
property value: bool

Determine if the binary sensor is in an alert state.

__init__(id: str, owner: str, current_value: str | int, _error: str | int, unit: str | None = None, instance: str | None = None) → None
Parameters:
Return type:

None

aioafero.v1.models.standard_mixin module

Handles generic information related to all devices.

class aioafero.v1.models.standard_mixin.StandardMixin(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>)[source]

Bases: object

Mixin for standard properties and methods.

Parameters:
available: bool
device_information: DeviceInformation
split: SplitDeviceId | None = None
numbers: dict[tuple[str, str | None], NumbersFeature] | None
selects: dict[tuple[str, str | None], SelectFeature] | None
sensors: dict[str, AferoSensor]
binary_sensors: dict[str, AferoBinarySensor]
feature_for_update_comparison(field_name: str, put_feature: object | None) → object | None[source]

Return the cached feature used to suppress unchanged API writes.

Parameters:
  • field_name (str)

  • put_feature (object | None)

Return type:

object | None

property id

ID for the device (split or normal).

property split_identifier: str | None

Token used in the synthetic split id, or None if not split.

property instance

Instance for the split device.

property update_id: str

ID used when sending updates to Afero API.

__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>) → None
Parameters:
Return type:

None

aioafero.v1.models.switch module

Representation of an Afero Switch and its corresponding updates.

class aioafero.v1.models.switch.Switch(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.SWITCH, on: dict[str | None, ~aioafero.v1.models.features.OnFeature] | None = None)[source]

Bases: StandardMixin

Representation of an Afero Switch.

Parameters:
type: ResourceTypes = 'switch'
on: dict[str | None, OnFeature] | None = None
__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.SWITCH, on: dict[str | None, ~aioafero.v1.models.features.OnFeature] | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.switch.SwitchPut(on: OnFeature | None = None)[source]

Bases: object

States that can be updated for a Switch.

Parameters:

on (OnFeature | None)

on: OnFeature | None = None
__init__(on: OnFeature | None = None) → None
Parameters:

on (OnFeature | None)

Return type:

None

aioafero.v1.models.thermostat module

Representation of an Afero Thermostat and its corresponding updates.

class aioafero.v1.models.thermostat.Thermostat(*, current_temperature: ~aioafero.v1.models.features.CurrentTemperatureFeature | None = None, fan_running: bool | None = None, fan_mode: ~aioafero.v1.models.features.ModeFeature | None = None, hvac_action: str | None = None, hvac_mode: ~aioafero.v1.models.features.HVACModeFeature | None = None, target_temperature_heating: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_cooling: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_auto_heating: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_auto_cooling: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.THERMOSTAT, safety_max_temp: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, safety_min_temp: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None)[source]

Bases: StandardMixin, HVACMixin

Representation of an Afero Thermostat.

Parameters:
type: ResourceTypes = 'thermostat'
safety_max_temp: TargetTemperatureFeature | None = None
safety_min_temp: TargetTemperatureFeature | None = None
property target_temperature_range: tuple[float, float]

Range which the thermostat supports.

get_mode_to_check() → str | None[source]

Determine the current mode of the thermostat.

Return type:

str | None

property supports_fan_mode: bool

Can enable fan-only mode.

property supports_temperature_range: bool

Range which the thermostat will heat / cool.

__init__(*, current_temperature: ~aioafero.v1.models.features.CurrentTemperatureFeature | None = None, fan_running: bool | None = None, fan_mode: ~aioafero.v1.models.features.ModeFeature | None = None, hvac_action: str | None = None, hvac_mode: ~aioafero.v1.models.features.HVACModeFeature | None = None, target_temperature_heating: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_cooling: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_auto_heating: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_auto_cooling: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.THERMOSTAT, safety_max_temp: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, safety_min_temp: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.thermostat.ThermostatPut(fan_mode: ModeFeature | None = None, hvac_mode: HVACModeFeature | None = None, safety_max_temp: TargetTemperatureFeature | None = None, safety_min_temp: TargetTemperatureFeature | None = None, target_temperature_auto_heating: TargetTemperatureFeature | None = None, target_temperature_auto_cooling: TargetTemperatureFeature | None = None, target_temperature_heating: TargetTemperatureFeature | None = None, target_temperature_cooling: TargetTemperatureFeature | None = None)[source]

Bases: object

States that can be updated for a Thermostat.

Parameters:
fan_mode: ModeFeature | None = None
hvac_mode: HVACModeFeature | None = None
safety_max_temp: TargetTemperatureFeature | None = None
safety_min_temp: TargetTemperatureFeature | None = None
target_temperature_auto_heating: TargetTemperatureFeature | None = None
target_temperature_auto_cooling: TargetTemperatureFeature | None = None
target_temperature_heating: TargetTemperatureFeature | None = None
target_temperature_cooling: TargetTemperatureFeature | None = None
__init__(fan_mode: ModeFeature | None = None, hvac_mode: HVACModeFeature | None = None, safety_max_temp: TargetTemperatureFeature | None = None, safety_min_temp: TargetTemperatureFeature | None = None, target_temperature_auto_heating: TargetTemperatureFeature | None = None, target_temperature_auto_cooling: TargetTemperatureFeature | None = None, target_temperature_heating: TargetTemperatureFeature | None = None, target_temperature_cooling: TargetTemperatureFeature | None = None) → None
Parameters:
Return type:

None

aioafero.v1.models.update_comparison module

Helpers for suppressing unchanged resource updates.

class aioafero.v1.models.update_comparison.SupportsFeatureUpdateComparison(*args, **kwargs)[source]

Bases: Protocol

Resource that can resolve Put fields against cached state.

feature_for_update_comparison(field_name: str, put_feature: Any | None) → Any | None[source]

Return the cached feature to compare with put_feature.

Parameters:
  • field_name (str)

  • put_feature (Any | None)

Return type:

Any | None

__init__(*args, **kwargs)
aioafero.v1.models.update_comparison.default_feature_for_update_comparison(elem: Any, field_name: str, put_feature: Any | None) → Any | None[source]

Look up a dict-backed feature by instance when Put targets one entry.

Parameters:
  • elem (Any)

  • field_name (str)

  • put_feature (Any | None)

Return type:

Any | None

aioafero.v1.models.update_comparison.features_equivalent_for_update(put_feature: Any | None, cached_feature: Any | None) → bool[source]

Return True when Put would not change wire-relevant cached state.

Compares semantic fields for common feature types so synthetic comparison objects (e.g. channel toggles) stay stable if dataclasses gain metadata.

Parameters:
  • put_feature (Any | None)

  • cached_feature (Any | None)

Return type:

bool

aioafero.v1.models.update_comparison.resolve_feature_for_update_comparison(elem: Any, field_name: str, put_feature: Any | None) → Any | None[source]

Resolve the cached feature to compare against a Put field.

Parameters:
  • elem (Any)

  • field_name (str)

  • put_feature (Any | None)

Return type:

Any | None

aioafero.v1.models.valve module

Representation of an Afero Valve and its corresponding updates.

class aioafero.v1.models.valve.Valve(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.WATER_TIMER, open: dict[str | None, ~aioafero.v1.models.features.OpenFeature] = <factory>)[source]

Bases: StandardMixin

Representation of an Afero Valve.

Parameters:
type: ResourceTypes = 'water-timer'
open: dict[str | None, OpenFeature]
__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.WATER_TIMER, open: dict[str | None, ~aioafero.v1.models.features.OpenFeature] = <factory>) → None
Parameters:
Return type:

None

class aioafero.v1.models.valve.ValvePut(open: OpenFeature | None = None)[source]

Bases: object

States that can be updated for a Valve.

Parameters:

open (OpenFeature | None)

open: OpenFeature | None = None
__init__(open: OpenFeature | None = None) → None
Parameters:

open (OpenFeature | None)

Return type:

None

Module contents

Models for all currently-tracked Afero IoT device classes.

class aioafero.v1.models.AferoBinarySensor(id: str, owner: str, current_value: str | int, _error: str | int, unit: str | None = None, instance: str | None = None)[source]

Bases: object

Sensor that can return True (alerting) or False (normal).

Parameters:
id: str
owner: str
current_value: str | int
unit: str | None = None
instance: str | None = None
property value: bool

Determine if the binary sensor is in an alert state.

__init__(id: str, owner: str, current_value: str | int, _error: str | int, unit: str | None = None, instance: str | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.AferoSensor(id: str, owner: str, value: str | int | float | None, unit: str | None = None, instance: str | None = None)[source]

Bases: object

Sensor that can return any value.

Parameters:
id: str
owner: str
value: str | int | float | None
unit: str | None = None
instance: str | None = None
__init__(id: str, owner: str, value: str | int | float | None, unit: str | None = None, instance: str | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.Dehumidifier(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.DEHUMIDIFIER, on: ~aioafero.v1.models.features.OnFeature | None = None, mode: ~aioafero.v1.models.features.ModeFeature | None = None, current_humidity: int | None = None, target_humidity: ~aioafero.v1.models.features.NumbersFeature | None = None)[source]

Bases: StandardMixin

Representation of an Afero Dehumidifier.

Parameters:
type: ResourceTypes = 'dehumidifier'
on: OnFeature | None = None
mode: ModeFeature | None = None
current_humidity: int | None = None
target_humidity: NumbersFeature | None = None
__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.DEHUMIDIFIER, on: ~aioafero.v1.models.features.OnFeature | None = None, mode: ~aioafero.v1.models.features.ModeFeature | None = None, current_humidity: int | None = None, target_humidity: ~aioafero.v1.models.features.NumbersFeature | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.DehumidifierPut(on: OnFeature | None = None, mode: ModeFeature | None = None, target_humidity: NumbersFeature | None = None)[source]

Bases: object

States that can be updated for a Dehumidifier.

Parameters:
on: OnFeature | None = None
mode: ModeFeature | None = None
target_humidity: NumbersFeature | None = None
selects: dict[tuple[str, str | None], SelectFeature] | None
__init__(on: OnFeature | None = None, mode: ModeFeature | None = None, target_humidity: NumbersFeature | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.Device(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.PARENT_DEVICE)[source]

Bases: StandardMixin

Representation of an Afero parent item.

Parameters:
type: ResourceTypes = 'parent-device'
__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.PARENT_DEVICE) → None
Parameters:
Return type:

None

class aioafero.v1.models.DeviceInformation(device_class: str | None = None, default_image: str | None = None, default_name: str | None = None, manufacturer: str | None = None, model: str | None = None, name: str | None = None, parent_id: str | None = None, wifi_mac: str | None = None, ble_mac: str | None = None, version_data: dict | None = None, children: list[str] | None = None, functions: list[dict[str, Any]] | None = None)[source]

Bases: object

Generic Device Information.

Parameters:
  • device_class (str | None)

  • default_image (str | None)

  • default_name (str | None)

  • manufacturer (str | None)

  • model (str | None)

  • name (str | None)

  • parent_id (str | None)

  • wifi_mac (str | None)

  • ble_mac (str | None)

  • version_data (dict | None)

  • children (list[str] | None)

  • functions (list[dict[str, Any]] | None)

device_class: str | None = None
default_image: str | None = None
default_name: str | None = None
manufacturer: str | None = None
model: str | None = None
name: str | None = None
parent_id: str | None = None
wifi_mac: str | None = None
ble_mac: str | None = None
version_data: dict | None = None
children: list[str] | None = None
functions: list[dict[str, Any]] | None = None
__init__(device_class: str | None = None, default_image: str | None = None, default_name: str | None = None, manufacturer: str | None = None, model: str | None = None, name: str | None = None, parent_id: str | None = None, wifi_mac: str | None = None, ble_mac: str | None = None, version_data: dict | None = None, children: list[str] | None = None, functions: list[dict[str, Any]] | None = None) → None
Parameters:
  • device_class (str | None)

  • default_image (str | None)

  • default_name (str | None)

  • manufacturer (str | None)

  • model (str | None)

  • name (str | None)

  • parent_id (str | None)

  • wifi_mac (str | None)

  • ble_mac (str | None)

  • version_data (dict | None)

  • children (list[str] | None)

  • functions (list[dict[str, Any]] | None)

Return type:

None

class aioafero.v1.models.ExhaustFan(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.EXHAUST_FAN)[source]

Bases: StandardMixin

Representation of an Afero Exhaust Fan.

Parameters:
type: ResourceTypes = 'exhaust-fan'
__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.EXHAUST_FAN) → None
Parameters:
Return type:

None

class aioafero.v1.models.ExhaustFanPut[source]

Bases: object

States that can be updated for an exhaust fan.

numbers: dict[tuple[str, str | None], NumbersFeature] | None
selects: dict[tuple[str, str | None], SelectFeature] | None
__init__() → None
Return type:

None

class aioafero.v1.models.Fan(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.FAN, on: ~aioafero.v1.models.features.OnFeature | None = None, speed: ~aioafero.v1.models.features.SpeedFeature | None = None, direction: ~aioafero.v1.models.features.DirectionFeature | None = None, preset: ~aioafero.v1.models.features.PresetFeature | None = None)[source]

Bases: StandardMixin

Representation of an Afero Fan.

Parameters:
type: ResourceTypes = 'fan'
on: OnFeature | None = None
speed: SpeedFeature | None = None
direction: DirectionFeature | None = None
preset: PresetFeature | None = None
property supports_direction

Determine if you can change the direction of the fan.

property supports_on

Determine if you can turn the fan on or off.

property supports_presets

Determine if presets are supported by this fan.

property supports_speed

Determine if a speed feature is supported by this fan.

property is_on: bool

Return bool if fan is currently powered on.

property current_direction: bool

Return if the direction is forward.

property current_speed: int

Current speed of the fan, as a percentage.

property current_preset: str | None

Current fan preset.

__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.FAN, on: ~aioafero.v1.models.features.OnFeature | None = None, speed: ~aioafero.v1.models.features.SpeedFeature | None = None, direction: ~aioafero.v1.models.features.DirectionFeature | None = None, preset: ~aioafero.v1.models.features.PresetFeature | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.FanPut(on: OnFeature | None = None, speed: SpeedFeature | None = None, direction: DirectionFeature | None = None, preset: PresetFeature | None = None)[source]

Bases: object

States that can be updated for a Fan.

Parameters:
on: OnFeature | None = None
speed: SpeedFeature | None = None
direction: DirectionFeature | None = None
preset: PresetFeature | None = None
__init__(on: OnFeature | None = None, speed: SpeedFeature | None = None, direction: DirectionFeature | None = None, preset: PresetFeature | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.Light(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.LIGHT, on: ~aioafero.v1.models.features.OnFeature | None = None, color: ~aioafero.v1.models.features.ColorFeature | None = None, color_mode: ~aioafero.v1.models.features.ColorModeFeature | None = None, color_modes: list[str] | None = None, color_mode_hints: dict[str, list[str]] | None = None, color_temperature: ~aioafero.v1.models.features.ColorTemperatureFeature | None = None, dimming: ~aioafero.v1.models.features.DimmingFeature | None = None, effect: ~aioafero.v1.models.features.EffectFeature | None = None, supports_white: bool = False, channels: dict[str, ~aioafero.v1.models.light.LightChannel] = <factory>)[source]

Bases: StandardMixin

Representation of an Afero Light.

Parameters:
type: ResourceTypes = 'light'
on: OnFeature | None = None
color: ColorFeature | None = None
color_mode: ColorModeFeature | None = None
color_modes: list[str] | None = None
color_mode_hints: dict[str, list[str]] | None = None
color_temperature: ColorTemperatureFeature | None = None
dimming: DimmingFeature | None = None
effect: EffectFeature | None = None
supports_white: bool = False
channels: dict[str, LightChannel]
__post_init__()[source]

Determine if white only is supported.

property supports_color: bool

Return if this light supports color control.

property supports_color_temperature: bool

Return if this light supports color_temperature control.

property supports_color_white: bool

Return if this light supports setting white.

color_mode_has_hint(mode: str, hint: str) → bool[source]

Return True when mode carries the given API category hint.

Parameters:
Return type:

bool

property supports_dimming: bool

Return if this light supports brightness control.

property supports_effects: bool

Return if this light supports brightness control.

property supports_on

If the light can be toggled on or off.

property is_on: bool

Return bool if light is currently powered on.

property brightness: float

Return current brightness of light.

property is_dual_channel: bool

Return True when color and white channels are both present.

channel_brightness(channel: str) → float | None[source]

Return brightness for a channel, if known.

Parameters:

channel (str)

Return type:

float | None

channel_on(channel: str) → bool | None[source]

Return on/off for a channel toggle, if known.

Parameters:

channel (str)

Return type:

bool | None

feature_for_update_comparison(field_name: str, put_feature: object | None) → object | None[source]

Compare channel toggles/dimming against channels, not primary.

Parameters:
  • field_name (str)

  • put_feature (object | None)

Return type:

object | None

__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.LIGHT, on: ~aioafero.v1.models.features.OnFeature | None = None, color: ~aioafero.v1.models.features.ColorFeature | None = None, color_mode: ~aioafero.v1.models.features.ColorModeFeature | None = None, color_modes: list[str] | None = None, color_mode_hints: dict[str, list[str]] | None = None, color_temperature: ~aioafero.v1.models.features.ColorTemperatureFeature | None = None, dimming: ~aioafero.v1.models.features.DimmingFeature | None = None, effect: ~aioafero.v1.models.features.EffectFeature | None = None, supports_white: bool = False, channels: dict[str, ~aioafero.v1.models.light.LightChannel] = <factory>) → None
Parameters:
Return type:

None

class aioafero.v1.models.LightChannel(brightness: int | None = None, on: bool | None = None)[source]

Bases: object

Per-channel brightness/on for a dual-channel light.

Parameters:
  • brightness (int | None)

  • on (bool | None)

brightness: int | None = None
on: bool | None = None
__init__(brightness: int | None = None, on: bool | None = None) → None
Parameters:
  • brightness (int | None)

  • on (bool | None)

Return type:

None

class aioafero.v1.models.LightPut(on: OnFeature | None = None, color: ColorFeature | None = None, color_mode: ColorModeFeature | None = None, color_temperature: ColorTemperatureFeature | None = None, dimming: DimmingFeature | None = None, effect: EffectFeature | None = None)[source]

Bases: Generic

States that can be updated for a light.

Parameters:
on: OnFeature | None = None
color: ColorFeature | None = None
color_mode: ColorModeFeature | None = None
color_temperature: ColorTemperatureFeature | None = None
dimming: DimmingFeature | None = None
effect: EffectFeature | None = None
numbers: dict[tuple[str, str | None], NumbersFeature] | None
__init__(on: OnFeature | None = None, color: ColorFeature | None = None, color_mode: ColorModeFeature | None = None, color_temperature: ColorTemperatureFeature | None = None, dimming: DimmingFeature | None = None, effect: EffectFeature | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.Lock(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.LOCK, position: ~aioafero.v1.models.features.CurrentPositionFeature | None = None)[source]

Bases: StandardMixin

Representation of an Afero Lock.

Parameters:
type: ResourceTypes = 'door-lock'
position: CurrentPositionFeature | None = None
__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.LOCK, position: ~aioafero.v1.models.features.CurrentPositionFeature | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.LockPut(position: CurrentPositionFeature | None = None)[source]

Bases: object

States that can be updated for a Lock.

Parameters:

position (CurrentPositionFeature | None)

position: CurrentPositionFeature | None = None
__init__(position: CurrentPositionFeature | None = None) → None
Parameters:

position (CurrentPositionFeature | None)

Return type:

None

class aioafero.v1.models.PortableAC(*, current_temperature: ~aioafero.v1.models.features.CurrentTemperatureFeature | None = None, fan_running: bool | None = None, fan_mode: ~aioafero.v1.models.features.ModeFeature | None = None, hvac_action: str | None = None, hvac_mode: ~aioafero.v1.models.features.HVACModeFeature | None = None, target_temperature_heating: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_cooling: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_auto_heating: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_auto_cooling: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.PORTABLE_AC)[source]

Bases: StandardMixin, HVACMixin

Representation of an Afero Portable AC.

Parameters:
type: ResourceTypes = 'portable-air-conditioner'
numbers: dict[tuple[str, str | None], NumbersFeature] | None
selects: dict[tuple[str, str | None], SelectFeature] | None
property supports_fan_mode: bool

Can enable fan-only mode.

get_mode_to_check() → str | None[source]

Determine the current mode of the thermostat.

Return type:

str | None

property supports_temperature_range: bool

Range which the thermostat will heat / cool.

__init__(*, current_temperature: ~aioafero.v1.models.features.CurrentTemperatureFeature | None = None, fan_running: bool | None = None, fan_mode: ~aioafero.v1.models.features.ModeFeature | None = None, hvac_action: str | None = None, hvac_mode: ~aioafero.v1.models.features.HVACModeFeature | None = None, target_temperature_heating: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_cooling: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_auto_heating: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_auto_cooling: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.PORTABLE_AC) → None
Parameters:
Return type:

None

class aioafero.v1.models.PortableACPut(current_temperature: CurrentTemperatureFeature | None = None, hvac_mode: HVACModeFeature | None = None, target_temperature_cooling: TargetTemperatureFeature | None = None)[source]

Bases: object

States that can be updated for a Portable AC.

Parameters:
current_temperature: CurrentTemperatureFeature | None = None
hvac_mode: HVACModeFeature | None = None
target_temperature_cooling: TargetTemperatureFeature | None = None
numbers: dict[tuple[str, str | None], NumbersFeature] | None
selects: dict[tuple[str, str | None], SelectFeature] | None
__init__(current_temperature: CurrentTemperatureFeature | None = None, hvac_mode: HVACModeFeature | None = None, target_temperature_cooling: TargetTemperatureFeature | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.ResourceTypes(*values)[source]

Bases: Enum

Type of the supported resources.

DEHUMIDIFIER = 'dehumidifier'
DEVICE = 'metadevice.device'
HOME = 'metadata.home'
ROOM = 'metadata.room'
EXHAUST_FAN = 'exhaust-fan'
FAN = 'fan'
LANDSCAPE_TRANSFORMER = 'landscape-transformer'
LIGHT = 'light'
LOCK = 'door-lock'
PARENT_DEVICE = 'parent-device'
PORTABLE_AC = 'portable-air-conditioner'
POWER_OUTLET = 'power-outlet'
SECURITY_SYSTEM = 'security-system'
SECURITY_SYSTEM_KEYPAD = 'security-system-keypad'
SECURITY_SYSTEM_SENSOR = 'security-system-sensor'
SWITCH = 'switch'
THERMOSTAT = 'thermostat'
UNKNOWN = 'unknown'
WATER_TIMER = 'water-timer'
class aioafero.v1.models.SecuritySystem(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.SECURITY_SYSTEM, alarm_state: ~aioafero.v1.models.features.ModeFeature | None = None, siren_action: ~aioafero.v1.models.features.SecuritySensorSirenFeature | None = None)[source]

Bases: StandardMixin

Representation of an Afero Security Panel.

Parameters:
type: ResourceTypes = 'security-system'
alarm_state: ModeFeature | None = None
siren_action: SecuritySensorSirenFeature | None = None
property supports_away: bool

States if the panel supports away mode.

property supports_arm_bypass: bool

States if the panel supports arm-bypass mode.

property supports_home: bool

States if the panel supports home mode.

property supports_night: bool

States if the panel supports night mode.

property supports_vacation: bool

States if the panel supports vacation mode.

property supports_trigger: bool

States if the panel supports manually triggering.

__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.SECURITY_SYSTEM, alarm_state: ~aioafero.v1.models.features.ModeFeature | None = None, siren_action: ~aioafero.v1.models.features.SecuritySensorSirenFeature | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.SecuritySystemKeypad(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.SECURITY_SYSTEM_KEYPAD)[source]

Bases: StandardMixin

Representation of an Afero Security Keypad.

Parameters:
type: ResourceTypes = 'security-system-keypad'
__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.SECURITY_SYSTEM_KEYPAD) → None
Parameters:
Return type:

None

class aioafero.v1.models.SecuritySystemKeypadPut[source]

Bases: object

States that can be updated for a Security System Keypad.

selects: dict[tuple[str, str | None], SelectFeature] | None
__init__() → None
Return type:

None

class aioafero.v1.models.SecuritySystemPut(alarm_state: ModeFeature | None = None, siren_action: SecuritySensorSirenFeature | None = None, disarm_pin: SecuritySystemDisarmPin | None = None)[source]

Bases: object

States that can be updated for a Security System.

Parameters:
alarm_state: ModeFeature | None = None
siren_action: SecuritySensorSirenFeature | None = None
disarm_pin: SecuritySystemDisarmPin | None = None
numbers: dict[tuple[str, str | None], NumbersFeature] | None
selects: dict[tuple[str, str | None], SelectFeature] | None
__init__(alarm_state: ModeFeature | None = None, siren_action: SecuritySensorSirenFeature | None = None, disarm_pin: SecuritySystemDisarmPin | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.SecuritySystemSensor(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.SECURITY_SYSTEM_SENSOR, config_key: str | None = None)[source]

Bases: StandardMixin

Representation of a security system sensor.

Parameters:
type: ResourceTypes = 'security-system-sensor'
config_key: str | None = None
property instance

Instance for the split device.

__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.SECURITY_SYSTEM_SENSOR, config_key: str | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.SecuritySystemSensorPut[source]

Bases: object

States that can be updated for a Security System Sensor.

sensor_config: SecuritySensorConfigFeature | None = None
__init__() → None
Return type:

None

class aioafero.v1.models.Switch(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.SWITCH, on: dict[str | None, ~aioafero.v1.models.features.OnFeature] | None = None)[source]

Bases: StandardMixin

Representation of an Afero Switch.

Parameters:
type: ResourceTypes = 'switch'
on: dict[str | None, OnFeature] | None = None
__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.SWITCH, on: dict[str | None, ~aioafero.v1.models.features.OnFeature] | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.SwitchPut(on: OnFeature | None = None)[source]

Bases: object

States that can be updated for a Switch.

Parameters:

on (OnFeature | None)

on: OnFeature | None = None
__init__(on: OnFeature | None = None) → None
Parameters:

on (OnFeature | None)

Return type:

None

class aioafero.v1.models.Thermostat(*, current_temperature: ~aioafero.v1.models.features.CurrentTemperatureFeature | None = None, fan_running: bool | None = None, fan_mode: ~aioafero.v1.models.features.ModeFeature | None = None, hvac_action: str | None = None, hvac_mode: ~aioafero.v1.models.features.HVACModeFeature | None = None, target_temperature_heating: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_cooling: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_auto_heating: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_auto_cooling: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.THERMOSTAT, safety_max_temp: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, safety_min_temp: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None)[source]

Bases: StandardMixin, HVACMixin

Representation of an Afero Thermostat.

Parameters:
type: ResourceTypes = 'thermostat'
safety_max_temp: TargetTemperatureFeature | None = None
safety_min_temp: TargetTemperatureFeature | None = None
property target_temperature_range: tuple[float, float]

Range which the thermostat supports.

get_mode_to_check() → str | None[source]

Determine the current mode of the thermostat.

Return type:

str | None

property supports_fan_mode: bool

Can enable fan-only mode.

property supports_temperature_range: bool

Range which the thermostat will heat / cool.

__init__(*, current_temperature: ~aioafero.v1.models.features.CurrentTemperatureFeature | None = None, fan_running: bool | None = None, fan_mode: ~aioafero.v1.models.features.ModeFeature | None = None, hvac_action: str | None = None, hvac_mode: ~aioafero.v1.models.features.HVACModeFeature | None = None, target_temperature_heating: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_cooling: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_auto_heating: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, target_temperature_auto_cooling: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.THERMOSTAT, safety_max_temp: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None, safety_min_temp: ~aioafero.v1.models.features.TargetTemperatureFeature | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.ThermostatPut(fan_mode: ModeFeature | None = None, hvac_mode: HVACModeFeature | None = None, safety_max_temp: TargetTemperatureFeature | None = None, safety_min_temp: TargetTemperatureFeature | None = None, target_temperature_auto_heating: TargetTemperatureFeature | None = None, target_temperature_auto_cooling: TargetTemperatureFeature | None = None, target_temperature_heating: TargetTemperatureFeature | None = None, target_temperature_cooling: TargetTemperatureFeature | None = None)[source]

Bases: object

States that can be updated for a Thermostat.

Parameters:
fan_mode: ModeFeature | None = None
hvac_mode: HVACModeFeature | None = None
safety_max_temp: TargetTemperatureFeature | None = None
safety_min_temp: TargetTemperatureFeature | None = None
target_temperature_auto_heating: TargetTemperatureFeature | None = None
target_temperature_auto_cooling: TargetTemperatureFeature | None = None
target_temperature_heating: TargetTemperatureFeature | None = None
target_temperature_cooling: TargetTemperatureFeature | None = None
__init__(fan_mode: ModeFeature | None = None, hvac_mode: HVACModeFeature | None = None, safety_max_temp: TargetTemperatureFeature | None = None, safety_min_temp: TargetTemperatureFeature | None = None, target_temperature_auto_heating: TargetTemperatureFeature | None = None, target_temperature_auto_cooling: TargetTemperatureFeature | None = None, target_temperature_heating: TargetTemperatureFeature | None = None, target_temperature_cooling: TargetTemperatureFeature | None = None) → None
Parameters:
Return type:

None

class aioafero.v1.models.Valve(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.WATER_TIMER, open: dict[str | None, ~aioafero.v1.models.features.OpenFeature] = <factory>)[source]

Bases: StandardMixin

Representation of an Afero Valve.

Parameters:
type: ResourceTypes = 'water-timer'
open: dict[str | None, OpenFeature]
__init__(*, _id: str, available: bool, device_information: ~aioafero.v1.models.resource.DeviceInformation = <factory>, split: ~aioafero.device.SplitDeviceId | None = None, numbers: dict[tuple[str, str | None], ~aioafero.v1.models.features.NumbersFeature] | None = <factory>, selects: dict[tuple[str, str | None], ~aioafero.v1.models.features.SelectFeature] | None = <factory>, sensors: dict[str, ~aioafero.v1.models.sensor.AferoSensor] = <factory>, binary_sensors: dict[str, ~aioafero.v1.models.sensor.AferoBinarySensor] = <factory>, type: ~aioafero.v1.models.resource.ResourceTypes = ResourceTypes.WATER_TIMER, open: dict[str | None, ~aioafero.v1.models.features.OpenFeature] = <factory>) → None
Parameters:
Return type:

None

class aioafero.v1.models.ValvePut(open: OpenFeature | None = None)[source]

Bases: object

States that can be updated for a Valve.

Parameters:

open (OpenFeature | None)

open: OpenFeature | None = None
__init__(open: OpenFeature | None = None) → None
Parameters:

open (OpenFeature | None)

Return type:

None