Pioreactor development log #6 - There is no cloud, only someone else's computer

Pioreactor development log #6 - There is no cloud, only someone else's computer

By design, there is no Pioreactor "cloud". That is, all your collected data, the web interface, and computations are hosted locally on the Raspberry Pis. This has a number of benefits for you, the user:

  • no additional monthly fees that are associated with a cloud model
  • no latency issues
  • if we, the company called Pioreactor, disappear, you can still use the Pioreactor (additional bonus: our software is open source so you can continue to develop it)

However, we also want to learn from users to improve the product. For example, we'd like to collect real-world statistics from bioreactor experiments, like the amount of noise in our optical density signal, or how LEDs respond to temperature. We can aggregate this data across all the Pioreactors, produce better statistical models, and return these models to users for improved performance. 

This past week, we took our first step in this direction by setting up a very thin cloud service to collect statistics from Pioreactors (by the way, this is an optional service. You only need to turn if off in your Pioreactor's configuration). After specific tasks the Pioreactor perform are completed, it will fire a few data points to one of our cloud endpoints, and these endpoints store the data in a database. Later, we will analyze this data and improve our internal statistical models. See Figure 1 below.

The cloud service we chose was Firebase Functions. This was my (Cameron's) first use of Funtions-as-a-service, shortened to FaaS. The FaaS model is a recent trend in software architecture. Instead of building an entire app with the functionality of exposed endpoints, in a FaaS model, we only define the endpoints that run functions. This is really useful for companies that want to offload some computationally-heavy task (image resizing, video processing) off their main app. In our case, we just want endpoints to listen to incoming data, and store that data in a database. That database is provided by Firebase, called Firestore. 

How does this help you? You get the accumulated knowledge of thousands of bioreactor experiments. You get reduce need for calibration, since we can give you better estimates of calibration parameters. All for free! 


Figure 1. A schematic of how sharing with the Pioreactor Cloud results in improved performance for all Pioreactors.