Overview
AWS IoT Greengrass is Amazon's IoT edge processing platform. We used their
documentation and other sources [1] with
MIMIC MQTT Simulator to setup a
simple control system at the edge to test bi-directional MQTT message flow
(from sensors to control logic, and from control logic to actuator).
For those who'd rather skip to the video, here is the 2-minute
Youtube video.
This example illustrates the
purpose of IoT at the edge: the processing that does
not need the cloud should happen locally. In this test, everything is occurring at
the edge, we just added device shadow synchronization to the AWS IoT cloud
for illustration.
Details
You need to setup an account at
Amazon AWS IoT.
Once logged into the AWS IoT
console, and a Greengrass Group has been created
according to their
Getting Started manual.
We setup a group called
GG_group2 with a core
GG_group2_Core.
Then we simulated our usual bi-directional
simple control system
at the edge,
with these devices
including a sensor
sensor_1 reporting telemetry to Greengrass core,
running in MIMIC as seen above on the left, with certificates as configured
in
AWS on the right.
When the
actuator (eg. cooling system) in the control system
is off, the sensor
temperature heats, and when it is on, then it cools.
We implemented the control
system logic in a
Node-RED
flow,
rather than in a Lambda function.
It turns the actuator on if the
temperature exceeds a high threshold, and turns it
off if the temperature
is cool enough. The connectivity to the core broker is setup
as a
subscriber to the shadow updates as shown below on the right:
and the Node-RED subscriber is configured to connect to the broker at the edge:
with TLS certificates exported by AWS:
The parts of the system need permission to publish as defined in the
Greengrass
subscriptions:
Once everything is setup, the control system reaches a normal steady
state at the
edge, as visualized by the Node-RED graphing rules, as
shown in this 2-minute
Youtube video.
Conclusion
We saw that by using MIMIC MQTT Simulator we can create a real-time
scalable, predictable, customized IoT Edge Control System scenario that
compresses the state transitions into a period short enough for showing in
less than 3 minutes.
Future work can improve on this to make it more scalable, test exceptions
(eg. what if the sensor does not cool down when fan is on?), test different
implementations (eg. Lambda function vs. Node-RED), etc.
References:
[1]
The Hitchhikers Guide to AWS IoT