Skip to content

v0.5.0

Compare
Choose a tag to compare
@puddly puddly released this 04 May 16:56
· 243 commits to dev since this release

New Features

  • Huge thank you to @castorw from the Z2M project for working with me to bring concurrent support for the Open Coordinator Backup format to Z2M. This allows for bidirectional migration between any coordinators supported by zigpy-znp. More documentation is available in TOOLS.md#Backup and restore.
  • Multicast and broadcast requests are sent immediately
  • Log a warning when using the Z2M default network key.

Changes

  • Maximum time to wait for a device announcement after a device join before sending the zigpy device_joined signal has been increased from 2 seconds to 5 seconds.
  • Write both PRECFGKEYS_ENABLE and EXTENDED_PAN_ID OSAL NVRAM items to ensure Z2M works with adapters commissioned with zigpy-znp.
  • Retry using manual source routing first, before route discovery.
  • If an exception is encountered when passing a frame from the UART object to ZNP, log the entire frame.
  • If an unknown frame is passed to ZNP, log it but do not throw an exception.
  • The -c command line flag has been removed from zigpy_znp.tools.nvram_reset and is now the default.

Internal Changes

  • Add a force_form keyword argument to ControllerApplication.startup.
  • All CC2531-specific types have been removed with the addition of the CStruct class, which computes struct padding and alignment during serialization/deserialization. This is autodetected at startup.
  • The ZNP class can now be used more independently of ControllerApplication, especially without a formed network.
    • ControllerApplication._reset has been moved to ZNP.reset.
    • Complete network information is extracted from NVRAM at startup and populates the ZNP instance's network_info attribute.
  • New helper methods to read and write NVRAM tables.

Breaking changes

  • Serialization and deserialization of complex types is strongly encouraged to be done via znp.nvram.serialize/deserialize instead of the object's serialize/deserialize methods, which takes into account structure alignment and padding.
  • item_type is now a required keyword argument for all NVRAM reads and no trailing data after deserialization is permitted. Old behavior can be preserved by passing item_type=t.Bytes.