π± From Code to Soil: How We Built an Arduino-Powered Smart Garden API for MyZubster
And how you can join the movement β one sensor, one plant, one Monero transaction at a time.
π§ The idea
MyZubster started as a decentralized ecosystem for privacy, payments, and plant mapping.
But we wanted to go further.
We wanted to connect the digital world with the physical one β to bridge code and soil, sensors and seeds, data and community.
That's why we built the Arduino Garden API: a simple, open, and secure way for anyone to connect their urban garden to the MyZubster network.
π Why permaculture + open source?
Permaculture is about designing systems that are sustainable, resilient, and regenerative.
Open source is about building technology that is transparent, collaborative, and free.
They are a perfect match.
MyZubster is now a platform where:
πΏ Gardeners can monitor their plants remotely.
π§ͺ Developers can build dashboards and automations.
π± Seed savers can share and trade locally.
π Researchers can collect open data on urban agriculture.
π€ Communities can connect over food, soil, and knowledge.
π οΈ What we built: Arduino Garden API
We added a new module to the MyZubster Gateway:
POST /api/garden/data β receive sensor data (pH, EC, temperature, humidity) from Arduino or ESP devices.
GET /api/garden/:id/stats β retrieve min, max, average statistics for each garden.
MongoDB persistence β all data is stored and ready for dashboards.
The API is lightweight, selfβhosted, and designed for lowβpower devices like ESP8266 or ESP32.
π How it works
-
Arduino reads sensors
pH, electrical conductivity (EC), temperature, humidity.
Sends a JSON payload to MyZubster
json
{
"gardenId": "my-urban-garden",
"ph": 6.2,
"ec": 1.8,
"temperature": 22.5,
"humidity": 65
}
- Data is stored in MongoDB
- You get stats json
{
"gardenId": "my-urban-garden",
"stats": {
"ph": { "min": 6.0, "max": 6.5, "avg": 6.2, "count": 42 },
"ec": { "min": 1.6, "max": 2.0, "avg": 1.8, "count": 42 },
"temperature": { "min": 21.5, "max": 23.1, "avg": 22.3, "count": 42 },
"humidity": { "min": 62, "max": 70, "avg": 66, "count": 42 }
}
}
π§ͺ Real test: it works
We tested the API with a simple curl command β and it worked instantly:
bash
curl -X POST http://localhost:3002/api/garden/data \
-H "Content-Type: application/json" \
-d '{
"gardenId": "test-garden-001",
"ph": 6.2,
"ec": 1.8,
"temperature": 22.5,
"humidity": 65
}'
Response:
json
{
"success": true,
"message": "Dati dell'orto salvati con successo",
"data": {
"gardenId": "test-garden-001",
"ph": 6.2,
"ec": 1.8,
"temperature": 22.5,
"humidity": 65,
"timestamp": "2026-07-30T12:00:45.996Z"
}
}
Then we sent three readings and retrieved aggregated statistics β all working perfectly.
π οΈ Code for Arduino (ESP8266/ESP32)
Here's a minimal example of how to send data from an Arduino to MyZubster:
cpp
include
include
const char* ssid = "your_wifi";
const char* password = "your_password";
const char* serverUrl = "http://188.213.161.186:3002/api/garden/data";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
Serial.println("WiFi connected!");
}
void loop() {
// Read sensors (pH, EC, temperature, humidity)
float ph = 6.2;
float ec = 1.8;
float temp = 22.5;
float hum = 65;
// Create JSON payload
StaticJsonDocument<200> doc;
doc["gardenId"] = "test-garden-001";
doc["ph"] = ph;
doc["ec"] = ec;
doc["temperature"] = temp;
doc["humidity"] = hum;
String payload;
serializeJson(doc, payload);
// Send HTTP request
WiFiClient client;
if (client.connect("188.213.161.186", 3002)) {
client.println("POST /api/garden/data HTTP/1.1");
client.println("Host: 188.213.161.186:3002");
client.println("Content-Type: application/json");
client.print("Content-Length: ");
client.println(payload.length());
client.println();
client.println(payload);
delay(1000);
}
delay(60000); // Send every minute
}
π± Seed Exchange: the next layer
We're also building a decentralized seed and cutting exchange to promote biodiversity and local food production.
Open issues:
Repository Type Title Bounty
1 MyZubster-Marketplace Free Data model for Seed Exchange β
2 MyZubsterGateway Bounty API for Seed Exchange 0.06 XMR
3 MyZubsterWeb Free Frontend for listings β
4 MyZubsterWeb Free Form to create listing β
5 MyZubsterGateway Bounty Messaging for exchanges 0.05 XMR
6 myzubster Free Display on map β
π View all Seed Exchange issues
π How you can contribute
You don't need to be a developer to help. We need:
Gardeners and permaculturists β to test the map and share knowledge.
Developers β to build the API, dashboard, and Arduino code.
Writers β to create guides and documentation.
Translators β to make the project accessible to more people.
π Related links
Live site: https://myzubster.com
GitHub Organization: https://github.com/MyZubster-Ecosystem
Gateway Repository: https://github.com/MyZubster-Ecosystem/MyZubsterGateway
Telegram Channel: https://t.me/myzubster
Telegram Bot: @MyZubster_bot
π A final thought
"The best time to plant a tree was 20 years ago. The second best time is now."
MyZubster is no longer just about code and crypto.
It's about growing food, building community, and taking care of the earth β one sensor, one plant, one Monero transaction at a time.
If you believe in a greener, more decentralized future,
welcome aboard. π±
Daniel Ioni β Rimini, 2026
π± With Chanel watching me write code
Top comments (0)