I didn't put Shelly Plus 1PM and 2PM behind my wall switches for the app or the cloud. I put them there because each one quietly does two jobs at once: it switches a circuit locally, and it measures exactly what that circuit draws. The moment I had them wired in, every light group and every roller shutter in the flat became both controllable AND measurable in Home Assistant — with no separate energy meter and, deliberately, no cloud in the loop.
This is the part most Shelly write-ups skip: the metering isn't a bonus, it's the reason to use them. This is how I set them up, kept them fully local, wired the physical switches so they still work like switches, and pulled per-channel energy into the HA Energy Dashboard.
Why the Plus series for in-wall use
The Plus 1PM and 2PM are Gen2 devices. That matters: they speak a local RPC API over HTTP and WebSocket, they're supported by the native Home Assistant Shelly integration out of the box, and nothing about them needs the internet once they're on your Wi-Fi. The 1PM is a single relay with power metering — I use it behind light circuits. The 2PM has two relays with metering and a dedicated cover/roller-shutter mode — that's what sits behind my shutters.
The catch you plan for up front: both need a neutral wire in the switch box. Older installations often don't have one at the switch, so check before you order. If the neutral is there, the rest is easy.
The first thing I change: kill the cloud, pin the IP
Straight out of the box I do two things in the Shelly web UI (just browse to the device's IP). First, I disable Bluetooth and Cloud under Settings — I don't want the device reaching out to anything, and Home Assistant talks to it directly on the LAN. Second, I give it a fixed address via a DHCP reservation on my router, so the native integration never loses it after a reboot.
That's the whole hardening story. No firmware flashing, no third-party firmware — stock Shelly firmware with the cloud switched off is already a fully local device. It keeps working if my internet drops, which for anything wired into a wall is exactly what I want.
Adding them to Home Assistant (no MQTT required)
The native Shelly integration finds Gen2 devices over mDNS. In Home Assistant I go to Settings, Devices & Services, and the Plus 1PM/2PM usually show up under discovered — one click to add. If they don't auto-discover, adding by IP works just as well. Each device brings in a switch entity per channel plus sensors for power and cumulative energy.
You can run them over MQTT instead, and I do that for a couple where I want the reporting cadence fully under my control. But for most people the native integration is the right answer: it's local push, it's zero-config, and it exposes the energy sensors HA's dashboard needs. MQTT is the escape hatch, not the default.
The switch input mode that makes or breaks it
Here's the setting that decides whether this feels great or fights you: the input mode. By default the physical switch directly toggles the relay ("follow"). That's fine for a dumb light. But behind a switch I want to automate, I set the input to detached — now the wall switch no longer hard-wires the relay; it just sends a button event to Home Assistant, and HA decides what happens. The relay still switches on command, so nothing is "lost" — the physical switch becomes an input, not a hard override.
For a 2PM in cover mode you leave the inputs mapped to up/down, but for the 1PM behind a lamp, detached plus a Home Assistant automation is what lets one switch do more than one thing (single press = this light, double press = the whole room).
# One wall button, two actions — Shelly Plus 1PM input detached
alias: Hallway switch
triggers:
- trigger: state
entity_id: event.hallway_shelly_input_0
attribute: event_type
to: single_push
id: single
- trigger: state
entity_id: event.hallway_shelly_input_0
attribute: event_type
to: double_push
id: double
actions:
- choose:
- conditions: "{{ trigger.id == 'single' }}"
sequence:
- action: light.toggle
target: { entity_id: light.hallway }
- conditions: "{{ trigger.id == 'double' }}"
sequence:
- action: light.turn_off
target: { entity_id: all }Per-channel energy in the Energy Dashboard
This is the payoff. Every Plus device reports active power in watts and a cumulative energy total per channel. In Home Assistant that total energy sensor is exactly what the Energy Dashboard wants: Settings, Dashboards, Energy, then add each Shelly channel under "Individual devices". Suddenly the hallway lights, the office circuit and the bathroom shutter each show up as their own slice of the day's consumption.
What surprised me: it wasn't the lights that mattered, it was the standing draw. A 2PM behind a shutter that hadn't moved in three days was still showing a small constant wattage — the little things you only find once you can actually see per-circuit numbers instead of one house total. That per-room visibility is the whole reason I'd tell anyone to spend the extra few euros on the PM variant over a plain relay.
Roller shutters on the 2PM
For shutters, the 2PM's cover mode turns the two relays into up/down with a calibration run so Home Assistant gets real position control — a cover entity with a 0-to-100 percent slider, not just up/stop/down. Run the calibration once from the Shelly UI (it times the full travel), and after that HA can send "close to 40 percent" and mean it. I drive mine from sun elevation and an indoor temperature sensor so the south side closes before the afternoon heat rather than after.
Gotchas I hit
Two things cost me time. First, power readings: the Plus PM devices report real active power, but if you're comparing against an old cloud screenshot or a non-PM Shelly, don't expect the numbers to line up — apparent versus active power is a real difference on inductive loads. Second, keep firmware current but read the changelog before a mass update; a Gen2 firmware bump once changed an entity's unique_id behaviour and I'd rather stagger updates than have HA re-discover a dozen devices at once.
And the obvious one worth repeating: a neutral wire is non-negotiable for these. If your switch box doesn't have one, that's a wiring job before it's a Home Assistant job.
FAQ
Do I need a Shelly account or the cloud?
No. With the native Home Assistant integration everything runs on your LAN. I disable Cloud on every device — Home Assistant discovers and controls them locally, and they keep working with the internet unplugged.
Native Shelly integration or MQTT — which should I use?
Start with the native integration: it auto-discovers Gen2 devices, it's local push, and it exposes the energy sensors the dashboard needs. Reach for MQTT only if you want full control over the reporting cadence or you're consolidating everything onto one broker.
Can I still use the physical wall switch?
Yes — that's the point of detached input mode. The switch keeps working, but instead of hard-wiring the relay it sends a button event to Home Assistant, so one switch can trigger automations while the relay stays independently controllable.
Where this fits
Shelly Plus 1PM/2PM turned every circuit in the flat into something I can both control and measure, locally, without adding a single cloud dependency. The metering side is what makes them an energy story, not just a switching one: they feed the same Energy Dashboard I use for solar and the inverter. If you're building that dashboard out, my writeups on pulling PV self-consumption and autarky into HA and steering solar surplus into hot water pair naturally with per-room Shelly metering. And when you're hunting for the dashboard cards to visualise all of it, the HACS directory is where I go looking.



