Pylontech in Home Assistant, MQTT, JSON and Jeedom
The cloud is for when you are away. At home, PylonCheck hands its data straight to your own system over your network — no cloud, no account, and it keeps working if the internet is down.
MQTT auto-discovery: zero YAML
Enter your broker address (and username / password if any) on the box's Settings page. Within seconds Home Assistant creates a PylonCheck device with its sensors:
- State of charge, State of Health, cycle count
- Voltage, current, power
- Battery and BMS / MOSFET temperature
- Charging state, number of batteries, cell imbalance (mV)
- An online / offline availability signal
rest integration too.Topics
All topics are retained, so a subscriber that starts later gets the latest values at once. The prefix is the box's hostname (default pylon-check).
pylon-check/status online | offline (retained, last will)
pylon-check/state whole stack: soc, voltage, current, power, state…
pylon-check/battery1/state battery 1 of the stack
pylon-check/battery2/state battery 2 …
homeassistant/sensor/pylon-check/…/config auto-discovery (retained)Each state payload is a JSON object with the same fields as the API below, so the same template works everywhere.
One GET, the whole battery
GET http://pylon-check.local/api.json (or the box IP) returns the full state. Shortened example:
{
"system": { "firmware": "1.0.1", "uptime": 86400 },
"battery_link": true,
"summary": { "soc": 87, "voltage": 52.41, "current": 23.5,
"power": 1231.6, "state": "Charging", "units": 3 },
"health": { "soh": 98, "cycles": 412 },
"temps": { "battery": 24.0, "mosfet": 26.5, "low": 23.0, "high": 25.1 },
"cells": { "count": 15, "min": 3271, "max": 3280, "delta": 9,
"mv": [3274, 3276, 3271, "…"] },
"unitsDetail": [
{ "label": "Battery 1", "voltage": 52.41, "current": 7.9,
"soc": 87, "soh": 98, "cycles": 412, "state": "Charging" }
]
}An optional access key can be set in Settings; the API is then read with ?key=…. Values are refreshed every few seconds.
Home Assistant REST example
# configuration.yaml — only needed if you prefer REST to MQTT
rest:
- resource: http://pylon-check.local/api.json
scan_interval: 30
sensor:
- name: "Pylontech SOC"
value_template: "{{ value_json.summary.soc }}"
unit_of_measurement: "%"
device_class: battery
- name: "Pylontech power"
value_template: "{{ value_json.summary.power }}"
unit_of_measurement: "W"
device_class: power
- name: "Pylontech cell spread"
value_template: "{{ value_json.cells.delta }}"
unit_of_measurement: "mV"Jeedom, Node-RED, openHAB, Domoticz
Jeedom
Install the jMQTT plugin, point it at your broker and subscribe to pylon-check/#: the stack and each battery appear as equipment. Or use the Script plugin on the JSON API.
Node-RED
An mqtt in node on pylon-check/state, or an http request node on /api.json every 30 seconds.
openHAB, Domoticz, ioBroker
Any system that speaks MQTT or reads JSON over HTTP can use PylonCheck. Nothing is proprietary.
Questions
Does Home Assistant need the PylonCheck cloud?
No. Home Assistant reads the box directly on your network. The cloud and Home Assistant can run at the same time.
Do I need to write YAML?
No, with MQTT auto-discovery the sensors appear by themselves. YAML is only needed if you choose the REST integration instead.
Does it replace the inverter integration in Home Assistant?
It complements it: the inverter gives you the power flows, PylonCheck gives you what the battery itself knows — SOH, cells, temperatures, per-battery detail.
Can I get each battery of the stack as separate sensors?
Yes. Each battery has its own MQTT topic, and the JSON API lists them one by one.
Your battery, from anywhere. For 39 €.
Cloud dashboard, history, alerts, Home Assistant and MQTT included. No subscription.