Open exlabrat opened 5 days ago
Hi, thanks for the log excerpt. Could you attach the full log file please? (pv_opt.log). On startup Pv_opt will log all entities with "solis" in the name so it then will be possible to work out which entity in the Solis Cloud integration reports solar output.
Its a sensor in W that reports Solar (noting mine was particularly poor today!)
If you can find the name of the entity then you can add it to config.yaml as a map entry which will solve the issue.
Many thanks. Could that be sensor.solis_ac_output_total_power (power)?
I've attached the log, although I can't see anything else there.
Actually using that mapping seems to solve that problem and I can regenerate the PV_opt dashboard.
I'm now getting other errors on the consumption data - new pv_opt.log attached pv_opt-2.log
I'm thinking that the consumption sensor is solis_daily_grid_energy_purchased
I'm thinking that the consumption sensor is solis_daily_grid_energy_purchased
I think you are right.
In the SOLIS_SOLAX_MODBUS area of config.yaml uncomment the id_consumption_today
entry and set it to sensor.{device_name}_daily_grid_energy_purchased
On the line below, check that any entries for id_consumption
are commented out.
By way of explanation, Pv_opt can either use an incrementing kWh sensor or a live W sensor to work out consumption, but increasingly reading the live W sensor with 7 days history is a very large file and can cause issues for some systems.
Worth also noting that using the instantaneous power rather than the integrated energy is potentially less accurate. My preference is always to use energy where available. Even better would be to down-sample it to 30 minutes using a jinja template in Home Assistant first On 9 Nov 2024 at 20:19 +0000, stevebuk1 @.***>, wrote:
I'm thinking that the consumption sensor is solis_daily_grid_energy_purchased I think you are right. In the SOLIS_SOLAX_MODBUS area of config.yaml uncomment id_consumption_today and set it to sensor.{device_name}__daily_grid_energy_purchased On the line below, check that any entries for id_consumption are commented out. By way of explanation, Pv_opt can either use an incrementing kWh sensor or a live W sensor to work out consumption, but increasingly reading the live W sensor with 7 days history is a very large file and can cause issues for some systems. — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>
Thanks both. I have a choice between sensor.solis_daily_grid_energy_purchased and sensor.solis_daily_grid_energy_used
There's also one called sensor.solis_plant_total_consumption_power which looks to give 5 min power numbers.
I'm still working through some other sensors which seem to need mapping - currently I can generate the control dashboard but not the output dashboard(s).
I'm still working through some other sensors which seem to need mapping - currently I can generate the control dashboard but not the output dashboard(s).
@CraigCallender would you mind uploading your config.yaml to this thread so we can see what sensors you've mapped to what on your system?
Worth also noting that using the instantaneous power rather than the integrated energy is potentially less accurate. My preference is always to use energy where available.
I use energy on my system but it was more accident that deliberate. From memory it was because the default config.yaml was setup that way, but certainly for the Solax integration users the current config.yaml on main does not suggest using energy in preference to power, and I note if both entities exist and are correct then power will be used in preference to energy. I've corrected this in Dev.
# ===============================================================================================================
# Brand / Integration Specific Config: SOLIS_SOLAX_MODBUS: https://github.com/wills106/homeassistant-solax-modbus
# ===============================================================================================================
#
# These are the default entities used with the Solis Solax Modbus integration. You can change them here and over-ride the defaults
# inverter_type: SOLIS_SOLAX_MODBUS
# device_name: solis
# battery_voltage: sensor.{device_name}_battery_voltage
# update_cycle_seconds: 15
# maximum_dod_percent: number.{device_name}_battery_minimum_soc
id_consumption_today: sensor.{device_name}_consumption_today
id_consumption:
- sensor.{device_name}_house_load
- sensor.{device_name}_bypass_load
# id_grid_import_today: sensor.{device_name}_grid_import_today
# id_grid_export_today: sensor.{device_name}_grid_export_today
Hoping to temporarily swap my system over to using this rather than the Solax integration from this evening so should be able to better support it.
@stevebuk1 @CraigCallender - I'll create a new branch solis-cloud
Hey @stevebuk1 and @fboundy - Here's my config.yaml for all the mapping:
# Internal configuration --- DO NOT EDIT ---
pvpy:
module: pvpy
global: true
solis:
module: solis
global: true
inverters:
module: inverters
global: true
pv_opt:
module: pv_opt
class: PVOpt
dependencies:
- pvpy
- solis
log: pv_opt_log
prefix: pvopt
debug: false
# User configuration --- EDIT AWAY! ---
# ========================================
# System parameters
# ========================================
# If true the current config in HA will be over-written with that in the config.yaml.
overwrite_ha_on_restart: true
list_entities: true
# If true the personal data will be redacted from the log files.
# redact_personal_data_from_log: false
#=======================================
#Logging Category Control
#=======================================
#Defines Logging subjects to add to logfile
#If commented out, everything is logged
#Ignored if "debug" is set to False above
#
# S = Startup/Initialisation Logging
# T = Tariff loading Logging
# P = Power consumption history Logging
# C = Charge algorithm Logging
# D = Discharge algorithm Logging
# W = Charge/Discharge Windows Logging
# F = Power Flows Logging
# V = Power Flows debugging (extra verbose)
# I = inverter control/commands Logging
# E = EV debugging
# Letters can be added to "debug_categories" in any order
debug_categories: W
# ========================================
# Basic parameters
# ========================================
read_only: true # If true the inverter will not be controlled
forced_discharge: false # Enable forced discharging
allow_cyclic: false # Enable alternate charge/discharge windows
optimise_frequency_minutes: 5
pass_threshold_p: 2.0
discharge_threshold_p: 0.4
# ========================================
# Plant parameters
# ========================================
# All parameters can be a number or point to an entity UNLESS they start with 'id_'. All of
# these are required but will be defaulted if not specified
battery_capacity_wh: 3650
inverter_efficiency_percent: 97 # Default: 97
charger_efficiency_percent: 95 # Default: 91
maximum_dod_percent: 15
charger_power_watts: 1875
inverter_power_watts: 3600
# inverter_loss_watts: 100
battery_current_limit_amps: 37
# ========================================
# Solcast configuration
# ========================================
use_solar: true
#
# id_solcast_today: sensor.solcast_pv_forecast_forecast_today
# id_solcast_tomorrow: sensor.solcast_pv_forecast_forecast_tomorrow
# solar_confidence_level: 50
# ========================================
# Consumption forecast parameters
# ========================================
#
use_consumption_history: true
consumption_history_days: 14
consumption_margin: 25
day_of_week_weighting: 0.0
#
daily_consumption_kwh: 10
shape_consumption_profile: false
consumption_shape:
- hour: 0
consumption: 300
- hour: 0.5
consumption: 200
- hour: 6
consumption: 150
- hour: 8
consumption: 500
- hour: 15.5
consumption: 500
- hour: 17
consumption: 750
- hour: 22
consumption: 750
- hour: 24
consumption: 300
# ========================================
# Octopus account parameters
# ========================================
octopus_auto: true # Read tariffs from the Octopus Energy integration. If successful this over-rides the following parameters
# octopus_account: !secret octopus_account
# octopus_api_key: !secret octopus_api_key
# The following Can be omitted if either of the above options is working correctly:
# octopus_import_tariff_code: E-2R-VAR-22-11-01-G
# octopus_export_tariff_code: E-1R-AGILE-OUTGOING-19-05-13-G
# octopus_import_tariff_code: E-1R-AGILE-23-12-06-G
# # octopus_export_tariff_code: E-1R-OUTGOING-LITE-FIX-12M-23-09-12-G
# octopus_export_tariff_code: E-1R-OUTGOING-FIX-12M-19-05-13-G
# octopus_import_tariff_code: E-1R-FLUX-IMPORT-23-02-14-G
# octopus_export_tariff_code: E-1R-FLUX-EXPORT-23-02-14-G
# octopus_import_tariff_code: E-1R-GO-VAR-22-10-14-N
# octopus_export_tariff_code: E-1R-OUTGOING-LITE-FIX-12M-23-09-12-N
# ========================================
# EV parameters
# ========================================
#
# If you have a Zappi Charger, uncomment next line to allow Pv_opt to detect car plugin status
# for use with the Octopus Intelligent Tariff and to allow EV consumption data to be read (if needed).
#
# ev_charger: Zappi # Default = None
#
# By default, Zappi is set to seen as part of the house load to prevent house battery discharge during car charging and allow discounting of EV consumption
# from house charging calculations.
#
# If your Zappi is not seen as part of the house load, uncomment next line to set to False.
#
# ev_part_of_house_load = False # Default = True
# ===============================================================================================================
# Brand / Integration Specific Config: SOLIS_SOLAX_MODBUS: https://github.com/wills106/homeassistant-solax-modbus
# ===============================================================================================================
#
# These are the default entities used with the Solis Solax Modbus integration. You can change them here and over-ride the defaults
# inverter_type: SOLIS_SOLAX_MODBUS
# device_name: solis
battery_voltage: sensor.{device_name}_battery_voltage
# update_cycle_seconds: 15
# maximum_dod_percent: number.{device_name}_battery_minimum_soc
id_consumption_today: sensor.{device_name}_daily_grid_energy_used
id_consumption:
- sensor.{device_name}_total_consumption_power
- sensor.{device_name}_backup_load_power
id_grid_import_today: sensor.{device_name}_daily_grid_energy_purchased
id_grid_export_today: sensor.{device_name}_daily_on_grid_energy
id_battery_soc: sensor.{device_name}_remaining_battery_capacity
# id_timed_charge_start_hours: number.{device_name}_timed_charge_start_hours
# id_timed_charge_start_minutes: number.{device_name}_timed_charge_start_minutes
# id_timed_charge_end_hours: number.{device_name}_timed_charge_end_hours
# id_timed_charge_end_minutes: number.{device_name}_timed_charge_end_minutes
# id_timed_charge_current: number.{device_name}_timed_charge_current
# id_timed_discharge_start_hours: number.{device_name}_timed_discharge_start_hours
# id_timed_discharge_start_minutes: number.{device_name}_timed_discharge_start_minutes
# id_timed_discharge_end_hours: number.{device_name}_timed_discharge_end_hours
# id_timed_discharge_end_minutes: number.{device_name}_timed_discharge_end_minutes
# id_timed_discharge_current: number.{device_name}_timed_discharge_current
# id_timed_charge_discharge_button: button.{device_name}_update_charge_discharge_times
# id_inverter_mode: select.{device_name}_energy_storage_control_switch
# ==============================================================================================================
# Brand / Integration Specific Config: SOLIS_CORE_MODBUS: https://github.com/fboundy/ha_solis_modbus
# ==============================================================================================================
#
# These are the default entities used with the Solis Core Modbus integration. You can change them here and over-ride the defaults
# inverter_type: SOLIS_CORE_MODBUS
# device_name: solis
# modbus_hub: "{device_name}"
# modbus_slave: 1
# battery_voltage: sensor.{device_name}_battery_voltage
# maximum_dod_percent: sensor.{device_name}_overdischarge_soc
# update_cycle_seconds: 60
# id_consumption_today: sensor.{device_name}_daily_consumption
# id_consumption:
# - sensor.{device_name}_house_load_power
# - sensor.{device_name}_backup_load_power
# id_grid_power: sensor.{device_name}_grid_active_power
# id_inverter_ac_power: sensor.{device_name}_inverter_ac_power
# id_battery_soc: sensor.{device_name}_battery_soc
# id_timed_charge_start_hours: sensor.{device_name}_timed_charge_start_hour
# id_timed_charge_start_minutes: sensor.{device_name}_timed_charge_start_minute
# id_timed_charge_end_hours: sensor.{device_name}_timed_charge_end_hour
# id_timed_charge_end_minutes: sensor.{device_name}_timed_charge_end_minute
# id_timed_charge_current: sensor.{device_name}_timed_charge_current_limit
# id_timed_discharge_start_hours: sensor.{device_name}_timed_discharge_start_hour
# id_timed_discharge_start_minutes: sensor.{device_name}_timed_discharge_start_minute
# id_timed_discharge_end_hours: sensor.{device_name}_timed_discharge_end_hour
# id_timed_discharge_end_minutes: sensor.{device_name}_timed_discharge_end_minute
# id_timed_discharge_current: sensor.{device_name}_timed_discharge_current_limit
# id_inverter_mode: sensor.{device_name}_energy_storage_control_switch
# ==============================================================================================================
# Brand / Integration Specific Config: SOLIS_SOLARMAN: https://github.com/StephanJoubert/home_assistant_solarman
# ==============================================================================================================
#
# These are the default entities used with the Solis Solarman integration. You can change them here and over-ride the defaults
# inverter_type: SOLIS_SOLARMAN
# device_name: solis
# battery_voltage: sensor.{device_name}_battery_voltage
# maximum_dod_percent: 15
# update_cycle_seconds: 60
# id_consumption_today: sensor.{device_name}_daily_house_backup_consumption
# id_grid_power: sensor.{device_name}_meter_active_power
# id_inverter_ac_power": sensor.{device_name}_inverter_ac_power
# id_battery_soc: sensor.{device_name}_battery_soc
# id_backup_mode_soc:
# id_timed_charge_start_hours: sensor.{device_name}_timed_charge_start_hour
# id_timed_charge_start_minutes: sensor.{device_name}_timed_charge_start_minute
# id_timed_charge_end_hours: sensor.{device_name}_timed_charge_end_hour
# id_timed_charge_end_minutes: sensor.{device_name}_timed_charge_end_minute
# id_timed_charge_current: sensor.{device_name}_timed_charge_current
# id_timed_discharge_start_hours: sensor.{device_name}_timed_discharge_start_hour
# id_timed_discharge_start_minutes: sensor.{device_name}_timed_discharge_start_minute
# id_timed_discharge_end_hours: sensor.{device_name}_timed_discharge_end_hour
# id_timed_discharge_end_minutes: sensor.{device_name}_timed_discharge_end_minute
# id_timed_discharge_current: sensor.{device_name}_timed_discharge_current
# id_inverter_mode: sensor.{device_name}_storage_control_mode
# ===============================================================================================================
# Brand / Integration Specific Config: SUNSYNK_SOLARSYNK2:
# ===============================================================================================================
#
#
# These are the default entities used with the Sunsynk Solarsynk2 integration. You can change them here and over-ride the defaults
# inverter_type: SUNSYNK_SOLARSYNK2
# device_name: solarsynk
# inverter_sn: 000000 # enter {sunsynk_serial} from solarsynk2 addon
# maximum_dod_percent: 10
# id_battery_soc: sensor.{device_name}_{inverter_sn}_battery_soc
# id_consumption_today: sensor.{device_name}_{inverter_sn}_day_load_energy
# id_grid_import_today: sensor.{device_name}_{inverter_sn}_day_grid_import
# id_grid_export_today: sensor.{device_name}_{inverter_sn}_day_grid_export
# supports_hold_soc: false
# update_cycle_seconds: 300
# Tariff comparison
# id_daily_solar: sensor.{device_name}_power_generation_today
id_solar_power:
- sensor.{device_name}_dc_power_pv1
- sensor.{device_name}_dc_power_pv2
# id_solar_power: sensor.{device_name}_dc_power_combined
alt_tariffs:
- name: Agile_Fix
octopus_import_tariff_code: E-1R-AGILE-23-12-06-G
octopus_export_tariff_code: E-1R-OUTGOING-FIX-12M-19-05-13-G
# - name: Eco7_Fix
# octopus_import_tariff_code: E-2R-VAR-22-11-01-G
# octopus_export_tariff_code: E-1R-OUTGOING-FIX-12M-19-05-13-G
# - name: Flux
# octopus_import_tariff_code: E-1R-FLUX-IMPORT-23-02-14-G
# octopus_export_tariff_code: E-1R-FLUX-EXPORT-23-02-14-G
Ok. Was about to do the same. I think this needs a separate inverter default as the entity names don't match the other integration options.
On Tue, 12 Nov 2024, 13:16 fboundy, @.***> wrote:
Hoping to temporarily swap my system over to using this rather than the Solax integration from this evening so should be able to better support it.
@stevebuk1 https://github.com/stevebuk1 @CraigCallender https://github.com/CraigCallender - I'll create a new branch solis-cloud
— Reply to this email directly, view it on GitHub https://github.com/fboundy/pv_opt/issues/283#issuecomment-2470504525, or unsubscribe https://github.com/notifications/unsubscribe-auth/ASVRJMFUDMY2ZUAVDA5PEFD2AH5R7AVCNFSM6AAAAABRLWZHWCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINZQGUYDINJSGU . You are receiving this because you were mentioned.Message ID: @.***>
Leave this one with me for now. May not get to it this evening but I should have time over the next couple of days.
Ok will do!
On Tue, 12 Nov 2024, 16:50 fboundy, @.***> wrote:
Leave this one with me for now. May not get to it this evening but I should have time over the next couple of days.
— Reply to this email directly, view it on GitHub https://github.com/fboundy/pv_opt/issues/283#issuecomment-2471056866, or unsubscribe https://github.com/notifications/unsubscribe-auth/ASVRJMGOOYSMRSZEM7P3VBD2AIWWLAVCNFSM6AAAAABRLWZHWCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINZRGA2TMOBWGY . You are receiving this because you were mentioned.Message ID: @.***>
Thanks @CraigCallender, the config.yaml is really helpful. I've got this running now, and briefly had the dashboard working with a couple of cards absent, but the addition of the octopus rates card seems to kill the visualisation. Hopefully I can sort that soon
Hi
I'm excited to see the new code merged for Solis Cloud as this should fit with my aims for my system. I'm trying to set up PV_opt for Solis Cloud based on the documentation but so far both PV_opt and Use PV_opt are giving me errors. I wonder if you can point me in the right direction (I'm a relative novice with scripting in HA).
This is the log for PV_opt:
15:50:59 ERROR: id_solar_power : Neither the entities listed in the YAML sensor.solis_pv_total_power nor the system default of None exist in HA.
15:50:59 INFO: >>> id_solar_power sensor.solis_pv_total_power False 15:50:59 INFO: >>> Test: True 15:50:59 INFO: battery_current_limit_amps = 50 50: value in YAML 15:50:59 INFO: inverter_power_watts = 3000 3000: value in YAML 15:50:59 INFO: charger_power_watts = 3000 3000: value in YAML 15:50:59 INFO: maximum_dod_percent = 20 20: value in YAML 15:50:59 INFO: battery_capacity_wh = 96000 96000: value in YAML 15:50:59 INFO: allow_cyclic = False False: value in YAML 15:50:59 INFO: forced_discharge = False False: value in YAML 15:50:59 INFO: read_only = True True: value in YAML 15:50:59 INFO: debug_categories = W W: value in YAML 15:50:59 INFO: ----------------------------------- 15:50:59 INFO: Reading arguments from YAML: 15:50:59 INFO: 15:50:59 INFO: sensor.solis_meter_item_c_volt (voltage): 0.0 V 15:50:59 INFO: sensor.solis_meter_item_c_current (current): 0.0 A 15:50:59 INFO: sensor.solis_meter_item_b_volt (voltage): 0.0 V 15:50:59 INFO: sensor.solis_meter_item_b_current (current): 0.0 A 15:50:59 INFO: sensor.solis_meter_item_a_volt (voltage): 239.5 V 15:50:59 INFO: sensor.solis_meter_item_a_current (current): 0.0 A 15:50:59 INFO: sensor.solis_backup_load_power (power): 0.0 W 15:50:59 INFO: sensor.solis_force_discharge_soc (battery): 20.0 % 15:50:59 INFO: sensor.solis_force_charge_soc (battery): 18.0 % 15:50:59 INFO: sensor.solis_battery_state_of_health (battery): 98.0 % 15:50:59 INFO: sensor.solis_plant_total_consumption_power (power): 443.0 W 15:50:59 INFO: sensor.solis_grid_phase3_reactive_power (None): 0.0 var 15:50:59 INFO: sensor.solis_grid_phase2_reactive_power (None): 0.0 var 15:50:59 INFO: sensor.solis_grid_phase1_reactive_power (None): 0.0 var 15:50:59 INFO: sensor.solis_grid_phase3_apparent_power (None): 0.0 VA 15:50:59 INFO: sensor.solis_grid_phase2_apparent_power (None): 0.0 VA 15:50:59 INFO: sensor.solis_grid_phase1_apparent_power (None): 0.0 VA 15:50:59 INFO: sensor.solis_grid_phase3_power (power): 0.0 W 15:50:59 INFO: sensor.solis_grid_phase2_power (power): 0.0 W 15:50:59 INFO: sensor.solis_grid_phase1_power (power): 0.0 W 15:50:59 INFO: sensor.solis_total_energy_used (energy): 3776.0 kWh 15:50:59 INFO: sensor.solis_total_energy_purchased (energy): 11513.0 kWh 15:50:59 INFO: sensor.solis_total_consumption_power (power): 415.0 W 15:50:59 INFO: sensor.solis_power_grid_total_power (power): -459.0 W 15:50:59 INFO: sensor.solis_total_on_grid_energy (energy): 670.8 kWh 15:50:59 INFO: sensor.solis_yearly_on_grid_energy (energy): 75.8 kWh 15:50:59 INFO: sensor.solis_yearly_grid_energy_purchased (energy): 3753.0 kWh 15:50:59 INFO: sensor.solis_monthly_on_grid_energy (energy): 0.0 kWh 15:50:59 INFO: sensor.solis_monthly_grid_energy_purchased (energy): 137.64 kWh 15:50:59 INFO: sensor.solis_daily_grid_energy_used (energy): 13.2 kWh 15:50:59 INFO: sensor.solis_daily_grid_energy_purchased (energy): 13.2 kWh 15:50:59 INFO: sensor.solis_daily_on_grid_energy (energy): 0.0 kWh 15:50:59 INFO: sensor.solis_daily_energy_discharged (energy): 7.0 kWh 15:50:59 INFO: sensor.solis_daily_energy_charged (energy): 7.0 kWh 15:50:59 INFO: sensor.solis_total_energy_discharged (energy): 3459.0 kWh 15:50:59 INFO: sensor.solis_total_energy_charged (energy): 4692.0 kWh 15:50:59 INFO: sensor.solis_remaining_battery_capacity (battery): 20.0 % 15:50:59 INFO: sensor.solis_battery_current (current): 0.0 A 15:50:59 INFO: sensor.solis_battery_voltage (voltage): 48.6 V 15:50:59 INFO: sensor.solis_battery_power (power): 0.0 W 15:50:59 INFO: sensor.solis_energy_total (energy): 1.0 kWh 15:50:59 INFO: sensor.solis_energy_this_year (energy): 1.0 kWh 15:50:59 INFO: sensor.solis_energy_this_month (energy): 0.0 kWh 15:50:59 INFO: sensor.solis_energy_today (energy): unknown kWh 15:50:59 INFO: sensor.solis_ac_frequency (None): 49.85 Hz 15:50:59 INFO: sensor.solis_ac_output_total_power (power): 0.0 W 15:50:59 INFO: sensor.solis_ac_current_r (current): 1.0 A 15:50:59 INFO: sensor.solis_ac_voltage_r (voltage): 237.9 V 15:50:59 INFO: sensor.solis_temperature (temperature): 21.8 ��C 15:50:59 INFO: sensor.solis_timestamp_measurements_received (None): 1730994518.999 15:50:59 INFO: sensor.solis_state (None): 1 15:50:59 INFO: sensor.solis_power_state (None): 3 15:50:59 INFO: 15:50:59 INFO: ------------------------------------ 15:50:59 INFO: Available entities for device solis: 15:50:59 INFO: 15:50:59 INFO: Inverter appears to be online 15:50:59 INFO: Serial number: 15:50:59 INFO: Device name: solis 15:50:59 INFO: Inverter type: SOLIS_SOLAX_MODBUS: inverter module: solis.py 15:50:59 INFO: Time Zone Offset: 0.0 minutes 15:50:59 INFO: Local timezone set to GB 15:50:59 INFO: 15:50:59 INFO: PV Opt v3.16.1
For Use PV_opt the trace gives an error at
Executed: 7 November 2024 at 17:00:05 Error: In 'template' condition: AttributeError: 'NoneType' object has no attribute 'tzinfo'
But I'm guessing this might be due toPV_opt failing.
Many thanks Ian