Warning
This project is still in its very early growing phase. Features and the experience might change, but this README is supposed to give you a general idea of what LeafHub is supposed to become.
LeafHub makes your plants smart! Attach a small device to your plant and measure things like:
- Air humidity
- Temperature
- Light levels
- Soil moisture
This data will be sent to a central server, which stores, organizes, and serves it to the user-facing interface. And the most important (and exciting :D) part, the user interface:
This will act like your small digital (and also kind of real) garden! You can:
- Add, arrange, and customize your plants!
- Give your plants names! (Be honest, we know you always wanted to)
- Configure which data you want to track and how you want it to be visualized!
- Utilize reminders to help your plants stay alive! (No more dead plants, no more guilt!)
Remember, the project is still very young; things might change! But in general, these are the features we want to provide for now. But the sky is the limit!
To make this work, we provide you with this set of components:
-
Firmware
A flexible firmware that works with a variety of microcontrollers and sensors.
-
Backend
A server that communicates with devices, stores them, and serves data to the frontend.
-
Frontend
A pretty web dashboard for managing your plants, viewing live charts, and interacting with your plants.
Our goal is maximum flexibility. Using MicroPython allows us to make our code more hardware independent by abstracting away low-level hardware details you would have to deal with otherwise. There is no perfect solution however; MicroPython implementations can vary slightly. and each board has different LEDs and sensor pins. To address the latter, we use a Hardware Abstraction Layer (HAL):
- Small MicroPython "HAL" scripts that tell the firmware how to access onboard LEDs, GPIO pins, and sensors.
- We provide an example template and a typing module to make this reasonably simple, in case you do have to write your own.
- In general, we want to spare you from writing these HALs, so our goal is to provide premade and tested ones for commonly used setups.
These components are more straightforward since they don’t touch hardware. We aim to make self-hosting as easy as possible:
-
Easy to set up
To make this process as painless as possible, our goal is to make this a pretty standard process by providing setup scripts or container configurations.
-
Onboarding Process
When you first set up your microcontroller, there will be a straightforward onboarding procedure to connect your device to the server.
The idea is that everything else works without any trouble and is an "out-of-box" experience.
We eventually plan to offer a fully cloud-hosted option. The server hosting is done by us, and we may even provide you with premade hardware so you could simply get a LeafHub device, plug it in, and start monitoring. This will never compromise our self-hosting-friendly approach; it is simply an addition.
This project is licensed under the GNU GPLv3 license.
Randware loves open source! If you're interested and you'd like to help:
- Fork this repo
- Create a branch for your feature or fix
- Send a PR
See CONTRIBUTING.md for more details. Your help is much appreciated ❤️