I have tried several API based weather services, but since the closest station is far from my location, it could be pouring down at my house and HA tells me it is ‘cloudy’.
I want to integrate a hardware local weather station at home. It seems like the best integrated solution is AMBIENT WEATHER, but there a so many choices in their web site.
Can anyone recommend the optimal package to purchase?
I do not need a display screen since I plan to get all my data from HA.
Thanks!
I assume you can’t simply select which features you do or do not want? More information is needed since the perfect system is subjective. Temp? Rainfall sensor (most likely lol)? Humidity? Pressure?
There are thresholds and algorithms to take into consideration, a brief light rain shower or a quickly passing thunderstorm may not say rain on the system.
Thanks for the reply. After much reading, I went with WS-1550-IP. About to install it today!
Were you able to pull the data locally?
I just have to wonder, could we take one of the less expensive weather stations from AliExpress.com and replace their microprocessor with an ESP32 running ESPHome firmware, which would then make everything available to Home Assistant through our own WiFi / LAN network? For instance:
https://www.aliexpress.com/item/32834676070.html
Not really. The integration pulls from AmbientWeather cloud site
Yesterday/Monday I ordered this weather station from Amazon. It should arrive tomorrow/Wednesday. My goal is to research the individual sensors and connect them to an ESP32 running ESPHome firmware. How many days it will require to achieve that goal is anyone’s guess.
Cool. Keep us posted!
The good news is, it’s a well-built piece of kit. The printed circuit board is well labeled for each sensor input
. What I dislike (and well, it’s to be expected) is the main chip is completely blank, no indication whatsoever what it might be.
I also don’t find any obvious connection points for any kind of console/serial debug output (yet.) Pictures forthcoming…
The temperature and humidity sensor is a Sensiron SHT3C, which does not appear to be handled properly by ESPHome’s SHT3X-D platform.
Fortunately, ESPHome has the SHTCX platform for this chip!!
And it’s confirmed working perfectly. One chip down, just a few more to go…
i2c:
sda: SDA
scl: SCL
scan: True
id: bus_a
sensor:
- platform: shtcx
address: 0x70
temperature:
name: "Outdoor Temperature"
humidity:
name: "Outdoor Humidity"
update_interval: 30s
Decided to start tackling the wind vane / anemometer signals next. Broke out the Raspberry Pi for this one, figured it might be easier to sense and display the signals from a real operating system. Meanwhile, for anyone interested, here’s a picture of the anemometer signals as well as the rain gauge signals. The anemometer signals are GND, SOL, VDD, AN1, DEN, and AN0 that you see wired on the lower left. The rain guage is a flip-flop bucket that triggers a magnetic reed switch. That’s it on the bottom center where it’s labeled RAIN. Every flip or flop is so many CCs / cubic inches of rain. It will require a couple of counters that reset on the hour and/or day to measure the rainfall coming through the gauge.
Have you considered the alternative of receiving the 433MHz transmissions, and decoding them? A bit more SW oriented, and less HW oriented. Could hook up to an ESP at the weather station if you wanted the link to be WiFi, or you could use something in the house and let the link be 433 MHz.
A second alternative might be to intercept the digital data before it gets modulated onto the 433 MHz; just have to find the right traces on the board (unless that’s all done inside the unmarked chip).
This all assumes that the transmitter is autonomous - that it turns on and just starts transmitting data without having to get commands from the display unit.
That was definitely a thought. I opened the display/monitor hoping to find traces I could tap, but that was similarly devoid of any obvious opportunities. I know others have previously intercepted a weather station wireless signal, but I was hoping to provide a strictly ESPHome solution. When the connections were so clearly identified for each sensor on the weather station, I decided for the 100% ESP32 solution. This is a fun side-project for a few weeks. If I can resolve another device connection every few days, it will be quite worthwhile.
Thought I’d chase an easier target this morning. Using GND and the top connection of the RAIN gauge reed switch, ESPHome can easily count pulses when the gauge flip-flops. Still need to measure exactly how much rain/water causes the gauge to flip, then we can adjust the multiply filter accordingly.
sensor:
- platform: pulse_counter
pin: 32
name: "Rain Gauge"
update_interval: 15s
unit_of_measurement: 'Inches'
filters:
- multiply: 0.10
total:
unit_of_measurement: 'Inches'
name: "Total rainfall"
filters:
- multiply: 1.0
How to measure Integration of rain pulse counter into daily value This earlier post provided a LOT of insight into configuring a rain gauge. Many thanks to the authors there.
I’m posting just so you can continue.
I think the limit to the forum is 3 in a row and then you can’t post in a thread until someone else does.
There is a thread here I think “DIY Zigbee rain gauge” that might give you some info.
Tried chasing the wind direction vane yesterday, didn’t have any repeatable results. I’ve been trying to keep the station sensors connected to their original microprocessor, so I could read the values on the original display, but that doesn’t work for the anemometer and wind vane, as they are resistance/voltage readings and cannot be shared effectively. To remedy that, this morning the wind vane was removed and the signal points within were identified. SOL is the SOLAR PANEL positive lead. Not sure how I never guessed that one.
Here is a photo of the anemometer/weather vane circuit board, with signal lines labeled. The two small black integrated circuits appear to be Hall effect sensors, in the North and West locations. I’m searching for other ESPHome anemometer / vane YAML files, hoping to find something that works with this hardware. The best so far is this Reddit post from user bassicrob
Shoutout to @bassicrob
Those AN0 and AN1 signals? They have nothing whatsoever to do with the actual anemometer and wind speed. That’s on the opposite end of the weather station, using a glass reed switch as a pulse detector to calculate the wind cup rotations. Now, precisely how AN0, AN1, and DEN all combine to indicate wind direction is still unknown. I would expect either the voltage or resistance to vary according to the vane position, but so far the results are not making any sense to me.
It MIGHT be as described by this article describing the trigonometry necessary to calculate the angle. However, it’s probably a LOT easier to use this Melexis MLX90316 integrated circuit to obtain the direction from the SPI bus. Details for using the chip.
I e-mailed info @ Sainlogic to ask which sensor they were using for barometric pressure, and the answer was as useless as you might expect. It was easier to simply order a BMP280 sensor and combine temperature, humidity, and barometric from a single SPI device.
Sunday morning: The BMP280 arrived this morning and is connected and working well.
ESP32 is working with everything except the wind vane (direction) sensor. HUGE THANKS to user @bassicrob for his previous work in ESPHome with the ESP8266 and Sparkfun devices. His YAML provided a perfect example of the rain gauge bucket counter and wind speed pulse counter calculations. (Still need to perform tests/measurements for these particular devices.)
Here’s the ESPHome YAML so far:
esphome:
name: weather_station
platform: ESP32
board: lolin_d32
wifi:
ssid: "mywifi"
password: "mypassword"
#
# Enable debug logging
#
logger:
level: debug
#
# Enable Home Assistant API
#
api:
password: "mypassword"
#
# Enable over-the-air (WiFi) updates
#
ota:
password: "mypassword"
#
# Global variable definition
# - How often do sensors update to Home Assistant?
#
substitutions:
update_time: 20s
#
# I2C bus for BME680 temp/pressure/humidity sensor
#
i2c:
sda: SDA
scl: SCL
scan: True
id: bus_a
#
# SENSORS
#
sensor:
#
# BME680 temperature / pressure / humidity
#
- platform: bme680
address: 0x77
update_interval: ${update_time}
#
# temperature is returned in Celsius/Centigrade by default
# use a lambda filter to convert to Fahrenheit
#
temperature:
name: "Outdoor Temperature"
oversampling: 16x
unit_of_measurement: "degrees F"
filters:
- lambda: return x * (9.0/5.0) + 32.0;
#
# pressure is returned in hectopascals (hpa) by default
# use a multiply filter to convert to inches of mercury
#
pressure:
name: "Outdoor Barometric Pressure"
oversampling: 16x
unit_of_measurement: "inches"
filters:
multiply: 0.02952998307
#
# humidity is returned in percent by default
#
humidity:
name: "Outdoor Relative Humidity"
oversampling: 16x
unit_of_measurement: "percent"
#
# RAIN GAUGE is a pulse counter from a
# reed switch on the rain bucket flip-flop
#
- platform: pulse_counter
name: 'Rain Gauge'
# pin ADC1_1
pin:
number: 32
mode: INPUT_PULLUP
internal_filter: 13us
update_interval: ${update_time}
count_mode:
rising_edge: DISABLE
falling_edge: INCREMENT
unit_of_measurement: 'pulses'
filters:
- multiply: 0.016666667
#
# ANEMOMETER (wind speed) is a pulse counter
# from a reed switch beneath the wind cup axis.
#
- platform: pulse_counter
name: 'Wind speed'
id: wind_speed
# pin ADC1_1
pin:
number: 33
mode: INPUT_PULLUP
unit_of_measurement: 'm/s'
icon: 'mdi:weather-windy'
count_mode:
rising_edge: DISABLE
falling_edge: INCREMENT
internal_filter: 13us
update_interval: ${update_time}
#
# rotations_per_sec = pulses / 2 / 60
# circ_m = 0.09 * 2 * 3.14 = 0.5652
# mps = 1.18 * circ_m * rotations_per_sec
# mps = 1.18 * (0.5652 / 2 / 60) = 0.0055578
#
filters:
- multiply: 0.0055578
- sliding_window_moving_average:
window_size: 3
send_every: 1
Do you have pics of the other side of the board? Or what is under the vane? The Sparkfun sensors have an array of reed sensors that produce different voltages depending on their position. The datasheet explains this, but I found my readings to be different with my cable lengths. Yours looks to be using a similar principle but with open/closed circuits via those transistors as well as resistance readings maybe?
I can get that for you tomorrow. Not much there really. The Melexis IC arrived today, and WOW is that thing really small. Got it wired to a breakout board earlier, just trying to get it connected to the ESP32 now for debugging a custom SPI sensor.