> [...] that feed into a prometheus -> cortex store, so I can then map them on Grafana.

I had to Google because I've never heard of any of those. Did I find the right ones?

https://prometheus.io/

https://cortexmetrics.io/

https://grafana.com/

Mine is much more primitive. My indoor temperature monitor is an ESP8266 that uploads the temperature to a simple PHP page that saves it in an sqlite DB. A cron job runs a Perl script every few minutes that extract the data for the last hour, 3 hours, 12 hours, 48 hours, and since the beginning of time and uses gnuplot to produce PNG graphs. There's a static page on my server that displays those graphs.

My outdoor temperature monitor uses a cheap AcuRite 433 MHz indoor/outdoor thermometer I bought. I have an RPi with an RTL-SDR attached spying on the communications between the AcuRite sensor outside and the AcuRite display inside using rtl_433. A script looks at the rtl_433 and finds the AcuRite sensor data and puts it in an sqlite DB. I haven't yet gotten around to making something to graph it.

The nice thing about that approach is that it was also easy to add support for other 433 MHz wireless sensors near me, such as the AcuRite fridge/freezer thermometer I have. I can also see a few assorted sensors of neighbors (temperature, humidity, soil moisture, tire pressure, wind speed, wind direction, rain, and a few other random things). If I wanted to it would be easy to add them to the DB.

When I made a wireless tipping range gauge recently. I used a 433 MHz transmitter module [1] and added a decoder [2] to rtl_433 that understands my data stream format. That gets my data into the rtl_433 output. No need to futz around with 433 MHz receiver modules which appear to be a pain in the ass [3]. An ATTiny85 counts the tips and runs the transmitter. The ATTiny85, the transmitter module, a battery holder, an RJ11 socket because the rain gauge has an RJ11 connector, a board to put those things on [4], and a small waterproof case is pretty much the complete parts list.

I think I'm going to standardize on this general approach. For things that do not have WiFi and only need to report data 433 MHz modules and custom decoders fro rtl_433 on the RPi. For things that do have WiFi, such as any future ESP projects I do, they will just use WiFi to talk to the RPi. If anything needs to get sent outside of my LAN the RPi will handle it.

The RPi is also currently controlling a space heater in my living room, getting connection data from my cable modem periodically and recording that in an sqlite DB, and serving a simple web page that lets me quickly change inputs and volume on my Denon receiver and so I'm already pretty much committed to keeping it running all the time.

[1] https://www.sparkfun.com/products/10534

[2] Decoders can be specified in a simple text file. Here's the one for my rain guage as an example:

decoder {
name = TZS Rain Gauge,
modulation = OOK_PWM,
short = 416,
long = 612,
reset = 1452,
gap = 0,
tolerance = 0,
sync = 1484,
bits = 96,
match = {24}0x545a53,
get = Tips:@80:{16},
}

That results in this in the rtl_433 output (when set to write output in JSON) for my rain guage:

{"time" : "1637771949", "model" : "TZS Rain Gauge", "count" : 1, "num_rows" : 1, "rows" : [{"len" : 96, "data" : "545a5304436f756e743a03da", "Tips" : 986}], "codes" : ["{96}545a5304436f756e743a03da"]}

[3] https://www.sparkfun.com/products/10532

[4] https://www.amazon.com/gp/product/B07ZYTZ48N/