Amazon Web Services IoT Library¶
The Zerynth AWS IoT Library can be used to ease the connection to the AWS IoT platform.
It allows to make your device act as an AWS IoT Thing which can be registered through AWS tools or directly from the Zerynth Toolchain.
Check this video for a live demo:
The Thing class¶
-
class
Thing
(endpoint, mqtt_id, clicert, pkey, thingname=None, cacert=None)¶ Create a Thing instance representing an AWS IoT Thing.
The Thing object will contain an mqtt client instance pointing to AWS IoT MQTT broker located at
endpoint
endpoint. The client is configured withmqtt_id
as MQTT id and is able to connect securely through AWS authorizedpkey
private key andclicert
certificate (an optionalcacert
CA Certificate can also be passed).Refer to Zerynth SSL Context creation for admitted
pkey
values.The client is accessible through
mqtt
instance attribute and exposes all Zerynth MQTT Client methods so that it is possible, for example, to setup custom callback on MQTT commands. The only difference concerns mqtt.connect method which does not require broker url and ssl context, taking them from Thing configuration:my_thing = iot.Thing('my_ep_id.iot.my_region.amazonaws.com', 'my_thing_id', clicert, pkey) my_thing.mqtt.connect() ... my_thing.mqtt.loop()
A
thingname
different from chosen MQTT id can be specified, otherwisemqtt_id
will be assumed also as Thing name.
-
update_shadow
(state)¶ Update thing shadow with reported
state
state.state
must be a dictionary containing only custom state keys and values:my_thing.update_shadow({'publish_period': 1000})
-
on_shadow_request
(shadow_cbk)¶ Set a callback to be called on shadow update requests.
shadow_cbk
callback will be called with a dictionary containing requested state as the only parameter:def shadow_callback(requested): print('requested publish period:', requested['publish_period']) my_thing.on_shadow_request(shadow_callback)
If a dictionary is returned, it is automatically published as reported state.