Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

E-connect Python API

PyPI version CircleCI codecov

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.6+
  • 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)

# Or use the shortcut
status = client.check()

# Returns:
# {
#   "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}, ...],
# }

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.

Development

We accept external contributions even though the project is mostly designed for personal needs. If you think some parts can be exposed with a more generic interface, feel free to open a GitHub issue and to discuss your suggestion.

Coding Guidelines

We use flake8 as a style guide enforcement. That said, we also use black to reformat our code, keeping a well defined style even for quotes, multi-lines blocks and other.

Before submitting your code, be sure to launch black to reformat your PR.

Testing

tox is used to execute the following test matrix:

  • lint: launches flake8 and black --check to be sure the code honors our style guideline
  • py{35,36,37,38}: launches py.test to execute all tests under Python 3.5, 3.6, 3.7 and 3.8.

To launch the full test matrix, just:

$ tox

Release files for econnect-python 0.4.0.dev2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for econnect-python 0.4.0.dev2
File Size Uploaded
econnect-python-0.4.0.dev2.tar.gz 11.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for econnect-python 0.4.0.dev2
File Interpreter ABI Platform
econnect_python-0.4.0.dev2-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 23.5 kB

Release files / econnect-python-0.4.0.dev2.tar.gz

Download URL econnect-python-0.4.0.dev2.tar.gz
Size 11.0 kB
Tags Source
SHA-256 checksum
How to use checksums
1ee40cffac24c1b8da442a38178ebf1d5cb1f9dbefb1c5868753146d1089d7ff
BLAKE2b-256 checksum
How to use checksums
e6cfc539d9b48a7f85169b34a7a33739c248134fb9165e5b8c705a398abbaf29
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.0

Release files / econnect_python-0.4.0.dev2-py2.py3-none-any.whl

Download URL econnect_python-0.4.0.dev2-py2.py3-none-any.whl
Size 12.5 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
0892ee421352bf85e5bd402d7aa3b66fbe4f886c4e54f7facf9099ffd277b8c5
BLAKE2b-256 checksum
How to use checksums
ca568ded025d9e58e4b20322805d1a00fc613e408380ac580fcca524988401b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.0
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page