2023-11-27 23:43:06 +01:00
Pylontech Battery
=================
.. seo ::
:description: Instructions for setting up Pylontech Battery in ESPHome.
:image: pylontech.jpg
The Pylontech component allows you to pull data from Pylontech Batteries into ESPHome.
It uses :ref: `UART <uart>` for communication.
Once configured, you can use sensors as described below for your projects.
.. figure :: images/pylontech.jpg
:align: center
:width: 50.0%
Pylontech Batteries
Hardware Setup
--------------
You can connect to Pylontech Batteries using the port labeled "Console".
Any connections via CAN or RS485 (e.g. to an inverter) are untouched and remain functional.
2024-09-24 13:17:11 +02:00
The console port offers a RS232 interface using a RJ11 or RJ45 connector.
2023-11-27 23:43:06 +01:00
The voltage levels are *not* TTL-compatible. A RS232 transceiver must be placed between the Batteries and the ESPHome device.
MAX3232-based transceivers have been tested and work well.
If you have multiple batteries you need to connect to the master battery's console port.
.. list-table :: Pylontech RJ45 Console Port (US2000C, US3000C)
:header-rows: 1
* - RJ45 Pin
- Function
- Connect to
* - 3
- Pylontech TX
- ESPHome RX via transceiver
* - 6
- Pylontech RX
- ESPHome TX via transceiver
* - 8
- GND
- GND
.. figure :: images/rj45_pinout.jpg
:align: center
:width: 70.0%
RJ45 pinout
2024-09-24 13:17:11 +02:00
.. list-table :: Pylontech RJ11 Console Pinout (US2000B, US2000)
2023-11-27 23:43:06 +01:00
:header-rows: 1
2024-09-24 13:17:11 +02:00
* - RJ11 Pin
2023-11-27 23:43:06 +01:00
- Function
- Connect to
* - 2
- Pylontech RX
- ESPHome TX via transceiver
* - 3
- Pylontech TX
- ESPHome RX via transceiver
* - 4
- GND
- GND
Component/Hub
-------------
.. code-block :: yaml
# Example configuration entry
pylontech:
Configuration variables:
~~~~~~~~~~~~~~~~~~~~~~~~
- **id** (**Required** , :ref: `config-id` ): The id to use for this Pylontech component.
- **uart_id** (*Optional* ): The uart Bus ID
- **update_interval** (*Optional* , :ref: `config-time` ): The interval to check the sensor. Defaults to `` 60s `` .
Sensor
------
All values are reported for every Pylontech battery individually.
.. code-block :: yaml
# Example configuration entry
sensor:
- platform: pylontech
battery: 1
voltage:
name: "Battery1 Voltage"
current:
name: "Battery1 Current"
coulomb:
name: "Battery1 State of Charge"
Configuration variables:
~~~~~~~~~~~~~~~~~~~~~~~~
- **pylontech_id** (*Optional* ): Manually specify the ID of the pylontech instance if there are multiple.
2024-09-24 13:17:11 +02:00
- **battery** (**Required** ): Which battery to monitor. 1 stands for the main battery, 2..16 for child batteries.
2023-11-27 23:43:06 +01:00
- **voltage** (*Optional* ): Voltage of the battery. All options from :ref: `Sensor <config-sensor>` .
- **current** (*Optional* ): Current flowing into the battery. Negative when discharging. All options from :ref: `Sensor <config-sensor>` .
- **coulomb** (*Optional* ): State of Charge in percent. All options from :ref: `Sensor <config-sensor>` .
- **temperature** (*Optional* ): Temperature. All options from :ref: `Sensor <config-sensor>` .
- **temperature_low** (*Optional* ): Historic minimum temperature. All options from :ref: `Sensor <config-sensor>` .
- **temperature_high** (*Optional* ): Historic maximum temperature. All options from :ref: `Sensor <config-sensor>` .
2024-01-09 00:30:01 +01:00
- **voltage_low** (*Optional* ): Voltage of the lowest cell. All options from :ref: `Sensor <config-sensor>` .
- **voltage_high** (*Optional* ): Voltage of the highest cell. All options from :ref: `Sensor <config-sensor>` .
2023-11-27 23:43:06 +01:00
- **mos_temperature** (*Optional* ): Temperature of the mosfets. All options from :ref: `Sensor <config-sensor>` .
Text Sensor
-----------
.. code-block :: yaml
# Example configuration entry
text_sensor:
- platform: pylontech
pylontech_id: pylontech0
battery: 1
base_state:
id: bat1_base_state
name: "Battery1 Base State"
Configuration variables:
~~~~~~~~~~~~~~~~~~~~~~~~
- **pylontech_id** (**Optional** ): Manually specify the ID of the pylontech instance if there are multiple.
2024-09-24 13:17:11 +02:00
- **battery** (**Required** ): Which battery to monitor. 1 stands for the main battery, 2..16 for child batteries.
2023-11-27 23:43:06 +01:00
- **base_state** (*Optional* ): Base state. Usually reads `` Dischg `` , `` Charge `` or `` Idle `` . All options from :ref: `Text Sensor <config-text_sensor>` .
- **voltage_state** (*Optional* ): Voltage state. Usually reads `` Normal `` . All options from :ref: `Text Sensor <config-text_sensor>` .
- **current_state** (*Optional* ): Current state. Usually reads `` Normal `` . All options from :ref: `Text Sensor <config-text_sensor>` .
- **temperature_state** (*Optional* ): Temperature state. Usually reads `` Normal `` . All options from :ref: `Text Sensor <config-text_sensor>` .
Energy Monitoring
-----------------
By combining :doc: `template sensors </components/sensor/template>` and :doc: `integration sensors </components/sensor/integration>`
one can monitor the energy flowing into and out of all batteries combined, ready for `Homeassistant Energy Monitoring <https://www.home-assistant.io/docs/energy/battery/> `__ .
.. code-block :: yaml
sensor:
- platform: template
id: pylontech_power
name: "Pylontech power"
unit_of_measurement: W
lambda: |-
auto pwr1 = id(bat1_voltage).state * id(bat1_current).state;
auto pwr2 = id(bat2_voltage).state * id(bat2_current).state;
auto pwr = pwr1 + pwr2;
id(combined_charge_power).publish_state(max(pwr, 0.0f));
id(combined_discharge_power).publish_state(max(-pwr, 0.0f));
return pwr;
update_interval: 5s
device_class: power
state_class: measurement
- platform: template
id: combined_charge_power
- platform: template
id: combined_discharge_power
- platform: integration
name: "Pylontech charging"
sensor: combined_charge_power
time_unit: h
state_class: total_increasing
device_class: energy
unit_of_measurement: "Wh"
- platform: integration
name: "Pylontech discharging"
sensor: combined_discharge_power
time_unit: h
state_class: total_increasing
device_class: energy
unit_of_measurement: "Wh"
See Also
--------
- `Pylontech-Battery-Monitoring <https://github.com/irekzielinski/Pylontech-Battery-Monitoring> `__
- `nodered-pylontech-console-reader <https://github.com/juanhaywood/nodered-pylontech-console-reader> `__
2024-09-24 13:17:11 +02:00
- `MultiSIBControl <http://www.multisibcontrol.net/> `__
- `ioBroker.pylontech <https://github.com/PLCHome/ioBroker.pylontech/> `__
2023-11-27 23:43:06 +01:00
- :ref: `uart`
- :ghedit: `Edit`