Interact with Coiote DM API
Project description
Coiote Python
python-coiote
is a Python package providing access to the Coiote DM server API. It supports v3
Coiote DM API.
If you spot an issue, have a feature request or would like to discuss anything else, you're welcome to join Coiote Discord community.
Features
python-coiote
enables you to:
- interact with Coiote DM
v3
API to manage your devices, groups and domains, - automatically URL-encode path parameters whenever needed,
- convert API responses to convenient Python data classes,
- conveniently deal with batch/paginated responses from
v3
API, - handle authentication errors and retries,
and more.
Installation
python-coiote
is compatible with Python >= 3.7
.
Use pip to install the latest stable version of python-coiote
:
pip install --upgrade python-coiote
Authentication
There are two ways of authenticating in Coiote API when using this SDK:
- Using credentials to your Coiote account:
from coiote.auth import Credentials
from coiote.client import Coiote
client = Coiote(url="https://eu.iot.avsystem.cloud", auth=Credentials("<your-username>", "<your-password>"))
Since Coiote does not support generating API tokens yet, preferably, you should create a separate account in your Coiote domain that will have the permissions only to access the API endpoints you intend to use.
- Using a raw token acquired manually using the
oauth
endpoint in v3 API:
from coiote.client import Coiote
client = Coiote(url="https://eu.iot.avsystem.cloud", auth="<your-token>")
Using device client
python-coiote
comes with builtin high level client designed for accessing specific device and to do so, composes
multiple API calls.
To read more, see Device Client class. The device client supports a set of basic
operations:
client = Coiote(url="https://eu.iot.avsystem.cloud", auth="<token>")
endpoint_name = "device_name"
device = client.create_device_client(endpoint_name)
Get the whole datamodel or its parts:
device.get_all_data()
device.get_resource_value("Device.0.Timezone")
Schedule writing value to device's data model (it's async, method returns task ID):
write_task_id = device.write_to_resource("Device.0.Timezone", "Kraków/Radzikowskiego")
Schedule reading value from the actual device into its data model (it's async, method returns task ID):
read_task_id = device.read_resource("Device.0.Timezone")
Manually schedule executing a resource on a device (it's async, method returns task ID):
execute_task_id = device.execute_resource("Device.0.Reboot")
Schedule reboot of the device (it's async, method returns task ID):
reboot_task_id = device.reboot_device()
Get recently reported location:
device.get_location()
Access the device historical data - only for resources from objects with ID > 502:
from datetime import datetime, timedelta
start_time = datetime.now() - timedelta(minutes=15)
end_time = datetime.now()
data = c.device_monitoring.get_data_batch(endpoint_name, lwm2m_url="/3303/0/5700", start_time=start_time, end_time=end_time)
Download device data from given time range and save it to CSV using pandas:
import pandas as pd
from datetime import datetime, timedelta
device_id = "<enter device ID or endpointname>"
url = "<enter resource URL>"
# Pick last 30 days
start_time = datetime.now() - timedelta(days=30)
# Download data
data = c.device_monitoring.get_all_data(device_id, lwm2m_url=url, start_time=start_time)
# Map data to Pandas dataframe and save it to CSV
data = {"value": [datapoint.value for datapoint in data],
"datetime": [datapoint.date for datapoint in data]}
df = pd.DataFrame(data)
df.to_csv("<enter CSV file name>.csv")
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 python_coiote-2.11.2.tar.gz
.
File metadata
- Download URL: python_coiote-2.11.2.tar.gz
- Upload date:
- Size: 22.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9e7bcd32c29724017815624db6839dbcf79f026cc4436a0bd38274a9aa0b9e5 |
|
MD5 | bbf47c7415fe0b47f11b5f46f8a8e707 |
|
BLAKE2b-256 | da552c2c3ba04fd2cd1babc555d3959038b8389a6e9c02b4b705ad80208795fb |
File details
Details for the file python_coiote-2.11.2-py3-none-any.whl
.
File metadata
- Download URL: python_coiote-2.11.2-py3-none-any.whl
- Upload date:
- Size: 36.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 57b5627650e145cb979cb4188e2adfe63499c1ebd64123083a68e7f72adb9027 |
|
MD5 | b77aa4ba3465366752b88d7ea7ac5f15 |
|
BLAKE2b-256 | ff7ae2f62f1d39bfa38350e50d8528ee4ad42e2708573254ebacd01632bd904a |