
Introduction to the course materials covering hardware devices used for the course as well as a brief walk-through of the IoT process on AWS.
A discussion of the technical specifications for the ESP8266, ESP32, and Raspberry Pi 3 Model B+. We explain what they are used for and their IoT capabilities relevant to AWS IoT.
Updated recommendations for the best hardware for the course. ESP8266 and ESP32 development boards and chipsets discussed.
In this lecture we discuss all the free software used for the course, as well as OS's, testing tools, IDE's and languages used to program our IoT devices to talk to the AWS IoT Core gateway. We start with the MQTT.fx tool to test our connection then move on to testing with Node-Red with a static IP. Then Arduino with a provided script for sending data to Node-Red to AWS IoT core as a HTTP/MQTT relay. Then move on to using Mongoose OS in JavaScript, Zerynth in Python, and finally the AWS IoT SDK in both JavaScript and Python. At the end of the course we introduce the AWS FreeRTOS on the ESP32 DevKitC as an advanced topic in bare metal C.
A discussion of communication protocols for IoT focusing on the MQTT broker both used from the device side and on AWS IoT Core to handle messaging using the Publish and Subscribe model.
In this lecture we discuss signing up for the Free Tier version of AWS and then Installing the latest version of the AWS CLI Version 2.
In this video I discuss cosmetic updates to AWS IoT Core for 2023. The main update is the "Actions" blade has been changed to a blade called "Message routing" and IoT "Rules" can now be created directly from this blade without the pretty pictures for each AWS service that appeared previously before these cosmetic changes to AWS IoT Core took place in 2023.
In this lecture we discuss the AWS IoT Core service, using the 'monitor' and 'test' consoles, and linking actions from AWS IoT Core to other important AWS IoT related services.
A short introduction to the often confusing concept of IAM policy's and roles. Here we create a super expansive IoT policy with the automatic configuration tool in AWS IAM as a test case before creating an real IoT policy in AWS IoT core the simple way.
Here we create device security certificates from AWS IoT Core to satisfy TLS 1.2 requirements. After we download and activate our certs we then compose and attach an inclusive IoT policy to give our device certificates permission to perform actions on the cloud.
A lecture going over the basic communication protocols and security considerations enabling devices to talk to AWS. We specifically discuss MQTT, HTTPS, SigV4, and SS/TLS requirements for device to cloud communication. Also added important troubleshooting information.
In this video I show two different methods for sending fake test data in JSON format to AWS IoT Core. These methods are useful if either you don't have your device yet or you don't want to set up your device just to send some quick data for testing purposes.
How to download free MQTT.fx tool to test our certificates
After downloading the MQTT.fx tool we link our security credentials, configure the client broker with our custom endpoint, and open port 8883 with MQTT+TLS1.2 to send a test JSON package to AWS IoT core.
In this video I discuss how to use a custom script with the MQTT.fx tool to generate IoT readings and send them out as a JSON payload to AWS IoT Core. The test script can be used as a virtual device in lieu of a physical device and has both publish and subscribe functionality.
How to solve the connection issue caused by the "mqttfx-config.xml" file.
This is a simple free tool that can be used as an easier to set up alternative to MQTT.fx. This may be helpful if you misconfigure MQTT.fx or if you just want to try a different free virtual device.
In this lecture we use the cURL tool to test our certificates by communication over HTTPS via port 8443 to AWS IOT Core. The cURL tool is super easy to use on Linux and Mac but in this video I show an easy way to use it in Windows in a Mingw Unix simulated environment that's easy to install.
curl --tlsv1.2 ^
--cacert Amazon-root-CA-1.pem ^
--cert client.pem.crt ^
--key private.pem.key ^
--request POST ^
--data "{\"Temperature\": 77, \"Humidity\": 88, \"Time\": 12349876,\"Device_ID\": \"device_4\"}" ^
"https://<INSERT-YOUR-IOT-DATA-ENDPOINT-HERE>:8443/topics/outTopic?qos=1"
In this lecture I demonstrate a simple bash script you can use to automate publishing IoT test payloads from your computer to your AWS IoT Core console. The bash script utilizes the AWS CLI to send automated commands with sample data to IoT Core. It can be configured for different regions, payload iterations, variables names, and values.
Enable tls 1.2 on esp8266/esp32 with a single page arduino sketch that publishes to aws iot core via mqtt using the pub/sub library and handle certificates, endpoints, and json payloads.
Alter the ESP8266/ESP32 Arduino sketch to send a JSON payload to AWS IoT Core, simulate temperature and humidity, and explore MQTT pub-sub with inTopic.
Updated ESP8266 Sketch to work with Board manager 3+. How he BearSSL certificates are set and anchored has changed.
Here I discuss how Node-Red on the IBM cloud now requires a credit card although it is still technically "free" for experimental use cases. Because of this I have moved it to the appendix of the course as optional material. I have developed an HTTPS to AWS IoT Core Arduino Sketch for the ESP8266 and ESP32 which accomplishes that which I was previously using Node-Red for.
In this lecture I explain details of my HTTPS to AWS IoT Core Sketch on Arduino. I have two different versions for the Board manager 2-3 on the ESP8266 and for board manager 3+. The ESP32 doesn't require an extra sketch as it works with all board support packages.
In this lecture I introduce MicroPython and talk about the advantages and disadvantages of the langauge compared to using Arduino. It is worthwhile to compare the C/C++ language of Arduino with the constrained version of Python for Microcontrollers. A large consideration is library support for peripheral sensors. I also discuss the cool and free IDE called Thonny.
In this video I discuss how to flash and install the MicroPython environment for both the ESP32 and ESP8266. MicroPython requires two steps before we can upload our specific programs to the device using the Thonny IDE. First we have to erase everything in memory on the ESP device and then we have to upload the MicroPyrhon framework to the ESP device. Both tasks can be accomplished with the free ESP tool.
In this lecture we go over the MicroPython code need to connect our ESP32 to AWS IoT Core. Our code has both publish and subscription methods. We need to fill out the typical global constants of AWS IoT Endpoint, WiFi, port, MQTT topics, and download our certificates to the device in order to connect to AWS IoT Core using MQTT secured.
In this lecture we go over the MicroPython code need to connect our ESP8266 to AWS IoT Core. Our code has both publish and subscription methods. We need to fill out the typical global constants of AWS IoT Endpoint, WiFi, port, MQTT topics, and download our certificates to the device in order to connect to AWS IoT Core using MQTT secured. With the ESP8266 we have an additional complication of having to convert our security certificates to DER format. In this video I demonstrate how to do this with the OpenSSL tool.
In this lecture we introduce the free Mongoose programming tool to upload code to our embedded devices and transmit data from our device to AWS IoT Core.
In this lecture we build and flash the firmware from the Mongoose OS tool to our embedded device. For this lecture we use the init.js code provided as the default example in Mongoose OS, then we examine how it transmits data to AWS IoT core after automatically creating TLS 1.2 compliant certificates for us.
In this lecture we reprogram our embedded device with a new init.js firmware package Included in course resources) that better suits our needs. Later in this course, when we start using different IoT related AWS services, this new modified data package will satisfy the requirements of our applications.
Learn how to use Mongoose OS to connect a device with AWS IoT Core, using a custom loop program and a basic JSON payload.
Update to Zerynth for 2022.
Discover Zerynth, an embedded python environment with device constraints, and learn to register an ESP32, create a virtual device, and virtualize firmware with ESPTool PyScript for AWS IoT integration.
Configure Zerynth with AWS IoT to provision certificates, policies, and a thing, then adapt the sample program to push JSON packets from the ESP32.
Connects the sample program to AWS IoT, demonstrating JSON data exchange via MQTT and shadow services. Shows converting a timer loop to a button-driven update and explains QoS.
Customize the test program to publish data on a push button press using a timers library and an asynchronous handler, publishing a JSON packet to the AWS IoT sample topic.
In this series of lectures we introduce the AWS IoT Device SDK's which are designed to give the RPi access to a curated set of IoT programs specifically designed to work with AWS.
Install the AWS IoT Device SDK in Python version two and then run the Sample code to publish IoT payloads to AWS IoT Core.
proigram
program
Modify the index.js with a new payload in the AWS IoT device sdk, use index_modified, run npm install, and publish to AWS IoT Core via Node.js.
Learn to set up a text notification from sensor data using AWS IoT actions and SNS, including topic configuration and an IAM role to publish data.
Set up an email notification for sensor data using AWS SNS by creating an email action, configuring a topic, subscribing via email, and confirming the subscription.
Learn to implement conditional data testing for notifications in AWS IoT by separating email and text actions, triggering alerts when temperature exceeds 80 or humidity exceeds 40.
Explore direct data storage to S3 from AWS IoT, creating a test bucket, role, and straight2S3 function, and discuss why it overwrites data and isn't ideal for IoT.
Export data from AWS IoT by using the export option to download CSV or JSON files, noting S3 limitations and that it's not a final solution, a quick, dirty workaround.
Below are the needed policy and rule to make your bucket easily accessible from anywhere with a static IP.
Public read-only Bucket Policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicRea2411145d",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": "arn:aws:s3:::<Paste-Your-Bucket-Name-Here>/*"
}
]
}
Easily accessible CORS Rule:
[
{
"AllowedHeaders": [
"Authorization"
],
"AllowedMethods": [
"GET"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": [],
"MaxAgeSeconds": 3000
}
]
This course explores the various features of device to cloud communication using Amazon AWS IoT Core on a AWS free tier account.
Before the course starts we need an AWS free tier account, a local installation of the AWS CLI tool, and installation of the MQTT.fx testing tool (all free). After this is set up we will program inexpensive, WiFi enabled embedded devices such as the ESP8266, ESP32, and Raspberry Pi to communicate with AWS IoT Core with MQTT.
We will take advantage of free "Internet of Things" (IoT) development environments, like Mongoose OS in JavaScript, Arduino in C, Zernyth in Python, AWS FreeRTOS in C, and the AWS IoT SDK in both JavaScript and Python for the Raspberry Pi to program our inexpensive WiFi devices.
You will need at least one or more of the following devices to transmit data to AWS IoT. Alternately, you can send JSON test payloads from IoT Core directly, imitating a IoT device. The course continues on with programming our embedded devices to send data from the device to the AWS cloud. To transmit our data we will use the built in MQTT broker on our devices firmware, sending JSON encoded sensor data, to the AWS IoT console.
Device Development Environment Programming Language
ESP8266 12-E Mongoose OS, MicroPython JavaScript, Arduino
ESP32 Arduino, Zerynth, FreeRTOS JavaScript, Python, Arduino, C
Raspberry Pi 3 Model B AWS IoT SDK JavaScript, Python
From within the IoT console we will create AWS IoT “Rules” and “Actions” to explore many of the built in AWS IoT enabled services that are integrated in the AWS IoT Core console on the AWS cloud. Creating rules-based actions to AWS services we will send, store, file, manipulate, graph and analyze our sensor data through a variety of important AWS applications. Some of these integrated applications, using these rule-based actions, are Dynamo Database, S3, SNS, Lambda, Data Pipeline, Glue, QuickSight, AWS IoT Analytics, and SageMaker.
IoT is largely the fusion of devices and the web, specifically the cloud; all sending and recording data, ubiquitously and continually, everywhere. Understanding and being able to prototype and implement an end-to-end, device to cloud path communication is a much in demand career skill.
Having the skills to build a prototyping IoT solution in the cloud is already an important and highly demanded skill set for those wanting to call themselves IoT developers, and this is more true as time goes on and IoT exponentially expands as cheap connected devices become wide-spread.
Remember! 30 days money-back guarantee with no questions asked. I want you to be happy with the value I believe this course provides.