Five years of garden irrigation on a Wemos D1 mini: five sprinklers, one buried pipe, about 80 euros in parts
▲ 24 r/esp8266

Five years of garden irrigation on a Wemos D1 mini: five sprinklers, one buried pipe, about 80 euros in parts

Every dry season the grass went yellow, so five years ago I put a Wemos D1 mini in a box on the outside wall and gave it the watering job. It is still doing it, power cuts included. I have been meaning to write this up for years, so here it finally is.

The part I would do again is the plumbing. Instead of a valve box near the tap and a pipe per zone, there is one master valve at the tap and a single pipe around the garden. At each sprinkler a clamp saddle taps the pipe (no cutting, it just bolts around it), feeds a 12 V solenoid in a small box in the ground, and the solenoid feeds the head. A drain valve at the far end empties the line for winter. One trench instead of five, and since I only run one head at a time, whichever head is open has the whole supply to itself. No pump, no tank. All the materials together, pipe included, came to about 80 euros.

Power is a 30 W mains-to-12 V DC LED driver: 12 V to the valves through the relays, and a small step-down to 5 V for the board and the relay logic. Everything lives in that one box and runs off a single wall socket.

https://preview.redd.it/ts1wt6095zjh1.jpg?width=3024&format=pjpg&auto=webp&s=3c8ffbbc8bf0e0ec2f29bb48a182a2755b3d3ac6

Things five years of this taught me:

  • The usual cheap relay boards switch on LOW, and an ESP8266's pins float while it boots, so the relays can chatter until the sketch takes over. Write each pin HIGH before pinMode(OUTPUT) so the handover itself adds no LOW pulse. The master valve sits on GPIO 0, which has to be high at boot anyway: the same pull-up that boots the board keeps the water shut through every reset.
  • No valve opens without a time limit. A one-second watchdog closes any valve that has run past its limit and sends a push notification.
  • After a power cut, tell the server the valve state instead of asking for the saved one. Replaying an ON from before the outage would open a valve with nobody home.
  • OTA updates, because walking a laptop out to a wall box in the rain gets old fast. One warning: the ESP8266 updater has no fallback slot, so test every new binary on a desk board first.

Full disclosure: the phone side runs on Plynx, an iOS dashboard app I'm building, so make of that what you will. The write-up with the plumbing diagram and the complete sketch is here: https://www.plynx.cc/blog/esp8266-irrigation-controller-ota/

The buried wiring has been through five winters now and the splices have held so far. What I still have not solved is sensing: I would like the schedule to skip a run after real rain, but every cheap soil moisture probe I have read about seems to corrode within a season. If you have one that lasted outdoors, I want to hear about it.

reddit.com
u/plynx_mod — 3 days ago

I made Whatsapp for Claude Code sessions in my working team, and we don't talk eachother directly since then

Me and a friend built this over the last week and open-sourced it today. We're the two authors, saying that up front.

Same project, two machines, both of us on Claude Code. Coordinating them was all manual. I'd tell mine "you take the backend, he's doing the frontend", then go repeat it to his agent, then again every time anything moved. Meanwhile both agents were quietly editing the same files.

So we put the agents in an encrypted room and let them talk to each other. They split the work, hand off tasks, say what they're touching before they touch it. A Claude Code and a Codex can sit in the same room and neither one knows what the other is.

The part we didn't design: we barely message each other directly anymore. I tell my agent what I'm doing, his agent picks it up, and by the time we actually talk we already have each other's context. Our chat went quiet and the work got faster.

And since both ends are language models, the room has no language. I write in Italian, he reads in English. There's no translation code in the project. You could pair for a month and never find out your keyboards don't share an alphabet. That's the part that feels like the future: the language wall between a dev in Milan and a dev in Tokyo just isn't there anymore.

Setup is one message: give your Claude Code the repo link and tell it to install it. No VPS, no server, no accounts. Messages take 10 to 15 seconds, so it's for handing off work, not chatting.

If "no server" sounds like it can't be right, ask and I'll walk through how a message gets across.

https://github.com/Riccardo8888/agent-link (MIT)

If you try it, tell me where you got stuck in the first ten minutes. And if you already run more than one agent, how do you keep them off each other's toes? Every answer I've heard so far is "I tell them myself, one at a time".

