Shelly EM publicando su consumo por MQTT a un broker Mosquitto y de ahí a Home Assistant

Cómo integrar el Shelly EM en Home Assistant por MQTT

Nos llega una consulta muy habitual entre quienes montan su propio panel de consumo: «tengo un Shelly EM midiendo la casa y quiero verlo en Home Assistant por MQTT, pero no sé por dónde empezar… y he leído que al activarlo pierdo la app de Shelly». Las dos cosas son ciertas y tienen solución. En esta guía vas de principio a fin: cuándo MQTT merece la pena, cómo activarlo en el EM, qué publica exactamente y cómo crear los sensores en Home Assistant para que el consumo aparezca bien en el Panel de Energía.

Antes de nada: ¿MQTT o la integración nativa?

Comparación entre integrar el Shelly EM en Home Assistant con la integración nativa CoIoT (automática, conserva la nube) o con MQTT (necesita broker, sensores manuales, desactiva la nube)

Hay dos caminos para meter un Shelly EM en Home Assistant, y conviene elegir con la cabeza fría. La integración nativa (por CoIoT en los equipos Gen1) la detecta Home Assistant prácticamente sola: no hay que escribir nada de YAML y, muy importante, conserva la app y la nube de Shelly. Es la vía rápida para la mayoría.

La vía MQTT tiene sentido cuando ya corres un broker en casa (por ejemplo el add-on Mosquitto de Home Assistant), quieres todo tu smart home hablando MQTT, o necesitas una estructura de topics concreta para compartir el dato con otro sistema. A cambio, defines los sensores a mano y —en el EM Gen1— renuncias a la nube de Shelly. Como esta es la opción que más dudas genera, es la que desarrollamos aquí.

Activar MQTT en el Shelly EM (y qué pierdes)

Pasos para activar MQTT en el Shelly EM Gen1: Internet & Security, Advanced Developer Settings, apuntar al broker Mosquitto con IP, usuario y contraseña; aviso de que desactiva la nube de Shelly

El proceso, desde la web del propio equipo, es corto: entra a la IP del Shelly EM en el navegador, ve a Internet & Security > Advanced — Developer Settings y activa la opción de ejecutar acciones por MQTT. Introduce la IP de tu broker Mosquitto, el usuario y la contraseña, deja el puerto en 1883 y guarda. A partir de ahí el EM empieza a publicar, con el prefijo por defecto shellies/shellyem-<id>.

El aviso importante, y por eso lo decimos antes de que lo montes: en el Shelly EM Gen1, activar MQTT desactiva la nube de Shelly. No hace las dos cosas a la vez. Eso significa que pierdes el control remoto desde la app Shelly cuando estás fuera de casa y el histórico que se guarda en Shelly Cloud. Dentro de tu red local y dentro de Home Assistant sigue funcionando todo con normalidad. Si dependes de la app en remoto, piénsalo antes de dar el paso; si tu objetivo es justamente centralizarlo todo en Home Assistant, no lo echarás de menos.

Qué publica el Shelly EM por MQTT

Árbol de topics MQTT del Shelly EM bajo shellies/shellyem-id: emeter/0/power, voltage, reactive_power, total, energy y relay/0; aviso de usar total y no energy para el panel de energía

El EM publica cada medida en su propio topic, bajo el prefijo shellies/shellyem-<id>/, donde <id> es la parte hexadecimal del identificador del equipo. Para el canal 0 (el canal 1 es idéntico cambiando /0/ por /1/):

  • emeter/0/power — potencia activa en vatios (W).
  • emeter/0/voltage — tensión en voltios (V).
  • emeter/0/reactive_power — potencia reactiva (VAR).
  • emeter/0/total — energía acumulada en Wh, persiste tras los reinicios.
  • emeter/0/energy — energía desde el último arranque en W·min, se reinicia al reiniciar el equipo.
  • relay/0 y relay/0/command — estado del relé y la orden para conmutarlo.

El EM también publica la energía devuelta (returned_energy) —porque mide en los dos sentidos y distingue lo que consumes de lo que viertes a la red— y un topic de estado de conexión. Recuerda que cada pinza es un canal: emeter/0 y emeter/1 son las dos líneas que estés midiendo.

El detalle que más cuenta: para un contador de consumo usa total, no energy. total está en Wh y sobrevive a los reinicios; basta dividirlo entre 1000 para pasarlo a kWh. energy se pone a cero cada vez que el equipo arranca, así que no sirve para llevar la cuenta.

