Skip to the content
PCBKitNew board
2 layers132 × 70 mmEnvNodeMini, the printed circuit board in 3D

EnvNode is an source-available ESP32-based embedded platform for reliable environmental measurements and seamless integration into modern home automation systems.

Size
132 × 70 mm
Copper layers
2
Thickness
1.6 mm
Parts
20
Nets
42
Pads
114
Tracks, vias
274, 9
Pours
3
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
5 Aug 2026
Updated
4 Nov 2026

Overview

EnvNodeMini is an open-source printed circuit board by magicamun, from the magicamun/EnvNode repository on GitHub. It is a 2-layer board of 132 × 70 mm with 20 parts on 42 nets, routed with 274 tracks and 9 vias.

It is built around the ESP32-DEVKITC-VE, TSR 1-2433 and TSR 1-2450, with the B360B-13-F(MS) and SMBJ24A among its other parts. Its parts include 5 connectors, 4 ICs, 2 capacitors, 2 resistors and 2 diodes. It belongs with the ESP32 boards of this library.

Main components

5

README

README.md

EnvNode

EnvNode is an source-available ESP32-based embedded platform for reliable environmental measurements and seamless integration into modern home automation systems.

WeatherStation is the first reference application built on the reusable EnvNode platform.

The classic ESP32 firmware keeps Arduino-ESP32 2.x and RainDetector, with UDP logging to rsyslog instead of SD storage. SD and SX1262 runtime support belong to the later S3 hardware/build profile. See the classic ESP32 scope and logging validation for current limits and measurements.

The project intentionally separates measurement from interpretation.

The firmware is responsible for acquiring reliable physical Measurements and publishing them to external systems.

Higher-level concepts such as weather interpretation, historical aggregation, evapotranspiration (ETo), irrigation logic and visualization intentionally remain outside the firmware.

EnvNode is developed as a complete source-available product including:

  • firmware
  • hardware (KiCad)
  • documentation
  • development tooling

The goal is not to build another weather dashboard.

The goal is to build a reliable measurement platform.


Vision

EnvNode provides an open, transparent and extensible weather sensor platform for Home Assistant and other home automation systems.

The ESP32 acts as a dedicated measurement node.

It acquires physical sensor data, performs only the hardware-related processing required to obtain reliable Measurements and publishes them via MQTT.

The firmware intentionally remains deterministic, maintainable and independent from weather-specific interpretation.

This allows higher software layers to evolve independently while keeping the embedded firmware simple and robust.


Why another weather station?

The project originated from practical experience with an existing DIY weather station.

Although the hardware proved to be reliable, several software aspects became increasingly problematic:

  • closed-source firmware
  • undocumented algorithms
  • incorrect sunshine duration calculation
  • embedded rain aggregation
  • limited extensibility
  • unclear separation between measurement and interpretation

Rather than replacing individual algorithms, the firmware was redesigned from first principles around a small number of architectural rules.


Core Philosophy

The EnvNode project follows one simple principle:

Measure first.

Interpret later.

The firmware exists to acquire reliable Measurements.

Interpretation belongs to external systems.


Project Goals

  • source-available firmware with a commercial exploitation reservation
  • available hardware design sources (KiCad)
  • MQTT-based integration
  • browser-based configuration
  • OTA firmware updates
  • modular architecture
  • high-quality Measurements
  • deterministic firmware behaviour
  • long-term maintainability
  • simulation support
  • comprehensive documentation
  • hardware independence

Design Principles

The project follows a small number of architectural principles.

Measure, don't interpret

The firmware measures physical reality.

Interpretation belongs outside the Device.


One technical responsibility per service

Each infrastructure service owns exactly one technical responsibility.

Examples include:

  • Configuration
  • WiFi
  • Time
  • MQTT

Sensors produce Measurements

Sensors do not publish MQTT.

Sensors do not interpret weather.

Sensors produce Measurements.

Controllers coordinate Actuators through capabilities

