Skip to content
View in the app

A better way to browse. Learn more.

Power Forum - Renewable Energy Discussion

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

LUMOnergy

Members
  • Joined

  • Last visited

Reputation Activity

  1. Like
    LUMOnergy reacted to Wesley.Davids in MAGNETO 5.1kWh LiFePO4 Battery 51V 100Ah   
    It was related to battery cell calibration; during testing, they found one of the battery cells had low voltage and advised replacing the battery. After installing the new one, they tested everything, and it worked. I believe they also had other clients to attend to in the Cape Town area.
  2. Like
    LUMOnergy reacted to Wesley.Davids in MAGNETO 5.1kWh LiFePO4 Battery 51V 100Ah   
    I had an exceptional customer service experience with Magneto when encountering an issue with my Magneto Lithium LifePo4 Rack Mount 5.1kWh system. I had a problem where my battery would shut down at 30%. Despite this setback, the Magneto team flew from Johannesburg to Cape Town and then drove to my residence in Swellendam to address the issue in person, showcasing their commitment to resolving customer problems. I want to thank Brian Mclachlan and Ferdie from Magneto. I highly recommend Magneto for their exceptional customer service and reliable products.💫
  3. Thanks
    For a nice live power view like this

     
    Just install power-flow-card-plus from hacs, I also recommend apexcharts-card for charting. The integrated "energy" view from HA doesn't support live information, so it's better to build your own energy dashboard
     
    For a "Gettting Started Dashboard"
    Install the following from hacs first
    layout-card
    stack-in-card
    history-explorer-card
    power-flow-card-plus


    views: - theme: Backend-selected title: Solis path: solis icon: mdi:flash cards: - type: custom:layout-card layout_type: custom:vertical-layout layout: width: 1000 max_cols: 1 cards: - type: custom:stack-in-card title: null mode: horizontal cards: - type: gauge entity: sensor.solis_inverter_dc_power name: Solar Power max: 6000 min: 0 needle: false - type: gauge entity: sensor.solis_backup_load_power name: Load max: 6000 min: 0 needle: false - type: gauge entity: sensor.solis_battery_soc name: Battery SOC needle: false severity: green: 50 yellow: 20 red: 12 - type: gauge entity: sensor.solis_inverter_ac_power name: Inverter Power max: 6000 min: -6000 needle: true severity: green: -6000 yellow: -10 red: 10 - type: gauge entity: sensor.solis_battery_power name: Battery Power max: 6000 min: -6000 needle: true severity: green: -6000 yellow: -10 red: 10 - type: gauge entity: sensor.solis_grid_active_power_negative name: Grid Power max: 6000 min: -6000 needle: true severity: green: -6000 yellow: -10 red: 10 - type: custom:layout-card layout_type: custom:masonry-layout layout: column_widths: 1fr 2fr; width: 400 cards: - type: custom:stack-in-card title: null mode: vertical cards: - type: energy-solar-consumed-gauge - type: custom:power-flow-card-plus entities: battery: entity: consumption: sensor.solis_battery_discharge_power production: sensor.solis_battery_charge_power state_of_charge: sensor.solis_battery_soc invert_state: true state_of_charge_unit: '%' display_state: two_way use_metadata: false color_value: true state_of_charge_unit_white_space: false grid: entity: sensor.solis_grid_active_power invert_state: true use_metadata: true name: Grid power_outage: entity: switch.grid_status_11 state_alert: 'off' solar: entity: sensor.solis_inverter_dc_power display_zero_state: true home: entity: sensor.solis_backup_load_power clickable_entities: true display_zero_lines: mode: show transparency: 50 grey_color: - 189 - 189 - 189 use_new_flow_rate_model: true w_decimals: 0 kw_decimals: 1 min_flow_rate: 0.75 max_flow_rate: 12 max_expected_power: 6000 min_expected_power: 300 watt_threshold: 1000 transparency_zero_lines: 0 title: Live power view_layout: position: sidebar - type: custom:history-explorer-card header: Power Chart cardName: historycard-93716784 combineSameUnits: true graphs: - type: line title: Load / Grid / Solar options: interval: daily ymax: 4000 entities: - entity: sensor.solis_grid_active_power_negative name: Grid - entity: sensor.solis_backup_load_power name: Load - entity: sensor.solis_inverter_dc_power name: Solar Power - entity: sensor.power_production_now color: white fill: rgba(0,0,0,0) name: Forecast Solar - type: line title: Battery options: interval: daily ymin: 0 ymax: 100 entities: - entity: sensor.solis_battery_soc  
  4. Thanks
    UPDATE 2023/12/02:
    The following is easier to implement, and much less overhead and setup: https://github.com/Pho3niX90/solis_modbus
     
    This comes mainly from the following repo: https://github.com/fboundy/ha_solis_modbus
    There are a couple helpers there, which also writes to the inverter to change workmode, you could also easily change SOC with some automations etc. 
    CONS:
    The  datalogger will no longer report to the cloud, but support will still be able to assist with firmware upgrades, and remotely change settings PROS:
    Faster comms and data retrieval (configurable). There will be no more need to use the solis app, except for local config via bluetooth if needed.  
    STEP 1: 
    inside /config/secrets.yaml, add the following line, and change the IP to your inverters IP:
    solis_ip: 10.0.0.75 STEP 2: 
    Create the following file /config/solis.yaml
    Inside, add the following.
    NOTE: you can change scan_interval for each sensor to match your liking. 
    - name: "solis" type: tcp host: !secret solis_ip port: 502 # for S2-WL-ST sticks # port: 8899 # for DLS-L sticks sensors: - name: Solis Year RO slave: 1 address: 33022 scale: 1 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 30 state_class: measurement - name: Solis Month RO slave: 1 address: 33023 scale: 1 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 60 state_class: measurement - name: Solis Day RO slave: 1 address: 33024 scale: 1 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 60 state_class: measurement - name: Solis Hour RO slave: 1 address: 33025 scale: 1 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 60 state_class: measurement - name: Solis Minute RO slave: 1 address: 33026 scale: 1 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 60 state_class: measurement - name: Solis Year RW slave: 1 address: 43000 scale: 1 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 state_class: measurement - name: Solis Month RW slave: 1 address: 43001 scale: 1 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 state_class: measurement - name: Solis Day RW slave: 1 address: 43002 scale: 1 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 state_class: measurement - name: Solis Hour RW slave: 1 address: 43003 scale: 1 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 state_class: measurement - name: Solis Minute RW slave: 1 address: 43004 scale: 1 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 state_class: measurement - name: Solis Second RW slave: 1 address: 43005 scale: 1 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 state_class: measurement # Temperature - name: Solis Temperature unique_id: solis_temperature slave: 1 address: 33093 scale: 0.1 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 60 device_class: temperature state_class: measurement unit_of_measurement: °C # Grid - name: Solis Grid Frequency slave: 1 address: 33282 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 10 scale: 0.01 precision: 1 device_class: frequency state_class: measurement unit_of_measurement: Hz - name: Solis Grid Voltage slave: 1 address: 33251 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 5 scale: 0.1 precision: 1 device_class: voltage state_class: measurement unit_of_measurement: V - name: Solis Grid Current slave: 1 address: 33252 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 5 scale: 0.01 precision: 1 device_class: current state_class: measurement unit_of_measurement: A - name: Solis Grid Active Power unique_id: solis_grid_active_power slave: 1 address: 33257 # count: 2 input_type: input data_type: int32 lazy_error_count: 5 scan_interval: 5 scale: 1 precision: 1 device_class: power state_class: measurement unit_of_measurement: W # Energy Imported/Exported - name: Solis Daily Energy Imported unique_id: solis_daily_energy_imported slave: 1 address: 33171 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 300 scale: 0.1 precision: 1 device_class: energy state_class: total_increasing unit_of_measurement: kWh - name: Solis Daily Energy Exported slave: 1 address: 33175 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 300 scale: 0.1 precision: 1 device_class: energy state_class: total_increasing unit_of_measurement: kWh - name: Solis Total Energy Imported slave: 1 address: 33169 # count: 2 input_type: input data_type: uint32 lazy_error_count: 5 scan_interval: 3600 scale: 1 precision: 1 device_class: energy state_class: total unit_of_measurement: kWh - name: Solis Total Energy Exported slave: 1 address: 33173 # count: 2 input_type: input data_type: uint32 lazy_error_count: 5 scan_interval: 3600 scale: 1 precision: 1 device_class: energy state_class: total unit_of_measurement: kWh # Load - name: Solis House Load Power slave: 1 address: 33147 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 5 scale: 1 precision: 1 device_class: power state_class: measurement unit_of_measurement: W - name: Solis Backup Load Power unique_id: solis_backup_load_power slave: 1 address: 33148 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 5 scale: 1 precision: 1 device_class: power state_class: measurement unit_of_measurement: W # Consumption - name: Solis Daily Consumption slave: 1 address: 33179 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 300 scale: 0.1 precision: 1 device_class: energy state_class: total unit_of_measurement: kWh - name: Solis Total Consumption slave: 1 address: 33177 # count: 2 input_type: input data_type: uint32 lazy_error_count: 5 scan_interval: 3600 scale: 1 precision: 1 device_class: energy state_class: total unit_of_measurement: kWh # Battery - name: Solis Battery Power unique_id: solis_battery_power slave: 1 address: 33149 # count: 2 input_type: input data_type: int32 lazy_error_count: 5 scan_interval: 5 scale: 1 precision: 1 device_class: power state_class: measurement unit_of_measurement: W - name: Solis Battery SOC slave: 1 address: 33139 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 30 scale: 1 precision: 1 device_class: battery state_class: measurement unit_of_measurement: "%" - name: Solis Battery SOH slave: 1 address: 33140 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 1 device_class: battery state_class: measurement unit_of_measurement: "%" - name: Solis Battery Voltage unique_id: solis_battery_voltage slave: 1 address: 33133 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 5 scale: 0.1 precision: 1 device_class: voltage state_class: measurement unit_of_measurement: V - name: Solis Battery Voltage (BMS) slave: 1 address: 33141 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 0.01 precision: 1 device_class: voltage state_class: measurement unit_of_measurement: V - name: Solis Battery Current unique_id: solis_battery_current slave: 1 address: 33134 input_type: input data_type: int16 lazy_error_count: 5 scan_interval: 5 scale: 0.1 precision: 1 device_class: current state_class: measurement unit_of_measurement: A - name: Solis Battery Current (BMS) slave: 1 address: 33142 input_type: input data_type: int16 lazy_error_count: 5 scan_interval: 60 scale: 0.01 precision: 1 device_class: current state_class: measurement unit_of_measurement: A - name: Solis Battery Charge Current Limit (BMS) slave: 1 address: 33143 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 0.1 precision: 1 device_class: current state_class: measurement unit_of_measurement: A - name: Solis Battery Discharge Current Limit (BMS) slave: 1 address: 33144 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 0.1 precision: 1 device_class: current state_class: measurement unit_of_measurement: A - name: Solis Battery Charge Current Limit slave: 1 address: 33206 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 30 scale: 0.1 precision: 1 device_class: current state_class: measurement unit_of_measurement: A - name: Solis Battery Discharge Current Limit slave: 1 address: 33207 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 30 scale: 0.1 precision: 1 device_class: current state_class: measurement unit_of_measurement: A # Battery Totals - name: Solis Daily Battery Charge slave: 1 address: 33163 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 300 scale: 0.1 precision: 1 device_class: energy state_class: total_increasing unit_of_measurement: kWh - name: Solis Daily Battery Discharge slave: 1 address: 33167 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 300 scale: 0.1 precision: 1 device_class: energy state_class: total_increasing unit_of_measurement: kWh - name: Solis Total Battery Charge slave: 1 address: 33161 # count: 2 input_type: input data_type: uint32 lazy_error_count: 5 scan_interval: 3600 scale: 1 precision: 1 device_class: energy state_class: total unit_of_measurement: kWh - name: Solis Total Battery Discharge slave: 1 address: 33165 # count: 2 input_type: input data_type: uint32 lazy_error_count: 5 scan_interval: 3600 scale: 1 precision: 1 device_class: energy state_class: total unit_of_measurement: kWh # Inverter DC Input - name: Solis PV1 Voltage slave: 1 address: 33049 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 0.1 precision: 1 device_class: voltage state_class: measurement unit_of_measurement: V - name: Solis PV2 Voltage slave: 1 address: 33051 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 0.1 precision: 1 device_class: voltage state_class: measurement unit_of_measurement: V - name: Solis PV1 Current slave: 1 address: 33050 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 0.1 precision: 1 device_class: current state_class: measurement unit_of_measurement: A - name: Solis PV2 Current slave: 1 address: 33052 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 0.1 precision: 1 device_class: current state_class: measurement unit_of_measurement: A - name: Solis Inverter DC Power slave: 1 address: 33057 # count: 2 input_type: input data_type: uint32 lazy_error_count: 5 scan_interval: 30 scale: 1 precision: 1 device_class: power state_class: measurement unit_of_measurement: W # Inverter AC Output - name: Solis Inverter AC Power slave: 1 address: 33079 # count: 2 input_type: input data_type: int32 lazy_error_count: 5 scan_interval: 30 scale: 1 precision: 1 device_class: power state_class: measurement unit_of_measurement: W - name: Solis Inverter Voltage slave: 1 address: 33073 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 30 scale: 0.1 precision: 1 device_class: voltage state_class: measurement unit_of_measurement: V - name: Solis Inverter Current slave: 1 address: 33076 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 30 scale: 0.1 precision: 1 device_class: current state_class: measurement unit_of_measurement: A - name: Solis Inverter Apparent Power slave: 1 address: 33083 # count: 2 input_type: input data_type: int32 lazy_error_count: 5 scan_interval: 30 scale: 1 precision: 1 device_class: apparent_power state_class: measurement unit_of_measurement: VA - name: Solis Inverter Frequency slave: 1 address: 33094 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 30 scale: .01 precision: 1 device_class: frequency state_class: measurement unit_of_measurement: Hz # Generation - name: Solis Daily Generation slave: 1 address: 33035 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 300 scale: .1 precision: 1 device_class: energy state_class: total_increasing unit_of_measurement: kWh - name: Solis Monthly Generation slave: 1 address: 33031 # count: 2 input_type: input data_type: uint32 lazy_error_count: 5 scan_interval: 3600 scale: 1 precision: 1 device_class: energy state_class: total unit_of_measurement: kWh - name: Solis Yearly Generation slave: 1 address: 33037 # count: 2 input_type: input data_type: uint32 lazy_error_count: 5 scan_interval: 3600 scale: 1 precision: 1 device_class: energy state_class: total unit_of_measurement: kWh - name: Solis Total Generation slave: 1 address: 33029 # count: 2 input_type: input data_type: uint32 lazy_error_count: 5 scan_interval: 3600 scale: 1 precision: 1 device_class: energy state_class: total unit_of_measurement: kWh # Flags and Status - name: Solis Energy Storage Control Switch slave: 1 address: 33132 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 30 scale: 1 precision: 1 state_class: measurement - name: Solis Battery Current Direction slave: 1 address: 33135 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 30 scale: 1 precision: 1 state_class: measurement - name: Solis Inverter Status slave: 1 address: 33095 input_type: input data_type: uint16 lazy_error_count: 5 scan_interval: 30 scale: 1 precision: 1 state_class: measurement # Holding registers # Timed Charge and Discharge Currenmt Limits (R/W) - name: Solis Charge Current Limit slave: 1 address: 43117 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 0.1 precision: 1 state_class: measurement device_class: current unit_of_measurement: A - name: Solis Discharge Current Limit slave: 1 address: 43118 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 0.1 precision: 1 state_class: measurement device_class: current unit_of_measurement: A # Timed Charge and Discharge Settings (R/W) - name: Solis Timed Charge Current Limit slave: 1 address: 43141 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 0.1 precision: 1 state_class: measurement device_class: current unit_of_measurement: A - name: Solis Timed Discharge Current Limit slave: 1 address: 43142 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 0.1 precision: 1 state_class: measurement device_class: current unit_of_measurement: A - name: Solis Timed Charge Start Hour slave: 1 address: 43143 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Charge Start Minute slave: 1 address: 43144 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Charge End Hour slave: 1 address: 43145 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Charge End Minute slave: 1 address: 43146 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Discharge Start Hour slave: 1 address: 43147 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Discharge Start Minute slave: 1 address: 43148 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Discharge End Hour slave: 1 address: 43149 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Discharge End Minute slave: 1 address: 43150 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement # 2nd Timed slots - name: Solis Timed Charge 2 Start Hour slave: 1 address: 43153 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Charge 2 Start Minute slave: 1 address: 43154 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Charge 2 End Hour slave: 1 address: 43155 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Charge 2 End Minute slave: 1 address: 43156 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Discharge 2 Start Hour slave: 1 address: 43157 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Discharge 2 Start Minute slave: 1 address: 43158 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Discharge 2 End Hour slave: 1 address: 43159 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Discharge 2 End Minute slave: 1 address: 43160 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement # 3rd Timed slots - name: Solis Timed Charge 3 Start Hour slave: 1 address: 43163 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Charge 3 Start Minute slave: 1 address: 43164 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Charge 3 End Hour slave: 1 address: 43165 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Charge 3 End Minute slave: 1 address: 43166 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Discharge 3 Start Hour slave: 1 address: 43167 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Discharge 3 Start Minute slave: 1 address: 43168 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Discharge 3 End Hour slave: 1 address: 43169 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Timed Discharge 3 End Minute slave: 1 address: 43170 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement - name: Solis Backup Mode SOC slave: 1 address: 43024 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement device_class: battery unit_of_measurement: "%" - name: Solis Overdischarge SOC slave: 1 address: 43011 input_type: holding data_type: uint16 lazy_error_count: 5 scan_interval: 60 scale: 1 precision: 0 state_class: measurement device_class: battery unit_of_measurement: "%" STEP 3:
    Inside /config/configuration.yaml, add the following line
    modbus: !include solis.yaml STEP 4:
    Inside /config/configuration.yaml, add the following line
    template: !include solis-template.yaml Create /config/solis-template.yaml and add the following inside
    - sensor: - name: "Solis Battery SOC - Lead" unique_id: solis_battery_soc_leadacid unit_of_measurement: "%" state_class: measurement state: >- {% set num_batteries = 4 %} {% set total_voltage = states('sensor.solis_battery_voltage') | float %} {% set breakpoints = [ (52.0, 100), (51.8, 98), (51.6, 96), (51.4, 95), (51.3, 95), (51.2, 92.5), (51.1, 90), (51.05, 88), (51.0, 85), (50.9, 82), (50.8, 80), (50.7, 78), (50.6, 75), (50.5, 73), (50.4, 70), (50.3, 68), (50.2, 65), (50.1, 63), (50.0, 60), (49.8, 58), (49.6, 56), (49.4, 54), (49.2, 52), (49.0, 50), (48.8, 48), (48.6, 46), (48.4, 44), (48.2, 42), (48.0, 40), (47.9, 39), (47.8, 38), (47.7, 37), (47.6, 36), (47.5, 35), (47.4, 34), (47.3, 33), (47.25, 32), (46.9, 31), (46.2, 10), (46.04, 10), (46.0, 10), (45.8, 5), (45.6, 3), (45.4, 2), (45.2, 1) ] %} {% set state_of_charge = 0 %} {% for voltage, percentage in breakpoints %} {% if total_voltage >= voltage %} {% set state_of_charge = percentage %} {% break %} {% endif %} {% endfor %} {% if state_of_charge == 0 and total_voltage > breakpoints[-1][0] %} {% set state_of_charge = 100 %} {% endif %} {{ state_of_charge | round(2) }} - name: "Solis Grid Active Power (Negative)" unique_id: "Solis Grid Active Power (Negative)" unit_of_measurement: W device_class: power state_class: measurement state: >- {{ -1 * states('sensor.solis_grid_active_power') | float }} - name: "Solis Grid Export Power" unique_id: "Solis Grid Export Power" unit_of_measurement: W device_class: power state_class: measurement state: > {% set state = states.sensor.solis_grid_active_power.state | float %} {{ state if state > 0 else 0 }} - name: "Solis Grid Import Power" unique_id: "Solis Grid Import Power" unit_of_measurement: W device_class: power state_class: measurement state: > {% set state = states.sensor.solis_grid_active_power.state | float %} {{ -1 * state if state < 0 else 0 }} - name: "Solis Grid Mode" unique_id: "Solis Grid Mode" state: > {% set state = states.sensor.solis_grid_active_power.state | float %} {% if state > 50 -%} Export {%- elif state <-50 -%} Import {%- else -%} Zero {%- endif %} - name: "Solis Battery Mode" unique_id: "Solis Battery Mode" state: > {% set state = states.sensor.solis_battery_current_direction.state | int %} {{ 'Discharge' if state > 0 else 'Charge' }} - name: "Solis Battery Charge Power" unique_id: "Solis Battery Charge Power" device_class: power state_class: measurement unit_of_measurement: W state: > {% set state = states.sensor.solis_battery_current_direction.state | int %} {{ 0 if state > 0 else states('sensor.solis_battery_power') | float(2) }} - name: "Solis Battery Discharge Power" unique_id: "Solis Battery Discharge Power" device_class: power state_class: measurement unit_of_measurement: W state: > {% set state = states.sensor.solis_battery_current_direction.state | int %} {{ states('sensor.solis_battery_power') | float(2) if state > 0 else 0 }} - name: "Solis Manual Storage Mode" unique_id: "Solis Manual Storage Mode" state: > {{(states('input_boolean.solis_storage_mode_spontaneous') == 'on') | int + 2 * (states('input_boolean.solis_storage_mode_timed') == 'on') | int + 4 * (states('input_boolean.solis_storage_mode_off_grid') == 'on') | int + 8 * (states('input_boolean.solis_storage_mode_wake_up') == 'on') | int + 16 * (states('input_boolean.solis_storage_mode_backup') == 'on') | int + 32 * (states('input_boolean.solis_storage_mode_grid_charge') == 'on') | int + 64 * (states('input_boolean.solis_solis_storage_mode_feed_in_priority') == 'on') | int }} - name: "Solis Eco7 Time Remaining" unique_id: "Solis Eco7 Time Remaining" state_class: measurement state: > {% if today_at(states('input_datetime.economy_7_end')) < now() -%} {{(((today_at(states('input_datetime.economy_7_end')) - today_at(states('input_datetime.economy_7_start')))).total_seconds() / 36) | int / 100}} {%- else -%} {{max((((today_at(states('input_datetime.economy_7_end')) - max(now(), today_at(states('input_datetime.economy_7_start')))).total_seconds() / 36) | int) / 100,0)}} {%- endif %} - name: "Solis Eco7 Charge Current" unique_id: "Solis Eco7 Charge Current" device_class: current state_class: measurement unit_of_measurement: A state: > {{( ((states('input_number.solis_battery_capacity') | int * 1000) * ((states('input_number.eco7_target_soc') | int) - (states('sensor.solis_battery_soc') | int)) ) / 10 / (states('sensor.solis_eco7_time_remaining') | float) / (states('sensor.solis_battery_voltage_bms') | float) ) | int / 10 }} STEP 5 (OPTIONAL):
    This is so you are able to write to the inverter from HA, see https://github.com/fboundy/ha_solis_modbus#writing-to-the-inverter for more options.
    Add the following to your /config/scripts.yaml file, or create one if it doesn't exist. If it doesn't exist, just add script: !include scripts.yaml into /config/configuration.yaml
    set_solis_storage_toggles: alias: Set Solis Storage Toggles sequence: - if: - condition: template value_template: "{{states('sensor.solis_energy_storage_control_switch') | int | bitwise_and(64) == 64}}" then: - service: input_boolean.turn_on data: {} target: entity_id: - input_boolean.solis_storage_mode_feed_in_priority else: - service: input_boolean.turn_off data: {} target: entity_id: input_boolean.solis_storage_mode_feed_in_priority - if: - condition: template value_template: "{{states('sensor.solis_energy_storage_control_switch') | int | bitwise_and(32) == 32}}" then: - service: input_boolean.turn_on data: {} target: entity_id: - input_boolean.solis_storage_mode_grid_charge else: - service: input_boolean.turn_off data: {} target: entity_id: input_boolean.solis_storage_mode_grid_charge - if: - condition: template value_template: "{{states('sensor.solis_energy_storage_control_switch') | int | bitwise_and(16) == 16}}" then: - service: input_boolean.turn_on data: {} target: entity_id: input_boolean.solis_storage_mode_backup else: - service: input_boolean.turn_off data: {} target: entity_id: input_boolean.solis_storage_mode_backup - if: - condition: template value_template: "{{states('sensor.solis_energy_storage_control_switch') | int | bitwise_and(8) == 8}}" then: - service: input_boolean.turn_on data: {} target: entity_id: input_boolean.solis_storage_mode_wake_up else: - service: input_boolean.turn_off data: {} target: entity_id: - input_boolean.solis_storage_mode_wake_up - if: - condition: template value_template: "{{states('sensor.solis_energy_storage_control_switch') | int | bitwise_and(4) == 4}}" then: - service: input_boolean.turn_on data: {} target: entity_id: input_boolean.solis_storage_mode_off_grid else: - service: input_boolean.turn_off data: {} target: entity_id: input_boolean.solis_storage_mode_off_grid - if: - condition: template value_template: "{{states('sensor.solis_energy_storage_control_switch') | int | bitwise_and(2) == 2}}" then: - service: input_boolean.turn_on data: {} target: entity_id: - input_boolean.solis_storage_mode_timed else: - service: input_boolean.turn_off data: {} target: entity_id: input_boolean.solis_storage_mode_timed - if: - condition: template value_template: "{{states('sensor.solis_energy_storage_control_switch') | int | bitwise_and(1) == 1}}" then: - service: input_boolean.turn_on data: {} target: entity_id: input_boolean.solis_storage_mode_spontaneous else: - service: input_boolean.turn_off data: {} target: entity_id: - input_boolean.solis_storage_mode_spontaneous mode: single icon: mdi:toggle-switch-off-outline solis_set_time: alias: Solis Set Time sequence: - service: script.solis_write_holding_register data: register_addr: 43003 register_value: '{{now().hour}}' - service: script.solis_write_holding_register data: register_addr: 43004 register_value: '{{now().minute}}' - service: script.solis_write_holding_register data: register_addr: 43005 register_value: '{{now().second}}' mode: single solis_set_energy_storage_mode: alias: Solis Set Energy Storage Mode fields: storage_mode: description: Storage Mode to Set (uint16) example: 35 sequence: - service: script.solis_write_holding_register data: register_addr: 43110 register_value: "{{(states('input_boolean.solis_storage_mode_spontaneous') == 'on') | int + 2 * (states('input_boolean.solis_storage_mode_timed') == 'on') | int + 4 * (states('input_boolean.solis_storage_mode_off_grid') == 'on') | int + 8 * (states('input_boolean.solis_storage_mode_wake_up') == 'on') | int + 16 * (states('input_boolean.solis_storage_mode_backup') == 'on') | int + 32 * (states('input_boolean.solis_storage_mode_grid_charge') == 'on') | int }}" mode: single solis_set_charge_current: alias: Solis Set Charge Current fields: solis_set_charge_current: description: Fixed time charge current (A) example: 50 sequence: - service: script.solis_write_holding_register data: register_addr: 43141 register_value: "{{ charge_current * 10 }}" mode: single solis_write_holding_register: alias: Solis Write Holding Register fields: register_addr: description: Holding address to write to example: 43141 register_value: description: Value to write to holding address example: 500 sequence: - service: modbus.write_register data: address: "{{ register_addr }}" slave: 1 value: "{{ register_value }}" hub: solis - service: logbook.log data: message: Send {{register_value}} to {{register_addr}} name: Solis Write solis_set_eco7_times: alias: Solis Set Eco7 Times sequence: - service: script.solis_write_holding_register data: register_addr: 43143 register_value: "{{(states('input_datetime.economy_7_start')).split(':')[0] | int}}" - service: script.solis_write_holding_register data: register_addr: 43144 register_value: "{{(states('input_datetime.economy_7_start')).split(':')[1] | int}}" - service: script.solis_write_holding_register data: register_addr: 43145 register_value: "{{(states('input_datetime.economy_7_end')).split(':')[0] | int}}" - service: script.solis_write_holding_register data: register_addr: 43146 register_value: "{{(states('input_datetime.economy_7_end')).split(':')[1] | int}}" mode: single icon: mdi:battery-clock-outline LAST: Now restart home assistant, and you should see the new metrics/sensors pull in
  5. Like
    LUMOnergy reacted to SEGEN SOLAR in FoxEss   
    We happy to introduce our new range. Feel free to ask any questions.
    Fox ESS All in One.pdf
  6. Like
    Morning peoples
    Yesterday i did some digging and found out that Voltronic (the manufacturers of rebranded inverters like Mecer, Kodak, RCT and more) released an upgrade to WatchPower/SolarPower named Energy-Mate. Voltronic Power News. Available on Google Store. It is still buggy (spelling errors etc.), but it is MUCH better with usable graphs. It uses the same login details as WatchPower so your whole history is retained.
    You don't have intelligent DB control, but you can manage inverter settings and have decent feedback
  7. Like
    I ended up pulling the trigger on Solar Assistant. What a pleasure this is! Compared to WatchPower, well, there's no comparison. I can see each time my fridge switches on, or the percolator is running. Magic stuff.
  8. Like
    LUMOnergy reacted to WezHo in Alternative to Watchpower, any recommendations?   
    Just started with Solar Assistant. 
    The best thing for monitoring and making changes on the fly. still learning, but made such a difference in figuring out what is what
  9. Like
    Thanks guys. Shaun, I loved fiddling and developing and blowing things up, but now I'm very simply out of time, which is why I'd now rather pay than fiddle. But thanks for the info.
     
  10. Like
    LUMOnergy reacted to PsyWulf in Alternative to Watchpower, any recommendations?   
    You'll find much of the forum is using it
  11. Like
    I'm now talking to Solar Assist (https://solar-assistant.io/). It's a paid solution, but ja, as long as it works I'm willing to pay. Is this a good solution?
  12. Like
    LUMOnergy reacted to system32 in Hubble Lithium Battery AM-2 5.5kWh   
    The batteries are in a shaded, well ventilated large basement garage.
    The garage is at Johannesburg indoor temperatures.
    The garage is too big to cool.
    The garage is used for my motor bike & bicycle. (no car)
    The temperature above is whilst charging.



    What's your temperature whilst peak charging?

    EDIT:
    SA seems to report the wrong temperatures compared to RIOT.
  13. Like
    LUMOnergy reacted to PowerUser in Hubble Lithium Battery AM-2 5.5kWh   
    I know, the BMS will provide the value but the above screen indicates, it's 110Ah and not 100Ah battery.
  14. Like
    LUMOnergy reacted to JoeSlow in Hubble Lithium Battery AM-2 5.5kWh   
    The same when you have two of them connected or does one double all the values then?
  15. Like
    LUMOnergy reacted to Taahir in Kodak OGS5.6 Firmware Update Assitance Needed   
    Hi 
    we can assist with firmware update 
    please send me an email with your info
    regards 
    Taahir 
    [email protected]
  16. Like
    LUMOnergy reacted to ShaunH in Kodak 7.2OG Firmware Update and Parallelization   
    What is going wrong?
     
    It seems, whenever I update the U1 (main CPU) firmware, the control board bricks.
     
    Full story:
    1. Bought 2nd inverter with U1 45.13, U2 12.21
    2. Tried RS-232 - USB reflash to 69.07 (to match 1st inverter), all seems to go well
    3. Warning 32 appears on display
    4. No amount of re-trying, specific timing, USB OTG, or USB->USB yields anything useful. Same warning 32, and am unable to even reflash 45.13 on.
    5. Send unit to Segen, they replace the control board, and stick some random (wrong) firmware on 56.07!
    6. 56.07 has many missing settings, incorrect charge settings (max battery charge current is 120A instead of max 80A unit can do), but, most importantly, is missing setting 28 (change SIG to PAL for paralleling two units)
    7. I told Segen this. They said it is impossible. I proved it to them. They sent me 69.07 to flash on new control board.
    8. RS-232 - USB method does not work. See Image 1.
    9. USB OTG method seems to work. It takes 12/13 minutes, then (see Video 1)
     
    [Image 1: Two RS232-USB cables were used, both known to work, that is why the different ports]

     
    [Video 1]
     
    What now?
  17. Like
    LUMOnergy reacted to Dinz in Newbie on Powerforum   
    Hi Everyone.
     
    Newbie here.
    I have a fair bit of knowledge on inverter setup etc. Not a pro, but I love learning.
    I dont have any ESS setup of my own. I have learnt by helping others only. I have also learnt by correcting many installations for people. No monetary gain, just for kicks and knowledge.
     
    I will say that the information on this forum is vast and invaluble. I hope I can also contribute.
     
    I will be asking many questions.
    Hope to keep learning from here....

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.