One Ethernet cable powers it, connects it, and lets you control it. This guide walks you from the box to a working device in eight short steps — power, wiring, browser control, and Home Assistant. Jump to any chapter using the bar below.
The Donato PoE Module is a professional smart-home controller built around an ESP32 with wired Ethernet. It takes a single PoE+ network cable and gives you four high-current outputs, an addressable-LED data line, and several general-purpose I/O pins — all controllable from your browser or Home Assistant.
In a hurry? The whole flow is: get a PoE+ switch → plug in → wire your load → control it in the browser → (optionally) add it to Home Assistant.
The module draws up to 25.5 W (PoE Class 4) and is powered only through its Ethernet cable. That means it needs IEEE 802.3at "PoE+". Ordinary 802.3af PoE tops out near 13 W at the device — not enough: the board may fail to boot or brown out. You need one 802.3at source.
Unmanaged, fanless, plug-and-play. 4 true 802.3at PoE+ ports at up to 30 W each. Unbox and go.
Same idea, different brand. Pick the GS305P/PP — not the GS308P, which is only 15.4 W/port.
If you want VLANs, monitoring, and a dashboard. 4 ports at 802.3at 30 W. Needs the free UniFi app.
Already have a regular (non-PoE) router or switch and only one module to power? A
single-port 802.3at PoE+ injector is the cheapest correct answer. It sits inline:
existing port → injector DATA-IN, then injector PoE-OUT → cable → module.
Buy one explicitly rated IEEE 802.3at, 30 W, gigabit — e.g.
TP-Link TL-PoE160S, EnGenius EPA5006GAT, or Tripp Lite
NPOE-30W-1G. Avoid 15.4 W / 802.3af-only injectors (e.g. TL-PoE150S).
With your PoE+ source ready, connecting the module is the whole installation:
pdpm-g-xxxxxx (the last characters are part of its MAC).http://pdpm-g-xxxxxx.local in a browser if your network supports mDNS/Bonjour.J3 is the 11-position screw terminal where you connect your loads and signals. Counting from pin 1 — the end closest to the Ethernet (RJ45) port — the pins fall into four groups: power, an LED-data line, level-shifted 5 V I/O, and four high-current switch outputs.
| Pin V1.6.4 | Pin V1.6.3 | Label | What it is | How you use it |
|---|---|---|---|---|
| 1 | 1 | PWR +12V | Regulated 12 V output, derived from PoE+. | Feed the + side of 12 V loads (LED strips, fans, locks). |
| 2 | 2 | PWR GND | Common ground / return. | The return for everything you wire here. |
| 3 | 3 | PWR +5V | Regulated 5 V output. | Power 5 V loads or an addressable-LED strip's +5 V rail. |
| 4 | 4 | DATA HDIN | Addressable-LED data (WS2812 / WLED-style), 5 V, with a 100 Ω series resistor built in. | Connect to the DIN of a NeoPixel/WS2812 strip; power the strip from +5V (pin 3) and GND (pin 2). |
| 5 | 8 | OUT HIO12 | High-current switch output — an N-channel MOSFET that pulls the pin to ground when ON (low-side switch), ~2 A each. | Wire the load between a + supply (pin 1 12V or pin 3 5V) and this pin; the board switches the ground side. Great for lights, relays, solenoids, a garage door. |
| 6 | 9 | OUT HIO13 | ||
| 7 | 10 | OUT HIO14 | ||
| 8 | 11 | OUT HIO33 | ||
| 9 | 5 | I/O HIO32 (HIO16 on V1.6.3) | Level-shifted 5 V general-purpose I/O (bidirectional, 33 Ω series). Drive 5 V signals or read 5 V sensors/switches. | Use for reed switches, buttons, Hall sensors, or 5 V logic. Assign each pin's role in firmware / Home Assistant. The first I/O pin is GPIO32 on V1.6.4 and GPIO16 on V1.6.3 — use the matching name in your firmware. |
| 10 | 6 | I/O HIO2 | ||
| 11 | 7 | I/O HIO15 |
To switch a 12 V load on output HIO13 (pin 6 on V1.6.4, pin 9 on V1.6.3): connect +12V (pin 1) to the load's +, and the load's − to HIO13. When you turn HIO13 ON (from the web UI or Home Assistant), the board completes the circuit to ground and the light comes on. The outputs are low-side switches — they switch the negative/ground side, not the positive.
Read state on the 5 V I/O pins (signal → an HIO pin, plus GND — and +5 V if the sensor needs power):
Switch the ground side of a 12 V (pin 1) or 5 V (pin 3) load — load + to power, load − to the HIO pin:
WS2812 / NeoPixel / SK6812 strips: data → HDIN, power from +5 V (pin 3) & GND for short runs, or a separate 5 V supply for long ones.
You don't need any extra software to control the module. Every board runs a small built-in web server — just open its address in a browser:
http://<board-ip> (the address you found in Step 3).admin and password pdpm-g.From that page you can, with zero setup:
The browser page is great for direct control — but to unlock what the module can really do, add it to Home Assistant. It's the recommended home for the board and it's free and open-source. Because the module already speaks ESPHome, Home Assistant auto-discovers it.
6053.)FK0lk39GchrQjqxxgpom/vOFX1Go3iyw5/sjkA39xvA=esphome wizard or replace the
api: encryption: key: value with a fresh one, then install over the air. Keep the new key somewhere safe.Once it's in Home Assistant you get the things the bare web page can't do:
Turn outputs on at sunset, trigger from sensors, build multi-step automations across all your devices.
Custom dashboards, phone app, and voice control (Google/Alexa/Siri via HA) — alongside the rest of your home.
Securely check and control the board away from home, with history, logging, and notifications.
Your board ships running the ESPHome base image — the right choice for Home Assistant. But the firmware is yours to change. There are three paths, from easiest to most advanced.
This is the everyday way to tweak a board that's already online: add sensors, change names/IP, or update the firmware version — all wirelessly, with the board installed.
esphome run your-board.yaml does the same thing.)Want the board to become a WLED addressable-LED controller (driving a strip on the HDIN data line), or switch back to ESPHome? Here's how:
Only needed if the board is unreachable (a bad config, interrupted OTA, or you want a clean wipe). This uses a USB-to-serial adapter and the on-board BOOT button. You'll first need to locate the board's serial/programming header and its BOOT and RESET buttons (marked on the board silkscreen). If you're not comfortable identifying them, reach out before risking the board — and read the safety notes first.
esptool locally.0x0:
firmware.factory.bin at 0x0 (bootloader + partition table + app) —
writing only the app, or to the wrong offset, can leave the board unbootable. And keep your OTA password
and API key: lose them and the no-cable update path won't work, forcing a USB reflash.
/factory/flash is for production use and is password-protected — it isn't part of customer setup.The board networks over its wired connection, but the ESP32's full 2.4 GHz radio is still onboard — and because Ethernet doesn't use that radio, it's completely free for wireless add-ons. Enable any of these in firmware:
bluetooth_proxy / esp32_ble_tracker.| Symptom | Most likely cause & fix |
|---|---|
| Board seems dead / never appears | You're probably on 802.3af, not PoE+. Confirm an 802.3at / 30 W port or injector (Step 2). Remember there are no LEDs — "dark" isn't "dead." |
| No light on the board | Normal. The board has no status LEDs by design. Verify via its web page or Home Assistant. |
| "PoE+ Detected" shows OFF | The port isn't delivering Class 4 PoE+. Move to a true 802.3at port, or check your injector is 802.3at (not passive / not af). |
| Can't find the IP address | Check your router's device list for pdpm-g-xxxxxx, try pdpm-g-xxxxxx.local, or let Home Assistant discover it. |
| Reboots / cycles every few seconds on PoE | A maintain-power-signature (MPS) quirk between this board and a strict switch. Using a known-good 802.3at source usually resolves it. |
| Home Assistant won't connect | Make sure you pasted the correct API encryption key; or add it manually (ESPHome → Host: IP, Port 6053). |
| An output won't switch a load | Outputs are low-side — wire the load between + (pin 1/3) and the HIO pin, not between the HIO pin and ground (Step 4). |
ESPHome over-the-air, WLED, or a clean reflash.
Questions about your board or a bulk order? We'll help.