Crear los sensores en Home Assistant

Ejemplos de sensor MQTT en Home Assistant para el Shelly EM: uno de potencia instantánea en W y otro de energía acumulada en kWh con device_class energy y state_class total_increasing para el panel de energía

Con el broker recibiendo datos, en Home Assistant defines dos clases de sensor. El primero, la potencia instantánea en vatios, para ver el consumo en vivo; apunta al topic …/emeter/0/power con device_class: power y unidad W. El segundo, la energía acumulada en kWh, que es la que alimenta el Panel de Energía; apunta al topic …/emeter/0/total, divídelo entre 1000 con un value_template, pon unidad kWh, device_class: energy y —la clave— state_class: total_increasing.

Esa combinación (device_class: energy + state_class: total_increasing sobre total) es lo que hace que Home Assistant sume el consumo por horas, días y meses en el Panel de Energía. La potencia en W no sirve para ese panel: es solo para ver el instante y para automatizaciones. Repite el bloque con /1/ si usas también la segunda pinza.

Errores frecuentes

  • Usar energy en el Panel de Energía. Al reiniciarse el contador, el panel ve una caída a cero y descuadra. Usa siempre total.
  • Olvidar state_class: total_increasing. Sin él, Home Assistant no ofrece el sensor en el Panel de Energía.
  • Esperar seguir usando la app en remoto. En Gen1, MQTT y nube son excluyentes. Asúmelo antes de activarlo.
  • Confundir las unidades. power está en W; total en Wh (÷1000 → kWh); energy en W·min. No mezcles conversiones.

Preguntas frecuentes

¿Pierdo la app de Shelly al activar MQTT?

En el Shelly EM Gen1, sí: MQTT y la nube de Shelly no conviven. Pierdes el control remoto desde la app y el histórico en Shelly Cloud, pero en tu red local y en Home Assistant sigue funcionando todo.

¿Qué topic uso para el Panel de Energía de Home Assistant?

El de total (en Wh), dividido entre 1000 para pasarlo a kWh, con device_class: energy y state_class: total_increasing. No uses energy, que se reinicia con cada arranque.

¿Necesito un broker MQTT?

Sí. El EM publica, pero alguien tiene que recibir: un broker como Mosquitto (el add-on oficial de Home Assistant sirve perfectamente). El EM apunta a su IP, usuario y contraseña, y Home Assistant se suscribe.

¿No era más fácil la integración nativa?

Para la mayoría, sí: la integración nativa de Shelly en Home Assistant (por CoIoT en Gen1) lo detecta sin YAML y conserva la app. MQTT es la opción para quien ya tiene un broker o quiere controlar la estructura de topics.

¿El Shelly EM mide el excedente solar?

Sí. Mide en los dos sentidos, así que distingue lo que consumes de lo que viertes a la red, y publica la energía devuelta (returned_energy). Es uno de los motivos por los que se usa tanto en instalaciones con placas.

¿Dónde encuentro el del equipo para los topics?

Es la parte hexadecimal del identificador del Shelly, visible en su web. El prefijo por defecto es shellies/shellyem-<id>; si lo prefieres, puedes fijar un prefijo propio al activar MQTT.

¿Y si tengo un EM Gen3 o un equipo Plus/Pro?

Esos equipos (Gen2 y posteriores) hablan MQTT con una estructura distinta, basada en RPC, no en shellies/…. Para ellos la integración nativa de Home Assistant (por WebSocket RPC) es aún más directa; MQTT sigue siendo opcional.

Resumen y productos

  • Shelly EM — el medidor Wi-Fi de dos canales con pinza de 50 A, protagonista de esta guía. Mide en los dos sentidos.
  • Shelly EM Gen3 — la generación actual, si partes de cero: añade Bluetooth, scripting y carril DIN, y habla MQTT en estructura RPC.

Si quieres, te ayudamos a dejar los sensores y el Panel de Energía funcionando con tu caso concreto —una o dos pinzas, con o sin placas solares—. Soporte técnico en español y envío desde España.


Dejar un comentario

Por favor tenga en cuenta que los comentarios deben ser aprobados antes de ser publicados

Este sitio está protegido por hCaptcha y se aplican la Política de privacidad de hCaptcha y los Términos del servicio.