
ESPHome MultiPresence
PennyLekas/ESPHome_MultiPresence
A ESPHome presence sensor with mmWave radar, PIR motion, light, temperature, humidity, and pressure

Firmware and documentation for the Automato Brain Board V2.0, an ESP32-C6 based agricultural IoT node with onboard temperature, humidity, and light sensing, ESP-NOW mesh networking, relay control, and a self-hosted web…
Automato V2.0 is an open-source printed circuit board by Automato-ag, from the Automato-ag/Brain-Board repository on GitHub, published under the MIT licence. It is a 2-layer board of 30 × 45 mm with 32 parts on 47 nets, routed with 360 tracks and 133 vias.
It is built around the ESP32-C6-MINI-1-N4, SHTC3 and TSL25911FN, with the AP2112K-3.3 and BAT20J among its other parts. Its parts include 9 resistors, 5 capacitors, 5 connectors, 4 ICs and 4 diodes. It belongs with the ESP32 and RISC-V boards of this library.
Firmware and documentation for the Automato Brain Board V2.0, an ESP32-C6 based agricultural IoT node with onboard temperature, humidity, and light sensing, ESP-NOW mesh networking, relay control, and a self-hosted web dashboard served directly from the board.
| Component | Details |
|---|---|
| MCU | ESP32-C6-MINI-1-N4, 160 MHz, 4 MB Flash |
| Temp/Humidity | SHTC3 — I2C 0x70 (fixed) |
| Light | TSL2591 — I2C 0x29 (fixed) |
| I2C Bus | SDA = IO6, SCL = IO7 |
| Blue LED | IO23 |
| Red LED | IO22 |
| Boot Button | IO9 — see Boot Button section below |
| Qwiic/STEMMA QT | J2, J3 — GND / 3V3 / SDA / SCL |
| Logic Level | 3.3V only — GPIO pins not 5V tolerant |
See hardware/Brain_Board_Reference.md for full pinout and hardware notes.
| Sketch | Version |
|---|---|
BrainBoard_v110 | v1.1.0 |
All boards run the same unified firmware. There is no separate Host or Remote build — role (gateway, relay, isolated) is determined automatically at runtime based on WiFi connectivity.
Install all of the following via Arduino Library Manager:
Adafruit SHTC3 LibraryAdafruit TSL2591Adafruit BusIO (installed automatically as dependency)Adafruit Unified Sensor (installed automatically as dependency)SparkFun TCA9534 (for Qwiic GPIO relay control)| Setting | Value |
|---|---|
| Board | ESP32C6 Dev Module |
| USB CDC On Boot | Enabled — required; board crashes on Serial without this |
| Partition Scheme | Custom — required; uses partitions.csv in sketch folder |
| Upload Speed | 921600 |
Note: USB CDC on Boot must be re-enabled each Arduino IDE session — it does not always persist.
BrainBoard_v110/BrainBoard_v110.ino in Arduino IDEdata/ folder to LittleFSAutomato-XXXX WiFi networkhttp://192.168.4.1/setup — enter your Network Name, password, and WiFi credentialshttp://networkname.localhttp://boardname.local/update or http://192.168.4.1/update.bin or new LittleFS filesystem image| Action | Behavior |
|---|---|
| Hold 5s at startup | Clears all stored credentials and settings, then reboots |
| Short press during runtime | Opens a 10-minute SoftAP access window — board stays accessible at 192.168.4.1 even when on WiFi (useful for field configuration) |
The Brain Board serves a complete webapp directly from its own flash memory — no internet, cloud, or external server required. Works in a field with no cell service.
| Tab | Description | Status |
|---|---|---|
| Dashboard | Live sensor readings, relay control, Agri Data sidebar | Live |
| Devices | Local + peer I2C scan, user-defined device labels, address reference | Live |
| Rules | Automation rule engine — local and cross-board conditions | v1.2 |
| Settings | Display & Behavior (units, refresh rate, auto-sync), Agri Data Sources, Board Settings | Live |
| Network | Mesh topology — board roles, peers, gateway address | Live |
| Endpoint | Method | Description |
|---|---|---|
/ | GET | Dashboard webapp (served from LittleFS) |
/data | GET | Sensor JSON + relay state + network info |
/peers | GET | Peer list JSON |
/version | GET | Firmware + webapp version, mDNS name, network name |
/relay | GET | Relay control (?state=0|1, ?override=auto) |
/relay/status | GET | Relay state JSON |
/i2c-scan | GET | Local I2C bus scan |
/remote-scan | POST/GET | Peer I2C scan via ESP-NOW |
/time | POST | Set board time from browser |
/settings | POST | Save board name / Network Name / password |
/proxy | GET | HTTPS relay — board fetches external API on browser's behalf (?url=); allowlisted domains only |
/prefs | GET | Read dashboard preferences from LittleFS (/prefs.json) |
/prefs | POST | Write dashboard preferences JSON to LittleFS |
/setup | GET/POST | WiFi provisioning form |
/wifi/reset | POST | Clear WiFi credentials + reboot |
/update | GET | OTA update UI |
/update/firmware | POST | Flash new firmware .bin |
/update/filesystem | POST | Flash new LittleFS image |
External API calls are routed through the board's /proxy endpoint so they work when connected to the board's SoftAP (phone in the field with no direct internet). All sources are free and require no API keys.
Data sources can be enabled or disabled individually from Settings → Agri Data Sources.
| Parameter Group | Source |
|---|---|
| Weather, Wind, Cloud Cover, Outdoor Humidity | Open-Meteo |
| Solar, UV Index, Shortwave Radiation | Open-Meteo |
| First Light, Sunrise, Solar Noon, Sunset, Day Length | Sunrise-Sunset.org |
| Soil Temperature and Moisture, ET₀, VPD | Open-Meteo |
| Frost Risk (derived) | Open-Meteo (radiative cooling model) |
| Growing Degree Days — season to date (derived) | Open-Meteo + ERA5 archive |
| Chill Hours — season to date (derived) | Open-Meteo + ERA5 archive |
| Photoperiod — day length classification (derived) | Sunrise-Sunset.org |
| Moon Phase, Moonrise, Moonset | USNO + Sunrise-Sunset.org |
| NWS Frost Alerts | NOAA National Weather Service |
| PM2.5, Pollen | Open-Meteo Air Quality |
| DLI Accumulator (onboard sensor) | TSL2591 lux — accumulated in firmware |
All Brain Boards on the same Network Name automatically form a mesh using ESP-NOW. No configuration required beyond giving boards the same Network Name in /setup.
| Role | Condition | Behavior |
|---|---|---|
| Gateway | Board has active WiFi | Serves dashboard at networkname.local; syncs NTP time; relays peer sensor data |
| Relay | No WiFi, peer discovered | Seeks mesh channel, locks on discovery, forwards sensor data to gateway via ESP-NOW |
| Isolated | No WiFi, no peers found | Seeks continuously; accessible at 192.168.4.1 via its own SoftAP |
Channel seek: Non-WiFi boards cycle through channels 1–11 (US), restarting their SoftAP on each channel to keep the radio active for ESP-NOW reception. Lock occurs on first matching MSG_HELLO beacon.
Plugin hooks: Add a custom.ino file to the sketch folder to extend functionality without modifying core firmware. Available hooks: customSetup(), customLoop(), customDataJSON().
Relays default OFF under all failure conditions: boot, sensor failure, WiFi loss, cloud loss, browser closed, no rules configured, conflicting rules, hardware expander not found.
There is no condition under which a relay defaults ON.
| Version | Feature | Status |
|---|---|---|
| v0.8.1 | Tab navigation shell, I2C Scanner tab, /i2c-scan endpoint | Complete |
| v0.9 | Devices tab, remote I2C scan via ESP-NOW, Network Name in /setup | Complete |
| v1.0 | Settings tab, Network tab stub, POST /settings endpoint | Complete |
| v1.1 | ESP-NOW mesh — unified firmware, MSG_HELLO beacon, dynamic gateway, networkname.local, 1-hop relay, live Network tab, plugin hooks | Complete |
| v1.2 | Rules tab — firmware rule engine, LittleFS persistence, local + peer conditions, recipe database | Next |
| v1.3 | Multi-hop relay, routing tables, cross-board rules | Planned |
Brain-Board/
├── README.md
├── CHANGELOG.md
├── LICENSE
├── .gitignore
├── firmware/
│ ├── BrainBoard/
│ │ └── BrainBoard_v110/ <- current (v1.1)
│ │ ├── BrainBoard_v110.ino
│ │ ├── partitions.csv
│ │ └── data/
│ │ ├── index.html
│ │ └── version.txt
│ ├── BrainBoard_Host/ <- legacy (pre-v1.1)
│ └── BrainBoard_Remote/ <- legacy (pre-v1.1, retired)
├── docs/
│ ├── Roadmap.md
│ ├── QuickStart.md
│ ├── RelayControl.md
│ ├── AgriDataSidebar.md
│ ├── ESP32C6_Capabilities.md
│ ├── I2C_Address_Map.md
│ └── ProductFamily.md
├── hardware/MIT License — see LICENSE for details.
Automato Ag — automato.ag
| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | 2.2k | SparkFun-Resistor:R_0402_1005Metric | R3, R4, R5, R6, R8 |
| 3 | 0.1uF | SparkFun-Capacitor:C_0402_1005Metric | C3, C4, C5 |
| 2 | 100K | SparkFun-Resistor:R_0402_1005Metric | R7, R9 |
| 2 | 2.2uF | SparkFun-Capacitor:C_0603_1608Metric | C1, C2 |
| 2 | 5.1k | SparkFun-Resistor:R_0402_1005Metric | R1, R2 |
| 2 | Conn_01x10 | Openponics_Connectors:1x10_Castellated | J4, J5 |
| 2 | Qwiic_RA | SparkFun-Connector:JST_SMD_1.0mm-4_Black | J2, J3 |
| 2 | SMD_4.2x3.2mm_h2.5mm | SparkFun-Switch:Push_SMD_4.2x3.2mm | SW1, SW2 |
| 1 | AP2112K-3.3 | SparkFun-Semiconductor-Standard:SOT23-5 | U1 |
| 1 | BAT20J | SparkFun-Semiconductor-Standard:SOD-323 | D1 |
| 1 | Blue | SparkFun-LED:LED_0402_1005Metric | D4 |
| 1 | ESP32-C6-MINI-1-N4 | RF_Module:ESP32-C6-MINI-1 | U2 |
| 1 | Green | SparkFun-LED:LED_0402_1005Metric | D2 |
| 1 | Red | SparkFun-LED:LED_0402_1005Metric | D3 |
| 1 | SHTC3 | Sensor_Humidity:Sensirion_DFN-4-1EP_2x2mm_P1mm_EP0.7x1.6mm | U3 |
| 1 | TSL25911FN | OptoDevice:AMS_TSL25911FN | U6 |
| 1 | USB_C_Receptacle | SparkFun-Connector:USB-C_16 | J1 |
| 1 | ~ | SparkFun-Jumper:Jumper_3_NC-2_Trace | JP1 |
The 30 most common of 32 parts.