Controllers implement cooperative local behavior and address configured Actuators by ActuatorId and capability. They do not manipulate GPIO or use MQTT as an internal control path.


Configuration has one authoritative owner

Configuration exists exactly once inside the runtime.

Every subsystem uses the same Configuration.


Simulation is part of the architecture

Simulated and physical Sensors follow the same processing pipeline.

Replacing a simulated Sensor with a physical implementation must not require architectural changes.


Observable behaviour

Whenever practical, internal decisions should be visible through:

  • diagnostics
  • logging
  • MQTT status

The firmware should never behave like a black box.


Deterministic firmware

The firmware intentionally avoids executing complex weather models.

Embedded software should remain predictable and responsive.


Hardware independence

Application logic depends on abstract Sensor behaviour rather than concrete hardware implementations.

Replacing a Sensor should require only a new driver.


Current Status

Implemented

  • ESP32 PlatformIO project
  • persistent configuration
  • browser-based provisioning
  • WiFi connectivity
  • automatic WiFi reconnect
  • setup access point
  • configurable hostname
  • SNTP time synchronization
  • configurable timezone
  • MQTT connectivity
  • authenticated MQTT client
  • factory reset and OTA firmware update
  • typed Measurement pipeline and MQTT publication
  • fixed Sensor slots, physical/simulated implementations and live runtime composition
  • Sensor Home Assistant discovery
  • optional GeoPosition and actual sensor altitude, persisted with backup/restore
  • separate sea-level pressure with local temperature selection, freshness checking, explicit quality and fallback diagnostics (firmware 0.6.0)
  • EEPROM-backed Board Identity, boot-time profile resolution and development fallback
  • Board Identity diagnostics and confirmed Web provisioning with readback verification
  • independent Module Identity discovery for both slots, immutable module profiles and board/slot compatibility diagnostics without automatic driver activation
  • fixed Actuator slots and unified hardware validation
  • OnOff capability and GPIO On/Off Actuator
  • Level capability and GPIO PWM Actuator
  • live Actuator runtime rebuild
  • Web and MQTT Actuator configuration/control
  • fixed Controller slots and BlinkController
  • ThresholdController with typed Measurement input, hysteresis and monotonic freshness
  • cooperative Controller runtime and live rebuild
  • Web and MQTT Controller configuration, status and Start/Stop
  • persistent MQTT Blink/Threshold parameter commands and retained parameter state
  • retained external Actuator and Controller descriptions
  • exclusive enabled-Controller ownership of Actuator targets
  • physically verified Sensor -> Measurement -> Controller -> Actuator operation

Current hardware-validation focus

  • provision and boot from the Board Identity EEPROM on a physical Mainboard revision 0.3
  • complete the Revision 0.3 article list and assembly data
  • assemble and bring up the AnalogHydroPressure module, including its local 5 V to 24 V supply
  • integrate and calibrate the ADS1115-based 4–20 mA pressure input on real hardware
  • operate at least the Rain Detector heater path before releasing Revision 0.3 for production

Deliberately future

  • additional Actuator capabilities beyond OnOff and Level, and additional typed Controller implementations
  • multi-input, Boolean/contact and event-driven Controllers
  • richer manual-versus-Controller arbitration
  • Controller and generic Actuator Home Assistant discovery
  • a dedicated provisioning station for preparing Mainboards, Modules, and other supported boards

Documentation

Project documentation is intentionally separated by responsibility.

DocumentPurpose
README.mdProject overview
DomainModel.mdFunctional domain concepts
TechnicalArchitecture.mdTechnical architecture
ActuatorModel.mdActuator capabilities and Controller interaction
MQTT.mdCurrent MQTT protocol boundaries and topics
Configuration.mdConfiguration backup, restore and NVS persistence
SeaLevelPressure.mdGeoPosition, local temperature input and derived sea-level pressure
Hardware.mdHardware entry point, module templates, and implemented boards
PRODUCT_ASSET_CONTRACT.mdReproducible PCB and webshop image requirements
ADRsArchitectural decisions

Non Goals

