From‐Scratch Installation Guide - iot-root/garden-of-eden GitHub Wiki
If the operating system on your Gardyn's Micro SD card won't boot, or you just want to start fresh without any proprietary software, here's how you can get it working with garden-of-eden — note that this will break connectivity with the Gardyn app.
You're doing this entirely at your own risk. You take on full responsibility for anything including, but not limited to: any and all lost data, lost original Gardyn project files, damaged Gardyn equipment, and anything else at all. If the moon falls on your house resultant from your tinkering or following this guide, it's fully and completely on your shoulders.
-
You'll need to get the Micro SD card out of the raspberry pi inside the gardyn's device compartment on the underside of the lid (I can't find a teardown guide for any Gardyn devices yet, but may write one in the future if there's a need for it).
-
Back up your original Gardyn Micro SD Card. You'll want this image in case you want to restore the Micro SD Card to the way it was before doing anything further to it. We can't provide you with the original files Gardyn has on there, and they don't seem willing to provide these files to end-users. I recommend taking a full image with the application of your choice.
ddworks great on Linux, and Rufus works great on Windows. Full instructions on usage of dd and Rufus are outside of the scope of this article, but I'll note that — for the latter — you'll want to select your USB device and click the little blue floppy disk icon pictured here:
to take an image instead of writing one. -
Download, install, and open the Raspberry Pi Imager. If you have a firewall, allow the imager through the firewall, close it, and then re-launch before continuing.
-
On the first screen of your imager, under "Raspberry Pi Device", click "
CHOOSE DEVICE", and then "Raspberry Pi Zero", or "Raspberry Pi Zero 2 W", depending on which model your Gardyn has. If you have it apart, you should be able to look at the board to check its model. If you don't yet, but can ssh in, the following command identified my board:
cat "/sys/firmware/devicetree/base/model" ; echo
# Raspberry Pi Zero W Rev 1.1- Under "Operating System", click "
CHOOSE OS" > "Raspberry Pi OS (other)" > "Raspberry Pi OS" (32-bit for Zero W, 64-bit for Zero 2 W).

-
Under Storage, click "
CHOOSE STORAGE", and then select your storage device. Then, click "NEXT". -
A prompt will come up asking "Use OS customisation?"; click "
EDIT SETTINGS".

-
Under "
GENERAL", fill out the following:- ☑️ Set hostname:
gardyn(or whatever you like) - ☑️ Set username and password
- Username:
gardyn(or whatever you like) - Password:
- Username:
- ☑️ Configure wireless LAN
- SSID: <Your wireless network's name>
- Password: <Your wireless network's pre-shared key or password>
- Wireless LAN country: <US, or your country code if not in the US>
- ☑️ Set locale settings
- Time zone: <Your timezone, e.g. America/New York>
- Keyboard layout: <us, or other as applicable>
- ☑️ Set hostname:

-
Under "
SERVICES", fill out the following:- ☑️ Enable SSH
- 🔘 Use password authentication (if you don't know how to create ssh keys and don't have a native
sshexecutable) - 🔘 Allow public-key authentication only (if you do know how to generate ssh keys, paste your public key in the box, if you don't, but have a native
sshexecutable where writing to<user_home>/.ssh/id_rsawill be sufficient, you can click "RUN SSH-KEYGEN".
- 🔘 Use password authentication (if you don't know how to create ssh keys and don't have a native
- ☑️ Enable SSH

- The "
OPTIONS" tab doesn't affect the end results, edit as you feel like, and click "SAVE". Then, back in the main window's prompt, click "YES".
The Raspberry Pi Imager will begin formatting your chosen media, and — upon completion — will be usable with your pi device. So pop that card back into your gardyn's pi. It should boot fine, automatically connect to your WiFi, and you should be able to SSH in with your chosen authentication method of password or private key.
- Run the following commands (this is a quick & dirty version of the commands in Getting Started:
# Clone the garden-of-eden repo
git clone "https://github.com/iot-root/garden-of-eden" && cd "garden-of-eden"
# Update the .env with mqtt broker info
cp ".env-dist" ".env"
# Edit as needed
nano ".env"
# Install dependencies, and run services pigpiod, mqtt.service
"./bin/setup.sh"
# Ensure the pigpiod daemon is running
sudo systemctl status pigpiod
sudo systemctl status mqtt.service
crontab -eAnd this is what I recommend for a default, to match the default gardyn watering and light schedules:
# Run pump 8am, 4pm, and midnight for 5 minutes
0 0,8,16 * * * "${HOME}/garden-of-eden/venv/bin/python" "${HOME}/garden-of-eden/app/sensors/pump/pump.py" --on --speed 100 ; sleep $((5 * 60)) ; "${HOME}/garden-of-eden/venv/bin/python" "${HOME}/garden-of-eden/app/sensors/pump/pump.py" --off
# Set lights to 35% at 6am, 70% at 7am, 35% at 9pm, and turn off at 10pm
0 6,21 * * * "${HOME}/garden-of-eden/venv/bin/python" "${HOME}/garden-of-eden/app/sensors/light/light.py" --on --brightness 35
0 7 * * * "${HOME}/garden-of-eden/venv/bin/python" "${HOME}/garden-of-eden/app/sensors/light/light.py" --on --brightness 70
0 22 * * * "${HOME}/garden-of-eden/venv/bin/python" "${HOME}/garden-of-eden/app/sensors/light/light.py" --off
# Collect sensor data every 30 mins
*/30 * * * * "${HOME}/garden-of-eden/bin/get-sensor-data.sh"– mpql / @mpql on Discord