Is this your unit? https://fccid.io/2ALHJ-WS020T
Yup, that’s the one. Sold as “Sainlogic” on Amazon.
Also, for the benefit of others, here is the SOIC-8 pinout for the SPI version of that Melexis chip:
Just an update. Tried converting some Arduino code to an MLX90316 sensor for ESPhome. The code worked as expected, but the 3.3VDC signals from the ESP32 would not trigger the 5VDC MLX90316 chip. Just received a level-shifter board tonight, but still no data coming from the MLX90316. Depending on how much free time I get, I have two approaches:
a) Continue with the MLX90316 effort, debugging, signal tracing, might get lucky
b) Take the AN0 and AN1 signals and do the trigonometry to calculate the wind direction
FYI, I finally figured out, ANx never referred to ANemometer, but to ANalog signals instead. AN0 and AN1 are 90-degrees out of phase with each other. Need to see what I can do with some lambda calculations based on those two signals connected to a couple of GPIO pins. I’ll get this thing figured out, sooner or later.
I chose option b) on Monday. Together with this PDF from Texas Instruments describing how to calculate the angle, I jumped to page 9 Section 4 which describes determining which quadrant is indicated. I connected AN0 and AN1 to ADC pins 32 and 33, and took the ratio of AN1 divided by AN0, and still couldn’t make any sense. The readings from AN0 and AN1 both come back close to the source 3.3V, and the ratio is close to 100%. It looks like I need to perform the calibration described on page 13, Section 4.2.1. That’s up next.
Being too unmotivated tonight, I instead used the atan2 function with that AN1 and AN0 values, which should return a directional value in radians. This multiplied by ( 180 / pi = 57.295791 ) should return a directional value in degrees. Unfortunately, AN0 and AN1 track each other too closely for this to be valid and the result is always high or low of 45 degrees.
As mentioned last night, I’m going to (eventually) walk through the four cardinal directions (N, E, S, W) and the four ordinal directions (NE, SE, SW, NW) and record the voltage values from both AN0 and AN1 signals. Sooner or later, I’ll probably just plot the whole thing and get it figured out. Trying to get daytime work, home project efforts, AND this trigonometry worked out is my limiting factor. Hope to be past some of that by next week.
Tuesday evening I found out just how non-linear is the ESP32 ADC circuit response, especially so above 3.1 VDC which is precisely what is coming out of the AN0 and AN1 signals. Two options: (a) apply a voltage divider resistor to each of AN0 and AN1, and reduce the voltage range coming into the ESP32 ADC circuit, or (b) wire in an ADS1115 external ADC chip to obtain more accurate readings. I’m a software guy, so I’ll go for the more accurate solution, (b). The ADS1115 is well supported in ESPHome, and easy enough to add to the configuration.
The ADS1115 certainly seems to provide more accurate voltage measurements. That’s the good news. I’m beginning to suspect the DEN line from the vane sensor board plays a significant role. I’ll have to wire that signal into the ADS1115 to determine what role that may be. Currently, with only AN0 and AN1 signals (plus Vcc and GND) I often receive voltage readings less that one-half volt from both AN0 and AN1, and the vane isn’t changing direction when this happens. Definitely a head-scratcher, and it really should not be so difficult. Oh, well. Just have to keep observing, possibly calibrating, and see what happens. I believe I’ve almost got it figured out. First, the voltages returned are from 0.000 to 3.300, which puts 1.650 VDC as the mid-point. Subtracting 1.650 from each AN0 and AN1 value returned will effectively assign a negative sign on one or both values when necessary. These signs determine whether the direction is in quadrant 1, 2, 3, or 4. In quadrant 1 (upper-right, or 0-to-90 degrees) there is no offset, the arctangent of the two values can be converted from radians to degrees and used. In quadrant 2, 90 degrees is added; quadrant 3, 180 degrees; quadrant 4, 270 degrees. The actual voltage values returned cannot be taken as absolute indicators. It’s only their trigonometric relationship that matters. Still need to re-assemble the entire device and perform final wiring/soldering to start comparing and monitoring the data for accuracy.
One final item. Apparently, it’s strongly beneficial to add a 100nF capacitor between GND and 5VDC on the ESP32. This seems to help stabilize the I2C devices (ADS1115 specifically) sourcing 5VDC from the ESP32 board.
Perhaps i don’t understand the calculations, but my output is something around the 120-190 pulses/min with the rain sensor and around 50-80 mm sending to Home assistant. But , really? 50-80 mm? if i read the local weather authority they talk most of the times about 0,5 - 3 mm ?
or does the 'update_interval: 2s ’ which i have now need to be at 60 sec?
Any current recommendations for an Ambient Weather station to use with HA? Preferred under $300
It is not Ambient Weather,
it is not <$300
but it works well in HA (with a UDP2MQTT docker container)
Tempest from WeatherFlow
$330
I got mine a few months ago and I like it. There are no moving parts, I get wind speed, wind direction, rain type, rain rate, lighting detection, UV, Light levels, temperature, humidity, dewpoint, and others.
I do upload my data to WeatherFlow but all the info (except the forecast) is obtained locally and does not need any external source.
I have been using the ws-1550-ip for a year now. Very satisfied and well integrated with HA. US $170
Will the ws-1550-ip and the integration detect precipitation? As a Rain sensor? (not totals)
Yes indeed. It will take a few minutes to detect very light rain, but overall works great.
Unfortunately, its only sold in the US and CAN (at least, right now).
Ecowitt products also work well with HA, and I know they are available WW. They also are interoperable with ambient weather
Thank you! Just learned that also Ambient is now working locally GitHub - tlskinneriv/awnet_local
BTW, my Ambient Weather Ethernet module (ObserverIP) stopped working a while ago and I had to send it back. While waiting, I got a bit anxious and ordered an Ecowitt GW1000 gateway. To my surprise, it recognized my Ambient Weather station flawlessly and it allows local communication with HA. The ObserverIP uses the cloud (unless you use the custom integration). But the GW1000 seems faster, and it includes a temp/humidity sensor in the unit.
Consider buying the Ambient Weather station ONLY and a GW1000 gateway. Also, notice that several of the Ambient Weather additional modules are exactly the same as the Ecowitt (physically identical), but Ecowitt are 30-40% cheaper!!
A very cheap working solution for a weather station for home assistant is the Bresser 5-1 that can be bought on Amazon, together with a SDR receiver and rtl_433 software.
I have integrated it in my home assistant using two different methods:
https://www.vromans.org/johan/articles/hass_bresser51/index.html
or using a esp32 with sx1276 and GitHub - matthias-bs/BresserWeatherSensorReceiver: Bresser 5-in-1/6-in-1 868 MHz Weather Sensor Radio Receiver for Arduino based on CC1101 or SX1276/RFM95W