195 lines
No EOL
12 KiB
Markdown
195 lines
No EOL
12 KiB
Markdown
# Shelly Network Inventory and Home Assistant Correlation
|
|
|
|
Date: 2026-04-17
|
|
|
|
This document combines:
|
|
|
|
- OPNsense ARP visibility on `192.168.100.0/24` (`vtnet0`)
|
|
- Home Assistant `home` entity search results
|
|
- Direct HTTP probing of responsive devices
|
|
|
|
The main goal is to make Shelly troubleshooting easier by keeping the likely device-to-entity mapping in one place.
|
|
|
|
## Summary
|
|
|
|
- OPNsense live ARP alone did not expose Shelly hostnames reliably, but `config.xml` did expose static host reservations and DNS-style host entries for several Shelly devices.
|
|
- Home Assistant `home` contains multiple Shelly devices with clear naming and entity groupings.
|
|
- Three devices were positively confirmed over HTTP:
|
|
- `192.168.100.62` is a Shelly EM named `MaddoProd`.
|
|
- `192.168.100.76` is a Shelly EM named `Shelly-Pompa`.
|
|
- `192.168.100.96` is a Shelly EM named `shelly-pannello-ovest`.
|
|
- `Shelly-Server` is now traced in OPNsense config as a static reservation and host entry:
|
|
- hostname `Shelly-Server`
|
|
- reserved IP `192.168.100.75`
|
|
- Kea workaround reservation MAC `02:0F:B5:73:E2:28`
|
|
- physical Shelly MAC `34:94:54:73:E2:28`
|
|
- live MQTT and HTTP diagnostics show the device is actually online at `192.168.100.127`
|
|
- the live Shelly web API reports the same factory MAC `34:94:54:73:E2:28`, so this does not look like an outdated reservation from a replaced unit
|
|
- local ARP for the live IP resolves to translated on-wire MAC `02:0F:B5:73:E2:28`
|
|
- the Kea workaround reservation was updated to the translated MAC so the device should become trackable once it renews DHCP
|
|
- One additional OPNsense ARP entry has a Shelly-looking OUI but did not behave like a Shelly web UI during probing:
|
|
- `192.168.100.114` / `34:94:54:34:1e:fc`
|
|
- Several remaining Home devices still rely on inferred MACs from entity IDs because they were not visible as live hosts during this pass.
|
|
- I was not able to complete the `casa` MCP correlation in this pass, so the `Casa IDs` column is left as `unverified`.
|
|
|
|
## Inventory
|
|
|
|
| Likely device | Model / type | Home IDs | Casa IDs | OPNsense IP | MAC | Network / Wi-Fi | Confidence | Notes |
|
|
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
| Shelly Pompa | Shelly EM (`SHEM`) | `switch.shelly_pompa_relay_0`, `sensor.shelly_pompa_power_0`, `sensor.shelly_pompa_power_1`, `update.shelly_pompa_firmware` | unverified | `192.168.100.76` | `24:4C:AB:41:6D:0C` | `vtnet0`, SSID `Salnove`, RSSI `-77` | confirmed | Confirmed by OPNsense host reservation, live HTTP UI, `/shelly`, `/status`, and `/settings`. Device name `Shelly-Pompa`. MQTT connected. Channel names: `Pompa`, `Sottosuolo`. |
|
|
| Shelly Server | Shelly EM / Shelly-family power meter | `switch.shelly_server_relay_0`, `sensor.shelly_server_power_0`, `sensor.shelly_server_power_1`, `update.shelly_server_firmware` | unverified | live `192.168.100.127`; reserved `192.168.100.75` | physical `34:94:54:73:E2:28`; effective LAN MAC `02:0F:B5:73:E2:28` | live on `Shellynet`, RSSI `-17` | confirmed | Home history, MQTT discovery, live MQTT telemetry, and direct HTTP all confirm this device is active. Kea reservation was updated to the effective LAN MAC as a workaround so the device should become trackable on `192.168.100.75` after DHCP renewal or reconnect. |
|
|
| Shelly Galleria | Shelly device, likely 2-channel energy monitor | `switch.shelly_galleria_relay_0`, `sensor.shelly_galleria_power_0`, `sensor.shelly_galleria_power_1`, `update.shelly_galleria_firmware` | unverified | not found | not found | not found | medium | Seen clearly in `home`. Current power sample was about `-3249 W` on ch0 and `3794 W` on ch1. No network match found. |
|
|
| Shelly 3EM 485519D91C40 | Shelly 3EM | `switch.shelly_3em_485519d91c40_relay_0`, `sensor.shelly_3em_485519d91c40_power_0`, `sensor.shelly_3em_485519d91c40_power_1`, `sensor.shelly_3em_485519d91c40_power_2`, `update.shelly_3em_485519d91c40_firmware` | unverified | not found | inferred `48:55:19:D9:1C:40` | not found | medium | Entity naming strongly suggests MAC suffix `485519D91C40`. Not present in current OPNsense ARP snapshot. Current power sample roughly `-2273 / -2606 / +633 W`. |
|
|
| Shelly Lorenzo | Shelly EM | `switch.shelly_em_c45bbee1e684_relay_0`, `sensor.shelly_em_c45bbee1e684_power_0`, `sensor.shelly_em_c45bbee1e684_power_1`, `update.shelly_em_c45bbee1e684_firmware` | unverified | not found | inferred `C4:5B:BE:E1:E6:84` | not found | medium | Home naming is clear. Current power sample roughly `-2614 / -2929 W`. Exact MAC not seen in OPNsense ARP. |
|
|
| Shelly EM 34945478061B | Shelly EM | `switch.shelly_em_34945478061b_relay_0`, `sensor.shelly_em_34945478061b_power_0`, `sensor.shelly_em_34945478061b_power_1`, `update.shelly_em_34945478061b_firmware` | unverified | `192.168.100.96` | `34:94:54:78:06:1B` | `vtnet0`, SSID `Meguka`, RSSI `-76` | confirmed | Confirmed by OPNsense host reservation, live ARP, and HTTP API. Device name is `shelly-pannello-ovest`; OPNsense description is `Shelly-Pannello-Ovest`. Channel 1 label is `pannello-ovest`. |
|
|
| Shelly EM EC64C9C6893B | Shelly EM | `switch.shelly_em_ec64c9c6893b_relay_0`, `sensor.shelly_em_ec64c9c6893b_power_0`, `sensor.shelly_em_ec64c9c6893b_power_1`, `update.shelly_em_ec64c9c6893b_firmware` | unverified | not found | inferred `EC:64:C9:C6:89:3B` | not found | medium | Device is currently `unavailable` in Home Assistant. Exact inferred MAC not seen in OPNsense ARP. |
|
|
| MaddoProd | Shelly EM | `switch.maddoprod_relay_0`, `sensor.maddoprod_power_0`, `sensor.maddoprod_power_1`, `update.maddoprod_firmware` | unverified | `192.168.100.62` | `24:4C:AB:41:87:35` | `vtnet0`, SSID `Reisen`, RSSI `-81` | confirmed | Confirmed by OPNsense host reservation, live ARP, and HTTP API. Device name is `MaddoProd`. Current power sample roughly `-7 W / 2899 W`. Secondary configured Wi-Fi SSID is `Top Gun 2 il ritorno`. |
|
|
| Pannelli AUX | Shelly EM | `switch.pannelli_aux_relay_0`, `sensor.pannelli_aux_power_0`, `sensor.pannelli_aux_power_1`, `update.pannelli_aux_firmware` | unverified | not found | inferred `34:94:54:73:CD:10` | not found | medium | Home naming is clear. Current power sample roughly `364 W / 0 W`. Exact MAC not seen in current ARP. |
|
|
| Batteria AUX | Shelly EM | `switch.batteria_aux_relay_0`, `sensor.batteria_aux_power_0`, `sensor.batteria_aux_power_1`, `update.batteria_aux_firmware` | unverified | not found | inferred `E8:68:E7:D2:65:F5` | not found | medium | Home naming is clear. Current power sample roughly `219 W / 0 W`. Exact MAC not seen in current ARP. |
|
|
| Unknown `34:94:54` device | unknown | none matched | unverified | `192.168.100.114` | `34:94:54:34:1E:FC` | `vtnet0` | low | The OUI looks like a possible Shelly-family vendor, but `/`, `/status`, `/shelly`, and `/rpc/...` did not identify it as Shelly. Keep as a candidate only. |
|
|
|
|
## Confirmed HTTP details for `192.168.100.76`
|
|
|
|
Directly retrieved from the device web API:
|
|
|
|
- Name: `Shelly-Pompa`
|
|
- Type: `SHEM`
|
|
- Hostname: `shellyem-244CAB416D0C`
|
|
- MAC: `244CAB416D0C`
|
|
- IP: `192.168.100.76`
|
|
- Wi-Fi SSID: `Salnove`
|
|
- RSSI: `-77`
|
|
- MQTT: connected
|
|
- Firmware: `20230913-114150/v1.14.0-gcb84623`
|
|
- Channel names:
|
|
- `Pompa`
|
|
- `Sottosuolo`
|
|
|
|
This is a strong match for the Home Assistant `Shelly Pompa` entity group.
|
|
|
|
## Confirmed HTTP details for `192.168.100.62`
|
|
|
|
Directly retrieved from the device web API:
|
|
|
|
- Name: `MaddoProd`
|
|
- Type: `SHEM`
|
|
- Hostname: `shellyem-244CAB418735`
|
|
- MAC: `244CAB418735`
|
|
- IP: `192.168.100.62`
|
|
- Wi-Fi SSID: `Reisen`
|
|
- Secondary Wi-Fi SSID: `Top Gun 2 il ritorno`
|
|
- RSSI: `-81`
|
|
- MQTT: connected
|
|
- Firmware: `20230913-114150/v1.14.0-gcb84623`
|
|
|
|
This is a strong match for the Home Assistant `maddoprod` entity group.
|
|
|
|
## Confirmed HTTP details for `192.168.100.96`
|
|
|
|
Directly retrieved from the device web API:
|
|
|
|
- Name: `shelly-pannello-ovest`
|
|
- Type: `SHEM`
|
|
- Hostname: `shellyem-34945478061B`
|
|
- MAC: `34945478061B`
|
|
- IP: `192.168.100.96`
|
|
- Wi-Fi SSID: `Meguka`
|
|
- RSSI: `-76`
|
|
- MQTT: connected
|
|
- Firmware: `20230913-114150/v1.14.0-gcb84623`
|
|
- Channel 1 label: `pannello-ovest`
|
|
|
|
This is a strong match for the Home Assistant `shelly_em_34945478061b` entity group and the OPNsense description `Shelly-Pannello-Ovest`.
|
|
|
|
## OPNsense reservation details for `Shelly-Server`
|
|
|
|
Directly retrieved from OPNsense `config.xml`:
|
|
|
|
- Host entry: `Shelly-Server.maddo.science`
|
|
- Reserved IP: `192.168.100.75`
|
|
- Current Kea workaround MAC: `02:0F:B5:73:E2:28`
|
|
- Physical Shelly MAC: `34:94:54:73:E2:28`
|
|
- Description: `Shelly-Server`
|
|
|
|
Live status during this pass:
|
|
|
|
- Home Assistant `sensor.shelly_server_power_0` updated every ~30 seconds for the last hour
|
|
- MQTT discovery identifies this device as `shellyem-34945473E228`
|
|
- MQTT discovery advertises control URL `http://192.168.100.127/`
|
|
- direct HTTP to `http://192.168.100.127/` succeeded
|
|
- live device details from `/settings` and `/status`:
|
|
- name `Shelly-Server`
|
|
- SSID `Shellynet`
|
|
- RSSI `-17`
|
|
- MQTT connected `true`
|
|
- channel labels `Server-1`, `Server-2`
|
|
- firmware `20230913-114150/v1.14.0-gcb84623`
|
|
- direct MQTT telemetry observed on `shellies/shellyem-34945473E228/emeter/...`
|
|
- `192.168.100.75` did not answer ping or HTTP during the same pass
|
|
|
|
That makes the identity mapping and live status both strong. The real fault is the mismatch between the live IP and the OPNsense reservation.
|
|
|
|
It also argues against the reservation MAC simply being stale from an old device replacement, because the live Shelly reports the same factory MAC as the one stored in OPNsense.
|
|
|
|
The active Kea workaround now reserves the same IP for the translated LAN-side MAC instead, with description `Shelly-Server via Shellynet extender workaround; physical MAC 34:94:54:73:e2:28`.
|
|
|
|
## MQTT findings for `Shelly-Server`
|
|
|
|
Broker-level diagnostics against the local `.local/mqtt-home.env` credentials confirmed:
|
|
|
|
- MQTT client ID / topic base: `shellyem-34945473E228`
|
|
- Home Assistant discovery prefix in use: `homeassistant/...`
|
|
- Shellies topic base in use: `shellies/shellyem-34945473E228/...`
|
|
- Availability model in discovery:
|
|
- `~online` topic with `true` / `false`
|
|
- `~info` JSON field `mqtt.connected`
|
|
- Live telemetry was observed for:
|
|
- `shellies/shellyem-34945473E228/emeter/0/power`
|
|
- `shellies/shellyem-34945473E228/emeter/0/reactive_power`
|
|
- `shellies/shellyem-34945473E228/emeter/0/pf`
|
|
- `shellies/shellyem-34945473E228/emeter/0/voltage`
|
|
- `shellies/shellyem-34945473E228/emeter/0/total`
|
|
- `shellies/shellyem-34945473E228/emeter/0/total_returned`
|
|
- `shellies/shellyem-34945473E228/emeter/1/...`
|
|
|
|
This proves Home Assistant is receiving live MQTT telemetry, not just stale retained state.
|
|
|
|
## Home Assistant groups used for correlation
|
|
|
|
Representative entity groups found in `home`:
|
|
|
|
- `shelly_pompa`
|
|
- `shelly_server`
|
|
- `shelly_galleria`
|
|
- `shelly_3em_485519d91c40`
|
|
- `shelly_em_c45bbee1e684`
|
|
- `shelly_em_34945478061b`
|
|
- `shelly_em_ec64c9c6893b`
|
|
- `maddoprod`
|
|
- `pannelli_aux`
|
|
- `batteria_aux`
|
|
|
|
## OPNsense findings worth keeping in mind
|
|
|
|
- Active Shelly-confirmed subnet: `192.168.100.0/24`
|
|
- Observed interface: `vtnet0`
|
|
- OPNsense static mappings were more useful than live ARP for `Shelly-Server`.
|
|
- For `Shelly-Server`, OPNsense reservation data was useful for identity but wrong for the current live IP.
|
|
- OPNsense ARP snapshot was incomplete relative to Home Assistant inventory.
|
|
- OPNsense-backed host reservations confirmed:
|
|
- `192.168.100.62` -> `shelly-maddoProd` / `24:4c:ab:41:87:35`
|
|
- `192.168.100.75` -> `Shelly-Server` / `34:94:54:73:e2:28`
|
|
- `192.168.100.76` -> `Shelly-Pompa` / `24:4c:ab:41:6d:0c`
|
|
- `192.168.100.96` -> `shellyem-34945478061b` / `34:94:54:78:06:1b`
|
|
- MQTT discovery confirmed that `Shelly-Server` is actually live at `192.168.100.127`.
|
|
- That usually means one or more of the following:
|
|
- the device is on a valid live IP that does not match the OPNsense reservation
|
|
- the reservation is stale, not applied, or not being served by the DHCP source the device is actually using
|
|
- OPNsense ARP visibility is incomplete because ARP only reflects neighbors the firewall itself has talked to
|
|
|
|
## Best next manual checks
|
|
|
|
1. Find which DHCP server actually handed out `192.168.100.127` to MAC `34:94:54:73:E2:28`.
|
|
2. Check the AP or controller for the `Shellynet` client entry for MAC `34:94:54:73:E2:28` and confirm its DHCP source.
|
|
3. Renew DHCP on the device or reboot it after fixing the intended reservation path, so it either takes `192.168.100.75` or the reservation is updated to `192.168.100.127`.
|
|
4. Decide whether the intended fix is: make OPNsense own the lease again, or update OPNsense to reflect the real addressing source. |