93

A real time monitoring and control system for IoT devices

A cloud hosted server for remotely monitoring devices using Socket IO, ExpressJS and RasPi's

Project Overview

SequenceDiagram

Technologies Used

  • Containerization & Orchestration: Docker, Docker Compose
  • Single Board Computers: Dozens of Raspberry Pi devices for communication with the server over websockets
  • Kubernetes Management: Google Kubernetes Engine (GKE), kubectl, Helm
  • Infrastructure as Code: Terraform
  • Web Server & Load Balancing: Nginx, GCP
  • Caching & Databases: Redis, PostgreSQL
  • Backend Development: Node.js, Express.js, TypeScript
  • Development Tools & Libraries: Nodemon, Morgan, Winston, Swagger, Jest

Key Features

  • Designed and implemented a REST server using Express.js in Node.js, containerized for scalability and easy deployment.
  • Collaborated on the creation of a local Raspberry Pi agent for communication with IoT devices under test.
  • Developed a real-time communication system with Socket.io managing rooms and bidirectional communication with connected devices.
  • Implemented a buffering and queue system using Bullmq to handle busy devices and adapt to limited resource constraints.
  • Utilized PostgreSQL for device data persistence and Redis for fast, in-memory data caching.
  • Integrated serial and other protocols to facilitate communication with hardware boards connected to the server.
  • Deployed the system on Google Cloud Platform (GCP) with configurations for load balancing, security, and scalability, including a load balancer, Network Endpoint Groups (NEG), Identity-Aware Proxy (IAP), and backend services.
  • Configured a separate Nginx instance as a reverse proxy for additional security and performance optimization for serverless services in GCP.

Deployment and Management

  • Employed Docker and Docker Compose for container management, simplifying development, testing, and production workflows.
  • Applied Terraform for infrastructure provisioning, enabling reproducible and scalable cloud environment setups.