Introduction, covers what this book is going to solve, we tackle the issues and problems surrounding IoT applications and their architecture. We also go over the hardware that is needed for this book and the chapter ends with some simple Rust examples.
Server Side, starts with setting up and creating our first microservice the retrieval_svc, this will set up simple calls to it and integrate and set up the database for it.
File Uploading and Parsing, this chapter is more heavily focused on the upload_svc and in here we learn how to upload images and video files to store locally. We then parse the metadata out of the files and call the retrieval_svc to store their metadata.
Messaging and GraphQL, back to the retrieval_svc we add GraphQL to use on top of the web tier instead of pure RESTful endpoints. We also create the mqtt_service that will serve as our bridge to communicate between the backend and the Pi using MQTT.
Performance, enhancing both the retrieval_svc and the mqtt_service by instead having the communication between the two be REST calls, instead they will use serialized binary data via Cap’n Proto to talk. Also on the retrieval_svc side we add CQRS and eventual consistency to our graph mutations for comments.
Security, this adds using Auth0 to authenticate the user so that our database can identify a device to a user. We also add self signed certificates to secure the communication of the MQTT.
Deployment, this chapter we learn how to create Docker images of all our microservices, combining them with Kubernetes and deploying to a cloud provider with Helm charts.
Sense HAT, our first hands on chapter with the Raspberry Pi we will set up the heartbeat to communicate to the MQTT backend we created earlier.
Sense HAT, this incorporates the Sense HAT device to gather data about our environment to the Pi. The SenseHat provides us a visual LED display, temperature sensors, and a joystick for interactions.
Camera, this chapter we add a camera to the device which will allow us to do facial tracking and recording.
Integration, one of the last chapters we incorporate the video camera to send data back to the cloud as well as allowing the Pi to receive recording commands from the cloud and finally we allow the Pi to be used as a HomeKit device to show temperature and motion.
Final Thoughts, this final short chapter discusses how we would build an ISO image for our given application and other bundling issues.
Joseph Faisal Nusairat is a a senior partner at Integrallis Software and is a software developer who has been working full-time in the Columbus, Ohio, area since 1998, primarily focused on Java and most recently Rust application development. His career has taken him into a variety of Fortune 500 industries, including military applications, data centers, banking, Internet security, pharmaceuticals, and insurance. Throughout this experience, he has worked on all varieties of application development from design to architecture to development. Joseph, like most Java developers, is particularly fond of open source projects and tries to use as much open source software as possible when working with clients. Joseph is a graduate of Ohio University with dual degrees in computer science and microbiology and a minor in chemistry. While at Ohio University, Joseph also dabbled in student politics and was a research assistant in the virology labs.
Get started programming Rust applications for the Internet of Things (IoT). This book is a programming skills migration book that teaches you the Rust programming techniques most useful for IoT applications. You'll step through from server to board development in creating a set of IoT applications.
In Rust for the IoT, you'll learn how to build a modern server side application using Rust on the backend. Then you'll use docker and Kubernetes to deploy these to a managed cloud. Finally you will use a Raspberry Pi with a SenseHat and Camera to capture the world around you and send that information to the cloud.
While you will be able to follow along without any cloud or hardware, to make the most of it we recommend a few cloud pieces and hardware that is designed to integrate with the software in this book. After reading and using this book, you'll see how to apply Rust to the Internet of Things.
You will:
Create a modern Rust backend complete with handling eventual consistency and interacting via a GraphQL interface
Use the Raspberry PI to serve as a cheap IoT device that one can easily deploy around the house
Capture temperature, video, and use the interactive joystick to interact with the software you’ve created
Use OpenCV to perform facial detection from the PI’s camera and save that information to the cloud.
Create deployable helm charts for the cloud, and for the device create complete ISOs that allow you to easily deploy the Pi’s OS + custom software