Have a look at this nice-looking Solar RF 433MHz Rain Sensor.
What I like about it is that it has no wires, connectors, or batteries. Just put it anywhere outside.
Inside the house, you do need to have an RF 433MHz receiver. A Broadlink device won’t do. I use ESP32 with SRX882S RF receiver and the ESPHome firmware.
The rain sensor transmits a short set of RF codes when the sensor plate gets wet. There is no additional transmission when the sensor dries. So when wet, it stops transmitting until it dries out and gets wet again.
There is also a white silicon waterproof button on the backside with a small LED inside. Pressing the button transmits another set of RF codes.
Whenever the device transmits RF, the LED in the silicon button blinks in blue. If my ear is near the device, I hear a low-volume and high-pitched sound from it when transmitting.
Since I also want to know when there is no rain, I positioned the rain sensor at a 45-degree angle. Otherwise, water remains on it, preventing additional transmission until it dries and gets wet again.
As of yet, we have only had a few rainfalls this season. So far it has performed fine.
It has an internal 200mAh lithium battery that works well. During my tests I pressed its button and made it wet maybe 100 times with no exposure to strong light, and I could not cause the battery to drain.
The device comes with no significant documentation.
I managed to identify its transmission only with the rc-switch library running on ESPHome. Before that, I tried OpenMQTTGateway running RTL_433 and Tasmota running rc-switch but neither of them identified any transmission from this device. (It might have been a hardware issue though)
Here is the ESPHome configuration that works for me:
remote_receiver:
pin:
number: 17
inverted: True
# Settings to optimize recognition of RF devices
tolerance: 60%
filter: 250us
idle: 4ms
buffer_size: 8kb
dump:
- rc_switch
binary_sensor:
- platform: remote_receiver
name: "Rain Detected"
icon: "mdi:weather-rainy"
rc_switch_raw:
protocol: 6
code: "1010001100000000001010101000101000000000000000010100001111111000"
filters:
- delayed_off: 2s
on_press:
then:
- logger.log: Rain detected. ☂
- platform: remote_receiver
name: "Button Pressed"
icon: "mdi:button-pointer"
rc_switch_raw:
protocol: 6
code: "1010001100000000001010101000101000000000000000010000101111000000"
filters:
- delayed_off: 1500ms
on_press:
then:
- logger.log: Button Pressed. ⏹
I purchased this device from an AliExpress store for USD $31.30, including shipping. The seller was nice but provided very little information.
This is my first ESPHome project, I’d be happy to hear feedback and suggestions. Thank you!