Mini Project Summary

For the Mini Project several tasks had been identified and implemented either on a PC or on the Raspberry PI. Here is a short overview of the most important aspects:

Raspberry Pi

An overview what has been implemented on the Raspberry PI:

  • program to capture images using the HQ camera module
  • program to
    • monitor captured images
    • implementing various sensors to emulate hardware sensors
    • websocket server to exchange notifications about image and sensor data with a PC

PC

An overview what has been implemented on the PC:

  • setting up a MQTT message broker
    • communicating asynchronously for publishing / subscribing via websockets
  • setting up a database
    • database access (either synchronously or asynchronously) using Python
  • implementing a utility to start / stop / configure programs running remotely on the Raspberry PI.
  • implementing a monitoring program to
    • exchange data / images with the Raspberry PI
    • sending data (publish) to the MQTT message broker
  • implementing a web application
    • server implemented with NodeJS / Express
    • web client (HTML, CSS, Javascript)

What should come next …

The purpose of the Mini Project has been getting some basic understanding how to set up a distributed monitoring system based on components running on either Raspberry PI or PC.

Future work should possibly be directed to:

  • replacing fake sensors (only implemented in software) on the RPI by hardware sensors
    • PIR sensor
    • temperature sensor
    • light sensor
    • etc.
  • add logging support (using database) on the PC
    • design tables and queries
  • improve the user interface of the web application
    • make it more modular; separating HTML from Javascript
    • improve stylesheet
    • add fault tolerance
      • error handling
    • sensor data are currently displayed in a table; a more graphically pleasing presentation showing data evolve over time would be welcome
    • improve throughput for transfer of images
    • try a different server application
      • current implementation uses NodeJS/Express
      • could try Python/Sanic
    • currently the web application only permits connecting to the server in a local network
      • remote access over the internet would be the next thing to implement