u/plynx_mod — 9 days ago
▲ 37 r/esp32

How to control an ESP32 from an iPhone over Bluetooth, without WiFi and without writing an app

My ESP32 sits in a shed with no usable WiFi. I wanted to read the sensors and flip a relay from my phone, and I did not want to write an iOS app to do it. On Android a generic BLE terminal gets you most of the way. On iOS it does not.

So I wrote the app. It is called Plynx IoT, it is free, and I am the developer. Saying it here so nobody has to ask.

Setup is about ten minutes!

1. Add the board in the app. Pick Bluetooth. You get a token, one per board.

2. Flash the minimal sketch below. The library is on GitHub (Arduino IDE: Sketch > Include Library > Add .ZIP Library, or grab it from the Library Manager).

#define PLYNX_USE_DIRECT_CONNECT
#define PLYNX_PRINT Serial


#include <PlynxSimpleEsp32_NimBLE.h>


char auth[] = "YourAuthToken";


void setup() {
  Serial.begin(115200);
  Plynx.setDeviceName("Plynx");
  Plynx.begin(auth);
}


void loop() {
  Plynx.run();
}

3. Connect. Open the board in the app, tap connect. Pairs in about a second, board goes online.

4. Drag the widgets. A button on V2, a gauge on V1. Nothing to configure anywhere else.

Receiving from the phone is one handler:

PLYNX_WRITE(V2) {
  digitalWrite(5, param.asInt());
}

Sending a reading up, with the library timer instead of a delay:

PlynxTimer timer;


void sendTemp() {
  Plynx.virtualWrite(V1, dht.readTemperature());
}


// in setup(): timer.setInterval(2000L, sendTemp);
// in loop():  timer.run();

Pay attention to:

  • delay() anywhere in the loop stalls the connection. Plynx.run() needs to be called constantly. This is the number one reason it looks broken.
  • BLE is phone to board, direct, one board at a time, 10 to 50 metres through walls.
  • Use NimBLE, not the default Bluedroid stack. Same sketch, same board, same core: 620 KB of flash against 1112 KB. That difference is the room you need for OTA partitions. And classic Bluetooth is a dead end anyway now that the S3 and C3 do not have it.
  • BLE support is still beta in the library.

Most of the work was not the app, it was the ESP32 side. Three things I lost evenings to, in case you are rolling your own: the Arduino BLE server does not restart advertising after a disconnect, so the board is connectable exactly once per power cycle until you call startAdvertising() yourself — lock your phone, walk away, and the board has vanished from every scan until you press reset. The protocol header carries 0x00 bytes inside its length field, so any path through std::string or c_str() silently truncates frames — short messages work, long ones die, and nothing tells you why; read the raw data() and length(). And on iOS, do not send anything until CoreBluetooth confirms the notify subscription, or the board's reply arrives before you are subscribed and the handshake hangs forever.

After a few months of running both, I think BLE is the right default for anything you can walk up to, and the cloud is the wrong one. A relay in my own shed does not need a server in Frankfurt to turn on.

The counterargument I keep getting is that BLE is a toy: one client, no range, no alert when you are not standing next to the thing, so you rebuild the whole project over WiFi six months later and wonder why you bothered.

Both camps seem sure. Which one has actually held up for you?

One thing I have not solved: has anyone got iOS to keep a BLE link alive in the background in a way you would trust for an alarm? Everything I tried gets suspended, and I am not convinced it is possible without a workaround Apple hates.

App: https://apps.apple.com/us/app/plynx-diy-iot/id6756375448

Docs and the self-hosted server: https://www.plynx.cc

Library: https://github.com/NickP005/plynx-library

u/plynx_mod — 20 days ago

Ho 20 anni, studio AI e ho appena pubblicato la 1.2.0 della mia app iOS per controllare Arduino dal telefono

Premessa: non è una startup con pitch deck e round, è un'app che ho scritto da solo. La posto qui perché mi interessa capire dal punto di vista business cosa ci farei, e questo mi sembra il posto giusto per sentirmi dire le cose come stanno.

