Communication, Calculation, and broker components

 The most expensive and maintenance heavy part of the system is the aggregating server setup.  This server includes:

  • MQTT broker
  • Node-Red instance

I decided to use my in home Dell R620 server running ESXi to create an Ubuntu 16.04 LTS server VM to run both Node-Red and the MQTT instance.  The advantage to this system is my ability to maintain privacy, reduce online node costs, and generally learn more about managing a server.

The disadvantages became clear right away:

  • Uptime on the server: I had to porvide a UPS backup, and method to shutdown the server in the event of a long term power failure
  • The server is loud: Luckily, I wa sable to set this up in my basement
  • ESXi is a beast: After using VirtualBox for some time on Slackware, ESXi was a good decision for other VMs I had running, and would be the best way ot go for this project as well.
  • I had to install all of the parts myself: I already knew how to setup MQTT on Ubuntu 16.04 (mosquitto), but NodeRed was a new challenge.  At least I already had some experience with web node setup in linux, so it wasn't bad.
  • The APIs changed: Google update to OAUTH 2.0, which forced my hand.  I needed to get my restrictive scope usage verified.
  • General Knowledge: I'm a C/C++ programmer, and have done C# and very little JavaScript.  I had to sort through how NodeRed works and how to create/use APIs other people probably already know inside out.  This was and still is the biggest challenge on this project.

I also realized, once I setup the server in my own house, that this would not make a great product as is.  I would need additional componentry if I really wanted to commercialize this:

  • I would need OTA firmware updates
  • The ESP32 would need a WiFi direct configuration capability
  • The APIs would have to be accessed directly on the ESP32

So as of now, this project remains a personal project, within my own home.