Diseñado y fabricado en Francia
🚚 Todos los pedidos realizados antes del 27 de septiembre ya se han enviado. Ahora estamos preparando los siguientes pedidos (27, 28 de septiembre…). Haremos todo lo posible para entregar lo antes posible.

Pylontech en Home Assistant

Su Pylon-Monitor habla Home Assistant de forma nativa: sin HACS, sin integración personalizada, nada que instalar en el dispositivo. Rellene 4 campos y los sensores aparecen solos (autodescubrimiento MQTT), o pegue un bloque YAML REST ya preparado si no tiene broker. Todo se queda en su red local.

Lo que necesita

1Un Pylon-MonitorConectado al puerto CONSOLE de la batería maestra — cualquier modelo, con pantalla o Lite.
2Home AssistantCualquier instalación reciente: HA OS, Supervised, Container o Core.
35 minutosY el complemento Mosquitto broker si elige la opción 1 (MQTT).
Panel de una batería Pylontech maestra: el cable RJ45 del puerto CONSOLE alimenta el Pylon-Monitor, mientras que el cable de encadenado sale del LINK PORT 1 hacia la batería esclava
En la batería maestra: CONSOLE al Pylon-Monitor, LINK PORT 1 a la batería esclava.
El error que comete casi todo el mundo: LINK PORT 1, no LINK PORT 0
El cable que encadena la batería maestra con la primera esclava debe salir del LINK PORT 1 de la maestra, nunca del LINK PORT 0. Se conecta al LINK PORT 0 de la esclava, y cada batería siguiente repite el mismo esquema 1 → 0. Al revés, la maestra nunca ve el resto de la pila y el Pylon-Monitor solo mostrará una batería, por muchas que tengas.

Elija su integración

