Changelogs » Aiohomekit

Aiohomekit

0.2.38

None

0.2.37

None

0.2.36

aiohomekit` follows the spec for writing to bool characteristics - `1`, `0`, `true` and `false` are meant to be valid values. We used `true` and `false`. However it looks like some devices recently got a firmware update and can no longer handle `true` properly. This release switches to using `1` and `0` like the iOS implementation.

0.2.35

This merges in the changes from 0.2.29.2 into the current dev stream.

0.2.34

None

0.2.33

None

0.2.31

None

0.2.30

None

0.2.29.2

Some fixes from dealing with https://github.com/home-assistant/core/issues/32969:

* Handle 470 Connection Authorization Required
* Increase timeout when waiting for crypto operations
* Don't send port in Host header. This breaks Insignia.

This also includes some attempts to cleanup how we handle HTTP requests than have no headers and no bodies.

0.2.29.1

None

0.2.29

The release makes some improvements to the retrying logic:

* Adds a `aiohomekit.exceptions.TimeoutError`

* Adds a timeout for the call to `loop.create_connection`

* Handles any cancellation exceptions in the reconnect loop

* Shields the reconnect loop from early cancellation

* Simplifies the back-off logic

0.2.28

This release adds a helper for building `put_characteristic` payloads. It takes a mapping of characteristic type against value and works out the (aid, iid) values:

python
name = "Hue dimmer switch button 3"
a = Accessories.from_file("tests/fixtures/hue_bridge.json").aid(6623462389072572)

service = a.services.first(
service_type=ServicesTypes.STATELESS_PROGRAMMABLE_SWITCH,
characteristics={CharacteristicsTypes.NAME: name},
)

payload = service.build_update({CharacteristicsTypes.NAME: "Fred"})

payload == [(6623462389072572, 588410716196, "Fred")]

0.2.27

This release adds a filter to `services.characteristics` - useful for iterating over a subset of characteristics:

python
name = "Hue dimmer switch button 3"

a = Accessories.from_file("tests/fixtures/hue_bridge.json").aid(6623462389072572)

service = a.services.first(
service_type=ServicesTypes.STATELESS_PROGRAMMABLE_SWITCH,
characteristics={CharacteristicsTypes.NAME: name},
)

char = service.characteristics.first(char_types=[CharacteristicsTypes.NAME])

assert char.value == name

0.2.26

* This release ditches the dependencies on `hkdf` and `ed25519` as both are available in the `cryptography` library. Additionally the ChaCha20Poly1305 code now uses `cryptography` instead of including its own pure python implementation.

* It adds the `type_name` property to `Characteristic` and `Service`

* It adds some helpers to `Accessory` for reading the accessory information attributes like `Acccessory.manufacturer`

0.2.25

This release fixes round-tripping the `valid-values` field.

0.2.24

This release adds a `value()` operator for looking up a characteristic value:

python
a = Accessories.from_file("tests/fixtures/hue_bridge.json").aid(6623462389072572)

buttons = a.services.filter(
service_type=ServicesTypes.STATELESS_PROGRAMMABLE_SWITCH,
order_by=(CharacteristicsTypes.SERVICE_LABEL_INDEX, CharacteristicsTypes.NAME),
)

assert buttons[0].value(CharacteristicsTypes.SERVICE_LABEL_INDEX) == 1


* Adds an `order_by` kwarg to `services.filter` for returning the list ordered one or more child characteristics (see above example)

* Adds a `InputEventValues` enum.

0.2.23

None

0.2.22

The release refactors the connection logic to try and improving reconnections and to improve shutdown behaviour.

0.2.21

None

0.2.20

None

0.2.19

None

0.2.18

* Add `CharacteristicTypes.IDENTIFIER`

0.2.17

* Add `TargetMediaStateValues`, `CurrentMediaStateValues` and `RemoteKeyValues` enums
* Add `clamp_enum_to_char(all_valid_values: IntEnum, char)` helper that returns a set of enum values from enum `all_valid_values` that are supported for characteristic `char`.

0.2.16

* Add Television service
* Add Input Source service
* Default to unauthenticated pairing if a hardware crypto chip is not available
* Support `PairSetup` and `PairSetupWithAuth`
* Add some vendor specific characteristics
* Add extra discovery categories and don't fail if we don't recognise a category
* Stop reconnecting on unrecoverable errors
* Don't reconnect while already reconnecting
* Handle all exceptions whilst reconnecting

0.2.15

None

0.2.12

In this release:

* Raise an `AccessoryDisconnectedError` if there is a timeout whilst reconnected
* Be less verbose when logging about reconnects
* Run reconnects in background so they don't hang the caller
* Testing helpers for event driven code
* More testing infrastructure
* Faster tests
* Test helper deduplication

0.2.11

In this release:

* Implement `Controller.load_pairing` for when pairing data is not stored by controller, as is the case in Home Assistant
* Fix test helper `add_paired_device`
* Fix `sf` helper in testing.py

0.2.10

None

0.2.9

None

0.2.8

None