EnvNode intentionally does not:

  • perform weather forecasting
  • calculate evapotranspiration (ETo)
  • calculate sunshine duration
  • aggregate historical weather data
  • store long-term measurements
  • replace Home Assistant

These responsibilities belong to higher software layers.


Project Status

The Sensor, Actuator and Controller architecture is implemented and physically verified. Current open work concerns further capabilities, Controller implementations and external self-description rather than replacing these runtime boundaries.

License and permitted use

EnvNode-owned materials are provided under the EnvNode Use and Redistribution License, version 1.0. Private and internal business use, modifications, free redistribution, and paid fabrication or maintenance for the user's own use are permitted. Commercial product sales, licensing, rental, and standalone paid software hosting require separate permission. Third-party materials retain their respective licenses. This is a custom source-available license, not an OSI-approved open-source license. The German license text is authoritative.

Parts

20
QtyValueFootprintReferences
4Conn_02x04_Odd_EvenConnector_PinSocket_2.54mm:PinSocket_2x04_P2.54mm_VerticalJ1, J2, J4, J5
24,7 kOhmResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR1, R2
2Conn_01x04_PinConnector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_HorizontalI2C0_1, I2C0_2
2OpenJumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mmJP1, JP2
1100nF / 50V X7RCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC2
124AA025E-OTPackage_TO_SOT_SMD:SOT-23-6U2
12AFuse:Fuse_Littelfuse-NANO2-451_453F1
147uF/50VCapacitor_SMD:CP_Elec_6.3x7.7C1
1B360B-13-FDiode_SMD:D_SMB_HandsolderingD1
1ESP32-DevKitCPCM_Espressif:ESP32-DevKitCU1
1PowerTerminalBlock_RND:TerminalBlock_RND_205-00001_1x02_P5.00mm_HorizontalJ3
1SMBJ24ADiode_SMD:D_SMB_HandsolderingD2
1TSR_1-2433Converter_DCDC:Converter_DCDC_TRACO_TSR-1_THTU4
1TSR_1-2450Converter_DCDC:Converter_DCDC_TRACO_TSR-1_THTU3

Questions

How big is the EnvNodeMini PCB?

It measures 132 × 70 mm and has 2 copper layers, 1.6 mm thick.

What parts does the EnvNodeMini use?

20 parts, built around the ESP32-DEVKITC-VE, TSR 1-2433, TSR 1-2450 and B360B-13-F(MS). 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.

Where can I download the EnvNodeMini KiCad files?

From the magicamun/EnvNode repository on GitHub, at the commit this page was made from: the board is hardware/kicad/Revision-0.1/MainBoards/EnvNodeMini/EnvNodeMini.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the EnvNodeMini design in my own project?

Its repository states no licence, so its author keeps all rights: ask magicamun before reusing the design.

More from magicamun/EnvNode

