Connected Devices
Smart planters that form a self-healing LoRa mesh
DigitalBorders took Jocondo's smart planters from prototype to product — firmware, a self-healing LoRa mesh we built and open-sourced, an Appwrite backend, and a React Native app, end to end. Pots mesh over LoRa where Wi-Fi can't reach, and any connected pot bridges the rest to the cloud.
- ESP32
- ESPHome
- C++
- LoRa mesh
- BLE
- Appwrite
- React Native
- Engineered
- a self-healing LoRa mesh
- Open-sourced
- as an ESPHome component
- Owned
- firmware to app, one team
Context
Jocondo makes smart planters. Their prototype watered on a fixed timer and reported nothing. To become a product, a whole garden of planters had to read their own soil, water only when a plant needed it, and report to an app — outdoors, spread across a yard where Wi-Fi doesn't reach every corner. Jocondo brought the entire build to DigitalBorders: the firmware, the network between the planters, the backend, and the app.
Problem
The hard part wasn't one planter — it was connecting a garden of them reliably.
- Wi-Fi doesn't reach every pot. A planter at the far end of the yard may have no usable signal, but it still has to report and take watering commands.
- A fixed gateway is a single point of failure. Route every pot through one designated bridge and the whole garden goes dark when that bridge loses power or signal.
- Onboarding has to happen from the garden. An owner sets a pot up from their phone, standing next to it — not by typing network details into a tiny screen.
- The network has to be ours to fix. A black-box radio stack we can't read or patch is a liability once these ship.
Approach
Every planter carries three radios — Wi-Fi, BLE, and LoRa — and we used each for what it's good at.
The planters form a self-healing LoRa mesh: each relays for its neighbors, so a pot with no Wi-Fi of its own still reaches the network through the pots around it, and the mesh re-routes itself when a node drops. There's no designated gateway — any planter that can reach Wi-Fi bridges the mesh to the backend, so the uplink heals the same way the mesh does, and whichever pots have a connection carry the traffic.
BLE handles the first step: an owner pairs a new planter with the Jocondo app
over Bluetooth, in the garden, without a captive portal. The mesh itself is a
custom ESPHome C++ component — lora_mesh — that DigitalBorders wrote and
open-sourced (it lives in our ESPHome
fork).
It's a custom mesh, not LoRaWAN — the routing is ours.
A connected planter bridges the mesh to an Appwrite backend, which stores each planter's history and serves the React Native app. One team owned every surface — the firmware, the backend, the app, and the admin — so the decisions at each boundary lined up instead of being negotiated across vendors.
Outcome
A garden where planters reach the network even past Wi-Fi's edge, any connected
pot can bridge the rest, and a new planter joins with a BLE tap from the app.
Because the lora_mesh component is open source, the network at the heart of the
product isn't a black box Jocondo has to take on trust — it's an ESPHome
component anyone can read, and one DigitalBorders maintains.