Da ragazzino smanettavo con ESP32 e sensori, il classico impianto che innaffia il giardino. Il pezzo che mancava sempre era il telefono: per vedere l'umidità o accendere la pompa dall'iPhone le opzioni erano scrivermi un web server ogni volta oppure piattaforme cloud in abbonamento, pagare un canone mensile per leggere i dati di un sensore mio su una rete mia mi è sempre sembrato assurdo (e anche difficile, mancando di una carta di debito).

Quindi ho scritto l'app. Ci ho messo molto più di quanto pensassi. È su App Store, si chiama Plynx IoT, gratis: trascini i widget su una canvas, li colleghi ai pin della scheda, i valori arrivano in tempo reale. Il server se vuoi te lo ospiti tu su un Raspberry, i dati non passano da me.

Questa settimana è uscita la 1.2.0: widget nella home screen di iOS che comandano i pin direttamente, app per Apple Watch, cache offline.

Sulla monetizzazione, so che è la prima domanda: oggi zero, ed è voluto, prima voglio una community di maker che la usa davvero. Le idee per dopo ci sono (funzionalità pro per chi ha tanti dispositivi o pubblicità, mai i dati), ma se avete opinioni su come si monetizza un tool per hobbisti senza ammazzarlo, è esattamente il motivo per cui ho scritto questo post.

L'app è gratuita e disponibile come Plynx IoT sull'App Store anche italiano, mi piacerebbe ricevere anche feedback lato UI/UX.

Domande cattive benvenute.

reddit.com
u/plynx_mod — 1 month ago
▲ 0 r/esp32

Turn your iPhone into a remote control for your ESP32 in an afternoon

I made the Plynx IoT app, a revival of the Blynk legacy app that I'm filling with new amazing updates and features, all coming from the community!

Flash a small library on the board, drag some widgets in the app, done: buttons and sliders send values to your pins, sensor readings stream back live to gauges and charts. No web server to write, no cloud subscription, works with a self-hosted backend on a Raspberry Pi or a free public one.

I built it because I wanted my greenhouse controller on my phone without paying monthly for my own data. It's called Plynx IoT, on the App Store, free.

1.2.0 just landed: Home Screen widgets that toggle pins directly, Apple Watch support, offline caching. If you try it on your project and something's missing, tell me.

https://preview.redd.it/fm0u0ho2bnch1.png?width=1206&format=png&auto=webp&s=1bb85d771fae19b20767c6238b46d54a3143a59b

Here you can see my watering system controlled by a esp32!

It's really easy to use and to have a nice interface to control Your Things from your phone. Any suggestions are welcome!

reddit.com
u/plynx_mod — 1 month ago

I made an iOS app to control my Arduino projects from my phone. 1.2.0 just shipped

Every project I build ends the same way: the electronics work, the code works, and then I want to check a sensor or flip a relay while I'm not home, and suddenly I'm supposed to write a web server, a REST API and half a frontend for what is basically one button.

So I built Plynx ΙοΤ. You drag widgets on a canvas (buttons, sliders, gauges, charts, a joystick, an RGB picker, about twenty of them), each one maps to a pin or a virtual variable, and your board pushes values to it in real time. Wiring a new project to the phone takes minutes, not weekends. On the firmware side it's a tiny Arduino library and a few lines of code.

Version 1.2.0 got approved this week:

  • Home Screen widgets. Toggle a pin straight from your phone's home screen without even opening the app. My greenhouse pump now lives next to the weather app
  • Apple Watch app, so sensor values and switches are on your wrist
  • Offline mode: dashboards are cached and show the last known values when your server is unreachable
  • Multiple servers and accounts with a quick switcher
  • A guided tour that walks you through your first project

The backend is a small server you run yourself, on a Raspberry Pi or any box you have around (there's a public instance too if you don't want to host anything). Your data never touches my infrastructure, if you want. The app is free with no ads.

For the folks who recognize the architecture: yes, it is a revival of our appraised Blynk (legacy) app, so if you have one of those servers still running, your old dashboards load as they are.

What would make this useful for your projects? The last two features came straight from user emails, I will really appreciate your feedback as I'm bringing the project to life, and I'd like to see a revival of the community as well!

reddit.com
u/plynx_mod — 1 month ago