12
  • 2 layers111 × 95 mmEnvNode, the printed circuit board in 3D

    EnvNode

    magicamun/EnvNode

    EnvNode is an source-available ESP32-based embedded platform for reliable environmental measurements and seamless integration into modern home automation systems.

    39 parts
  • 2 layers130 × 68 mmEnvNode Mini, the printed circuit board in 3D

    EnvNode Mini

    magicamun/EnvNode

    EnvNode is an source-available ESP32-based embedded platform for reliable environmental measurements and seamless integration into modern home automation systems.

    34 parts
  • 2 layers38 × 64 mmAnalogHydroPressure, the printed circuit board in 3D

    AnalogHydroPressure

    magicamun/EnvNode

    EnvNode is an source-available ESP32-based embedded platform for reliable environmental measurements and seamless integration into modern home automation systems.

    30 parts
  • 2 layers62.1 × 54.5 mmRainDetectorHead, the printed circuit board in 3D

    RainDetectorHead

    magicamun/EnvNode

    EnvNode is an source-available ESP32-based embedded platform for reliable environmental measurements and seamless integration into modern home automation systems.

    27 parts
  • 2 layers90 × 90 mmTest Controller, the printed circuit board in 3D

    Test Controller

    magicamun/EnvNode

    EnvNode is an source-available ESP32-based embedded platform for reliable environmental measurements and seamless integration into modern home automation systems.

    23 parts
  • 2 layers38 × 64 mmDuoRelay, the printed circuit board in 3D

    DuoRelay

    magicamun/EnvNode

    EnvNode is an source-available ESP32-based embedded platform for reliable environmental measurements and seamless integration into modern home automation systems.

    21 parts
  • 2 layers38 × 64 mmSX1262-Remote, the printed circuit board in 3D

    SX1262-Remote

    magicamun/EnvNode

    EnvNode is an source-available ESP32-based embedded platform for reliable environmental measurements and seamless integration into modern home automation systems.

    15 parts
  • 2 layers62.1 × 54.5 mmRainDetectorController, the printed circuit board in 3D

    RainDetectorController

    magicamun/EnvNode

    EnvNode is an source-available ESP32-based embedded platform for reliable environmental measurements and seamless integration into modern home automation systems.

    15 parts
  • 2 layers38 × 64 mmDuoRelay, the printed circuit board in 3D

    DuoRelay

    magicamun/EnvNode

    EnvNode is an source-available ESP32-based embedded platform for reliable environmental measurements and seamless integration into modern home automation systems.

    14 parts
  • 2 layers43 × 27 mmSolarRadiation, the printed circuit board in 3D

    SolarRadiation

    magicamun/EnvNode

    EnvNode is an source-available ESP32-based embedded platform for reliable environmental measurements and seamless integration into modern home automation systems.

    14 parts
  • 2 layers39 × 15 mmORing Power, the printed circuit board in 3D

    ORing Power

    magicamun/EnvNode

    EnvNode is an source-available ESP32-based embedded platform for reliable environmental measurements and seamless integration into modern home automation systems.

    13 parts
  • 2 layers38 × 32 mmAnalogInput, the printed circuit board in 3D

    AnalogInput

    magicamun/EnvNode

    EnvNode is an source-available ESP32-based embedded platform for reliable environmental measurements and seamless integration into modern home automation systems.

    13 parts

Similar boards

  • 2 layers42.1 × 24.2 mmAL8843, the printed circuit board in 3D

    AL8843

    ealex/AL8843

    18 partsGPL-3.0
  • 2 layers113 × 56.3 mmMP1Flight, the printed circuit board in 3D

    MP1Flight

    TangoPush/MP1Flight

    STM32MP1 based flight controller based off the Pixracer.

    72 parts5CC0-1.0
  • 2 layers120 × 75 mmRpi5-cnc hat, the printed circuit board in 3D

    Rpi5-cnc hat

    atomicmill/raspberry-pi-5-Linuxcnc-hat

    Raspberry Pi 5 Linuxcnc hat KiCad proect

    96 parts1
  • 2 layers98.3 × 93.3 mmPower Control Unit PCB, the printed circuit board in 3D

    Power Control Unit PCB

    BLESS-BEXUS/Power-Control-Unit-System-PCB

    Open-source PCB for power distribution and regulation from a 28 V DC input to 3.3 V, 5 V and 12 V regulated rails.

    30 parts
  • 2 layers59.7 × 60.7 mmPower board, the printed circuit board in 3D

    Power board

    adoble/modular-audio

    A digital modular audio system

    15 parts
  • 2 layers101.6 × 60.1 mmPerimeter Sender, the printed circuit board in 3D

    Perimeter Sender

    JakobThiessen/RoboticLawnMower

    Rasenmähroboter in Eigenbau

    40 parts
  • 2 layers54 × 51 mmAcv, the printed circuit board in 3D

    Acv

    ayeama/acv

    Automotive CAN bus Visualiser

    13 parts
  • 2 layers33.7 × 66 mmSmartbell, the printed circuit board in 3D

    Smartbell

    Staacks/there.oughta.be

    Projects featured on my blog at https://there.oughta.be

    27 parts108GPL-3.0