FVE s podporou z DS
Souhrn tématu
Uživatel amatérsky plánuje fotovoltaickou elektrárnu (FVE) s podporou ze sítě (DS), která pokryje spotřebu během vysokého tarifu pomocí FV panelů a baterií. Za nízkého tarifu se využívá přímý odběr ze sítě a dobíjení baterií. Diskutuje se i integrace zdroje tepla EASUN SMG II s možností ovládání přes ESP32 a Home Assistant, což umožňuje efektivní řízení nabíjecího proudu a monitorování provozu. Celkově jde o praktický návod a zkušenosti s návrhem hybridního systému pro úsporu energie.
- cipis
- Moderátor
- Příspěvky: 7339
- Registrován: pon srp 16, 2021 9:31 pm
- Reputace:1031
- 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: 5059
- Registrován: úte dub 23, 2013 10:21 am
- Reputace:1004
- 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.
A pokud jde o požár, tak u uzavřeného boxu nepočítám s požárem, ale výbuchem. Pro něj je potřeba vše připravit tak, aby tlaková vlna směřovala do bezpečné oblasti. U rozmetaných zbytků je pak celkem jedno, z jakého byly materiálu. Hlavně aby se neproměnily v neřízené střely.
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;
}
A pokud jde o požár, tak u uzavřeného boxu nepočítám s požárem, ale výbuchem. Pro něj je potřeba vše připravit tak, aby tlaková vlna směřovala do bezpečné oblasti. U rozmetaných zbytků je pak celkem jedno, z jakého byly materiálu. Hlavně aby se neproměnily v neřízené střely.
_______________________________________________________________________
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
- JirkaE
- Příspěvky: 2796
- Registrován: pát dub 21, 2023 7:17 pm
- Reputace:399
- Lokalita: Kousek od Rozvadova
- Systémové napětí: 48V
- Výkon panelů [Wp]: 7350
- Kapacita baterie [kWh]: 38
- Chci prodávat energii: NE
- Chci/Mám dotaci: NE
Re: FVE s podporou z DS
Nebojíš se promrzání toho schodu v zimě a nechtěný zbytečný chladnutí prostoru pro baterky skrz ten schod ?
Jinak skvělá práce a inspirace
- jak to dostat ven (do bezpečné vzdálenosti a za hlavní zeď)
Jinak skvělá práce a inspirace
Porovnání všech 4 stringů a nově i finálový celek s Victron a teploty vody bojlerů 1-3 a už i e-Transit
:
DC/AC - WATTMETR / Victron / Bojlery / E-Transit / DS
Domovské vlákno : Jirkova FVE
Spirály v bazaru : Spirály 55V - Je tam i ten test
DC/AC - WATTMETR / Victron / Bojlery / E-Transit / DS
Domovské vlákno : Jirkova FVE
Spirály v bazaru : Spirály 55V - Je tam i ten test
- rva
- Příspěvky: 5059
- Registrován: úte dub 23, 2013 10:21 am
- Reputace:1004
- 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
Jak se to bude chovat v zimě uvidím. Zatím předpokládám, že v boxu bude nabíječ, ze kterého v zimě potřebuji dostat do baterií cca 15 kWh denně a u něj bude ztráta (teplo) cca 1.5 kWh.
_______________________________________________________________________
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
- Kajap
- Příspěvky: 548
- Registrován: pon črc 21, 2025 11:13 am
- Reputace:8
- Lokalita: Okoli
Re: FVE s podporou z DS
“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.“
Co jsem slyšel tak pasivní bancer je vhodný do auta, do chaty, zkrátka tam, kde je většinu času stále nabito 100%, a ne na cyklické vybíjení noc/den…
Potřebuje více času na vybalancování, které se děje prakticky jen na vrcholu a trvá dlouho…
Nevím, co je na tom pravdy, a ještě jsem slyšel že to JBD ani aktivní balancery nedělá…
Teď mi má přijít jedna baterka, vyhřívaná od Renogy a právě takový pasivní JBD v tom čekám…
Co si o tom myslíš?
Co jsem slyšel tak pasivní bancer je vhodný do auta, do chaty, zkrátka tam, kde je většinu času stále nabito 100%, a ne na cyklické vybíjení noc/den…
Potřebuje více času na vybalancování, které se děje prakticky jen na vrcholu a trvá dlouho…
Nevím, co je na tom pravdy, a ještě jsem slyšel že to JBD ani aktivní balancery nedělá…
Teď mi má přijít jedna baterka, vyhřívaná od Renogy a právě takový pasivní JBD v tom čekám…
Co si o tom myslíš?
- rva
- Příspěvky: 5059
- Registrován: úte dub 23, 2013 10:21 am
- Reputace:1004
- 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
Myslím, že pasivní balancer, zvláště pokud se nedá nastavit napětí balancování, je minulost a když mám na výběr, tak se mu vyhnu.
_______________________________________________________________________
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
- rva
- Příspěvky: 5059
- Registrován: úte dub 23, 2013 10:21 am
- Reputace:1004
- 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
Aktuálně mám 7 bateriových úložišť. Pro zobrazení stavu baterií jsou pro Home Assistant integrace, které velmi dobře vypadají. Alternativně jsem pro rychlý přehled vyzkoušel zobrazit vše podstatné o všech bateriích na co nejmenším místě (a s minimálním zatížením procesoru). Pokud někdo potřebuje nahustit co nejvíc dat, stačí je vhodně naformátovat na kartě "markdown":
Kód: Vybrat vše
type: markdown
content: >2
**| *Baterie* | Nabíjení | Vybíjení | SOC | Proud | diff |**
| *315Ah externí box....*| {{ states('binary_sensor.battery_315ah_charging')
}} | {{ states('binary_sensor.battery_315ah_discharging') }} | {{
states('sensor.battery_315ah_state_of_charge')|round(0) }}% | {{
states('sensor.battery_315ah_current')|round(1) }}A | {{
(states('sensor.battery_315ah_delta_cell_voltage')| float * 1000 )|round(0)
}}mV |
| *300Ah box EASUN...*| {{
states('binary_sensor.obyvak_easun_battery_pack_charging') }} | {{
states('binary_sensor.obyvak_easun_battery_pack_discharging') }} | {{
states('sensor.obyvak_easun_battery_pack_state_of_charge')|round(0) }}% | {{
states('sensor.obyvak_easun_battery_pack_current')|round(1) }}A | {{
(states('sensor.obyvak_easun_battery_pack_delta_cell_voltage')| float * 1000
)|round(0) }}mV |
| *246Ah sklep.............*| {{
states('binary_sensor.esp32_mini_kit1_charging') }} | {{
states('binary_sensor.esp32_mini_kit1_discharging') }} | {{
states('sensor.esp32_mini_kit1_esp32_mini_kit1_capacity_remaining')|round(0)
}}% | {{ states('sensor.esp32_mini_kit1_esp32_mini_kit1_current')|round(1) }}A
| {{
states('sensor.esp32_mini_kit1_esp32_mini_kit1_delta_cell_voltage')|round(0)
}}mV |
| *230Ah externí box....*| {{ states('binary_sensor.battery_230ah_charging')
}} | {{ states('binary_sensor.battery_230ah_discharging') }} | {{
states('sensor.battery_230ah_state_of_charge')|round(0) }}% | {{
states('sensor.battery_230ah_current')|round(1) }}A | {{
(states('sensor.battery_230ah_delta_cell_voltage')| float * 1000 )|round(0)
}}mV |
| *200Ah sklep zeď......*| {{
states('binary_sensor.esp32_c3_supermini10_charging') }} | {{
states('binary_sensor.esp32_c3_supermini10_discharging') }} | {{
states('sensor.esp32_c3_supermini10_state_of_charge')|round(0) }}% | {{
states('sensor.esp32_c3_supermini10_current')|round(1) }}A | {{
states('sensor.esp32_c3_supermini10_delta_cell_voltage')|round(0) }}mV |
| *200Ah sklep.............* | {{
states('binary_sensor.esp32_c3_supermini_3_charging') }} | {{
states('binary_sensor.esp32_c3_supermini_3_discharging') }} | {{
states('sensor.esp32_c3_supermini_3_state_of_charge')|round(0) }}% | {{
states('sensor.esp32_c3_supermini_3_current')|round(1) }}A | {{
states('sensor.esp32_c3_supermini_3_delta_cell_voltage')|round(0) }}mV |
| *100Ah elektrárna.....* | {{
states('binary_sensor.elektrarna_battery_100ah_charging') }} | {{
states('binary_sensor.elektrarna_battery_100ah_discharging') }} | {{
states('sensor.elektrarna_battery_100ah_capacity_remaining')|round(0) }}% | {{
states('sensor.elektrarna_battery_100ah_current')|round(1) }}A | {{
(states('sensor.elektrarna_battery_100ah_delta_cell_voltage')| float * 1000 )|
round(0) }}mV |
**| *Celkem - bočník.....* | ----| ---- | {{
states('sensor.soc_cele_baterie')|round(0) }}% | {{
states('sensor.proud_do_baterii')|round(1) }}A | ---- |**
_______________________________________________________________________
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
- rva
- Příspěvky: 5059
- Registrován: úte dub 23, 2013 10:21 am
- Reputace:1004
- 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
Do externího boxu přibyl "zdroj tepla na zimu" - EASUN SMG II, který bude v zimě fungovat jako nabíječ. Komunikace s HA je podle https://github.com/syssi/esphome-smg-ii. Ten můj kus má RS232 na standardním sériovém konektoru DB9 a standardních pinech 2,3,a 5 (RX, TX, Gnd). Na konektoru je vyvedeno i napájení pro výrobcem dodávaný wifi dongle, ale z lenosti esp32 napájím nějakou USB nabíječkou mobilu. Pro toto použití je vhodné, že mohu z HA nastavovat u nabíječky nabíjecí proud, to jsem u jiných kombibeden musel přímo na nich. ESP32 je schované v bedně, tak jsem vybral verzi esp32 C3 super mini bez oled displeje.
A koukám, že tomu SMG II by slušelo i pár fv panelů, aby v zimě toho tepla v bedně bylo více.
Kód pro esphome:
A koukám, že tomu SMG II by slušelo i pár fv panelů, aby v zimě toho tepla v bedně bylo více.
Kód pro esphome:
Kód: Vybrat vše
substitutions:
name: isolar-smg-ii-1
friendly_name: ISOLAR SMG II - 1
device_description: "Monitoruje ISolar/EASUN SMG II inverter via RS232."
external_components_source: github.com/syssi/esphome-smg-ii
tx_pin: GPIO20
rx_pin: GPIO21
esphome:
name: ${name}
friendly_name: ${name}
comment: ${device_description}
min_version: 2024.6.0
project:
name: "syssi.esphome-smg-ii"
version: 1.5.0
esp32:
board: esp32-c3-devkitm-1
framework:
# type: arduino
type: esp-idf
#external_components:
# - source: ${external_components_source}
# refresh: 0s
# Enable logging
logger:
level: DEBUG
# Enable Home Assistant API
api:
encryption:
key: g/h/JAlFkO21wj2jWEkTtPYGDLPSOkbSytFjfgbX09M=
# Allow Over-The-Air updates
ota:
- platform: esphome
# password: "ba063ae33175aa0f32cb28cb82d974d2"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
min_auth_mode: WPA2
# Optional manual IP
# manual_ip:
# static_ip: 192.168.0.64
# gateway: 192.168.0.1
# subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "isolar-smg-ii-1"
password: isolar-smg-ii-1
# 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:
# If you use Home Assistant please remove this `mqtt` section and uncomment the `api` component!
# The native API has many advantages over MQTT: https://esphome.io/components/api.html#advantages-over-mqtt
#mqtt:
# broker: !secret mqtt_host
# username: !secret mqtt_username
# password: !secret mqtt_password
# id: mqtt_client
uart:
- id: uart_0
baud_rate: 9600
tx_pin: ${tx_pin}
rx_pin: ${rx_pin}
modbus:
- id: modbus0
uart_id: uart_0
send_wait_time: 200ms
modbus_controller:
- id: smg0
address: 0x01
modbus_id: modbus0
command_throttle: 200ms
update_interval: 10s
time:
- platform: sntp
sensor:
- platform: total_daily_energy
name: "pv energy today"
restore: true
device_class: energy
power_id: smg0_pv_average_power
filters:
# Multiplication factor from W to kW is 0.001
- multiply: 0.001
unit_of_measurement: kWh
- platform: template
name: "discharging power"
id: smg0_discharging_power
unit_of_measurement: "W"
device_class: power
state_class: measurement
icon: mdi:battery-arrow-down
# Gets updated on value of smg0_battery_average_power
update_interval: never
lambda: |-
if (isnan(id(smg0_battery_average_power).state)) {
return {};
}
auto power = id(smg0_battery_average_power).state;
return (power < 0.0f) ? -power : 0.0f;
- platform: template
name: "charging power"
id: smg0_charging_power
unit_of_measurement: "W"
device_class: power
state_class: measurement
icon: mdi:battery-charging
# Gets updated on value of smg0_battery_average_power
update_interval: never
lambda: |-
if (isnan(id(smg0_battery_average_power).state)) {
return {};
}
auto power = id(smg0_battery_average_power).state;
return (power > 0.0f) ? power : 0.0f;
# Fault code ULong 100 2 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "fault code"
address: 100
register_type: holding
value_type: U_DWORD
accuracy_decimals: 0
icon: mdi:alert-circle
# Warning code ULong 108 2 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "warning code"
address: 108
register_type: holding
value_type: U_DWORD
accuracy_decimals: 0
icon: mdi:alert-circle
# Operation Mode UInt 201 1 R 0: Power On
# 1: Standby
# 2: Mains
# 3: Off-Grid
# 4: Bypass
# 5: Charging
# 6: Fault
- platform: modbus_controller
modbus_controller_id: smg0
name: "operation mode id"
address: 201
register_type: holding
value_type: U_WORD
accuracy_decimals: 0
icon: mdi:information
# Effective mains voltage 0.1V Int 202 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "ac voltage"
address: 202
register_type: holding
value_type: S_WORD
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
accuracy_decimals: 1
filters:
- multiply: 0.1
# Mains Frequency 0.01Hz Int 203 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "ac frequency"
address: 203
register_type: holding
value_type: S_WORD
unit_of_measurement: "Hz"
device_class: frequency
state_class: measurement
accuracy_decimals: 2
filters:
- multiply: 0.01
# Average mains power 1W Int 204 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "average mains power"
address: 204
register_type: holding
value_type: S_WORD
unit_of_measurement: "W"
device_class: power
state_class: measurement
accuracy_decimals: 0
# Effective inverter voltage 0.1V Int 205 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "effective inverter voltage"
address: 205
register_type: holding
value_type: S_WORD
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
accuracy_decimals: 1
filters:
- multiply: 0.1
# Effective inverter current 0.1A Int 206 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "effective inverter current"
address: 206
register_type: holding
value_type: S_WORD
unit_of_measurement: "A"
device_class: current
state_class: measurement
accuracy_decimals: 1
filters:
- multiply: 0.1
# Inverter frequency 0.01Hz Int 207 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "inverter frequency"
address: 207
register_type: holding
value_type: S_WORD
unit_of_measurement: "Hz"
device_class: frequency
state_class: measurement
accuracy_decimals: 2
filters:
- multiply: 0.01
# Average inverter power 1W Int 208 1 R Positive numbers indicate inverter output, negative numbers indicate inverter input
- platform: modbus_controller
modbus_controller_id: smg0
name: "average inverter power"
address: 208
register_type: holding
value_type: S_WORD
unit_of_measurement: "W"
device_class: power
state_class: measurement
accuracy_decimals: 0
# Inverter charging power 1W Int 209 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "inverter charging power"
address: 209
register_type: holding
value_type: S_WORD
unit_of_measurement: "W"
device_class: power
state_class: measurement
accuracy_decimals: 0
# Output effective voltage 0.1V Int 210 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "output effective voltage"
address: 210
register_type: holding
value_type: S_WORD
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
accuracy_decimals: 1
filters:
- multiply: 0.1
# Output effective Current 0.1A Int 211 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "output effective Current"
address: 211
register_type: holding
value_type: S_WORD
unit_of_measurement: "A"
device_class: current
state_class: measurement
accuracy_decimals: 1
filters:
- multiply: 0.1
# Output frequency 0.01Hz Int 212 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "output frequency"
address: 212
register_type: holding
value_type: S_WORD
unit_of_measurement: "Hz"
device_class: frequency
state_class: measurement
accuracy_decimals: 2
filters:
- multiply: 0.01
# Output active power 1W Int 213 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "output active power"
address: 213
register_type: holding
value_type: S_WORD
unit_of_measurement: "W"
device_class: power
state_class: measurement
accuracy_decimals: 0
# Output apparent power 1VA Int 214 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "output apparent power"
address: 214
register_type: holding
value_type: S_WORD
unit_of_measurement: "VA"
device_class: apparent_power
state_class: measurement
accuracy_decimals: 0
# Battery average voltage 0.1V Int 215 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "battery average voltage"
address: 215
register_type: holding
value_type: S_WORD
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
accuracy_decimals: 1
filters:
- multiply: 0.1
# Battery average Current 0.1A Int 216 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "battery average current"
address: 216
register_type: holding
value_type: S_WORD
unit_of_measurement: "A"
device_class: current
state_class: measurement
accuracy_decimals: 1
filters:
- multiply: 0.1
# Battery average power 1W Int 217 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "battery average power"
id: smg0_battery_average_power
address: 217
register_type: holding
value_type: S_WORD
unit_of_measurement: "W"
device_class: power
state_class: measurement
accuracy_decimals: 0
on_value:
- component.update: smg0_discharging_power
- component.update: smg0_charging_power
# PV average voltage 0.1V Int 219 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "pv average voltage"
address: 219
register_type: holding
value_type: S_WORD
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
accuracy_decimals: 1
filters:
- multiply: 0.1
# PV average current 0.1A Int 220 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "pv average current"
address: 220
register_type: holding
value_type: S_WORD
unit_of_measurement: "A"
device_class: current
state_class: measurement
accuracy_decimals: 1
filters:
- multiply: 0.1
# PV average power 1W Int 223 1 R
- platform: modbus_controller
modbus_controller_id: smg0
id: smg0_pv_average_power
name: "pv average power"
address: 223
register_type: holding
value_type: S_WORD
unit_of_measurement: "W"
device_class: power
state_class: measurement
accuracy_decimals: 0
# PV charging average power 1W Int 224 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "pv charging average power"
address: 224
register_type: holding
value_type: S_WORD
unit_of_measurement: "W"
device_class: power
state_class: measurement
accuracy_decimals: 0
# Load percentage 1% Int 225 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "load percentage"
address: 225
register_type: holding
value_type: S_WORD
unit_of_measurement: "%"
state_class: measurement
accuracy_decimals: 0
icon: mdi:percent
# DCDC Temperature 1°C Int 226 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "dcdc temperature"
address: 226
register_type: holding
value_type: S_WORD
unit_of_measurement: "°C"
device_class: temperature
state_class: measurement
accuracy_decimals: 0
# Inverter Temperature 1°C Int 227 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "inverter temperature"
address: 227
register_type: holding
value_type: S_WORD
unit_of_measurement: "°C"
device_class: temperature
state_class: measurement
accuracy_decimals: 0
# Battery state of charge 1% UInt 229 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "battery state of charge"
address: 229
register_type: holding
value_type: U_WORD
unit_of_measurement: "%"
device_class: battery
state_class: measurement
accuracy_decimals: 0
# Battery average current 0.1A Int 232 1 R Positive number means charging, negative number means discharging
- platform: modbus_controller
modbus_controller_id: smg0
name: "battery average current2"
address: 232
register_type: holding
value_type: S_WORD
unit_of_measurement: "A"
device_class: current
state_class: measurement
accuracy_decimals: 1
filters:
- multiply: 0.1
# Inverter charging average current 0.1A Int 233 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "inverter charging average current"
address: 233
register_type: holding
value_type: S_WORD
unit_of_measurement: "A"
device_class: current
state_class: measurement
accuracy_decimals: 1
filters:
- multiply: 0.1
# PV charging average current 0.1A Int 234 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "pv charging average current"
address: 234
register_type: holding
value_type: S_WORD
unit_of_measurement: "A"
device_class: current
state_class: measurement
accuracy_decimals: 1
filters:
- multiply: 0.1
# # Output voltage 0.1V Uint 320 1 R/W
# - platform: modbus_controller
# modbus_controller_id: smg0
# name: "output voltage"
# address: 320
# register_type: holding
# value_type: U_WORD
# unit_of_measurement: "V"
# device_class: voltage
# # state_class: measurement
# accuracy_decimals: 1
# filters:
# - multiply: 0.1
# # Output frequency setting 0.01Hz Uint 321 1 R/W
# - platform: modbus_controller
# modbus_controller_id: smg0
# name: "output frequency setting"
# address: 321
# register_type: holding
# value_type: U_WORD
# unit_of_measurement: "Hz"
# device_class: frequency
# # state_class: measurement
# accuracy_decimals: 2
# filters:
# - multiply: 0.01
# # Battery overvoltage protection point 0.1V Uint 323 1 R/W
# - platform: modbus_controller
# modbus_controller_id: smg0
# name: "battery overvoltage protection point"
# address: 323
# register_type: holding
# value_type: U_WORD
# unit_of_measurement: "V"
# device_class: voltage
# # state_class: measurement
# accuracy_decimals: 1
# filters:
# - multiply: 0.1
# # Max charging voltage 0.1V Uint 324 1 R/W
# - platform: modbus_controller
# modbus_controller_id: smg0
# name: "max charging voltage"
# address: 324
# register_type: holding
# value_type: U_WORD
# unit_of_measurement: "V"
# device_class: voltage
# # state_class: measurement
# accuracy_decimals: 1
# filters:
# - multiply: 0.1
# # Floating charging voltage 0.1V Uint 325 1 R/W
# - platform: modbus_controller
# modbus_controller_id: smg0
# name: "floating charging voltage"
# address: 325
# register_type: holding
# value_type: U_WORD
# unit_of_measurement: "V"
# device_class: voltage
# # state_class: measurement
# accuracy_decimals: 1
# filters:
# - multiply: 0.1
# # Battery discharge recovery point in mains mode 0.1V Uint 326 1 R/W
# - platform: modbus_controller
# modbus_controller_id: smg0
# name: "battery discharge recovery point in mains mode"
# address: 326
# register_type: holding
# value_type: U_WORD
# unit_of_measurement: "V"
# device_class: voltage
# # state_class: measurement
# accuracy_decimals: 1
# filters:
# - multiply: 0.1
# # Battery low voltage protection point in mains mode 0.1V Uint 327 1 R/W
# - platform: modbus_controller
# modbus_controller_id: smg0
# name: "battery low voltage protection point in mains mode"
# address: 327
# register_type: holding
# value_type: U_WORD
# unit_of_measurement: "V"
# device_class: voltage
# # state_class: measurement
# accuracy_decimals: 1
# filters:
# - multiply: 0.1
# # Battery low voltage protection point in off-grid mode 0.1V Uint 329 1 R/W
# - platform: modbus_controller
# modbus_controller_id: smg0
# name: "battery low voltage protection point in off-grid mode"
# address: 329
# register_type: holding
# value_type: U_WORD
# unit_of_measurement: "V"
# device_class: voltage
# # state_class: measurement
# accuracy_decimals: 1
# filters:
# - multiply: 0.1
# # Maximum charging current 0.1A Uint 332 1 R/W
# - platform: modbus_controller
# modbus_controller_id: smg0
# name: "maximum charging current"
# address: 332
# register_type: holding
# value_type: U_WORD
# unit_of_measurement: "A"
# device_class: current
# # state_class: measurement
# accuracy_decimals: 1
# filters:
# - multiply: 0.1
# # Maximum mains charging current 0.1A Uint 333 1 R/W
# - platform: modbus_controller
# modbus_controller_id: smg0
# name: "maximum mains charging current"
# address: 333
# register_type: holding
# value_type: U_WORD
# unit_of_measurement: "A"
# device_class: current
# # state_class: measurement
# accuracy_decimals: 1
# filters:
# - multiply: 0.1
# # Eq Charging voltage 0.1V Uint 334 1 R/W
# - platform: modbus_controller
# modbus_controller_id: smg0
# name: "Eq Charging voltage"
# address: 334
# register_type: holding
# value_type: U_WORD
# unit_of_measurement: "V"
# device_class: voltage
# # state_class: measurement
# accuracy_decimals: 1
# filters:
# - multiply: 0.1
# Rated power W Uint 643 1 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "rated power"
address: 643
register_type: holding
value_type: U_WORD
unit_of_measurement: "W"
device_class: power
# state_class: measurement
accuracy_decimals: 0
select:
# Output Mode Uint 300 1 R/W 0: Single, 1: Parallel, 2: 3 Phase-P1, 3: 3 Phase-P2, 4: 3 Phase-P3
- platform: modbus_controller
modbus_controller_id: smg0
name: "output mode"
use_write_multiple: true
address: 300
value_type: U_WORD
entity_category: config
icon: mdi:cog
optionsmap:
"Single": 0
"Parallel": 1
"Phase P1": 2
"Phase P2": 3
"Phase P3": 4
# Output priority Uint 301 1 R/W 0: Utility-PV-Battery, 1: PV-Utility-Battery, 2: PV-Battery-Utility, 3: PV-Utility-Battery (SUB), 4: PV-Utility-Feed (SUF)
- platform: modbus_controller
modbus_controller_id: smg0
name: "output priority"
use_write_multiple: true
address: 301
value_type: U_WORD
entity_category: config
icon: mdi:cog
optionsmap:
"Utility-PV-Battery (UTI)": 0
"PV-Utility-Battery (SOL)": 1
"PV-Battery-Utility (SBU)": 2
"PV-Utility-Battery (SUB)": 3
# Some devices (e.g. Qoltec 53963, Anenji 3kW-24Vdc-120Vac) support this additional output priority mode
# "PV-Utility-Feed (SUF)": 4
# Input voltage range Uint 302 1 R/W 0: Wide range, 1: Narrow range
- platform: modbus_controller
modbus_controller_id: smg0
name: "input voltage range"
use_write_multiple: true
address: 302
value_type: U_WORD
entity_category: config
icon: mdi:cog
optionsmap:
"Wide range": 0
"Narrow range": 1
# Buzzer mode Uint 303 1 R/W 0: Mute in all situations, 1: Sound when the input source is changed or there is a specific warning or fault, 2: Sound when there is aspecific warning or fault, 3: Sound when fault occurs
- platform: modbus_controller
modbus_controller_id: smg0
name: "buzzer mode"
use_write_multiple: true
address: 303
value_type: U_WORD
entity_category: config
icon: mdi:cog
optionsmap:
"Silent": 0
"Beep on input source changes, warnings and faults": 1
"Beep on warnings and faults": 2
"Beep on faults": 3
# LCD backlight Uint 305 1 R/W 0: Timed off, 1: Always on
- platform: modbus_controller
modbus_controller_id: smg0
name: "lcd backlight"
use_write_multiple: true
address: 305
value_type: U_WORD
entity_category: config
icon: mdi:cog
optionsmap:
"Timed off": 0
"Always on": 1
# Battery charging priority Uint 331 1 R/W 0: Utility priority, 1: PV priority, 2: PV is at the same level as the Utility, 3: Only PV charging is allowed
- platform: modbus_controller
modbus_controller_id: smg0
name: "battery charging priority"
use_write_multiple: true
address: 331
value_type: U_WORD
entity_category: config
icon: mdi:cog
optionsmap:
"Utility priority": 0
"PV priority": 1
"PV is at the same level as the Utility": 2
"Only PV charging is allowed": 3
# Turn on mode Uint 406 1 R/W 0: Can be turn-on locally or remotely, 1: Only local turn-on, 2: Only remote turn-on
- platform: modbus_controller
modbus_controller_id: smg0
name: "turn on mode"
use_write_multiple: true
address: 406
value_type: U_WORD
entity_category: config
icon: mdi:cog
optionsmap:
"Local and remotely turn-on allowed": 0
"Local turn-on only": 1
"Remote turn-on only": 2
- platform: modbus_controller
modbus_controller_id: smg0
name: "battery type"
use_write_multiple: true
address: 322
value_type: U_WORD
entity_category: config
icon: mdi:cog
optionsmap:
"AGM": 0
"FLD": 1
"USER": 2
"Li1": 3
"Li2": 4
"Li3": 5
"Li4": 6
"Lib": 8
switch:
# LCD automatically returns to the homepage Uint 306 1 R/W 0: Do not return automatically, 1: Automatically return after 1 minute
- platform: modbus_controller
modbus_controller_id: smg0
name: "lcd automatically returns to the homepage"
use_write_multiple: true
address: 306
register_type: holding
bitmask: 1
icon: mdi:toggle-switch
# Energy-saving mode Uint 307 1 R/W 0: Energy-saving mode is off, 1: Energy-saving mode is on
- platform: modbus_controller
modbus_controller_id: smg0
name: "energy-saving mode"
use_write_multiple: true
address: 307
register_type: holding
bitmask: 1
icon: mdi:toggle-switch
# Overload automatic restart Uint 308 1 R/W 0: Overload failure will not restart, 1: Automatic restart after overload failure
- platform: modbus_controller
modbus_controller_id: smg0
name: "overload automatic restart"
use_write_multiple: true
address: 308
register_type: holding
bitmask: 1
icon: mdi:toggle-switch
# Over temperature automatic restart Uint 309 1 R/W 0: Over temperature failure will not restart, 1: Automatic restart after over-temperature fault
- platform: modbus_controller
modbus_controller_id: smg0
name: "over temperature automatic restart"
use_write_multiple: true
address: 309
register_type: holding
bitmask: 1
icon: mdi:toggle-switch
# Overload transfer to bypass enabled Uint 310 1 R/W 0: Disable, 1: Enable
- platform: modbus_controller
modbus_controller_id: smg0
name: "overload transfer to bypass enabled"
use_write_multiple: true
address: 310
register_type: holding
bitmask: 1
icon: mdi:toggle-switch
# Battery Eq mode is enabled Uint 313 1 R/W 0: Disable, 1: Enable
- platform: modbus_controller
modbus_controller_id: smg0
name: "battery Eq mode is enabled"
use_write_multiple: true
address: 313
register_type: holding
bitmask: 1
icon: mdi:toggle-switch
# Remote switch Uint 420 1 R/W 0: Remote shutdown, 1: Remote turn-on
- platform: modbus_controller
modbus_controller_id: smg0
name: "remote switch"
use_write_multiple: true
address: 420
register_type: holding
bitmask: 1
icon: mdi:toggle-switch
text_sensor:
# Fault code ULong 100 2 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "fault"
address: 100
register_type: holding
register_count: 2
response_size: 4
raw_encode: HEXBYTES
icon: mdi:alert-circle
lambda: |-
static const uint8_t FAULTS_SIZE = 27;
static const char *const FAULTS[FAULTS_SIZE] = {
"Over temperature of inverter module", // 0000 0000 0000 0000 0000 0000 0000 0001 (1)
"Over temperature of DCDC module", // 0000 0000 0000 0000 0000 0000 0000 0010 (2)
"Battery over voltage", // 0000 0000 0000 0000 0000 0000 0000 0100 (3)
"PV module over temperature", // 0000 0000 0000 0000 0000 0000 0000 1000 (4)
"Output short circuit", // 0000 0000 0000 0000 0000 0000 0001 0000 (5)
"Inverter over voltage", // 0000 0000 0000 0000 0000 0000 0010 0000 (6)
"Output over load", // 0000 0000 0000 0000 0000 0000 0100 0000 (7)
"Bus over voltage", // 0000 0000 0000 0000 0000 0000 1000 0000 (8)
"Bus soft start timed out", // 0000 0000 0000 0000 0000 0001 0000 0000 (9)
"PV over current", // 0000 0000 0000 0000 0000 0010 0000 0000 (10)
"PV over voltage", // 0000 0000 0000 0000 0000 0100 0000 0000 (11)
"Battery over current", // 0000 0000 0000 0000 0000 1000 0000 0000 (12)
"Inverter over current", // 0000 0000 0000 0000 0001 0000 0000 0000 (13)
"Bus low voltage", // 0000 0000 0000 0000 0010 0000 0000 0000 (14)
"Reserve (Bit 15)", // 0000 0000 0000 0000 0100 0000 0000 0000 (15)
"Inverter DC component is too high", // 0000 0000 0000 0000 1000 0000 0000 0000 (16)
"Reserve (Bit 17)", // 0000 0000 0000 0001 0000 0000 0000 0000 (17)
"The zero bias of output current is too large", // 0000 0000 0000 0010 0000 0000 0000 0000 (18)
"The zero bias of inverter current is too large", // 0000 0000 0000 0100 0000 0000 0000 0000 (19)
"The zero bias of battery current is too large", // 0000 0000 0000 1000 0000 0000 0000 0000 (20)
"The zero bias of PV current is too large", // 0000 0000 0001 0000 0000 0000 0000 0000 (21)
"Inverter low voltage", // 0000 0000 0010 0000 0000 0000 0000 0000 (22)
"Inverter negative power protection", // 0000 0000 0100 0000 0000 0000 0000 0000 (23)
"The host in the parallel system is lost", // 0000 0000 1000 0000 0000 0000 0000 0000 (24)
"Synchronization signal abnormal in the parallel system", // 0000 0001 0000 0000 0000 0000 0000 0000 (25)
"The battery type is incompatible", // 0000 0010 0000 0000 0000 0000 0000 0000 (26)
"Parallel versions are incompatible", // 0000 0100 0000 0000 0000 0000 0000 0000 (27)
};
std::string values = "";
uint32_t mask = modbus::helpers::dword_from_hex_str(x, 0);
if (mask) {
for (int i = 0; i < FAULTS_SIZE; i++) {
if (mask & (1 << i)) {
values.append(FAULTS[i]);
values.append(";");
}
}
if (!values.empty()) {
values.pop_back();
}
}
return values;
# Warning code ULong 108 2 R
- platform: modbus_controller
modbus_controller_id: smg0
name: "warning"
address: 108
register_type: holding
register_count: 2
response_size: 4
raw_encode: HEXBYTES
icon: mdi:alert-circle
lambda: |-
static const uint8_t WARNINGS_SIZE = 19;
static const char *const WARNINGS[WARNINGS_SIZE] = {
"Reserve (Bit 0)", // 0000 0000 0000 0000 0000 0000 0000 0001 (1)
"Mains waveform abnormal", // 0000 0000 0000 0000 0000 0000 0000 0010 (2)
"Reserve (Bit 2)", // 0000 0000 0000 0000 0000 0000 0000 0100 (3)
"Mains low voltage", // 0000 0000 0000 0000 0000 0000 0000 1000 (4)
"Mains over frequency", // 0000 0000 0000 0000 0000 0000 0001 0000 (5)
"Mains low frequency", // 0000 0000 0000 0000 0000 0000 0010 0000 (6)
"PV low voltage", // 0000 0000 0000 0000 0000 0000 0100 0000 (7)
"Over temperature", // 0000 0000 0000 0000 0000 0000 1000 0000 (8)
"Battery low voltage", // 0000 0000 0000 0000 0000 0001 0000 0000 (9)
"Battery is not connected", // 0000 0000 0000 0000 0000 0010 0000 0000 (10)
"Overload", // 0000 0000 0000 0000 0000 0100 0000 0000 (11)
"Battery Eq charging", // 0000 0000 0000 0000 0000 1000 0000 0000 (12)
"Battery undervoltage", // 0000 0000 0000 0000 0001 0000 0000 0000 (13)
"Output power derating", // 0000 0000 0000 0000 0010 0000 0000 0000 (14)
"Fan blocked", // 0000 0000 0000 0000 0100 0000 0000 0000 (15)
"PV energy is too low to be use", // 0000 0000 0000 0000 1000 0000 0000 0000 (16)
"Parallel communication interrupted", // 0000 0000 0000 0001 0000 0000 0000 0000 (17)
"Output mode of Single and Parallel systems inconsistent", // 0000 0000 0000 0010 0000 0000 0000 0000 (18)
"Battery voltage difference of parallel system is too large", // 0000 0000 0000 0100 0000 0000 0000 0000 (19)
};
std::string values = "";
uint32_t mask = modbus::helpers::dword_from_hex_str(x, 0);
if (mask) {
for (int i = 0; i < WARNINGS_SIZE; i++) {
if (mask & (1 << i)) {
values.append(WARNINGS[i]);
values.append(";");
}
}
if (!values.empty()) {
values.pop_back();
}
}
return values;
# Operation Mode UInt 201 1 R 0: Power On, 1: Standby, 2: Mains, 3: Off-Grid, 4: Bypass, 5: Charging, 6: Fault
- platform: modbus_controller
modbus_controller_id: smg0
name: "operation mode"
address: 201
register_type: holding
raw_encode: HEXBYTES
icon: mdi:information
lambda: |-
uint16_t value = modbus::helpers::word_from_hex_str(x, 0);
switch (value) {
case 0: return std::string("Power On");
case 1: return std::string("Standby");
case 2: return std::string("Mains");
case 3: return std::string("Off-Grid");
case 4: return std::string("Bypass");
case 5: return std::string("Charging");
case 6: return std::string("Fault");
}
return std::string("Unknown");
number:
# Output voltage 0.1V Uint 320 1 R/W
- platform: modbus_controller
modbus_controller_id: smg0
name: "output voltage"
use_write_multiple: true
address: 320
register_type: holding
value_type: U_WORD
min_value: 0.0
# max_value: 100.0
step: 0.1
unit_of_measurement: "V"
entity_category: config
icon: mdi:cog
lambda: "return x * 0.1f;"
write_lambda: |-
return x * 10.0f;
# Output frequency setting 0.01Hz Uint 321 1 R/W
- platform: modbus_controller
modbus_controller_id: smg0
name: "output frequency setting"
use_write_multiple: true
address: 321
register_type: holding
value_type: U_WORD
min_value: 0.0
# max_value: 100.0
step: 0.01
unit_of_measurement: "Hz"
entity_category: config
icon: mdi:cog
lambda: "return x * 0.01f;"
write_lambda: |-
return x * 100.0f;
# Battery overvoltage protection point 0.1V Uint 323 1 R/W
- platform: modbus_controller
modbus_controller_id: smg0
name: "battery overvoltage protection point"
use_write_multiple: true
address: 323
register_type: holding
value_type: U_WORD
min_value: 0.0
# max_value: 100.0
step: 0.1
unit_of_measurement: "V"
entity_category: config
icon: mdi:battery-high
lambda: "return x * 0.1f;"
write_lambda: |-
return x * 10.0f;
# Max charging voltage 0.1V Uint 324 1 R/W
- platform: modbus_controller
modbus_controller_id: smg0
name: "max charging voltage"
use_write_multiple: true
address: 324
register_type: holding
value_type: U_WORD
min_value: 0.0
max_value: 100.0
step: 0.1
unit_of_measurement: "V"
entity_category: config
icon: mdi:battery-high
lambda: "return x * 0.1f;"
write_lambda: |-
return x * 10.0f;
# Floating charging voltage 0.1V Uint 325 1 R/W
- platform: modbus_controller
modbus_controller_id: smg0
name: "floating charging voltage"
use_write_multiple: true
address: 325
register_type: holding
value_type: U_WORD
min_value: 0.0
# max_value: 100.0
step: 0.1
unit_of_measurement: "V"
entity_category: config
icon: mdi:battery
lambda: "return x * 0.1f;"
write_lambda: |-
return x * 10.0f;
# Battery discharge recovery point in mains mode 0.1V Uint 326 1 R/W
- platform: modbus_controller
modbus_controller_id: smg0
name: "battery discharge recovery point in mains mode"
use_write_multiple: true
address: 326
register_type: holding
value_type: U_WORD
min_value: 0.0
# max_value: 100.0
step: 0.1
unit_of_measurement: "V"
entity_category: config
icon: mdi:battery-low
lambda: "return x * 0.1f;"
write_lambda: |-
return x * 10.0f;
# Battery low voltage protection point in mains mode 0.1V Uint 327 1 R/W
- platform: modbus_controller
modbus_controller_id: smg0
name: "battery low voltage protection point in mains mode"
use_write_multiple: true
address: 327
register_type: holding
value_type: U_WORD
min_value: 0.0
# max_value: 100.0
step: 0.1
unit_of_measurement: "V"
entity_category: config
icon: mdi:battery-low
lambda: "return x * 0.1f;"
write_lambda: |-
return x * 10.0f;
# Battery low voltage protection point in off-grid mode 0.1V Uint 329 1 R/W
- platform: modbus_controller
modbus_controller_id: smg0
name: "battery low voltage protection point in off-grid mode"
use_write_multiple: true
address: 329
register_type: holding
value_type: U_WORD
min_value: 0.0
# max_value: 100.0
step: 0.1
unit_of_measurement: "V"
entity_category: config
icon: mdi:battery-low
lambda: "return x * 0.1f;"
write_lambda: |-
return x * 10.0f;
# Maximum charging current 0.1A Uint 332 1 R/W
- platform: modbus_controller
modbus_controller_id: smg0
name: "maximum charging current"
use_write_multiple: true
address: 332
register_type: holding
value_type: U_WORD
min_value: 0.0
max_value: 100.0
step: 0.1
unit_of_measurement: "A"
entity_category: config
icon: mdi:battery-charging
lambda: "return x * 0.1f;"
write_lambda: |-
return x * 10.0f;
# Maximum mains charging current 0.1A Uint 333 1 R/W
- platform: modbus_controller
modbus_controller_id: smg0
name: "maximum mains charging current"
use_write_multiple: true
address: 333
register_type: holding
value_type: U_WORD
min_value: 0.0
max_value: 100.0
step: 0.1
unit_of_measurement: "A"
entity_category: config
icon: mdi:battery-charging
lambda: "return x * 0.1f;"
write_lambda: |-
return x * 10.0f;
# Eq Charging voltage 0.1V Uint 334 1 R/W
- platform: modbus_controller
modbus_controller_id: smg0
name: "Eq Charging voltage"
use_write_multiple: true
address: 334
register_type: holding
value_type: U_WORD
min_value: 0.0
max_value: 100.0
step: 0.1
unit_of_measurement: "V"
entity_category: config
icon: mdi:battery
lambda: "return x * 0.1f;"
write_lambda: |-
return x * 10.0f;
# Battery equalization time min Uint 335 1 R/W Range: 0~900
- platform: modbus_controller
modbus_controller_id: smg0
name: "battery equalization time"
use_write_multiple: true
address: 335
register_type: holding
value_type: U_WORD
min_value: 0.0
max_value: 900.0
step: 1
unit_of_measurement: "min"
entity_category: config
icon: mdi:timer
# Equalization Timeout exit min Uint 336 1 R/W Range: 0~900
- platform: modbus_controller
modbus_controller_id: smg0
name: "equalization Timeout exit"
use_write_multiple: true
address: 336
register_type: holding
value_type: U_WORD
min_value: 0.0
max_value: 900.0
step: 1
unit_of_measurement: "min"
entity_category: config
icon: mdi:timer
# Two equalization charging intervals day Uint 337 1 R/W Range: 1~90
- platform: modbus_controller
modbus_controller_id: smg0
name: "two equalization charging intervals"
use_write_multiple: true
address: 337
register_type: holding
value_type: U_WORD
min_value: 0.0
max_value: 90.0
step: 1
unit_of_measurement: "day"
entity_category: config
icon: mdi:timer
# SOC point back to utility source % Uint 341 1 R/W Value Menu 43 minimum setting value must be more than the value of program 45
- platform: modbus_controller
modbus_controller_id: smg0
name: "SOC point back to utility"
use_write_multiple: true
address: 341
register_type: holding
value_type: U_WORD
min_value: 0.0
max_value: 100.0
step: 1
unit_of_measurement: "%"
entity_category: config
icon: mdi:battery-alert
# SOC point back to battery % Uint 342 1 R/W Value Menu 44 60%~100% Settable
- platform: modbus_controller
modbus_controller_id: smg0
name: "SOC point back to battery"
use_write_multiple: true
address: 342
register_type: holding
value_type: U_WORD
min_value: 0.0
max_value: 100.0
step: 1
unit_of_measurement: "%"
entity_category: config
icon: mdi:battery-high
# Low DC cut-off SOC % Uint 343 1 R/W Value Menu 45 3%~30% the max setting value must be less than the value of program 43.
- platform: modbus_controller
modbus_controller_id: smg0
name: "Low DC cut-off SOC"
use_write_multiple: true
address: 343
register_type: holding
value_type: U_WORD
min_value: 0.0
max_value: 100.0
step: 1
unit_of_measurement: "%"
entity_category: config
icon: mdi:battery-low
button:
# Exit the fault mode Uint 426 W 1: Exit the fault state
- platform: template
name: "exit fault state"
icon: mdi:restore
on_press:
then:
- lambda: |-
auto cmd = esphome::modbus_controller::ModbusCommandItem::create_write_multiple_command(id(smg0), 426, 1, {1});
id(smg0)->queue_command(cmd);_______________________________________________________________________
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]
