I sort of accidentally did this in one of my projects in a complicated, backhanded sort of way.
I installed 16 soil moisture sensors in my yard as part of an attempt to track the distribution of water in the soil of a flower garden.
The sensors are battery powered. They transmit their data via Bluetooth Low Energy to a couple of WiFi enabled control nodes in the yard. From the control nodes, the data are collected in a database on a Raspberry Pi. Besides the standard data from the sensors (soil moisture, temperature, illumination, conductivity of the soil, and battery state of the sensor,) the control nodes also report how many attempts they had to make when reading the data from each sensor.
I used the "read attempts" data to assign sensors to control nodes so as to reduce the read tries. This makes the data collection more reliable and also reduces the power drawn from the CR2032 coin cells in the sensors.
What I found on reviewing the data from a couple of months was that the read attempts would rise before the soil moisture readings when it started raining.
The rain attenuates the Bluetooth signal enough to corrupt the data packages. It can take several attempts to read a sensor while it is raining, even though the same sensor will be read flawlessly on the first try every time when it is not raining.
I could add more sensors placed further from the control nodes, then shorten the poll time from once an hour to every few minutes. With a little data processing, I could have an online "rainfall" page telling me how hard it is raining - or I could look out the window before I go outside.
This is what a typical "rainy day" looks like:
The soil moisture distribution is shown in the upper section. The lower section shows the read try count. Black is the normal "read on the first try" color.
Rain has just started:
The read count has gone up on nearly all the sensors, but there hasn't been enough rain to make a difference in the soil moisture.
The soil moisture has gone up, and the read tries have gone up even more, indicating hard(er) rain.
Rain has stopped:
The soil moisture has gone up quite a bit compared to before the rain started. The read tries count has dropped back down to one for all sensors.
This kind of setup would be massive over kill just to tell if it is raining, but it is a nifty side effect of the setup if you already have it in place for other reasons.
I could use the received signal strength indication (RSSI) value, but I didn't write that function into the control node software. The Bluetooth library can probably supply the data, I just don't have the control nodes programmed to do it. Maybe I ought to change it...
As an alternative, you could use a WiFi sniffer to collect data about WiFi base stations around your house or appartment. I know from experience with my own phone that I can detect fewer of my neighbors' WiFi base stations on rainy days.
The data normally includes a received signal strength indication (RSSI.) Lower (more negative) numbers means a weaker signal.
Track the data for all the WiFi base stations your sniffer can receive then apply some data processing and maybe some machine learning, and you could get a "how hard is it raining" indicator without installing any hardware outside your house.