Thursday, November 5, 2015

Irrigation controller with ESP8266

After almost a year of functionality I am very pleased with my irrigation controller.

It has 4 zones ( I only have 4 electrovalves that are covering all my yard).


-JSON over MQTT communication
-Fully controllable from my Android application
-Fully autonomous because has CRON functionality for each valve
-Accessible from all over the world from Android
-Publish the outside temperature and humidity

The mobile application. At start it send a message and all devices are reporting their status, type, capabilities etc.

Irritool devices that are detected by the mobile application ( I have more but they are under software upgrade)

Backyard irrigation ( in full production mode). As you can see a manual start implies to enter a time of watering ( in case the user fotgets to stop it) and after that time the valve it stops by itself. This is not the case if you command a plug.

Valve 0 is watering for 15 minutes.

My automated watering program for my controller. As you can see you can specify the start hour and minute, day of the week, day of the month, month and the duration for each valve. More programs can be defined for the same valve if is necessary.

All the information is stored in the esp8266 and is controlled from mobile application. Nothing related to programing is stored in my phone. In this case any family member has the same information that is stored in Esp.

Off course that the Linux * can be used so you can combine every week with every month etc.

You can skip one, two, three or how many times you want a watering program. The Esp will know that and will skip that program.

Any program can be suspended for unlimited time with one touch.

Every record can be edited or deleted.

Cron entry editing 

Aditional information about this module.


  1. What do you use to program the esp8266? Arduino, lua?

  2. All ESP programing is done in C.

  3. This year I'm planning to build irrigation system as well. Is this project available somewhere ? (e.g. github). Right now I'm looking at . (it should reduce some work to build irrigation system)

  4. How do you communicate with the device from outside your local network? Is ESP8266 working as a server with port forwarding in your router? Or is the communication going through a service in the cloud?

  5. All the ESPs are sending MQTT messages to an MQTT broker(another ESP8266 acting as a broker) inside the house. The MQTT broker is also bridging all the data to another MQTT broker instance that I have in a cloud. From now there are two cases:

    1. If I am in my WiFi coverage, my mobile app is connecting over the websokets to the MQTT broker and sees all the devices, control them etc.

    2. If I am not in my Wifi coverage my mobile app is connecting to the cloud MQTT broker over websockets and sees all the devices, control them etc.

    As you can see no port forwarding, no security issues in my implementations.

  6. Hi,
    Very nice project!
    Can you post the code? I want to do something like this also.

    Thank you