The objective of this thesis is to design and implement a prototype system that allows remote monitoring and maintenance of indoor houseplants.
The architecture of the implemented system can be divided into three main parts: a hardware subsystem, a Firebase "backend as a service" mobile platform database server, and an iOS client mobile application.
The core component of the hardware subsystem is a Raspberry Pi 3 Model B microcomputer. I have connected various sensors to it: a temperature sensor, an ambient light intensity sensor and a soil moisture sensor. The Raspberry Pi is responsible to measure the sensors’ value, then to collect and process the results of the measurements, and then to communicate with the back-end database server, thus to receive and send data. The code running on it was written in Python programming language. As part of the data-processing on the Raspberry, I implemented a supervised learning based prediction in the Python script, which estimates the condition of the plants based on the measured values.
The back-end functionality of the system was implemented by using the Firebase mobile platform managed by Google, which is an online, real-time, JSON-based database and storage with ready-to-use authentication solutions and user management. The function of the Firebase platform as part of the plant-monitoring system is to store the collected sensory data and provide them via REST API for processing to Raspberry Pi and for visualization and for editing to the iOS client mobile app.
The iOS application is used to display and modify the measurement data collected by Raspberry Pi. There are options to view the data in a raw or in a visualized format with the usage of charts. Swift 3.1 programming language was applied for the development.
Developing with Raspberry Pi has a great advantage: it can be relatively fast to create systems with complex functionality. My system is an excellent example of Raspberry Pi's rapid prototyping ability. I gave my project the "Happy Plants - Smart Watering System" creative name.