Sensor sketches
Firmware samples live in the repo:
Each sketch POSTs to your push-device ingest URL. On Dashboard → Devices, create a push device and use Download Arduino .ino / MicroPython .py / CircuitPython code.py / Zephyr main.c / CH32V main.c / AVR main.S / Teensy 4.1 .ino / PIC18 main.c / Particle Boron .ino (URL or path pre-filled). Or copy a sketch from this folder and set INGEST_URL / INGEST_PATH yourself. Always set Wi-Fi credentials (ESP / Pico), INGEST_HOST / INGEST_PATH (Ethernet), or a Particle Console webhook (cellular) before flashing.
Matrix
| Path | Sensor | Stack |
|---|---|---|
arduino/ds18b20_ingest | DS18B20 (1-Wire) | Arduino: ESP32, ESP8266, Pico W (+ PlatformIO on ESP) |
arduino/ds18b20_wifimanager | DS18B20 + WiFiManager | Arduino / ESP32 |
arduino/ethernet_dht22_ingest | Dual DHT22 + W5100 | Uno Ethernet (HTTP push + LAN pull) |
arduino/door_contact_ingest | Door reed | Arduino / ESP32 |
arduino/leak_contact_ingest | Leak pads | Arduino / ESP32 |
arduino/power_sense_ingest | Power sense | Arduino / ESP32 |
arduino/max31855_ingest | MAX31855 thermocouple | Arduino: ESP32 / Pico W |
arduino/max6675_ingest | MAX6675 thermocouple | Arduino: ESP32 / Pico W |
micropython/ds18b20_ingest.py | DS18B20 | MicroPython ESP32 or Pico W |
micropython/max31855_ingest.py | MAX31855 | MicroPython ESP32 |
circuitpython/ds18b20_ingest.py | DS18B20 | CircuitPython Pico W / Pico 2 W |
zephyr/ds18b20_ingest | DS18B20 | Zephyr C / STM32 Nucleo-F767ZI |
wch/ch32v307_ds18b20_ingest | DS18B20 | WCHNET C / CH32V307V-EVT |
avr/atmega328_w5100_ds18b20 | DS18B20 | GNU AVR assembly / ATmega328P + W5100 |
teensy/teensy41_ds18b20_ingest | DS18B20 | Teensyduino + QNEthernet / Teensy 4.1 |
microchip/pic18f67j60_ds18b20_ingest | DS18B20 | MPLAB X MLA TCP/IP / PIC18F67J60 |
particle/boron_ds18b20_ingest | DS18B20 | Particle Boron LTE + Console webhook |
What they send
Arduino DS18B20 / MAX6675 samples use flat keys:
{ "temp1": 68.4, "rssi": -58 }MAX31855 samples use typed sensors:
{
"sensors": [
{ "key": "tc1", "kind": "temperature", "value": 412.0, "unit": "F" }
],
"rssi": -58
}Add matching sensor keys on Dashboard → Devices after the first POST.
Uno Ethernet samples send the classic temp object (0 / 1 / avg with c, f, h) instead of flat temp1.
Checklist
- Buy ESP32 + waterproof DS18B20 — parts list — or a Pico W — or a Nucleo-F767ZI — or a CH32V307V-EVT — or AVR assembly on Uno + W5100 — or Teensy 4.1 — or PIC18F67J60 — or Particle Boron cellular
- Create push device on Devices; download pre-filled sketch (or paste
INGEST_URL) - Edit
WIFI_*only - Flash; watch serial (115200) for
POST 200 - Open Home on thermaltrace.dev
- Set freeze alerts under Dashboard → Alerts
Uno + Ethernet shield
The W5100 cannot TLS. Use ethernet_dht22_ingest (DHT22 on A4/A5, HTTP POST + optional LAN pull on port 80) and run push_https_forward.py on a LAN host:
python3 sketches/relay/push_https_forward.py --listen 0.0.0.0:8080 \
--upstream https://thermaltrace.devSet INGEST_HOST to that machine and INGEST_PATH to /api/ingest/<your-key>.
Full garage stack
Ethernet + dual DHT22 + LCD firmware (separate repo):
arduino-network-json-temperature-sever
Wiring / LCD guides on the product site: About → Arduino · Pico W ingest · STM32 Zephyr · CH32V RISC-V · AVR assembly · Teensy 4.1 · PIC18 Ethernet · Cellular