API adapter used to control programmatically an Elmo alarm system
Reason this release was yanked:
Flawed build, use any version >= 0.5.1
Project description
E-connect Python API
econnect-python
is an API adapter used to control programmatically an Elmo alarm system.
Through a generic configuration, the client allows:
- 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
- Query the system and get the status of your sectors and inputs
Requirements
- Python 3.8+
requests
Getting Started
This package is available on PyPI:
$ pip install econnect-python
Usage
from elmo import query
from elmo.api.client import ElmoClient
# Initialize a new client to authenticate your connection
# and retrieve an access token used for the entire session.
client = ElmoClient()
client.auth("username", "password")
# To arm/disarm the system you must gain the exclusive Lock()
with client.lock("secret-code") as c:
c.arm() # Arm all alarms
c.disarm() # Disarm all alarms
c.arm(sectors=[3, 4]) # Arm only sectors 3 and 4
c.disarm(sectors=[3]) # Disarm only sector 3
# Query the system
sectors_armed, sectors_disarmed = client.query(query.SECTORS)
inputs_alerted, inputs_wait = client.query(query.INPUTS)
The access token is valid for 10 minutes, after which, you need to authenticate again to
refresh the token. Obtaining the lock via client.lock("secret-code")
is mandatory to arm or
disarm the system, otherwise the API returns 403
. secret-code
is the numeric code you
use to arm/disarm the system from the alarm panel.
Once the lock is obtained, other clients cannot connect to the alarm system and only a manual override on the terminal is allowed. Outside the context manager, the lock is automatically released.
Client Configuration
If https://connect.elmospa.com
is your authentication page, no configuration is needed
and you can skip this section.
On the other hand, if your authentication page is something similar to
https://connect3.elmospa.com/nwd
, you must configure your client as follows:
# Override the default URL and domain
client = ElmoClient(base_url="https://connect3.elmospa.com", domain="nwd")
client.auth("username", "password")
If your base_url
or domain
are not properly set, your credentials will not work
and you will get a 403 Client Error
as your username and password are wrong.
Contributing
We are very open to the community's contributions - be it a quick fix of a typo, or a completely new feature! You don't need to be a Python expert to provide meaningful improvements. To learn how to get started, check out our Contributor Guidelines first, and ask for help in our Discord channel if you have questions.
Development
We welcome external contributions, even though the project was initially intended for personal use. If you think some parts could be exposed with a more generic interface, please open a GitHub issue to discuss your suggestion.
Dev Environment
To create a virtual environment and install the project and its dependencies, execute the following commands in your terminal:
# Create and activate a new virtual environment
python3 -m venv venv
source venv/bin/activate
# Upgrade pip and install all projects and their dependencies
pip install --upgrade pip
pip install -e '.[all]'
# Install pre-commit hooks
pre-commit install
Coding Guidelines
To maintain a consistent codebase, we utilize flake8 and black. Consistency is crucial as it helps readability, reduces errors, and facilitates collaboration among developers.
To ensure that every commit adheres to our coding standards, we've integrated pre-commit hooks.
These hooks automatically run flake8
and black
before each commit, ensuring that all code changes
are automatically checked and formatted.
For details on how to set up your development environment to make use of these hooks, please refer to the Development section of our documentation.
Testing
Ensuring the robustness and reliability of our code is paramount. Therefore, all contributions must include at least one test to verify the intended behavior.
To run tests locally, execute the test suite using pytest
with the following command:
pytest tests/ --cov elmo -s -v
For a comprehensive test that mirrors the Continuous Integration (CI) environment across all supported Python
versions, use tox
:
tox
Note: To use tox
effectively, ensure you have all the necessary Python versions installed. If any
versions are missing, tox
will provide relevant warnings.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file econnect_python-0.5.0.tar.gz
.
File metadata
- Download URL: econnect_python-0.5.0.tar.gz
- Upload date:
- Size: 24.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0bf783baac46cbd285463955b1fc4a5620299f3910ad59e188b34e3fdba4541d |
|
MD5 | 6349dfbc1d0885e5bc64c6f39d849985 |
|
BLAKE2b-256 | 8337144c45fe81765ae1d3672ef2ebf149cc71979d6917d50c5be3fcb75bd463 |
File details
Details for the file econnect_python-0.5.0-py3-none-any.whl
.
File metadata
- Download URL: econnect_python-0.5.0-py3-none-any.whl
- Upload date:
- Size: 15.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4794b7380cf1445e6a3c7bedb66f0373f6e709149c1351744d84fd02de536a4 |
|
MD5 | 6e92dcf9ba5d6a1656af0a09d4a39e41 |
|
BLAKE2b-256 | cc8039220c03125b334b8e4ff54f6c1b39b791568b755080b6f217ede3a0b17b |