RainCloud de-cloudifier

Run Melnor's RainCloud locally without the cloud service

Similar projects worth following
I was interested in having a cheap wifi timer for my irrigation. The Melnor's RainCloud seemed to fit the bill, but several users were complaining about the reliability of the cloud so I decided to spun-off my own version.

The RainCloud module has two parts, a valve controller which run on 4xAA battery and an RF transmitter which connects to a router by Ethernet. The RF transmitter can connect to up to two Valve Controller and 1 humidity controller. The goal of this project is to run the RainCloud locally and control it using my domotic controller (Home Assistant running on a Raspberry PI).

Steps for this project will be:

1) Reverse-engineer the protocol used between the cloud and the RainCloud RF transmitter

2) Build a service that can mimick the cloud

3) Point the device to the internal service 

  • Implementation version 0.8

    Jean-Philippe Jodoin06/10/2020 at 04:05 0 comments


    I created an implementation for this project It is available on Github.

    Some documentation about the reverse-engineered protocol can be found on

    This is still a work-in-progress, but basic functionnality works. The current implementation has a basic REST API that allows to fetch the state of the system and toggle valve for X minutes which facilitate integration with home automation system like NODE-RED. There is also a very basic WebUI.  More information can be found on the Github page.

    Note: there is another implementation that was created by Kai. It can be found at

  • Reverse engineering the RainCloud

    Jean-Philippe Jodoin08/06/2018 at 02:33 0 comments

    The RainCloud product has two parts
    1) An irrigation switch that runs on 4 AA battery with 4 output. This irrigation switch has 4 hex character id.

    2) An RF transmitter connected to internet through an Ethernet cable. This transmitter sends command to the irrigation switch through an 900 Mhz RF links. This transmitter has a 12 hex character id.

    There are two ways we can use the RainCloud locally

    1) We re-engineer the protocol on 900 MHz RF link 

    2) We reverse engineer at the ethernet level. 

    We will start to explore the Ethernet level as it should be much easier to figure out (at least for me).

    First step,  is to connect the Raincloud RF transmitter to my Asus-WRT router in order to get a valid network trace and try to figure out the protocol between the RF Transmitter and the RainCloud Cloud. This can be done by running tcpdump directly on the router

    To see the packets as they are save, I use this command :

     tcpdump -i any -U -s 1500 host <RainCloudRFTransmitterIp> -w - | tee raincloudapi.pcap | tcpdump -r -

    There are two way to interact with the RainCloud

    1) You can press the button manually in front of the switch, this will activate the valve for 60 minutes

    2) You can use the web interface where you can setup schedule, activate the valve on timer for period up to 60 minutes. 

    Looking at the trace, we can see that everything is un-encrypted which should make this project pretty straigth forward.  There are two of communication:

    1)  Cloud sends command to the RainCloud via Websockets 

    2) Device sends an update about the current state to the Cloud via GET request

    Status update from the device looks like this:

    GET /submit/?idhash=1c213db3d2&message=4vOuyTDCAAAAAC3dAP8AAgAAAAAAAg== HTTP/1.1

    where idhash is negociated when we connect the device and message represent the current state of the device.

    Cloud commands looks like this:


    Where channel is the Rf Transmitter Id and event and data contains command information.

    Next post will contains information about the reverse engineered protocol

View all 2 project logs

Enjoy this project?



nodemcu12ecanada wrote 06/10/2020 at 10:47 point

DIY cheap, wifi irrigation timer using NodeMCU. Two zones can be controlled and monitored from a web page hosted on the device. Could be expanded to many zones.

  Are you sure? yes | no

Daemon informatica wrote 06/10/2020 at 08:39 point

I love reverse engineering protocols. ^_^
Once, I've actually annoyed a co-worker that complained that some piece of evaluation kit from a hardware vendor had a neat little GUI interface to see what the hardware did, but the protocol between hardware and the utility was some incomprehensible binary stream.

Me: Hold my beer.

In a matter of hours, I managed to revert the 'binary stream of incomprehensible noise' to fixed length packetframes, which I subsequently managed to label and translate to features and signals from the hardware. :P

Co-worker was annoyed, but impressed.

  Are you sure? yes | no

Kai wrote 04/01/2020 at 20:00 point

See for a working decloudifying prototype

  Are you sure? yes | no

Jean-Philippe Jodoin wrote 05/20/2020 at 02:25 point

Hi Kai,
That's awesome. I have a partial implementation on my side too, but it's not complete yet. Btw, did you send your unit to Melnor for the upgrade last winter ?  I actually have two units here, my original and a new "patched" unit. Haven't had much time to look at the new one yet.

  Are you sure? yes | no

jalexjohnson wrote 09/11/2019 at 19:33 point

My Melnor RainCloud randomly goes off without being instructed to do so (a common complaint in Amazon reviews) and the cloud interface does indeed stink.

Looks like a competitive product has finally hit the market, so when my Melnor gives out, will likely move to this system instead:!/buy

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates