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 | Label | What it is | How you use it |
|---|---|---|---|
| 1 | PWR +12V | Regulated 12 V output, derived from PoE+. | Feed the + side of 12 V loads (LED strips, fans, locks). |
| 2 | PWR GND | Common ground / return. | The return for everything you wire here. |
| 3 | PWR +5V | Regulated 5 V output. | Power 5 V loads or an addressable-LED strip's +5 V rail. |
| 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 | I/O HIO16 | 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. |
| 6 | I/O HIO2 | ||
| 7 | I/O HIO15 | ||
| 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. |
| 9 | OUT HIO13 | ||
| 10 | OUT HIO14 | ||
| 11 | OUT HIO33 |
To switch a 12 V load on output HIO13 (pin 9): connect +12V (pin 1) to the load's +, and the load's − to HIO13 (pin 9). 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.