Site Tools


en:tech:solarvilla

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:tech:solarvilla [2023/04/16 08:15] – [Battery] bullaren:tech:solarvilla [2023/04/16 08:30] (current) – [Donations] bullar
Line 263: Line 263:
 | {{ :tech:2awg_m8.png?direct&50 |}} | 2AWG(35mm²) | M8 | | {{ :tech:2awg_m8.png?direct&50 |}} | 2AWG(35mm²) | M8 |
  
 +
 +===== Settings =====
 +
 +Before we can go into operation, we still have to setup the BMS and the inverter.
 +
 +=== JKBMS ===
 +
 +The basic setting can be easily made via the app and at first the battery type LiFePo<sub>4</sub> is selected. The other parameters should then be adjusted to the characteristics of the battery. For me, the most important parameters look like this:
 +
 +<code>
 +Balance starting voltage               3.00 V
 +Balance trigger voltage                0.01 V
 +Cell count                             16
 +Cell voltage overvoltage protection    3.60 V
 +Cell voltage overvoltage recovery      3.45 V
 +Cell voltage undervoltage protection   2.60 V
 +Cell voltage undervoltage recovery.    3.00 V
 +Max balance current                    2.00 A
 +Max charge current                     62.0 A
 +Max discharge current                  100 A
 +Power off voltage                      2.50 V
 +Total battery capacity                 310Ah
 +</code>
 +
 +=== GROWATT SPF5000ES ===
 +
 +The inverter can be set directly at the device via the control panel or via the Growatt server. I have listed the most important parameters below:
 +
 +<code>
 +Program Setting Option       Description
 +----------------------------------------------------------------------------------------------
 +1 SBU (SBU priority).   Output source priority: To configure load power source priority
 +2 62A               Maximum charging current: set total charging current for solar and utility chargers. 
 +3 APL (Appliance)       AC input voltage range
 +4 DIS (disabled)       Power saving mode enable/disable
 +5 US2 (user-defined 2)  Battery type
 +6 DIS (disabled)       Auto restart when overload occurs
 +7 DIS (disabled)       Auto restart when over temperature occurs
 +8 230V               Output voltage
 +9 50Hz               Output frequency
 +10 16               Number of series batteries connected
 +11 30A               Maximum utility charging current
 +12 48.0V (3.0V x 16).    Setting voltage point back to utility source when selecting “SBU priority” or “Solar first” in program 01
 +13 54.4V (3.4V x 16).    Setting voltage point back to battery mode when selecting “SBU priority” or “Solar first” in program 01
 +14 CSO (solar first).    Charger source priority: To configure charger source priority
 +15 ON               Alarm control
 +16 ON               Backlight control
 +17 ON               Beeps while primary source is interrupted
 +18 ENA (enabled)       Overload bypass
 +19 56.8V (3.55V x 16).   C.V. charging voltage.
 +20 54.0V (3.375V x 16)   Floating charging voltage. If self-defined is selected in program 5, this program can be set up
 +21 44.0V               Low DC cut-off voltage.
 +</code>
 +
 +
 +===== Integration in Home Assistant =====
 +
 +As mentioned above, there is a handy app for the BMS for live data and settings. It runs via Bluetooth on iOS and Android. But in order to access it via Home Assistant, we needed a Bluetooth gateway.
 +
 +:!: Warning: It must support Bluetooth 4.2 to be able to use frame lengths of more than 20 bytes. The 300 bytes of live data are sent in three notification frames.
 +
 +A simple solution can again be achieved with an ESP32 module and ESPHome. You can find the software description [[https://github.com/syssi/esphome-jk-bms|here]].
 +My setup can be found in the attachment for reference.
 +
 +++++ jk-bms-ble.yaml |
 +
 +<file yaml jk-bms-ble.yaml>
 +substitutions:
 +  name: jk-bms
 +  device_description: "Monitor and control a JK-BMS via bluetooth"
 +  external_components_source: github://syssi/esphome-jk-bms@main
 +  mac_address: AA:BB:CC:DD:EE:FF
 +  # Defaults to "JK02". Please use "JK04" if you have some old JK-BMS version (f.e. JK-B2A16S hw 3.0, sw. 3.3.0)
 +  protocol_version: JK02
 +
 +esphome:
 +  name: ${name}
 +  comment: ${device_description}
 +  project:
 +    name: "syssi.esphome-jk-bms"
 +    version: 1.2.0
 +  platformio_options:
 +    build_flags: 
 +      - -DCONFIG_ARDUINO_LOOP_STACK_SIZE=32768
 +
 +esp32:
 +  board: nodemcu-32s
 +  framework:
 +#  The arduino platform crashs
 +#    type: arduino
 +#    version: latest
 +    type: esp-idf
 +    version: latest
 +
 +# Enable logging
 +logger:
 +
 +# Enable Home Assistant API
 +api:
 +  encryption:
 +    key: "-----key-----"
 +
 +ota:
 +  password: "-----password-----"
 +
 +wifi:
 +  ssid: !secret wifi_ssid
 +  password: !secret wifi_password
 +
 +  # Optional manual IP
 +  manual_ip:
 +    static_ip: 192.168.1.100
 +    gateway: 192.168.1.1
 +    subnet: 255.255.255.0
 +
 +  # Enable fallback hotspot (captive portal) in case wifi connection fails
 +  ap:
 +    ssid: "Jk-Bms-Ble Fallback Hotspot"
 +    password: "----password----"
 +
 +external_components:
 +  - source: ${external_components_source}
 +    refresh: 0s
 +
 +esp32_ble_tracker:
 +
 +ble_client:
 +  - mac_address: ${mac_address}
 +    id: client0
 +
 +jk_bms_ble:
 +  - ble_client_id: client0
 +    protocol_version: ${protocol_version}
 +    throttle: 5s
 +    id: bms0
 +
 +binary_sensor:
 +  - platform: jk_bms_ble
 +    balancing:
 +      name: "${name} balancing"
 +    charging:
 +      name: "${name} charging"
 +    discharging:
 +      name: "${name} discharging"
 +
 +button:
 +  - platform: jk_bms_ble
 +    retrieve_settings:
 +      name: "${name} retrieve settings"
 +    retrieve_device_info:
 +      name: "${name} retrieve device info"
 +
 +number:
 +  - platform: jk_bms_ble
 +    jk_bms_ble_id: bms0
 +    balance_trigger_voltage:
 +      name: "${name} balance trigger voltage"
 +    cell_count:
 +       name: "${name} cell count"
 +    total_battery_capacity:
 +      name: "${name} total battery capacity"
 +    cell_voltage_overvoltage_protection:
 +      name: "${name} cell voltage overvoltage protection"
 +    cell_voltage_overvoltage_recovery:
 +      name: "${name} cell voltage overvoltage recovery"
 +    cell_voltage_undervoltage_protection:
 +      name: "${name} cell voltage undervoltage protection"
 +    cell_voltage_undervoltage_recovery:
 +      name: "${name} cell voltage undervoltage recovery"
 +    balance_starting_voltage:
 +      name: "${name} balance starting voltage"
 +    voltage_calibration:
 +      name: "${name} voltage calibration"
 +    current_calibration:
 +      name: "${name} current calibration"
 +    power_off_voltage:
 +      name: "${name} power off voltage"
 +    max_balance_current:
 +      name: "${name} max balance current"
 +    max_charge_current:
 +      name: "${name} max charge current"
 +    max_discharge_current:
 +      name: "${name} max discharge current"
 +
 +sensor:
 +  - platform: jk_bms_ble
 +    jk_bms_ble_id: bms0
 +    min_cell_voltage:
 +      name: "${name} min cell voltage"
 +    max_cell_voltage:
 +      name: "${name} max cell voltage"
 +    min_voltage_cell:
 +      name: "${name} min voltage cell"
 +    max_voltage_cell:
 +      name: "${name} max voltage cell"
 +    delta_cell_voltage:
 +      name: "${name} delta cell voltage"
 +    average_cell_voltage:
 +      name: "${name} average cell voltage"
 +    cell_voltage_1:
 +      name: "${name} cell voltage 1"
 +    cell_voltage_2:
 +      name: "${name} cell voltage 2"
 +    cell_voltage_3:
 +      name: "${name} cell voltage 3"
 +    cell_voltage_4:
 +      name: "${name} cell voltage 4"
 +    cell_voltage_5:
 +      name: "${name} cell voltage 5"
 +    cell_voltage_6:
 +      name: "${name} cell voltage 6"
 +    cell_voltage_7:
 +      name: "${name} cell voltage 7"
 +    cell_voltage_8:
 +      name: "${name} cell voltage 8"
 +    cell_voltage_9:
 +      name: "${name} cell voltage 9"
 +    cell_voltage_10:
 +      name: "${name} cell voltage 10"
 +    cell_voltage_11:
 +      name: "${name} cell voltage 11"
 +    cell_voltage_12:
 +      name: "${name} cell voltage 12"
 +    cell_voltage_13:
 +      name: "${name} cell voltage 13"
 +    cell_voltage_14:
 +      name: "${name} cell voltage 14"
 +    cell_voltage_15:
 +      name: "${name} cell voltage 15"
 +    cell_voltage_16:
 +      name: "${name} cell voltage 16"
 +    cell_voltage_17:
 +      name: "${name} cell voltage 17"
 +    cell_voltage_18:
 +      name: "${name} cell voltage 18"
 +    cell_voltage_19:
 +      name: "${name} cell voltage 19"
 +    cell_voltage_20:
 +      name: "${name} cell voltage 20"
 +    cell_voltage_21:
 +      name: "${name} cell voltage 21"
 +    cell_voltage_22:
 +      name: "${name} cell voltage 22"
 +    cell_voltage_23:
 +      name: "${name} cell voltage 23"
 +    cell_voltage_24:
 +      name: "${name} cell voltage 24"
 +    cell_resistance_1:
 +      name: "${name} cell resistance 1"
 +    cell_resistance_2:
 +      name: "${name} cell resistance 2"
 +    cell_resistance_3:
 +      name: "${name} cell resistance 3"
 +    cell_resistance_4:
 +      name: "${name} cell resistance 4"
 +    cell_resistance_5:
 +      name: "${name} cell resistance 5"
 +    cell_resistance_6:
 +      name: "${name} cell resistance 6"
 +    cell_resistance_7:
 +      name: "${name} cell resistance 7"
 +    cell_resistance_8:
 +      name: "${name} cell resistance 8"
 +    cell_resistance_9:
 +      name: "${name} cell resistance 9"
 +    cell_resistance_10:
 +      name: "${name} cell resistance 10"
 +    cell_resistance_11:
 +      name: "${name} cell resistance 11"
 +    cell_resistance_12:
 +      name: "${name} cell resistance 12"
 +    cell_resistance_13:
 +      name: "${name} cell resistance 13"
 +    cell_resistance_14:
 +      name: "${name} cell resistance 14"
 +    cell_resistance_15:
 +      name: "${name} cell resistance 15"
 +    cell_resistance_16:
 +      name: "${name} cell resistance 16"
 +    cell_resistance_17:
 +      name: "${name} cell resistance 17"
 +    cell_resistance_18:
 +      name: "${name} cell resistance 18"
 +    cell_resistance_19:
 +      name: "${name} cell resistance 19"
 +    cell_resistance_20:
 +      name: "${name} cell resistance 20"
 +    cell_resistance_21:
 +      name: "${name} cell resistance 21"
 +    cell_resistance_22:
 +      name: "${name} cell resistance 22"
 +    cell_resistance_23:
 +      name: "${name} cell resistance 23"
 +    cell_resistance_24:
 +      name: "${name} cell resistance 24"
 +    total_voltage:
 +      name: "${name} total voltage"
 +    current:
 +      name: "${name} current"
 +    power:
 +      name: "${name} power"
 +    charging_power:
 +      name: "${name} charging power"
 +    discharging_power:
 +      name: "${name} discharging power"
 +    temperature_sensor_1:
 +      name: "${name} temperature sensor 1"
 +    temperature_sensor_2:
 +      name: "${name} temperature sensor 2"
 +    power_tube_temperature:
 +      name: "${name} power tube temperature"
 +    state_of_charge:
 +      name: "${name} state of charge"
 +    capacity_remaining:
 +      name: "${name} capacity remaining"
 +    total_battery_capacity_setting:
 +      name: "${name} total battery capacity setting"
 +    charging_cycles:
 +      name: "${name} charging cycles"
 +    total_charging_cycle_capacity:
 +      name: "${name} total charging cycle capacity"
 +    total_runtime:
 +      name: "${name} total runtime"
 +    balancing_current:
 +      name: "${name} balancing current"
 +    errors_bitmask:
 +      name: "${name} errors bitmask"
 +
 +switch:
 +  - platform: jk_bms_ble
 +    charging:
 +      name: "${name} charging"
 +    discharging:
 +      name: "${name} discharging"
 +    balancer:
 +      name: "${name} balancer"
 +
 +  - platform: ble_client
 +    ble_client_id: client0
 +    name: "${name} enable bluetooth connection"
 +
 +text_sensor:
 +  - platform: jk_bms_ble
 +    errors:
 +      name: "${name} errors"
 +    total_runtime_formatted:
 +      name: "${name} total runtime formatted"
 +</file>
 +
 +++++
 +
 +The GROWATT Inverter can be integrated directly into Home Assistant via [[https://www.home-assistant.io/integrations/growatt_server/|Integration]].
 +
 +===== Operation and Costs =====
 +
 +The plant has been in operation since March 2022 and generates between 430KW and 500KW per month depending on the weather. The best day so far was in March with 24KW and the worst with 1.2KW in November. However, October and November are also the months with the most precipitation (see [[de:tech:rainsensor|rain sensor]]).
 +
 +{{ :tech:solar_generation_chart.png?direct&400 |Solar production 2022}}
 +
 +The specified values are not the really achievable ones, since the inverter regulates down when the batteries are full and the house demand is below the current production capacity. What should he do with the energy if nobody can take it. We have observed this effect a few times. Nevertheless, the solar panels are only completely self-sufficient in sunny weather. On average, we draw additional energy of approx. 100..200KW/month from the grid because our AirBnB guests keep the air conditioning in the guest room running almost continuously, which means that consumption is higher than forecasted above.
 +
 +With an approximate average of 450KW/month, this results in an annual production output of 5,400KW. One kilowatt hour costs us 7 baht/19 ct (1€ = ~37 baht), so we save approx. €1,021 (€85 per month)**.
 +
 +The entire solar system without the service line and roof substructure cost us **206,000 Bath**, which is **€5,567**. The work output was my own that kept me meaningfully engaged during the pandemic, so I'm not counting it. I don't count the steel substructure for the carport either, since it was necessary anyway to cover our //fleet// (motor scooters and car). Incidentally, the local offers for a comparable system were more than twice as high (but then with wages).
 +
 +From today's point of view, the system will pay for itself after about 5 ½ years, assuming there are no maintenance or repair costs. The goal envisaged above has thus been easily achieved. The first thing to do is to replace the batteries. With around 4000 cycles, that would be after 10 years and the solar panels would be down to 85% performance after 25 years. The future will show how and whether the values will really be achieved.
 +
 +Not to be forgotten, however, is the increase in comfort in the event of a grid failure when the neighbors have to fiddle with torches and candles, as well as the really good feeling of using solar energy when you turn on the air conditioning...
 +
 +Finally, the charging and discharging chart over three days. The batteries are charged from around 7:00 a.m. to around 6:00 p.m., after which the discharge begins. If the charge falls well below 20%, the grid will charge. Shown by the linear increase on the first and last night.
 +
 +{{ :tech:solar_charge.png?direct&400 |Solar battery charge/discharge}}
 +
 +
 +=====Links=====
 +   * [[https://www.home-assistant.io]] Home Assistant
 +   * [[https://esphome.io]] ESPHome
 +   * [[https://airbnb.com/h/villarollokohsamui]] You can spend your holidays with us...
 +
 +===== Donations =====
 +
 +If you want to support my work, you can donate me a cappuccino or something like this...
 +
 +<html>
 +
 +<form action="https://www.paypal.com/donate" method="post" target="_top">
 +<input type="hidden" name="hosted_button_id" value="49N24HL36GF9U" />
 +<input type="image" src="https://www.paypalobjects.com/en_US/DK/i/btn/btn_donateCC_LG.gif" border="0" name="submit" title="PayPal - The safer, easier way to pay online!" alt="Donate with PayPal button" />
 +<img alt="" border="0" src="https://www.paypal.com/en_DE/i/scr/pixel.gif" width="1" height="1" />
 +</form>
 +
 +</html>
en/tech/solarvilla.1681632905.txt.gz · Last modified: 2023/04/16 08:15 by bullar