Wired soil sensors?

I have an existing irrigation system controlled by rachio, and I'm interested in measuring the soil moisture. I have some in ground boxes for the wiring of the valves. The boxes are actually located in places that would be convenient to measure soil moisture level.

I'm wondering if there are soil sensors that I could tap power from unused wires in the irrigation system. The system is using 24 volt AC. The wire gauge is pretty thin, which would make it unsuitable for DC voltage ( as there'd be too much voltage drop ). The valves use switched power, obviously, but there's a ground and there are free conductors that I could send power out on.

I've learned over the years that I really don't like adding battery powered sensors, as they just create one more set of maintenance hassles.

I have zigbee devices that are working in this area. I also have decent Wi-Fi coverage. I do not have Z-Wave at this house.

So does anyone know of any 24 VAC soil sensors that could work with home assistant?

I'd love to find something off the shelf, as these boxes are in ground in a four season environment and I really don't want to add homemade hardware if I can avoid it. If for no other reason then I'd love to have boxes with it all already sorted out!

You could easily transform the 24VAC to 5VDC with a diode bridge, capacitor and and an LM2596 buck converter module.

Then use an ESP32 and these: Soil Moisture Sensor - VH400

I've been using a few in my garden for years.

The peak 250mA @ 5V current draw of the ESP32 equates to about 50mA at 24V which should not introduce much voltage drop, even if it does you have a lot of headroom between 24V and 5V that the buck converter module can still use.

ESPHome sensor config:

sensor:
 - platform: adc
    pin: GPIO35
    name: "Front Garden Moisture Raw Voltage"
    id: raw_v
    unit_of_measurement: "V"
    device_class: voltage
    attenuation: auto
    update_interval: 10s
    internal: true
    on_value:
      then:
        - component.update: moisture

  - platform: template
    name: "Front Garden Moisture"
    id: moisture
    unit_of_measurement: "%"
    device_class: humidity
    state_class: measurement
    lambda: |-
      return (id(raw_v).state);
    filters:
      - calibrate_polynomial:
          degree: 5
          datapoints:
            # Map from sensor -> true value
            - 0.1 -> 0
            - 0.2 -> 1
            - 0.3 -> 2
            - 0.4 -> 3
            - 0.5 -> 4
            - 0.6 -> 5
            - 0.7 -> 6
            - 0.8 -> 7
            - 0.9 -> 8
            - 1 -> 9
            - 1.1 -> 10
            - 1.2 -> 12.5
            - 1.3 -> 15.004
            - 1.4 -> 19.812
            - 1.5 -> 24.62
            - 1.6 -> 29.428
            - 1.7 -> 34.236
            - 1.8 -> 39.044
            - 1.9 -> 42.118
            - 2 -> 44.75
            - 2.1 -> 47.382
            - 2.2 -> 50.014
            - 2.3 -> 52.646
            - 2.4 -> 55.278
            - 2.5 -> 57.91
            - 2.6 -> 60.542
            - 2.7 -> 63.174
            - 2.8 -> 65.806
            - 2.9 -> 68.438
            - 3 -> 71.07
      - sliding_window_moving_average:
          window_size: 12
          send_every: 12
          send_first_at: 1