PennyLekas/ESPHome_MultiPresence
A ESPHome presence sensor with mmWave radar, PIR motion, light, temperature, humidity, and pressure

blind-reckoning/Reckoner
Turns press-and-hold motorised blinds into Home Assistant covers. One Reckoner per blind, hidden in the wall box behind the buttons you already have.

Shmcandi/esp32-c6-pcb-business-card
Ultra-slim credit card sized smart PCB business card powered by ESP32-C6-MINI-1 with 0.91-inch OLED display, USB-C, and LiPo charger



schoolllex/ESPBoosted
A custom, feature-rich ESP32-WROOM-32 development board featuring built-in environmental sensors, power management, and expansion interfaces.

vbartusevicius/weather-station
Open-source rooftop weather and air-quality station with no moving parts (Ø 96 × 235 mm, UV-stabilised ASA): ultrasonic wind, acoustic rain and hail, UV / sunlight / night-sky brightness, temperature, humidity…

It measures 30 × 45 mm and has 2 copper layers, 1.6 mm thick.
32 parts, built around the ESP32-C6-MINI-1-N4, SHTC3, TSL25911FN and AP2112K-3.3. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the Automato-ag/Brain-Board repository on GitHub, at the commit this page was made from: the board is hardware/kicad/Brain_Board_V2.0/Automato_V2.0.kicad_pcb and its schematic hardware/kicad/Brain_Board_V2.0/Automato_V2.0.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).