Skip to content
Release v0.3.0

- dedicated submodule for exceptions (still exposed at module level through
  `aioairq.__all__`)

- `core.DeviceInfo`:
    - room_type -> suggested_area to further consistency with home assistant
    - all fields, except for `id` are optional (much like with
    `homeassistant.helpers.entity.DeviceInfo`)

- `core.AirQ.get`:
  - limited to an explicit set of queries / webserver routes
  (namely `AirQ._supported_routes = ["log", "config", "data", "average", "ping"]).
  Other routes return objects with different structure, which aren't consistent
  with the current decoding steps
  - Error handling for JSONDecodeError and KeyError, which ought not to happen
  with the aforementioned routes (added as a precaution against unexpected firmware
  behaviour)

- `encrypt.AESCipher`:
  - failed authentication is now inferred as close to the point of failure as possible.
    The success or failure of the authentication is based on the ability to decode
    the response from the device, thus the error `InvalidAuth` is raised
    in `AESCipher.decode`