Skip to content

Releases: palazzem/econnect-python

0.5.1

31 Aug 15:36
4fba51e
Compare
Choose a tag to compare

What's Changed

Client/API

  • fix(client): sector/input name defaults to Unknown if the main unit is out of sync with the cloud (#101)
  • feat(client): add DEBUG logging to ElmoClient (#99)

Breaking Changes

  • feat!: drop support for EOL Python versions; the project currently support Python 3.8 -> 3.11 (#94)

Dependencies and Packaging

  • Updated development dependencies (#70)
  • refactor!: merge 'v0.4.0' release into 'main' (#90)
  • refactor!: migrate the whole project to pyproject.toml project definition (#92)
  • tools: use pre-commit hooks to run linters and static analyzers (#93)
  • package: ensure project name is econnect-python; pytest Python PATH is src (#106)

Testing Improvements

  • tests: encapsulate mock calls inside tests and provide a new client for integrations tests (#96)
  • refactor!: AlarmDevice uses integration test client to ensure update() compatibility with the new API (#97)

Read the full changeset and the release milestone.

0.5.0

30 Aug 12:04
2921c52
Compare
Choose a tag to compare

Outdated Build

Regrettably, due to a misconfigured builder, we released a version of the package that did not import the project correctly. This issue has been addressed, and we have rolled out a new 0.5.1 version containing the same changes but with the correct build.

To prevent the distribution of this flawed version, we are removing this release from PyPi. If you're interested in understanding the adjustments made to rectify the issue, please refer to our builder change (#107).

What's Changed

Client/API

  • fix(client): sector/input name defaults to Unknown if the main unit is out of sync with the cloud (#101)
  • feat(client): add DEBUG logging to ElmoClient (#99)

Breaking Changes

  • feat!: drop support for EOL Python versions; the project currently support Python 3.8 -> 3.11 (#94)

Dependencies and Packaging

  • Updated development dependencies (#70)
  • refactor!: merge 'v0.4.0' release into 'main' (#90)
  • refactor!: migrate the whole project to pyproject.toml project definition (#92)
  • tools: use pre-commit hooks to run linters and static analyzers (#93)
  • package: ensure project name is econnect-python; pytest Python PATH is src (#106)

Testing Improvements

  • tests: encapsulate mock calls inside tests and provide a new client for integrations tests (#96)
  • refactor!: AlarmDevice uses integration test client to ensure update() compatibility with the new API (#97)

Read the full changeset and the release milestone.

0.4.0

24 Aug 13:10
2ae3e07
Compare
Choose a tag to compare

Community Improvements!

To foster growth and fortify support for this library, we've initiated steps to streamline external contributions. Our goal is to ensure clarity in our guidelines, making it straightforward for contributors to get their code merged. To this end, we've integrated the following changes:

  • GitHub Actions CI Migration: This is a shift towards an efficient Continuous Integration process.
  • GitHub Templates: We've added templates for both pull requests and issues, simplifying the process to report bugs, request features, and contribute.
  • Contribution Guidelines: Introduced to maintain a consistent code and standards across the board.

We're excited to announce that our project roadmap is now public! If you're keen on keeping tabs on our development journey, peek into our next release roadmap. Plus, for those who have questions or seek support regarding this library or its Home Assistant integration version, we've launched a dedicated Discord channel. We invite you to join!

While these improvements are not that significant, they're the beginning. Our commitment is to continually update and rejuvenate the development of this library. A heartfelt thanks to our vibrant community for your invaluable feedback, bug reports, and engaging discussions on feature enhancements!

What's Changed

Dependencies and Requirements

  • Update supported Python versions: removed 3.5 (EOL) and added 3.9 (#60) - this change is to respect the development of 0.4.0. We'll update the test matrix in the upcoming release.

Client/API

  • ElmoClient constructor has defaults to establish the connection (#61)
  • Introduce a safer API so that only HTTPS urls can be used (#63)
  • The client now handles session token expiration (10m) (#64)
  • Improved error handling to provide better descriptions in case of exceptions (#65)
  • Ensure unlock() is called even if an exception is raised in the block (#66)
  • Implement long-polling to retrieve state updates (#67)
  • Add support for selective exclusion and readmission of inputs (#55 - thanks @davidecavestro!)
  • Remove check() API (#71)
  • Refactor query() API so that a raw query is returned; add excluded field to returned dict (#57, #72)
  • query() API returns also last_id field; items are grouped under sectors or inputs keys (#73)
  • Include status field in query() API (#74)

Documentation

  • Better description about how to use secret-code in the README example (#62)

Read the full changeset and the release milestone.

0.3.1

14 Mar 21:37
Compare
Choose a tag to compare

Documentation

  • Update README.md "Usage" section, to improve the PyPI project main page (#53)

Read the full changeset and the release milestone.

0.3.0

14 Mar 21:34
f655a58
Compare
Choose a tag to compare

New Features

Thanks @markin for helping with these new features! (draft PR: #44)

  • The project has been officially released on PyPI as econnect-python (#42, #52)
  • Extend arm() and disarm() with a sector kwarg to enable/disable one or multiple sectors (#46)
  • Handle authentication redirects (#49)
  • Add client.query() public API (#50)

Improvements

  • Use Authentication API instead of scraping the SessionID (#47)

Breaking Changes

  • Remove Settings module (#21, #51)
  • Refactor global status check() (#48). The method returns a dictionary with different keys:
# Before
{
  "areas_armed": [{"id": 0, "name": "Entryway"}, ...],
  "areas_disarmed": [{"id": 1, "name": "Kitchen"}, ...],
  "inputs_alerted": [{"id": 0, "name": "Door"}, ...],
  "inputs_wait": [{"id": 1, "name": "Window"}, ...],
}

# After
{
  "sectors_armed": [{"id": 0, "name": "Entryway", "element": 1, "index": 0}, ...],
  "sectors_disarmed": [{"id": 1, "name": "Kitchen", "element": 2, "index": 1}, ...],
  "inputs_alerted": [{"id": 0, "name": "Door", "element": 3, "index": 0}, ...],
  "inputs_wait": [{"id": 1, "name": "Window", "element": 4, "index": 1}, ...],
}

Read the full changeset and the release milestone.

0.2.0

17 Nov 10:43
f9d806f
Compare
Choose a tag to compare
0.2.0 Pre-release
Pre-release

Changes

New Features

  • It's now possible to check the System status using the ElmoClient.check() API (#40, #36)

Client Core

  • Add session_id to the ElmoClient initializer (#38, #34)
  • Simplified the code structure by using requests raise_for_status() (#39, #37)

Read the full changeset and the release milestone.

0.1.0

16 Nov 13:08
08cc341
Compare
Choose a tag to compare
0.1.0 Pre-release
Pre-release

Release

This is a first release for elmo-alerting library, which includes the following capabilities:

  • Retrieving access tokens to make API calls
  • Obtaining/releasing the system Lock() to have exclusive control of the system
  • Arm/disarm all the alarms registered in the system

The following example shows how to arm or disarm an Elmo system:

from elmo.api.client import ElmoClient

# Initialize the client with an API endpoint and a vendor and
# authenticate your connection to retrieve the access token
client = ElmoClient("https://example.com", "vendor")
client.auth("username", "password")

# To arm/disarm the system you must gain the exclusive Lock()
with client.lock("secret-code") as c:
    c.arm()     # Arms all alarms
    c.disarm()  # Disarms all alarms

This version should be considered an early version, even though it can be considered stable in terms of functionalities. That said, the API is considered 0.x.y, meaning it can change in the near future. Migration guides will be provided if breaking changes are introduced.