Wat je nodig hebt

De kabel die uw master-accu met de eerste slave verbindt, moet vertrekken vanaf LINK PORT 1 op de master — nooit vanaf LINK PORT 0. Hij gaat in LINK PORT 0 van de slave, en elke volgende accu herhaalt hetzelfde patroon 1 → 0. Andersom aangesloten ziet de master de rest van de stapel nooit en toont de Pylon-Monitor altijd maar één accu.
Kies je integratie
Beide opties stel je in op de Settings-pagina van het apparaat (http://pylon-monitor.local/settings of http://<APPARAAT-IP>/settings). Kies er één — ze zijn onafhankelijk.
MQTT auto-discovery
Je gebruikt de Mosquitto-broker in Home Assistant. De Pylon-Monitor meldt zijn sensoren zelf aan en Home Assistant maakt ze automatisch aan. Geen YAML.
Optie 1 instellen ↓REST API
Geen broker nodig. Home Assistant leest het ingebouwde JSON-eindpunt /api.json rechtstreeks. De Settings-pagina van het apparaat schrijft de YAML voor je, met je IP en je aantal batterijen al ingevuld.
pylon-monitor.local onderaan het scherm. Op de Lite (zonder scherm) open je http://pylon-monitor.local, of zoek je „pylon-monitor” in de lijst met verbonden apparaten van je router. Voor een ijzersterke integratie geef je het een vast adres: een DHCP-reservering in je router (aanbevolen) of de kaart Static IP op de Settings-pagina.Optie 1 — MQTT auto-discovery
Aanbevolen als je de add-on Mosquitto broker in Home Assistant gebruikt. Zodra het apparaat met de broker verbonden is, publiceert het standaard discovery-berichten op homeassistant/sensor/… en verschijnen de sensoren binnen enkele seconden onder Instellingen → Apparaten & diensten → MQTT, gegroepeerd onder één apparaat genaamd Pylon-Monitor.
1. Vul 4 velden in op het apparaat
Zoek op de Settings-pagina van het apparaat de kaart Home Assistant — MQTT en vul deze velden in (labels precies zoals het apparaat ze toont):
Klik op Save changes. Een paar seconden later toont de regel Home Assistant (MQTT) op het dashboard van het apparaat Connected en worden de sensoren hieronder aangemaakt — geen entiteit om met de hand in te stellen. MQTT uitzetten: maak Broker IP leeg en sla op.
mqtt-pylon) en gebruik die hier in plaats van je beheerdersaccount. Het broker-IP is gewoon het IP van je Home Assistant als Mosquitto daarop draait.2. De sensoren in Home Assistant
De apparaatnaam (standaard pylon-monitor, aan te passen in Settings) dient als topic-prefix. Heb je hem veranderd, vervang dan pylon-monitor hieronder door die van jou.
| Sensor in Home Assistant | Discovery-topic | Eenheid / type |
|---|---|---|
| Battery SOC | homeassistant/sensor/pylon-monitor/soc/config | % · battery |
| Battery SOH | homeassistant/sensor/pylon-monitor/soh/config | % · mdi:battery-heart-variant |
| Battery voltage | homeassistant/sensor/pylon-monitor/voltage/config | V · voltage |
| Battery current | homeassistant/sensor/pylon-monitor/current/config | A · current |
| Battery power | homeassistant/sensor/pylon-monitor/power/config | W · power |
| Battery temp | homeassistant/sensor/pylon-monitor/temp/config | °C · temperature |
| MOSFET temp | homeassistant/sensor/pylon-monitor/mostemp/config | °C · temperature |
| Charge cycles | homeassistant/sensor/pylon-monitor/cycles/config | mdi:counter |
| Battery state | homeassistant/sensor/pylon-monitor/state/config | mdi:battery-sync |
| Cell imbalance | homeassistant/sensor/pylon-monitor/celldelta/config | mV · mdi:scale-balance |
| Battery count | homeassistant/sensor/pylon-monitor/units/config | mdi:battery-multiple |
Ze lezen allemaal hun waarde uit één bewaard (retained) state-topic, bijgewerkt na elke uitlezing van de batterij:
pylon-monitor/state
Het gecombineerde bericht ziet er zo uit:
{
"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. Meerdere batterijen? Sensoren voor elke batterij
Zodra je pack meer dan één Pylontech-batterij heeft, maakt het apparaat ook 5 sensoren per batterij aan — Battery 1 SOC, Battery 1 SOH, Battery 1 cycles, Battery 1 voltage, Battery 1 state, dan Battery 2, 3… — elk op een eigen topic (pylon-monitor/battery1/state, pylon-monitor/battery2/state…). Ideaal om de batterij te spotten die sneller veroudert dan de rest.
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 }
Deze sensoren hebben ook attributen, zichtbaar in het detailvenster van elke sensor: batterijmodel, BMS-versie, serienummer en — zodra de cellen zijn uitgelezen — laagste en hoogste celspanning en het verschil daartussen. Zo onderscheid je „Battery 3” van „Battery 4” zonder extra entiteiten.
Het apparaat houdt ook een beschikbaarheids-topic bij met een „Last Will”: verliest het stroom of wifi, dan wordt elke sensor in Home Assistant „niet beschikbaar” in plaats van stilletjes op de laatste waarde te blijven staan.
pylon-monitor/status → "online" (retained) | "offline" (Last Will, retained)
Optie 2 — REST API
Geen MQTT-broker nodig. De ingebouwde rest-integratie van Home Assistant leest het apparaat elke 30 seconden uit. Het makkelijkst: kopieer het blok uit de kaart Home Assistant — REST van de Settings-pagina — daar staan je IP en een paar SOH + cycli voor elke daadwerkelijk gevonden batterij al in. De versie hieronder is hetzelfde sjabloon voor een pack met 2 batterijen. Sinds firmware 3.4.0 (Lite 1.1.0, generatie 1: 3.1) vereist /api.json uw toegangssleutel — het blok dat u uit het apparaat kopieert bevat ?key=… al. Hebt u REST vóór de update ingesteld, voeg dan ?key=<uw Access key> (Settings → Public JSON access) toe aan de regel resource:. MQTT verandert niet.
De JSON die het apparaat teruggeeft
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", "...": "..." }
]
}
Ingekort voor de leesbaarheid: het volledige antwoord bevat ook temps, cells, alarms en net, en unitsDetail geeft spanning, stroom, SOC, SOH, cycli, model en serienummer van elke batterij (aanwezig als het pack er meerdere heeft). Let op: SOH staat onder health, niet onder summary — een klassieke copy-paste-fout.
Plak dit in 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
Herstart Home Assistant (Ontwikkelhulpmiddelen → Herstarten). De sensoren verschijnen onder Instellingen → Apparaten & diensten → Entiteiten — zoek op pylontech.
Energiedashboard
Voor een batterij verwacht het energiedashboard van Home Assistant twee tellers in kWh: geladen energie en ontladen energie. De Pylon-Monitor levert het batterijvermogen in W (positief = laden, negatief = ontladen), dus je maakt ze één keer aan met helpers:
- Splits het vermogen met twee template-sensoren: laadvermogen = het positieve deel, ontlaadvermogen = het negatieve deel als positief getal.
- Zet elk om naar kWh met een Integraal-helper (Riemann-som), prefix „k”, methode „Links”.
- Voeg in Instellingen → Dashboards → Energie, onder Thuisbatterij, de twee tellers toe: energie erin, energie eruit.
Hetzelfde in YAML (entiteitsnamen van MQTT; bij optie 2 gebruik je 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
Controleer de exacte naam van je vermogenssensor in Instellingen → Entiteiten (zoek op „power”): die wijkt af als je het apparaat hebt hernoemd of meerdere Pylon-Monitors hebt.
Melding bij lage accu
Een melding op je telefoon zodra de batterij onder 20 % zakt:
alias: "Pylontech lage accu"
triggers:
- trigger: numeric_state
entity_id: sensor.pylon_monitor_battery_soc
below: 20
actions:
- action: notify.notify
data:
message: "Pylontech-accu op {{ states('sensor.pylon_monitor_battery_soc') }} %"
Hetzelfde idee met Battery state, Cell imbalance (bijvoorbeeld boven 50 mV) of sensoren die langer dan 10 minuten niet beschikbaar zijn — het teken dat het apparaat offline is.
Node-RED, Jeedom en andere
Node-RED — een http request-node, methode GET, URL http://<APPARAAT-IP>/api.json?key=<ACCESS-KEY>, return „a parsed JSON object”, en lees daarna msg.payload.summary.soc (of een ander veld). Met MQTT ingesteld is een mqtt in-node op pylon-monitor/state nog eenvoudiger: geen polling.
Jeedom — installeer de plugin JSON, laat een apparaat naar http://<APPARAAT-IP>/api.json?key=<ACCESS-KEY> wijzen en koppel paden aan commando's (bijv. summary>soc, summary>voltage, summary>state).
Al het andere — openHAB, ioBroker, Domoticz, EVCC of je eigen scripts: alles wat MQTT of een HTTP-JSON-eindpunt leest, werkt met dezelfde topics en dezelfde /api.json.
Vragen
Werkt het met de Lite (zonder scherm)?
Ja. MQTT auto-discovery en de REST API zitten in de firmware van elk model: met scherm, Lite, eerste en tweede generatie. Alleen het vinden van het IP verschilt: pylon-monitor.local of de apparatenlijst van je router.
Mijn REST-sensoren zijn na een firmware-update niet meer beschikbaar — waarom?
Sinds firmware 3.4.0 (Lite 1.1.0, generatie 1: 3.1) vraagt het apparaat om een wachtwoord dat u bij de eerste toegang aanmaakt, en heeft <code>/api.json</code> uw toegangssleutel nodig: de Europese cyberbeveiligingsregels voor verbonden apparaten (RED-richtlijn, EN 18031) verplichten nu dat elk apparaat beveiligd is. Open het apparaat één keer in een browser om uw wachtwoord aan te maken, voeg dan <code>?key=<Access key></code> (<em>Settings → Public JSON access</em>) toe aan uw regel <code>resource:</code> en herstart Home Assistant. MQTT-sensoren blijven ongewijzigd werken.
Heb ik internet of de Pylon-Monitor Cloud nodig?
Nee. Home Assistant praat rechtstreeks met het apparaat op je lokale netwerk. De gratis Cloud is optioneel: die voegt alleen toegang op afstand en langetermijngeschiedenis toe.
Ik heb meerdere batterijen: zie ik ze allemaal apart?
Ja. Met MQTT maakt het apparaat 5 sensoren per batterij aan (SOC, SOH, cycli, spanning, status), met model en serienummer als attributen. Met REST voegt de gegenereerde YAML SOH en cycli per batterij toe.
Hoe vaak worden de waarden bijgewerkt?
Na elke uitlezing van de batterij: standaard elke 60 seconden, instelbaar van 30 tot 300 seconden met de instelling Battery polling op de Settings-pagina. Met REST vraagt Home Assistant elke 30 seconden op.
Mijn sensoren zijn „niet beschikbaar”: wat controleer ik?
Dat is het beschikbaarheidssignaal dat zijn werk doet: het apparaat is niet meer met de broker verbonden (stroomuitval, wifi, broker herstart). Open de pagina van het apparaat: de regel Home Assistant (MQTT) toont Connected of Offline. Het probeert het zelf elke 10 seconden opnieuw.
Kan Home Assistant de batterij aansturen?
Nee, en dat is bewust: de integratie biedt alleen sensoren om te lezen. Niets in Home Assistant kan een instelling van je batterij of het BMS wijzigen.
Heb ik HACS of een aangepaste integratie nodig?
Nee. MQTT auto-discovery en de REST-integratie horen bij Home Assistant zelf. Alleen de Mosquitto-add-on moet je installeren, en alleen als je voor MQTT kiest.
Nog geen Pylon-Monitor?
Steek hem in de CONSOLE-poort, verbind hem met je wifi, en je Pylontech verschijnt in Home Assistant. V2 met scherm € 59, Lite zonder scherm € 49.
Uitgebreide MQTT- & REST-gids →