Skip to content

1.0.0

Choose a tag to compare

@github-actions github-actions released this 27 Sep 14:03
· 52 commits to main since this release

First release of the j5lien/enocean fork of
kipe/enocean, whose last release was 0.60.1.

Breaking changes

  • Python 3.10 or later is required; Python 2 compatibility code is gone.
  • EEP.xml is loaded with the standard library's xml.etree instead of BeautifulSoup: EEP.soup is replaced by
    EEP.xml_root, and EEP.telegrams holds xml.etree.ElementTree.Element objects.
  • The beautifulsoup4 and enum-compat dependencies are dropped; pyserial>=3.5 is the only dependency.
  • RadioPacket.create() raises ValueError for an unknown VLD profile (was AttributeError).

Added

  • EEP profiles: A5-04-02, A5-09-06, A5-09-07, A5-09-0C, A5-12-00, A5-13-01, D2-01-12, D2-14-30, D2-14-41,
    F6-02-03, F6-02-04.
  • TCPCommunicator accepts callback and teach_in, like SerialCommunicator.
  • Type annotations for the whole package (py.typed); decoded fields are typed as FieldValue.

Fixed

  • ESP3 parser: a corrupted header or a stray 0x55 no longer makes the parser drop the valid packets that follow; it
    now resynchronizes on the next sync byte after any CRC error.
  • Radio packets without optional data (allowed by ESP3, omitted by some gateways) no longer crash the parser.
  • Packets too short for their type are returned unparsed instead of raising or being reported as CRC errors.
  • Decoding a telegram shorter than its EEP profile no longer raises.
  • UTE teach-in received before the base ID is known: the base ID is now requested and the teach-in answered, instead of
    blocking the communicator thread, raising TypeError and losing the packet.
  • Communicator.base_id works with a callback, and no longer reorders the receive queue while fetching the base ID.
  • TCPCommunicator crashed on every client connection, and only parsed data once the client disconnected.
  • communicators.utils.send_to_tcp_socket was broken on Python 3.
  • SerialCommunicator logs write errors before stopping.
  • EEP definitions: D2-01-12 enum values written in binary (default state, external button mode), out-of-range dim
    timers and measurement delta ranges; missing telegram length on D2-14-30 and D2-14-41 (create() failed); an
    attribute on A5-13-01 that only worked with a case-insensitive parser.
  • SUPPORTED_PROFILES.md lists every profile again.

Changed

  • Loading EEP.xml is about 20× faster and packet creation/decoding about 5× faster.
  • Development: uv, pytest (with end-to-end communicator tests on a pseudo-terminal, property-based parser tests and
    tests over every EEP profile), ruff, mypy, pre-commit hooks, GitHub Actions CI and Dependabot.