In this liveProject, you will be developing a public address (PA) system for London Heathrow airport by using Internet of Things (IoT). The system you will build will be able to react to events (such as plane arrival, gate openings, final calls) by generating audio in real time and sending it for playback to relevant sets of speakers.
The solution you will be building will consist of two key parts – server-side web application and the distributed application that gets deployed on the IoT devices on the ground. IoT devices will have a persistent connection to the web application, so they can send their status information to the server and receive audio data from the server in real time. See the diagram below for a simple schematic of such a system.
To enable real-time communication between the server and the IoT devices on the ground, you will be using SignalR, a library that was made by Microsoft for ASP.NET Core platform. Its main purpose is to enable a persistent real-time two-way communication between a client and a server while hiding all complex implementation details.
Because of the ease with which SignalR allows developers to write applications that can communicate with each other in real time over the network, it’s an ideal library for facilitating communication between IoT devices.
In the process of building the solution, you will learn the following:
- Building a server-side SignalR hub and adding various types of endpoints to it
- Building a .NET-based client application capable of talking to SignalR hub
- Enabling audio playback on both Windows and Linux
- Enabling the transfer of audio data via SignalR between the server and the client
- Enabling multiple instances of IoT applications to run simultaneously as a single IoT cluster
- Making the deployment of IoT applications easy by using Docker
Even though a real IoT device can be used in this project, it doesn’t have to be. If you don’t have an access to IoT devices, you will still be able to emulate them by running multiple instances of the IoT application on your development machine.
This liveProject is for C# developers who know .NET and ASP.NET Core. To begin this liveProject, you will need to be familiar with:
- Linux or Windows operating system
- Visual Studio 2019 or Visual Studio Code
- Command Line Interface
- C# programming language
- ASP.NET Core
- Knowledge of ASP.NET Core fundamentals
- Knowledge of C#
Fiodar is an experienced full-stack senior software developer who mainly works with Microsoft software development stack. The main areas of his expertise include ASP.NET (Framework and Core), SQL Server, Azure, Docker, Internet of Things (IoT), microservices architecture and various front-end technologies.
Fiodar has built his software engineering experience while working in a variety of industries, including water engineering, financial, retail, railway and defense. He has played a leading role in various projects and, as well as building software, his duties included performing architectural and design tasks. He has also performed a variety of technical duties on clients’ sites, such as in-house software development and deployment of both software and IoT hardware.
Fiodar is passionate about teaching other people programming skills. He has published a number of programming courses on various online platforms.
Fiodar regularly writes about software development on his personal website, Scientific Programmer. He has also published a number of articles on other websites, such as Simple Programmer.