aioafero package

Subpackages

Submodules

aioafero.anonomyize_data module

Provides an interface for anonymizing data.

aioafero.anonomyize_data.anonymize_device(dev: AferoDevice, parent_mapping: dict, device_links: dict, anon_name: bool) dict[source]

Convert an AferoDevice into an anonymized dictionary.

Parameters:
Return type:

dict

aioafero.anonomyize_data.anonymize_devices(devices: list[AferoDevice], anon_name: bool = False) list[dict][source]

Remove identifying information from the device.

Parameters:
  • devices (list[AferoDevice]) – List of devices to anonymize

  • anon_name (bool) – If true, give each device a unique name

Return type:

list[dict]

aioafero.device module

Devices and States for API responses.

class aioafero.device.AferoDevice(id: str, device_id: str, model: str, device_class: str, default_name: str, default_image: str, friendly_name: str, capabilities: list[AferoCapability] = <factory>, functions: list[dict] = <factory>, states: list[AferoState] = <factory>, children: list[str] = <factory>, manufacturerName: str | None = None, split_identifier: str | None = None, version_data: dict[str, str] | None=None)[source]

Bases: object

Mapped Device from an API response.

Parameters:
id: str
device_id: str
model: str
device_class: str
default_name: str
default_image: str
friendly_name: str
capabilities: list[AferoCapability]
functions: list[dict]
states: list[AferoState]
children: list[str]
manufacturerName: str | None = None
split_identifier: str | None = None
version_data: dict[str, str] | None = None
__hash__()[source]

Hash.

__post_init__()[source]

Post init.

__init__(id: str, device_id: str, model: str, device_class: str, default_name: str, default_image: str, friendly_name: str, capabilities: list[AferoCapability] = <factory>, functions: list[dict] = <factory>, states: list[AferoState] = <factory>, children: list[str] = <factory>, manufacturerName: str | None = None, split_identifier: str | None = None, version_data: dict[str, str] | None=None) None
Parameters:
Return type:

None

class aioafero.device.AferoState(functionClass: str, value: Any, lastUpdateTime: int | None = None, functionInstance: str | None = None)[source]

Bases: object

State of a given function.

Parameters:
  • functionClass (str) – Function class for the state (ie, power)

  • value (Any) – Value to set for the function_class

  • lastUpdateTime (int | None) – Last time the state was updated (in epoch ms).

  • functionInstance (str | None) – Additional information about the function (ie, light-power). Default: None

functionClass: str
value: Any
lastUpdateTime: int | None = None
functionInstance: str | None = None
__init__(functionClass: str, value: Any, lastUpdateTime: int | None = None, functionInstance: str | None = None) None
Parameters:
  • functionClass (str)

  • value (Any)

  • lastUpdateTime (int | None)

  • functionInstance (str | None)

Return type:

None

aioafero.device.get_afero_device(afero_device: dict[str, Any]) AferoDevice[source]

Convert the Afero device definition into a AferoDevice.

Parameters:

afero_device (dict[str, Any])

Return type:

AferoDevice

aioafero.device.get_function_from_device(functions: list[dict], function_class: str, function_instance: str | None = None) dict | None[source]

Find a function from a device.

Parameters:
  • functions (list[dict]) – List of functions to search through

  • function_class (str) – Function class to find

  • function_instance (str | None) – Function instance to find. Default: None

Return type:

dict | None

aioafero.errors module

Errors used through aioafero.

exception aioafero.errors.AferoError[source]

Bases: Exception

Generic exception for Afero API or the responses.

exception aioafero.errors.DeviceNotFound[source]

Bases: AferoError

Device not found within the controller.

exception aioafero.errors.DeviceUpdateError[source]

Bases: AferoError

Unable to send a device update to Afero API.

exception aioafero.errors.ExceededMaximumRetries[source]

Bases: AferoError

Maximum retries exceeded when contacting Afero API.

exception aioafero.errors.InvalidAuth[source]

Bases: AferoError

Invalid credentials supplied during authentication.

exception aioafero.errors.InvalidResponse[source]

Bases: AferoError

An invalid response was received from Afero API.

