Before you start

  1. Wire the sensor: power to 3.3V, ground to GND, data to GPIO 4, with a 4.7kΩ resistor between data and 3.3V (diagram). That's the same for a DS18B20 probe (red, black, yellow wires) and a DHT22; the firmware detects which one is connected.
  2. Optional extras, on these pins (each switch or contact goes between the pin and GND):
    ConnectESP32ESP32-S3ESP32-C3
    DS18B20 or DHT22 dataGPIO 4GPIO 4GPIO 4
    I²C sensor SDA / SCL (BME280, SHT31, AHT20)21 / 228 / 96 / 7
    Leak / water contactGPIO 27GPIO 5GPIO 5
    Door reed switchGPIO 26GPIO 6GPIO 10
    Battery + through a 1:1 divider (2 × 100kΩ)GPIO 35GPIO 7GPIO 3
    I²C sensors are found automatically; tick leak, door, or battery below so the board knows they're wired.

    Adafruit Feather (HUZZAH32 or ESP32 Feather V2): use the ESP32 column. Probe data (GPIO 4) is the pin labelled A5, the door switch (GPIO 26) is A0, and the leak contact goes on pin 27. The battery divider is already on the board: plug a LiPo into the battery connector and tick battery, no resistors needed. An I²C sensor goes on the Feather's own SDA/SCL pins or its STEMMA QT port; the firmware finds it there at startup (power-cycle after plugging one in). Feathers have no BOOT button on GPIO 0, so the 5-second reset won't work; to change Wi-Fi, send new settings from this page instead.

  3. Add a push device under Dashboard → Devices and copy its device key. The free plan includes two devices.

What to buy

Parts that match the pins above. A plain ESP32 is the tested choice and does everything here. The S3 and C3 links are Espressif's own dev boards, which the firmware is built for; when they're sold out, another ESP32-S3-DevKitC-1 or ESP32-C3-DevKitM-1 board (or a clone with the same pinout) works too.

Board (pick one)
ESP32 DevKit (Amazon) · HUZZAH32 Feather (Adafruit) · ESP32 Feather V2 (Adafruit)
Or an S3 / C3 board (stock varies)
ESP32-S3-DevKitC-1 (Adafruit) · ESP32-C3-DevKitM-1 (Adafruit)
Sensor on GPIO 4
Waterproof DS18B20 probe (Adafruit) · 4.7kΩ resistors (Amazon)
Or an I²C air sensor (no resistor needed)
SHT31-D (Adafruit) · BME280 (adds air pressure) (Adafruit) · AHT20 (Adafruit)
Optional extras
Magnetic door switch (Adafruit) · 100kΩ resistors (battery divider) (Adafruit)

Leak sensor: the easiest low-cost option is an LM393 "rain / water sensor" module (sold by many shops): VCC to the board's 3.3V pin (never 5V, so its output stays safe for the ESP32), GND to GND, DO to the leak pin. Turn its dial until a drop of water reads Wet, then check it reads Dry again. Its exposed pads corrode if left wet, so treat it as a starter part. For a longer-lasting install, use two stainless screws or probes about 5 mm apart, one to the leak pin and one to GND. Either way, test with your own water: very clean water or a thin film may not trip it. Sensors whose output goes high when wet, such as Adafruit's water sensor, need a different input and don't work with this firmware.

Amazon buy links may include an Associates tag. Adafruit and other vendor links are direct (Adafruit does not run an affiliate program). ProbeHarbor may earn a commission from qualifying Amazon purchases at no extra cost to you.

1. Install the firmware

Plug the ESP32 into this computer with a USB data cable, click Install, and pick the board's serial port. It takes about a minute. Works with ESP32, ESP32-S3, and ESP32-C3 boards.

This browser cannot talk to USB serial devices. Open this page in Chrome or Edge on a desktop or laptop, or use the other flashing options.

The installer needs a secure (https) page.

No port in the list? Try another cable (many are charge-only) and install the CP210x or CH340 driver for your board.

2. Connect it to Wi‑Fi and your account

Close the installer, then send these settings over the same cable. They go straight to the board and are not stored on this page.

Also wired to this board (optional)
Tick only what you've connected: an unwired pin would read as "dry" or "open". Pins are in the table above. DS18B20, DHT22 and I²C sensors (BME280, SHT31, AHT20) are found automatically.

No USB serial in your browser, or the board is already mounted somewhere else? Power it up and join the ProbeHarbor-Setup Wi‑Fi network from a phone to enter the same settings. Holding the BOOT button for five seconds erases them.

After it is live

Readings arrive once a minute. Mount the probe against the coldest pipe, set a freeze threshold of 34–38°F under Dashboard → Alerts, and send a test alert. See where to put the sensor and what temperature to alert at. Prefer to edit the code yourself? The other flashing options cover Arduino, PlatformIO, MicroPython, and ESPHome.

Frequently asked questions

What do I need?

An ESP32, ESP32-S3, or ESP32-C3 board, a waterproof DS18B20 probe or a DHT22 (or DHT11) temperature and humidity sensor with a 4.7kΩ pull-up resistor on GPIO 4, a USB data cable, and Chrome or Edge on a desktop or laptop.

Do I need the Arduino IDE?

No. The firmware is prebuilt and installed by the browser. Wi-Fi and your device key are sent to the board after flashing, so nothing has to be compiled.

Can I add more than one probe?

Yes, up to four DS18B20 probes on the same pin. They report as temp1 to temp4 and can be renamed in the dashboard. A DHT22 is one sensor per board.

What else can I connect?

An I²C temperature and humidity sensor (BME280, SHT31, or AHT20, found automatically; a BME280 also reports air pressure), a leak or water contact for flood alerts, a magnetic door switch, and a battery through a 1:1 resistor divider for battery-life estimates. Tick the leak, door, and battery options when you send settings so the board knows they're wired.

Does it work with a DHT22?

Yes. Wire it the same way (data to GPIO 4, 4.7kΩ to 3.3V). The firmware looks for DS18B20 probes first and, if there are none, reads a DHT22 or DHT11 on that pin, reporting temperature and humidity. A DS18B20 is the better choice against a pipe; a DHT22 suits room air and humidity in a crawlspace or basement.

How do I move the board to another network?

Hold the BOOT button for five seconds to erase the saved Wi-Fi and device key, then send new settings from this page or through the ProbeHarbor-Setup network.

Is the firmware open source?

Yes. The source is in the ProbeHarbor repository under firmware/probeharbor-probe, alongside sketches you can edit and flash yourself.