Wind speed and direction sensor

Any idea what I would use to integrate this into esphome?

Unfortunately I have no idea what model it is.

6wire assembly.

I don’t have a clue but I suspect you may need to do a teardown and post pics of the boards inside?

1 Like

What was it connected to before you decommissioned it?

That looks like a marine sensor, often proprietary but you may be able to reverse engineer.

A quick look through the Whitworths catalogue doesn’t find a match though.

Google image search turns up some plausible hits.

I’ve managed to get the following working.

Relative Humidity
Wind Speed
Rain Fall

Wind Direction
Barometric Pressure

2 devices found on the I2C bus.

[18:49:17][I][i2c.arduino:075]: Found i2c device at address 0x40
[18:49:17][I][i2c.arduino:075]: Found i2c device at address 0x44

Some more photos.

Just not sure how to do the wind direction.


  - platform: sht3xd
      name: "Living Room Temperature"
      name: "Living Room Humidity"
    address: 0x44
    update_interval: 60s
# 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

# 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
      number: 32
      mode: INPUT_PULLUP
    internal_filter: 13us
    update_interval: 1s
      rising_edge: DISABLE
      falling_edge: INCREMENT
    unit_of_measurement: 'pulses'
      - 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
      number: 33
      mode: INPUT_PULLUP
    unit_of_measurement: 'm/s'
    icon: 'mdi:weather-windy'
      rising_edge:   DISABLE
      falling_edge:  INCREMENT
    internal_filter: 13us
    update_interval: 1s
    # 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
      - multiply: 0.0055578
      - sliding_window_moving_average:
          window_size: 3
          send_every: 1
1 Like

Normally wind direction is a resistor/ pot; so if confirmed with multimeter then use ADC. Then calibrate with offset and convert with linear_calibrate and offset

Ok, ive tried this today and I cant find anywhere on the wires where resistance or voltage changes when I turn the wind direction vane.

Any ideas?

An example here, but whi knows if it is the same gear

Thanks Nick!

It seems like most are using ADC for this.

Question. Am I measuring between GND or 3v3 to get the resistance value?

Also, could it be voltage rather then resistance?

With my multimeter I measure the VCC wire (the power wire) and the output wire i.e. after the pot. My meter measures resistance by applying voltage. I twiddle the direction to see whether resistance changes. If you only have a continuity tester then you can see which wires are “connected”. You had a lot of wires but presume you have worked out the rest by now? Once you absolutely know which wire it is and how it is working; in my case the wind direction was then connected between 3.3v and the ADC pin.

well actually not,

There are 6 wires, but only 2 sensors. I have confirmed this by following the wire up the tube, it is on a dedicated cable, with 6 cores, and only speed and direction so my guess is that not all of them are used.

Plus, I have already worked out the wind speed and that is working, so minus 1.

3 wires left to work with.

I did notice, magnets. Now i’m thinking its a hall sensor.

Ok at this point, these are my options. I would like to get the wind direction working because if I dont I wont sleep at night.

  1. Keep trying to figure out how this thing outputs its data.
  2. Custom build a new sensor using the existing setup (vane, bearings etc) using a 360 degree rotory hall sensor like mlx90316.
  3. Use a I2C compass and join to my I2C bus.

So, i;m thinking down the line of option 3. If I were to go for a I2C based compass, could I expect to get results like N, NE, S, SE, W etc.


OK, I found it.

It’s on the I2C bus. Connected the wires to the I2C bus and sure enough a third device showed up.

Its a ak8975 Magnetometer at address 0x0c. Look like with its working with the esphome integration of the MLX90393 Triple-axis Magnetometer.

Now, I need to convert these measurements to a heading like N, NE W etc.

1 Like

In the gist I pointed to there is code for converting a ADC output to cardinal points (Line 178 et seq). There are also posts in this very forum on converting angles to cardinal points . It is really just a big case: statement or if/then/else. Also depends whether you want to do it on the esp or in HA.

There is a full write of the Kestrel Met 6000 conversion to ESP home for anyone wanting to do that same.

1 Like