exception aioafero.errors.SecuritySystemError[source]

Bases: AferoError

Generic exception for Afero Security System issues.

exception aioafero.errors.OTPError[source]

Bases: AferoError

Issue occurred with OTP authentication.

exception aioafero.errors.OTPRequired[source]

Bases: AferoError

One-time password is required for login.

exception aioafero.errors.InvalidOTP[source]

Bases: OTPError

One-time password provided is invalid.

aioafero.types module

Types used by the bridge and supporting elements.

class aioafero.types.EventType(*values)[source]

Bases: Enum

Enum with possible Events.

RESOURCE_ADDED = 'add'
RESOURCE_UPDATED = 'update'
RESOURCE_DELETED = 'delete'
RESOURCE_VERSION = 'version'
RESOURCE_UPDATE_RESPONSE = 'update_response'
CONNECTED = 'connected'
DISCONNECTED = 'disconnected'
RECONNECTED = 'reconnected'
INVALID_AUTH = 'invalid_auth'
POLLED_DATA = 'polled_data'
POLLED_DEVICES = 'polled_devices'
class aioafero.types.TemperatureUnit(*values)[source]

Bases: Enum

Temperature unit enum.

CELSIUS = 'celsius'
FAHRENHEIT = 'fahrenheit'

aioafero.util module

Generic utils for interacting with Afero IoT API or the responses.

aioafero.util.get_afero_base_time_ms() int[source]

Return the current time as epoch milliseconds for v1 API state timestamps.

Return type:

int

aioafero.util.normalize_afero_last_update_time_ms(last_update_time: int | None) int[source]

Normalize v1 lastUpdateTime values to epoch milliseconds.

Parameters:

last_update_time (int | None)

Return type:

int

aioafero.util.percentage_to_ordered_list_item(ordered_list: list[T], percentage: int) T[source]

Find the item that most closely matches the percentage in an ordered list.

When using this utility for fan speeds, do not include “off”

Given the list: [“low”, “medium”, “high”, “very_high”], this function will return the following when the item is passed in:

1-25: low 26-50: medium 51-75: high 76-100: very_high

Parameters:
  • ordered_list (list[T])

  • percentage (int)

Return type:

T

aioafero.util.ordered_list_item_to_percentage(ordered_list: list[T], item: T) int[source]

Determine the percentage of an item in an ordered list.

When using this utility for fan speeds, do not include “off”

Given the list: [“low”, “medium”, “high”, “very_high”], this function will return the following when the item is passed in:

low: 25 medium: 50 high: 75 very_high: 100

Parameters:
  • ordered_list (list[T])

  • item (T)

Return type:

int

aioafero.util.process_range(range_vals: dict) list[Any][source]

Process a range to determine what’s supported.

Parameters:

range_vals (dict) – Result from functions[“values”][x]

Return type:

list[Any]

aioafero.util.float_range(start, stop, step)[source]

Create a generator that yields a range as float.

aioafero.util.process_function(functions: list[dict], func_class: str, func_instance: str | None = None) list[Any][source]

Generate a list of whatever you are searching for.

Parameters:
  • functions (list[dict]) – List of functions for the given device

  • func_class (str) – functionClass to search

  • func_instance (str | None) – functionInstance to search

Return type:

list[Any]

Module contents

aioafero API.

class aioafero.AferoCapability(functionClass: str, type: str, schedulable: bool, functionInstance: str | None = None, _opts: dict[str, ~typing.Any]=<factory>)[source]

Bases: object

Capability of a given device.

Parameters:
functionClass: str
type: str
schedulable: bool
functionInstance: str | None = None
property options: dict[str, Any]

Return the options for the capability.

raw_dump() dict[str, Any][source]

Return the raw dump of the capability.

Return type:

dict[str, Any]

__init__(functionClass: str, type: str, schedulable: bool, functionInstance: str | None = None, _opts: dict[str, ~typing.Any]=<factory>) None
Parameters:
Return type:

None

