Hands-on prerequisites
In order to follow along with the hands-on portions of this book, you will need access to two computer systems.
Note
At the time of authoring, AWS IoT Greengrass v2 did not support Windows installation. The hands-on portions related to the edge solution are specific to Linux and do not run on Windows
System 1: The edge device
The first system will be your edge device, also known as a gateway, since it will act as the proxy for one or more devices and the cloud component of the solution. In IoT Greengrass terminology, this is called a Greengrass core. This system must be a computer running a Linux operating system, or a virtual machine (VM) of a Linux system. The runtime software for AWS IoT Greengrass version 2 (v2) has a dependency on Linux at the time of this writing. The recommendation for this book is to use a Raspberry Pi (hardware version 3B or later) running the latest version of Raspberry Pi OS. Suitable alternatives include a Linux laptop/desktop, a virtualization product such as VirtualBox running a Linux image, or a cloud-hosted Linux instance such as Amazon Elastic Compute Cloud (EC2), Azure Virtual Machines, or DigitalOcean Droplets.
The Raspberry Pi is preferred because it provides the easiest way to interoperate with physical sensors and actuators. After all, we are building an IoT project! That being said, we will provide code samples to emulate the functionality of sensors and actuators for our readers who are using virtual environments to complete the hands-on sections. The recommended expansion kit to cover use cases for sensors and actuators is the Raspberry Pi Sense HAT. There are many kits out there of expansion boards and modules compatible with the Raspberry Pi. The use cases in this book could be accomplished or modified as necessary to fit what you have, though we will not cover alternatives beyond the software samples provided.
You can see a visual representation of the Raspberry Pi 3B with a Sense HAT expansion board here:
In order to keep the bill of materials (BOM) low for the solution, we are setting the border of edge communications at the gateway device itself. This means that there are no devices wirelessly communicating with the gateway in this book's solution, although a real-world implementation for the smart home product would likely use some kind of wireless communication.
If you are using the recommended components outlined in this section, you will have access to an array of sensors, buttons, and feedback mechanisms that emulate interoperation between the smart home gateway device and the connected devices installed around the home. In that sense, the communication between devices and the smart home hub becomes an implementation detail that is orthogonal to the software design patterns showcased here.
System 2: Command and control (C2)
The second system will be your C2 environment. This system can be a Windows-, Mac-, or Unix-based operating system from which you will install and use the AWS Command Line Interface (AWS CLI) to configure, update, and manage your fleet of edge solutions. IoT Greengrass supports a local development life cycle, so we will use the edge device directly (or via Secure Shell (SSH) from the second system) to get started, and then in later chapters move exclusively to the C2 system for remote operation.
Here is a simple list of requirements:
- An AWS account
- A user in the AWS account with administrator permissions
- First system (edge device):
- Linux-based operating system such as Raspberry Pi OS or Ubuntu 18.x
- Recommended: Raspberry Pi (hardware revision 3B or later)
- Must be of architecture Armv7l, Armv8 (AArch64), or x86_64
- 1 gigahertz (GHz) central processing unit (CPU)
- 512 megabytes (MB) disk space
- 128 MB random-access memory (RAM)
- Keyboard and display (or SSH access to this system)
- A network connection that can reach the public internet on Transmission Control Protocol (TCP) ports
80
,443
, and8883
sudo
access for installing and upgrading packages via package manager- (optional) Raspberry Pi Sense HAT or equivalent expansion modules for sensors and actuators
- Linux-based operating system such as Raspberry Pi OS or Ubuntu 18.x
- Second system (C2 system):
- Windows-, Mac-, or Unix-based operating system
- Keyboard and display
- Python 3.7+ installed
- AWS CLI v2.2+ installed
- A network connection that can reach the public internet on TCP ports
80
and443
Note
If you are creating a new AWS account for this project, you will also need a credit card to complete the signup process. It is recommended to use a new developer account or sandbox account if provisioned by your company's AWS administrator. It is not recommended to experiment with new projects in any account running production services.
All of this is an exhaustive way of saying: if you have a laptop and a Raspberry Pi, you are likely ready to proceed! If you just have a laptop, you can still complete all of the hands-on exercises with a local VM at no additional cost.
Note
Installation instructions for Python and the AWS CLI vary per operating system. Setup for these tools is not covered in this book. See https://www.python.org and https://aws.amazon.com/cli/ for installation and configuration.