FVE s podporou z DS
Souhrn tématu
Diskuze se věnuje plánování a realizaci fotovoltaické elektrárny (FVE) s podporou ze sítě (DS), která optimalizuje spotřebu během vysokého a nízkého tarifu. Autor popisuje návrh systému s FV panely a bateriemi, zkušenosti s EASUN bateriemi a jejich správou přes BMS, včetně aktivního balancování článků. Součástí je i integrace do domácí automatizace pomocí ESP32 modulů a esphome, což umožňuje efektivní monitoring a ovládání bateriového systému.
- cipis
- Moderátor
- Příspěvky: 7307
- Registrován: pon srp 16, 2021 9:31 pm
- Reputace:1029
- Lokalita: blízko Brna
- Systémové napětí: 24V
- Výkon panelů [Wp]: 18+ kWp
- Kapacita baterie [kWh]: 40+26
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: blízko Brna
Re: FVE s podporou z DS
Hmm, a podělíš se o to PBŘ?
18+ kWp v provozu, 7+ kWp čeká na montáž/zapojení
Regulátory Epever a Victron
MP 24/5000 + Deye mikroinvertory 1+2,25+0,8 kW (můj byt + máti byt)
MP 24/1200 inet, sit, kamery atd.
Phoenix 24/5000 vytěžování do akumulačních kamen
Epever 3kW vytěžování do bojlerů + žebříky
1 kW "nabíječka" 24 V
40+ kWh staré olovo 26+ kWh Li-Ion
několik dalších MP jako záložní zdroje na různých místech
Modře píši jako moderátor, černě jako člen.
Regulátory Epever a Victron
MP 24/5000 + Deye mikroinvertory 1+2,25+0,8 kW (můj byt + máti byt)
MP 24/1200 inet, sit, kamery atd.
Phoenix 24/5000 vytěžování do akumulačních kamen
Epever 3kW vytěžování do bojlerů + žebříky
1 kW "nabíječka" 24 V
40+ kWh staré olovo 26+ kWh Li-Ion
několik dalších MP jako záložní zdroje na různých místech
Modře píši jako moderátor, černě jako člen.
- rva
- Příspěvky: 5032
- Registrován: úte dub 23, 2013 10:21 am
- Reputace:985
- Lokalita: Kousek od Lysé nad Labem
- Systémové napětí: 48V
- Výkon panelů [Wp]: 46000
- Kapacita baterie [kWh]: 62
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
- Bydliště: Kousek od Lysé nad Labem
Re: FVE s podporou z DS
Tak už jsou i nějaké zkušenosti s tím EASUN baterry boxem. Články se rozcházejí víc, než u ostatních baterií, které jsem skládal:. Je vidět, že i větší firmy by se mohly učit od amatérů. Použitá JBD BMS má pouze pasivní balancér (palič) asi 50 mA, zatímco za podobnou cenu by si tam každý svéprávný bastlíř dal JK-BMS s aktivním balancováním alespoň 1A. Uvidím, jestli s tím časem něco udělám.
Do externího boxu jsem přesunul další baterii. Při stěhování jsem mohl přeměřit a zapsat na články jejich vnitřní odpor ( články jsou nabité, protože demontáž a montáž se nejlépe dělá za nabitého stavu, kdy do baterií skoro nic neteče), ještě se to musí učesat, chybí k tomu nějaké komponenty, ale už je zapojená do elektrárny. Postavena je na vozíku-plošině z LIDL (cca 250 Kč, papírová nosnost 250 kg), ale kolečka jsem po testování vyměnil za jiná (oranžová
), která jsem vytisk z TPU (neprasknou a jak je model dost hustý, tak mají i pevnost). U baterií dávám sichr pojistku na + pól, tady jsem vyzkoušel z Allegro kompaktní typ: Má zbytečně velký montážní otvor, takže aby dobře seděla na terminálu této baterie, vypodložil jsem to Cu podložkama.
Jo a box je už nějak natřený, aby mu nevadila případná vlhkost a dalo se to utřít. Zavíraný zatím na petlici: Integrace do HA je přes esphome, kde jsem se vrátil k bezdrátovému řešení - s BMS se komunikuje přes BLE a přes wifi to jde do LAN a HA. Vyhovují mi moduly esp32 C3 s oled displejem. Než se vyřeší nákupy z Číny, tak Poláci jsou schopni to dodat za podobné ceny: Na displeji nechávám rotovat pár základních hodnot - napětí baterie, proud, max. rozdíl napětí mezi články. Komu se nechce to ladit, stačí změnit MAC adresu a mělo by to fungovat: Tyto moduly se akorát vejdou do krabičky podle esp32 C3 oled krabička a pak to vypadá nějak takto: Do boxu by měly přejít ještě nějaké baterie a jeden nabíječ pro zimní provoz. Zatím tam je místa dost.
Do externího boxu jsem přesunul další baterii. Při stěhování jsem mohl přeměřit a zapsat na články jejich vnitřní odpor ( články jsou nabité, protože demontáž a montáž se nejlépe dělá za nabitého stavu, kdy do baterií skoro nic neteče), ještě se to musí učesat, chybí k tomu nějaké komponenty, ale už je zapojená do elektrárny. Postavena je na vozíku-plošině z LIDL (cca 250 Kč, papírová nosnost 250 kg), ale kolečka jsem po testování vyměnil za jiná (oranžová
Jo a box je už nějak natřený, aby mu nevadila případná vlhkost a dalo se to utřít. Zavíraný zatím na petlici: Integrace do HA je přes esphome, kde jsem se vrátil k bezdrátovému řešení - s BMS se komunikuje přes BLE a přes wifi to jde do LAN a HA. Vyhovují mi moduly esp32 C3 s oled displejem. Než se vyřeší nákupy z Číny, tak Poláci jsou schopni to dodat za podobné ceny: Na displeji nechávám rotovat pár základních hodnot - napětí baterie, proud, max. rozdíl napětí mezi články. Komu se nechce to ladit, stačí změnit MAC adresu a mělo by to fungovat:
Kód: Vybrat vše
substitutions:
name: battery-315ah
friendly_name: Baterie 315Ah
device_description: "Monitoruje a nastavuje baterii 315Ah na které je JK-BMS přes ble."
external_components_source: github://syssi/esphome-jk-bms@main
# BLE settings
mac_address: xx:xx:xx:1B:5B:A1
# Please use "JK02_24S" if you own a old JK-BMS < hardware version 11.0 (hardware version >= 6.0 and < 11.0)
# Please use "JK02_32S" if you own a new JK-BMS >= hardware version 11.0 (f.e. JK-B2A8S20P hw 11.XW, sw 11.26)
# Please use "JK04" if you have some old JK-BMS <= hardware version 3.0 (f.e. JK-B2A16S hw 3.0, sw. 3.3.0)
protocol_version: JK02_32S
esphome:
name: ${name}
# name_add_mac_suffix: false
comment: ${device_description}
project:
name: "syssi.esphome-jk-bms"
version: 2.1.0
esp32:
variant: esp32c3
framework:
type: esp-idf
external_components:
- source: ${external_components_source}
refresh: 0s
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "aQfp2mvgssO74Nf2fLtC8lih6SLXRoKGxViaRFxH3FM="
# Allow Over-The-Air updates
ota:
platform: esphome
password: "a4c918a61abbf937b5413b41e91c3823"
on_begin:
then:
- switch.turn_off: ble_client_switch0
- logger.log: "BLE connection suspended for OTA update"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Optional manual IP
# manual_ip:
# static_ip: 192.168.0.70
# gateway: 192.168.0.1
# subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "battery-315ah"
password: bxxx-315ah
# V HA se pak k položkám "edit" a "logs" objeví položka "visit", kde se po kliknutí otevře stránka esphome daného zařízení
# To have a "next url" for improv serial
web_server:
port: 80
# In combination with the `ap` this allows the user
# to provision wifi credentials to the device via WiFi AP.
captive_portal:
i2c:
- id: bus_a
sda: GPIO5
scl: GPIO6
scan: true
# frequency: 10kHz
# timeout: 400us
# Nadefinování několika fontů, ze kterých si budu vybírat pro zobrazení na displeji
font:
- file: "gfonts://Roboto"
id: font1
size: 20
- file: "gfonts://Material+Symbols+Outlined"
id: font2
size: 12
- file: "gfonts://Material+Symbols+Outlined"
id: font3
size: 16
- file: "gfonts://Material+Symbols+Outlined"
id: font4
size: 32
time:
- platform: homeassistant
id: esptime
#dashboard_import:
# package_import_url: github://esphome/firmware/esphome-web/esp32c3.yaml@v2
# import_full_config: true
# Sets up Bluetooth LE (Only on ESP32) to allow the user
# to provision wifi credentials to the device.
#esp32_improv:
# authorizer: none
esp32_ble_tracker:
scan_parameters:
active: false
ble_client:
- mac_address: ${mac_address}
id: client0
jk_bms_ble:
- ble_client_id: client0
protocol_version: ${protocol_version}
throttle: 60s
id: bms0
# Override the label of one or more error bits (bit 0-31, JK02 only).
# An empty label suppresses the bit entirely.
#
# error_overrides:
# 4: "Cell overvoltage"
binary_sensor:
- platform: jk_bms_ble
balancing:
name: "balancing"
charging:
name: "charging"
discharging:
name: "discharging"
heating:
name: "heating"
online_status:
name: "online status"
button:
- platform: jk_bms_ble
retrieve_settings:
name: "retrieve settings"
retrieve_device_info:
name: "retrieve device info"
retrieve_logbook:
name: "retrieve logbook"
number:
- platform: jk_bms_ble
jk_bms_ble_id: bms0
balance_trigger_voltage:
name: "balance trigger voltage"
cell_count:
name: "cell count"
total_battery_capacity:
name: "total battery capacity"
cell_voltage_overvoltage_protection:
name: "cell voltage overvoltage protection"
cell_voltage_overvoltage_recovery:
name: "cell voltage overvoltage recovery"
cell_voltage_undervoltage_protection:
name: "cell voltage undervoltage protection"
cell_voltage_undervoltage_recovery:
name: "cell voltage undervoltage recovery"
balancing_start_voltage:
name: "balancing start voltage"
voltage_calibration:
name: "voltage calibration"
current_calibration:
name: "current calibration"
power_off_voltage:
name: "power off voltage"
max_balance_current:
name: "max balance current"
max_charge_current:
name: "max charge current"
max_discharge_current:
name: "max discharge current"
charge_overcurrent_protection_delay:
name: "charge overcurrent protection delay"
charge_overcurrent_protection_recovery_time:
name: "charge overcurrent protection recovery time"
discharge_overcurrent_protection_delay:
name: "discharge overcurrent protection delay"
discharge_overcurrent_protection_recovery_time:
name: "discharge overcurrent protection recovery time"
short_circuit_protection_delay:
name: "short circuit protection delay"
short_circuit_protection_recovery_time:
name: "short circuit protection recovery time"
charge_overtemperature_protection:
name: "charge overtemperature protection"
charge_overtemperature_protection_recovery:
name: "charge overtemperature protection recovery"
discharge_overtemperature_protection:
name: "discharge overtemperature protection"
discharge_overtemperature_protection_recovery:
name: "discharge overtemperature protection recovery"
charge_undertemperature_protection:
name: "charge undertemperature protection"
charge_undertemperature_protection_recovery:
name: "charge undertemperature protection recovery"
mosfet_overtemperature_protection:
name: "mosfet overtemperature protection"
mosfet_overtemperature_protection_recovery:
name: "mosfet overtemperature protection recovery"
sensor:
- platform: jk_bms_ble
jk_bms_ble_id: bms0
min_cell_voltage:
name: "min cell voltage"
max_cell_voltage:
name: "max cell voltage"
min_voltage_cell:
name: "min voltage cell"
max_voltage_cell:
name: "max voltage cell"
delta_cell_voltage:
name: "delta cell voltage"
id: bms0_delta_cell_voltage
average_cell_voltage:
name: "average cell voltage"
cell_voltage_1:
name: "cell voltage 1"
cell_voltage_2:
name: "cell voltage 2"
cell_voltage_3:
name: "cell voltage 3"
cell_voltage_4:
name: "cell voltage 4"
cell_voltage_5:
name: "cell voltage 5"
cell_voltage_6:
name: "cell voltage 6"
cell_voltage_7:
name: "cell voltage 7"
cell_voltage_8:
name: "cell voltage 8"
cell_voltage_9:
name: "cell voltage 9"
cell_voltage_10:
name: "cell voltage 10"
cell_voltage_11:
name: "cell voltage 11"
cell_voltage_12:
name: "cell voltage 12"
cell_voltage_13:
name: "cell voltage 13"
cell_voltage_14:
name: "cell voltage 14"
cell_voltage_15:
name: "cell voltage 15"
cell_voltage_16:
name: "cell voltage 16"
cell_resistance_1:
name: "cell resistance 1"
cell_resistance_2:
name: "cell resistance 2"
cell_resistance_3:
name: "cell resistance 3"
cell_resistance_4:
name: "cell resistance 4"
cell_resistance_5:
name: "cell resistance 5"
cell_resistance_6:
name: "cell resistance 6"
cell_resistance_7:
name: "cell resistance 7"
cell_resistance_8:
name: "cell resistance 8"
cell_resistance_9:
name: "cell resistance 9"
cell_resistance_10:
name: "cell resistance 10"
cell_resistance_11:
name: "cell resistance 11"
cell_resistance_12:
name: "cell resistance 12"
cell_resistance_13:
name: "cell resistance 13"
cell_resistance_14:
name: "cell resistance 14"
cell_resistance_15:
name: "cell resistance 15"
cell_resistance_16:
name: "cell resistance 16"
total_voltage:
name: "total voltage"
id: bms0_total_voltage
current:
name: "current"
id: bms0_current
heating_current:
name: "heating current"
power:
name: "power"
charging_power:
name: "charging power"
discharging_power:
name: "discharging power"
temperature_sensor_1:
name: "temperature sensor 1"
temperature_sensor_2:
name: "temperature sensor 2"
# temperature_sensor_3:
# name: "temperature sensor 3"
# temperature_sensor_4:
# name: "temperature sensor 4"
mosfet_temperature:
name: "mosfet temperature"
balancer_status_bitmask:
name: "balancer status bitmask"
state_of_charge:
name: "state of charge"
id: bms0_state_of_charge
capacity_remaining:
name: "capacity remaining"
full_charge_capacity:
name: "full charge capacity"
charging_cycles:
name: "charging cycles"
total_charging_cycle_capacity:
name: "total charging cycle capacity"
total_runtime:
name: "total runtime"
power_on_count:
name: "power on count"
balancing_current:
name: "balancing current"
switch:
- platform: jk_bms_ble
charging:
name: "charging"
discharging:
name: "discharging"
balancer:
name: "balancer"
- platform: ble_client
ble_client_id: client0
name: "enable bluetooth connection"
id: ble_client_switch0
text_sensor:
- platform: jk_bms_ble
errors:
name: "errors"
errors_bitmask_hex:
name: "errors bitmask hex"
balancer_status:
name: "balancer status"
total_runtime_formatted:
name: "total runtime formatted"
software_version:
name: "software version"
hardware_version:
name: "hardware version"
device_model:
name: "device model"
manufacturing_date:
name: "manufacturing date"
serial_number:
name: "serial number"
display:
- platform: ssd1306_i2c
i2c_id: bus_a
model: "SSD1306 72x40"
#reset_pin: D2
address: 0x3C
#za lambda se píše kód přímo v C. V tomto případě se na displeji střídá několik hodnot
lambda: |-
switch (id(page))
{
case 1:
it.strftime(5, 18, id(font1), TextAlign::BASELINE_LEFT, "%H:%M", id(esptime).now());
break;
case 2:
if (id(bms0_current).has_state())
{
it.printf(5, 20, id(font1), TextAlign::BASELINE_LEFT , "%.1f A", id(bms0_current).state);
}
break;
case 3:
if (id(bms0_state_of_charge).has_state())
{
it.printf(5, 22, id(font1), TextAlign::BASELINE_LEFT , "%.0f %%", id(bms0_state_of_charge).state);
}
break;
case 4:
if (id(bms0_total_voltage).has_state())
{
it.printf(5, 24, id(font1), TextAlign::BASELINE_LEFT , "%.1f V", id(bms0_total_voltage).state);
}
break;
case 5:
if (id(bms0_delta_cell_voltage).has_state())
{
it.printf(5, 26, id(font1), TextAlign::BASELINE_LEFT , "%.0f mV", id(bms0_delta_cell_voltage).state * 1000);
}
break;
}
globals:
- id: page
type: int
initial_value: "1"
# cyklus zajišťující v 1s intervalech zobrazení jednotlivých hodnot
interval:
- interval: 1s
then:
- lambda: |-
id(page) = (id(page) + 1);
if (id(page) > 5) {
id(page) = 1;
}
_______________________________________________________________________
43 kWp, LiFePO4 62 kWh,
EPSolar 60 A/150 V ET6415N + 3x Isolar SM II (5 kW, 450 V, 80 A) + Axpert PIP 5048MS
43 kWp, LiFePO4 62 kWh,
EPSolar 60 A/150 V ET6415N + 3x Isolar SM II (5 kW, 450 V, 80 A) + Axpert PIP 5048MS
Kdo je online
Uživatelé procházející toto fórum: Claudebot [Bot], Energoraj