class aioafero.AferoDevice(id: str, device_id: str, model: str, device_class: str, default_name: str, default_image: str, friendly_name: str, capabilities: list[AferoCapability] = <factory>, functions: list[dict] = <factory>, states: list[AferoState] = <factory>, children: list[str] = <factory>, manufacturerName: str | None = None, split_identifier: str | None = None, version_data: dict[str, str] | None=None)[source]

Bases: object

Mapped Device from an API response.

Parameters:
id: str
device_id: str
model: str
device_class: str
default_name: str
default_image: str
friendly_name: str
capabilities: list[AferoCapability]
functions: list[dict]
states: list[AferoState]
children: list[str]
manufacturerName: str | None = None
split_identifier: str | None = None
version_data: dict[str, str] | None = None
__hash__()[source]

Hash.

__post_init__()[source]

Post init.

__init__(id: str, device_id: str, model: str, device_class: str, default_name: str, default_image: str, friendly_name: str, capabilities: list[AferoCapability] = <factory>, functions: list[dict] = <factory>, states: list[AferoState] = <factory>, children: list[str] = <factory>, manufacturerName: str | None = None, split_identifier: str | None = None, version_data: dict[str, str] | None=None) None
Parameters:
Return type:

None

exception aioafero.AferoError[source]

Bases: Exception

Generic exception for Afero API or the responses.

class aioafero.AferoState(functionClass: str, value: Any, lastUpdateTime: int | None = None, functionInstance: str | None = None)[source]

Bases: object

State of a given function.

Parameters:
  • functionClass (str) – Function class for the state (ie, power)

  • value (Any) – Value to set for the function_class

  • lastUpdateTime (int | None) – Last time the state was updated (in epoch ms).

  • functionInstance (str | None) – Additional information about the function (ie, light-power). Default: None

functionClass: str
value: Any
lastUpdateTime: int | None = None
functionInstance: str | None = None
__init__(functionClass: str, value: Any, lastUpdateTime: int | None = None, functionInstance: str | None = None) None
Parameters:
  • functionClass (str)

  • value (Any)

  • lastUpdateTime (int | None)

  • functionInstance (str | None)

Return type:

None

class aioafero.EventType(*values)[source]

Bases: Enum

Enum with possible Events.

RESOURCE_ADDED = 'add'
RESOURCE_UPDATED = 'update'
RESOURCE_DELETED = 'delete'
RESOURCE_VERSION = 'version'
RESOURCE_UPDATE_RESPONSE = 'update_response'
CONNECTED = 'connected'
DISCONNECTED = 'disconnected'
RECONNECTED = 'reconnected'
INVALID_AUTH = 'invalid_auth'
POLLED_DATA = 'polled_data'
POLLED_DEVICES = 'polled_devices'
exception aioafero.InvalidAuth[source]

Bases: AferoError

Invalid credentials supplied during authentication.

exception aioafero.InvalidOTP[source]

Bases: OTPError

One-time password provided is invalid.

exception aioafero.InvalidResponse[source]

Bases: AferoError

An invalid response was received from Afero API.

exception aioafero.OTPError[source]

Bases: AferoError

Issue occurred with OTP authentication.

exception aioafero.OTPRequired[source]

Bases: AferoError

One-time password is required for login.

exception aioafero.SecuritySystemError[source]

Bases: AferoError

Generic exception for Afero Security System issues.

class aioafero.TemperatureUnit(*values)[source]

Bases: Enum

Temperature unit enum.

CELSIUS = 'celsius'
FAHRENHEIT = 'fahrenheit'
aioafero.anonymize_device(dev: AferoDevice, parent_mapping: dict, device_links: dict, anon_name: bool) dict[source]

Convert an AferoDevice into an anonymized dictionary.

Parameters:
Return type:

dict

aioafero.anonymize_devices(devices: list[AferoDevice], anon_name: bool = False) list[dict][source]

Remove identifying information from the device.

Parameters:
  • devices (list[AferoDevice]) – List of devices to anonymize

  • anon_name (bool) – If true, give each device a unique name

Return type:

list[dict]

aioafero.get_afero_device(afero_device: dict[str, Any]) AferoDevice[source]

Convert the Afero device definition into a AferoDevice.

Parameters:

afero_device (dict[str, Any])

Return type:

AferoDevice