Las dos opciones se configuran en la página Settings del dispositivo (http://pylon-monitor.local/settings o http://<IP-DISPOSITIVO>/settings). Elija una: son independientes.

Opción 2

API REST

No necesita broker. Home Assistant lee directamente el endpoint JSON integrado /api.json. La página Settings del dispositivo escribe el YAML por usted, con su IP y su número de baterías ya rellenados.

Usted hace: pegar el YAML en configuration.yaml y reiniciar
HA recibe: 6 sensores, más SOH y ciclos de cada batería
Actualización: Home Assistant consulta cada 30 s
Configurar la opción 2 ↓
Encontrar su dispositivo. En un modelo con pantalla, la dirección IP y pylon-monitor.local aparecen en la parte inferior de la pantalla. En la Lite (sin pantalla), abra http://pylon-monitor.local o busque «pylon-monitor» en la lista de dispositivos conectados de su router. Para una integración a prueba de todo, dele una dirección fija: una reserva DHCP en el router (recomendado) o la tarjeta Static IP de la página Settings.

Opción 1 — Autodescubrimiento MQTT

Recomendada si usa el complemento Mosquitto broker en Home Assistant. En cuanto el dispositivo se conecta al broker, publica los mensajes de descubrimiento estándar en homeassistant/sensor/… y los sensores aparecen en Ajustes → Dispositivos y servicios → MQTT en pocos segundos, agrupados bajo un único dispositivo llamado Pylon-Monitor.

1. Rellene 4 campos en el dispositivo

En la página Settings del dispositivo, busque la tarjeta Home Assistant — MQTT y rellene estos campos (etiquetas tal como las muestra el dispositivo):

Broker IP<IP de su Home Assistant>
Port1883
Usernamemqtt-pylon
New password•••••••• (su contraseña)
Página Settings del Pylon-Monitor — tarjeta Home Assistant MQTT con Broker IP, Port, Username y contraseña

Pulse Save changes. Unos segundos después, la línea Home Assistant (MQTT) del panel del dispositivo muestra Connected y se crean los sensores de abajo, sin configurar ninguna entidad a mano. Para desactivar MQTT, vacíe Broker IP y guarde.

¿Qué usuario y contraseña? El complemento Mosquitto acepta cuentas de usuario de Home Assistant. Cree una dedicada (Ajustes → Personas → Añadir persona, active «Permitir inicio de sesión», p. ej. mqtt-pylon) y úsela aquí en lugar de su cuenta de administrador. La IP del broker es simplemente la de su Home Assistant cuando Mosquitto funciona en él.

2. Los sensores creados en Home Assistant

El nombre del dispositivo (por defecto pylon-monitor, modificable en Settings) sirve de prefijo de los topics. Si lo ha cambiado, sustituya pylon-monitor por el suyo.

Sensor en Home AssistantTopic de descubrimientoUnidad / tipo
Battery SOChomeassistant/sensor/pylon-monitor/soc/config% · battery
Battery SOHhomeassistant/sensor/pylon-monitor/soh/config% · mdi:battery-heart-variant
Battery voltagehomeassistant/sensor/pylon-monitor/voltage/configV · voltage
Battery currenthomeassistant/sensor/pylon-monitor/current/configA · current
Battery powerhomeassistant/sensor/pylon-monitor/power/configW · power
Battery temphomeassistant/sensor/pylon-monitor/temp/config°C · temperature
MOSFET temphomeassistant/sensor/pylon-monitor/mostemp/config°C · temperature
Charge cycleshomeassistant/sensor/pylon-monitor/cycles/configmdi:counter
Battery statehomeassistant/sensor/pylon-monitor/state/configmdi:battery-sync
Cell imbalancehomeassistant/sensor/pylon-monitor/celldelta/configmV · mdi:scale-balance
Battery counthomeassistant/sensor/pylon-monitor/units/configmdi:battery-multiple

Todos leen su valor de un único topic de estado retenido, actualizado tras cada lectura de la batería:

pylon-monitor/state

El mensaje combinado tiene este aspecto:

{
  "soc": 94,
  "soh": 96,
  "voltage": 48.62,
  "current": -7.20,
  "power": -350.1,
  "temp": 23.4,
  "mostemp": 28.1,
  "cycles": 486,
  "celldelta": 12,
  "units": 2,
  "state": "Discharging",
  "hw": "gen2",
  "pack": "lv"
}

3. ¿Varias baterías? Sensores para cada una

En cuanto su pack tiene más de una batería Pylontech, el dispositivo crea además 5 sensores por batería — Battery 1 SOC, Battery 1 SOH, Battery 1 cycles, Battery 1 voltage, Battery 1 state, luego Battery 2, 3… — cada uno en su propio topic (pylon-monitor/battery1/state, pylon-monitor/battery2/state…). Ideal para detectar la batería que envejece más rápido que las demás.

pylon-monitor/battery1/state
{ "voltage": 48.61, "current": -3.60, "power": -175.0, "soc": 94, "soh": 97,
  "cycles": 480, "charge_cnt": 391, "discharge_cnt": 0, "state": "Discharging",
  "model": "US3000C", "bms_sw": "…", "serial": "…",
  "cell_min_mv": 3238, "cell_max_mv": 3247, "cell_delta_mv": 9, "cell_count": 15 }

Estos sensores llevan además atributos, visibles en la ficha de cada sensor: modelo de la batería, versión del BMS, número de serie y — una vez leídas las celdas — tensión de celda más baja, más alta y la diferencia entre ambas. Así se distingue «Battery 3» de «Battery 4» sin entidades adicionales.

El dispositivo mantiene también un topic de disponibilidad con «Last Will»: si pierde la alimentación o el WiFi, cada sensor pasa a «no disponible» en Home Assistant en lugar de quedarse congelado en silencio en su último valor.

pylon-monitor/status  →  "online" (retained)  |  "offline" (Last Will, retained)

Opción 2 — API REST

No necesita broker MQTT. La integración rest incluida en Home Assistant lee el dispositivo cada 30 segundos. Lo más fácil: copie el bloque de la tarjeta Home Assistant — REST de la página Settings: ya contiene su IP y un par SOH + ciclos para cada batería realmente detectada. La versión de abajo es la misma plantilla para un pack de 2 baterías. Desde el firmware 3.4.0 (Lite 1.1.0, generación 1: 3.1), /api.json exige su clave de acceso — el bloque copiado desde el dispositivo ya incluye ?key=…. Si configuró REST antes de actualizar, añada ?key=<su Access key> (Settings → Public JSON access) a la línea resource:. MQTT no cambia.

Página Settings del Pylon-Monitor — bloque YAML REST generado con la IP del dispositivo

El JSON que devuelve el dispositivo

GET http://<DEVICE-IP>/api.json?key=<ACCESS-KEY>

{
  "system": "pylon-monitor",
  "firmware": "3.3.2",
  "hw": "gen2",
  "battery_link": true,
  "summary": {
    "soc": 94,
    "voltage": 48.62,
    "current": -7.20,
    "power": -350.10,
    "state": "Discharging",
    "units": 2
  },
  "health": {
    "soh": 96,
    "cycles": 486,
    "charge_cnt": 782,
    "discharge_cnt": 0
  },
  "unitsDetail": [
    { "soc": 94, "soh": 97, "cycles": 480, "model": "US3000C", "...": "..." },
    { "soc": 94, "soh": 95, "cycles": 492, "model": "US3000C", "...": "..." }
  ]
}

Recortado para facilitar la lectura: la respuesta completa también contiene temps, cells, alarms y net, y unitsDetail da tensión, corriente, SOC, SOH, ciclos, modelo y número de serie de cada batería (presente cuando el pack tiene varias). Atención: el SOH está bajo health, no bajo summary, un error clásico al copiar y pegar.

Pegue esto en configuration.yaml

# Access key: device Settings > Public JSON access (required since
# firmware 3.4.0 / Lite 1.1.0 / gen. 1 3.1). The block generated by the
# device's own Settings page already contains it.
rest:
  - resource: http://<DEVICE-IP>/api.json?key=<ACCESS-KEY>
    scan_interval: 30
    sensor:
      - name: "Pylontech SOC"
        unique_id: pylontech_soc
        value_template: "{{ value_json.summary.soc }}"
        unit_of_measurement: "%"
        device_class: battery
        state_class: measurement
      - name: "Pylontech SOH"
        unique_id: pylontech_soh
        value_template: "{{ value_json.health.soh }}"
        unit_of_measurement: "%"
        state_class: measurement
      - name: "Pylontech Voltage"
        unique_id: pylontech_voltage
        value_template: "{{ value_json.summary.voltage }}"
        unit_of_measurement: "V"
        device_class: voltage
        state_class: measurement
      - name: "Pylontech Current"
        unique_id: pylontech_current
        value_template: "{{ value_json.summary.current }}"
        unit_of_measurement: "A"
        device_class: current
        state_class: measurement
      - name: "Pylontech Power"
        unique_id: pylontech_power
        value_template: "{{ value_json.summary.power }}"
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
      - name: "Pylontech State"
        unique_id: pylontech_state
        value_template: "{{ value_json.summary.state }}"
      # One SOH + cycles pair per battery (only on a pack of 2 or more):
      - name: "Pylontech Battery 1 SOH"
        unique_id: pylontech_battery1_soh
        value_template: "{{ value_json.unitsDetail[0].soh }}"
        unit_of_measurement: "%"
        state_class: measurement
      - name: "Pylontech Battery 1 cycles"
        unique_id: pylontech_battery1_cycles
        value_template: "{{ value_json.unitsDetail[0].cycles }}"
        state_class: measurement
      - name: "Pylontech Battery 2 SOH"
        unique_id: pylontech_battery2_soh
        value_template: "{{ value_json.unitsDetail[1].soh }}"
        unit_of_measurement: "%"
        state_class: measurement
      - name: "Pylontech Battery 2 cycles"
        unique_id: pylontech_battery2_cycles
        value_template: "{{ value_json.unitsDetail[1].cycles }}"
        state_class: measurement
configuration.yaml de Home Assistant con los sensores REST del Pylon-Monitor

Reinicie Home Assistant (Herramientas para desarrolladores → Reiniciar). Los sensores aparecen en Ajustes → Dispositivos y servicios → Entidades: busque pylontech.

Tarjeta de indicador de Home Assistant con el sensor SOC de Pylontech
No use las opciones 1 y 2 a la vez: tendría cada valor duplicado. MQTT ya cubre todo lo que hace REST, y más; elija una y manténgala.

Panel de energía

Para una batería, el panel de energía de Home Assistant espera dos contadores en kWh: la energía cargada y la energía descargada. El Pylon-Monitor da la potencia de la batería en W (positiva = carga, negativa = descarga), así que los crea una sola vez con ayudantes:

  1. Separe la potencia en dos con dos sensores de plantilla: potencia de carga = la parte positiva, potencia de descarga = la parte negativa convertida en positiva.
  2. Convierta cada una en kWh con un ayudante Integral (suma de Riemann), prefijo «k», método «Izquierda».
  3. En Ajustes → Paneles → Energía, sección Almacenamiento en batería, añada los dos contadores: energía que entra, energía que sale.

Lo mismo en YAML (nombres de las entidades MQTT; con la opción 2 use sensor.pylontech_power):

template:
  - sensor:
      - name: "Battery charge power"
        unique_id: pylontech_charge_power
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
        state: "{{ [states('sensor.pylon_monitor_battery_power') | float(0), 0] | max }}"
      - name: "Battery discharge power"
        unique_id: pylontech_discharge_power
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
        state: "{{ [0 - (states('sensor.pylon_monitor_battery_power') | float(0)), 0] | max }}"

sensor:
  - platform: integration
    source: sensor.battery_charge_power
    name: "Battery energy in"
    unique_id: pylontech_energy_in
    unit_prefix: k
    round: 2
    method: left
  - platform: integration
    source: sensor.battery_discharge_power
    name: "Battery energy out"
    unique_id: pylontech_energy_out
    unit_prefix: k
    round: 2
    method: left

Compruebe el nombre exacto de su sensor de potencia en Ajustes → Entidades (busque «power»): cambia si ha renombrado el dispositivo o tiene varios Pylon-Monitor.

Aviso de batería baja

Una notificación en su móvil en cuanto la batería baja del 20 %:

alias: "Pylontech batería baja"
triggers:
  - trigger: numeric_state
    entity_id: sensor.pylon_monitor_battery_soc
    below: 20
actions:
  - action: notify.notify
    data:
      message: "Batería Pylontech al {{ states('sensor.pylon_monitor_battery_soc') }} %"

La misma idea con Battery state, Cell imbalance (por ejemplo, por encima de 50 mV) o con sensores no disponibles durante más de 10 minutos, señal de que el dispositivo está desconectado.

Node-RED, Jeedom y otros

Node-RED — un nodo http request, método GET, URL http://<IP-DISPOSITIVO>/api.json?key=<ACCESS-KEY>, retorno «a parsed JSON object», y luego lea msg.payload.summary.soc (o cualquier otro campo). Con MQTT configurado, un nodo mqtt in en pylon-monitor/state es aún más sencillo: sin sondeo.

Jeedom — instale el plugin JSON, apunte un equipo a http://<IP-DISPOSITIVO>/api.json?key=<ACCESS-KEY> y asocie las rutas a comandos (p. ej. summary>soc, summary>voltage, summary>state).

Todo lo demás — openHAB, ioBroker, Domoticz, EVCC o sus propios scripts: todo lo que lee MQTT o un endpoint JSON por HTTP funciona, con los mismos topics y el mismo /api.json.

Preguntas

¿Funciona con la Lite (sin pantalla)?

Sí. El autodescubrimiento MQTT y la API REST forman parte del firmware de todos los modelos: con pantalla, Lite, primera y segunda generación. Solo cambia cómo encontrar la IP: pylon-monitor.local o la lista de dispositivos del router.

Mis sensores REST dejaron de estar disponibles tras una actualización del firmware — ¿por qué?

Desde el firmware 3.4.0 (Lite 1.1.0, generación 1: 3.1) el dispositivo pide una contraseña que usted crea en el primer acceso, y <code>/api.json</code> necesita su clave de acceso: la normativa europea de ciberseguridad para objetos conectados (directiva RED, EN 18031) obliga ahora a proteger cada dispositivo. Abra el dispositivo una vez en un navegador para crear su contraseña, añada <code>?key=&lt;Access key&gt;</code> (<em>Settings → Public JSON access</em>) a su línea <code>resource:</code> y reinicie Home Assistant. Los sensores MQTT siguen funcionando sin cambios.

¿Necesito internet o el Cloud de Pylon-Monitor?

No. Home Assistant se comunica directamente con el dispositivo en su red local. El Cloud gratuito es opcional: solo añade acceso remoto e historial a largo plazo.

Tengo varias baterías: ¿veo cada una?

Sí. Con MQTT el dispositivo crea 5 sensores por batería (SOC, SOH, ciclos, tensión, estado), con modelo y número de serie como atributos. Con REST, el YAML generado añade SOH y ciclos de cada batería.

¿Cada cuánto se actualizan los valores?

Tras cada lectura de la batería: cada 60 segundos por defecto, ajustable de 30 a 300 segundos con el ajuste Battery polling de la página Settings. Con REST, Home Assistant consulta cada 30 segundos.

Mis sensores dicen «no disponible»: ¿qué compruebo?

Es la señal de disponibilidad haciendo su trabajo: el dispositivo ya no está conectado al broker (corte de luz, WiFi, broker reiniciado). Abra la página del dispositivo: la línea Home Assistant (MQTT) indica Connected u Offline. Reintenta solo cada 10 segundos.

¿Puede Home Assistant controlar la batería?

No, a propósito: la integración solo ofrece sensores de lectura. Nada en Home Assistant puede cambiar un ajuste de su batería o de su BMS.

¿Necesito HACS o una integración personalizada?

No. El autodescubrimiento MQTT y la integración REST forman parte del propio Home Assistant. Solo hay que instalar el complemento Mosquitto, y únicamente si elige MQTT.

¿Todavía sin Pylon-Monitor?

Conéctelo al puerto CONSOLE, únalo a su WiFi y su Pylontech aparece en Home Assistant. V2 con pantalla 59 €, Lite sin pantalla 49 €.

Guía completa de MQTT y REST →