The AWS IoT Device Client provides device-side functionality for AWS IoT services such as jobs, device shadow, and simple pubsub.
Project description
aws-iot-device-client-python
The AWS IoT Device Client provides device-side functionality for AWS IoT services such as jobs, device shadow, and simple pubsub.
Installation
Minimum Requirements
- Python 3.7.1+
Install from PyPI
python3 -m pip install awsiotclient
Install from source
git clone https://github.com/whill-labs/aws-iot-device-client-python
python3 -m pip install ./aws-iot-device-client-python
Usage
Create MQTT connection
from awsiotclient import mqtt
# Construct connection parameters
conn_params = mqtt.ConnectionParams()
# Required params
conn_params.endpoint = <your_endpoint_url>
conn_params.cert = <path_to_your_certificate>
conn_params.key = <path_to_your_private_key>
conn_params.root_ca = <path_to_your_root_ca>
# Optional params
conn_params.client_id = <client_id> # default "mqtt-" + uuid4()
conn_params.signing_region = <signing_region> # default "ap-northeast-1" (Tokyo Region)
conn_params.use_websocket = <True/False> # default False
# Initialize connection
mqtt_connection = mqtt.init(conn_params)
connect_future = mqtt_connection.connect()
connect_future.result()
Use AWS IoT named shadow
Note that usage of classic shadow client is similar to named shadow client.
without delta (one-way communication from device to cloud)
from awsiotclient import mqtt, named_shadow
# <create mqtt connection here as described above>
my_client = named_shadow.client(
mqtt_connection,
thing_name="my_thing",
shadow_name="my_shadow"
)
my_value = dict(foo="var")
my_clinet.change_reported_value(my_value)
with delta (two-way communication from/to device and cloud)
from awsiotclient import mqtt, named_shadow
def my_delta_func(thing_name: str, shadow_name: str, value: Dict[str, Any]) -> None:
print("my_client invokes this callback when it receives delta message")
print(f"thing_name: {thing_name}, shadow_name: {shadow_name}, value: {value}")
# <create mqtt connection here as described above>
my_client = named_shadow.client(
mqtt_connection,
thing_name="my_thing",
shadow_name="my_shadow",
delta_func=my_delta_func,
)
my_value = dict(foo="var")
my_client.change_reported_value(my_value)
# <wait until the client receives delta>
Use AWS IoT jobs
from awsiotclient import mqtt, named_shadow
def job_runner(id: str, document: dict):
print("my_client invokes this callback when it receives job document")
print(f"job id: {id}, document: {document}")
# <create mqtt connection here as described above
job_client = jobs.client(
mqtt_connection,
thing_name="my_thing",
job_func=job_runner
)
# <wait until the client receives job>
License
This library is licensed under the Apache 2.0 License.
Acknowledgments
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file awsiotclient-0.2.1.tar.gz.
File metadata
- Download URL: awsiotclient-0.2.1.tar.gz
- Upload date:
- Size: 13.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dbdfe6376e57ea8f280428b45e845ad7c330398d57c60d661252a9f05b5584c2
|
|
| MD5 |
5b3ecd7a961f112b1ed8ed19e17fad4d
|
|
| BLAKE2b-256 |
e54f690229043af929871aa46357a6af9d086de7c955ddf4b163a6ce1d0eb827
|
File details
Details for the file awsiotclient-0.2.1-py3-none-any.whl.
File metadata
- Download URL: awsiotclient-0.2.1-py3-none-any.whl
- Upload date:
- Size: 16.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99f34a9428d077219c78e4de99c1d04e2aed37ec21ee4bcf40eb482f470c63e6
|
|
| MD5 |
c7cfd3854be77e977b92ec203f7fd9c4
|
|
| BLAKE2b-256 |
50f44b3041c0b5f781088b3d042b5bdf8e2e60d5a6a3bb38a22a53e3279fa3e4
|