Git Product home page Git Product logo

-solar-analytics-integration-for-home-assistant-energy-monitoring's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

fredcdn

-solar-analytics-integration-for-home-assistant-energy-monitoring's Issues

Home Assistant - Energy Values from SA are incorrect

Hi Peter,

Just noticed that there's a bunch of errors in my HA logs (supervised v2023.1.4) in regards your integration:

Error Log____________________________________________________________________________

Logger: homeassistant.components.sensor.recorder
Source: components/sensor/recorder.py:385
Integration: Sensor (documentation, issues)
First occurred: 1:25:10 am (4 occurrences)
Last logged: 2:25:10 am

Entity sensor.sa_todays_energy_generated_total from integration template has state class total_increasing, but its state is negative. Triggered by state -13 with last_updated set to 2023-01-14T14:19:59.999999+00:00. Please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+template%22

Entity sensor.sa_todays_energy_generated_total_kwh from integration template has state class total_increasing, but its state is negative. Triggered by state -0.016 with last_updated set to 2023-01-14T14:28:13.216322+00:00. Please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+template%22

Entity sensor.sa_todays_energy_generated_expected_total from integration template has state class total_increasing, but its state is negative. Triggered by state -19 with last_updated set to 2023-01-14T15:23:13.298357+00:00. Please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+template%22

Entity sensor.sa_todays_energy_generated_expected_total_kwh from integration template has state class total_increasing, but its state is negative. Triggered by state -0.019 with last_updated set to 2023-01-14T15:23:13.299490+00:00. Please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+template%22

End Log____________________________________________________________________________

Just looking through the existing issues opened for other integrations and there's a few like this, such as home-assistant/core#56188 This one has also spawned a feature request to allow negative energy values (but it seems to be going nowhere), see: https://community.home-assistant.io/t/allow-negative-power-energy-in-energy-dashboard/327724 but does have some work arounds (new sensors converting negative to positive values),

This all aligns with HA Energy Dashboard supposed to be getting postive values from solar production and export, that it then recognises each as being import vs export etc (even if all showing a positive number), see:
https://www.home-assistant.io/images/blog/2021-08-energy/sidebar-widgets.png
https://www.home-assistant.io/images/blog/2021-08-energy/energy-usage.png
https://demo.home-assistant.io/#/energy

Looking through the sa_live_site_data, though it appears the data from SA is all showing as positive numbers:
i.e.
- consumed: 9124.63
count: 6
generated: 8296.21
t_stamp: '2023-01-15T05:21:55Z'_

and the same for sa_data_by_5min
i.e.

  • energy_consumed: 116.7194
    energy_generated: -0.9231
    t_stamp: '2023-01-15 00:00:00'

Looking through you yaml file, I can't see anywhere that you have told it to negate the value, turning a + into a - number either, or did I miss something?

==================================================

Also reviewing the HA documentation and it appears that the data we are supposed to be using for the Energy Dashboard inputs is the accumulating energy feeds, and not the daily feeds. This is in line with all the individual device (plugs) and gas/water meters feeding into the dashboard, that give an ever increasing reading (and aligns with the 'state_class: total_increasing' and how it is supposed to work).

Would you know if there is a accumulating energy total for import / export / production from SA, they must have the data within SA, as they use this to be able to review annual data on their dashboard? Or alternatively, are additional sensors needed to be added, that are 'total_increasing' and simply keep adding on the values from:

sensor.sa_todays_energy_generated_total
sensor.sa_todays_energy_consumed_total
sensor.sa_todays_energy_exported

to become:

sensor.sa_total_energy_generated
sensor.sa_total_energy_consumed
sensor.sa_total_energy_exported

?

Help for a newbie?

Hi Peter,

I'm very new to Home Assistant (just installed it this week) so please forgive my ignorance. I've installed your SA package and it seems to be working - thank you!

image

However, I'm seeing a bunch of errors in the logs similar to this:

ValueError: Sensor sensor.sa_todays_electric_vehicle_imported has device class 'energy', state class 'None' unit 'Wh' and suggested precision 'None' thus indicating it has a numeric value; however, it has the non-numeric value: 'unknown' (<class 'str'>)

ValueError: could not convert string to float: 'unknown'

I suspect these are due to me skipping a couple of steps in your instructions that I didn't understand. I believe I'm meant to somehow be deleting sensors that my system doesn't support, but for the life of me I can't work out how. I'm hoping you don't mind if I ask you some questions.

Question 1

In Step 4, you say:

From States, review the attributes for sa_data_by_5min to identify the device specific channel names and update/delete the sa_todays_... xyz sensors to suit.

By going into Developer Tools / States, I can see a bunch of states.:

image

My best guess here is that I'm meant to identify the sensors that I actually have, such as sensor.sa_data_by_5min_exported_total, and those that I do not, such as sensor.sa_data_by_5min_history_load_air_conditioner. Am I on the right track?

You say to then "update/delete the sa_todays_... xyz sensors to suit". I can see the sa_todays_ sensors:

image

But when I click on the "More Info" button to open the settings, the only delete button I've managed to find is disabled:

image

Any chance you'd be able to clarify for me what I'm actually meant to be doing in Step 4, and how?

Question 2

In Step 5 you say to add the new energy sensors from Step 4 to the HA Energy Manager as "Monitor Individual Devices". I haven't added anything here as I wasn't really sure what I was doing. After a bit more reading, I think this section is for monitoring specific appliances like your air conditioner. I don't have any specific devices monitored via Solar Analytics, so I suspect I can ignore this for now - correct?

Question 3

I just noticed that there's a solar_analytics_3phase.yaml file in the repo. I installed solar_analytics.yaml, but I do have three phase power. Have I done the wrong thing here?

Thanks for your excellent contribution, and any advice you can give me!

Use Solar Analytics sourced data to report Consumed, Generated and Import-Export Power (W)

The SA public API unfortunately does not provide any real/near-real time power data. However, the current day's energy data by 5 minute intervals can be obtained every 5 minutes (as used for the total energy consumed, generated, imported and exported). The average power during the 5 minute interval is equal to 12 x energy used in 5 minutes (where there are 12x 5-minute intervals in an hour).

Working/proposed code to be added to the main code, and yet to be optimised, is as follows:

      sa_consumption_power:
        friendly_name: Power Consumption
        unit_of_measurement: "W"
        value_template: >      
          {% set sa_ns = namespace(latest=-1) %}
          {% for count in range(0,287) %}
            {% if (sa_ns.latest == -1) %}
              {% if (states.sensor.sa_data_by_5min.attributes.data[count].energy_consumed) == None %}
                {% set sa_ns.latest = count-1 %}
                {% if (sa_ns.latest >= 0) %}
                  {{ states.sensor.sa_data_by_5min.attributes.data[sa_ns.latest].energy_consumed * 12 }}
                {% else %}
                  {{ 0 }}
                {% endif %}
              {% endif %}
            {% endif %}
          {% endfor %}
        icon_template: mdi:home-lightning-bolt-outline
        device_class: "power"
        attribute_templates:
          state_class: measurement
      sa_generation_power:
        friendly_name: Power Generation
        unit_of_measurement: "W"
        value_template: >      
          {% set sa_ns = namespace(latest=-1) %}
          {% for count in range(0,287) %}
            {% if (sa_ns.latest == -1) %}
              {% if (states.sensor.sa_data_by_5min.attributes.data[count].energy_generated) == None %}
                {% set sa_ns.latest = count-1 %}
                {% if (sa_ns.latest >= 0) %}
                  {{ states.sensor.sa_data_by_5min.attributes.data[sa_ns.latest].energy_generated * 12 }}
                {% else %}
                  {{ 0 }}
                {% endif %}
              {% endif %}
            {% endif %}
          {% endfor %}
        icon_template: mdi:transmission-tower-import
        device_class: "power"
        attribute_templates:
          state_class: measurement
      sa_import_export_power:
        friendly_name: Power Import Export
        unit_of_measurement: "W"
        value_template: >      
          {% set sa_ns = namespace(latest=-1) %}
          {% for count in range(0,287) %}
            {% if (sa_ns.latest == -1) %}
              {% if (states.sensor.sa_data_by_5min.attributes.data[count].energy_generated) == None %}
                {% set sa_ns.latest = count-1 %}
                {% if (sa_ns.latest >= 0) %}
                  {{ (states.sensor.sa_data_by_5min.attributes.data[sa_ns.latest].energy_consumed - states.sensor.sa_data_by_5min.attributes.data[sa_ns.latest].energy_generated) * 12 }}
                {% else %}
                  {{ 0 }}
                {% endif %}
              {% endif %}
            {% endif %}
          {% endfor %}
        icon_template: mdi:solar-power
        device_class: "power"
        attribute_templates:
          state_class: measurement

Failed data gets - error detection required

Very rarely, there is spurious data recorded in the HA Energy Manager. It shows up as an extreme 1-hour spike (e.g. 50 to 100kWh which is just not possible) in the usage and generation data and may be a result of a failed get, or errored data from Solar Analytics. Some error detection (and correction) is required to fix these data records for the sake or impacting long-term data collection.

Unfortunately, when checking the history, the source data has been overwritten within 5 minutes. Some clever investigation and debugging is required.

Voltage and Current from API

Hi Peter,

I was poking around in the API and noticed that voltage and current is available within the platform.

Would it be possible for you to make these availble as entities within your plugin? Very handy when I need to monitor for brownouts or load balancing.

Cheers!

ValueError: Sensor sensor.sa_todays_hot_water_generated

Hi,

I'm getting the following error. Any idea what causing this? I do have a hot water channel for solar re-direction to my HWS. Any other logs you would need?

2024-02-23 12:55:48.302 ERROR (MainThread) [homeassistant.helpers.event] Error while dispatching event for sensor.sa_data_by_5min_time_stamp to <Job track state_changed event {'sensor.sa_data_by_5min_load_hot_water_generated', 'sensor.sa_data_by_5min_energy_consumed', 'sensor.sa_data_by_5min_time_stamp', 'sensor.sa_data_by_5min_load_hot_water', 'sensor.sa_todays_hot_water_generated', 'sensor.sa_data_by_5min_load_ev_charger', 'sensor.sa_data_by_5min_energy_generated'} HassJobType.Callback <bound method TrackTemplateResultInfo._refresh of <TrackTemplateResultInfo {Template<template=({{- states.sensor.sa_data_by_5min_load_hot_water_generated.state -2024-02-23 12:55:48.302 ERROR (MainThread) [homeassistant.helpers.event] Error while dispatching event for sensor.sa_data_by_5min_time_stamp to <Job track state_changed event {'sensor.sa_data_by_5min_load_hot_water_generated', 'sensor.sa_data_by_5min_energy_consumed', 'sensor.sa_data_by_5min_time_stamp', 'sensor.sa_data_by_5min_load_hot_water', 'sensor.sa_todays_hot_water_generated', 'sensor.sa_data_by_5min_load_ev_charger', 'sensor.sa_data_by_5min_energy_generated'} HassJobType.Callback <bound method TrackTemplateResultInfo._refresh of <TrackTemplateResultInfo {Template<template=({{- states.sensor.sa_data_by_5min_load_hot_water_generated.state -}}) renders=14>: <RenderInfo Template<template=({{- states.sensor.sa_data_by_5min_load_hot_water_generated.state -}}) renders=14> all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset({'sensor.sa_data_by_5min_load_hot_water_generated'}) rate_limit=None has_time=False exception=None is_static=False>, Template<template=(total_increasing) renders=1578>: <RenderInfo Template<template=(total_increasing) renders=1578> all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset() rate_limit=None has_time=False exception=None is_static=True>, Template<template=({{- states.sensor.sa_data_by_5min_time_stamp.state -}}) renders=994>: <RenderInfo Template<template=({{- states.sensor.sa_data_by_5min_time_stamp.state -}}) renders=994> all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset({'sensor.sa_data_by_5min_time_stamp'}) rate_limit=None has_time=False exception=None is_static=False>, Template<template=({%- if ( states.sensor.sa_data_by_5min_load_hot_water.state|is_number )
and ( states.sensor.sa_data_by_5min_energy_consumed.state|is_number )
and ( states.sensor.sa_data_by_5min_energy_generated.state|is_number )
and ( states.sensor.sa_data_by_5min_load_ev_charger.state|is_number )
and ( states.sensor.sa_data_by_5min_load_air_conditioner.state|is_number )
-%}
{%- if states.sensor.sa_data_by_5min_load_hot_water.state|float(0.0) > 0.0 -%}
{%- if (states.sensor.sa_data_by_5min_energy_generated.state|float(0.0)) >=
( (states.sensor.sa_data_by_5min_energy_consumed.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_ev_charger.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_air_conditioner.state|float(0.0)) )
-%}
{{- states.sensor.sa_data_by_5min_load_hot_water.state|float(0.0) -}}
{%- elif (states.sensor.sa_data_by_5min_energy_generated.state|float(0.0)) >
( (states.sensor.sa_data_by_5min_energy_consumed.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_ev_charger.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_air_conditioner.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_hot_water.state|float(0.0)) )
-%}
{{- (states.sensor.sa_data_by_5min_energy_generated.state|float(0.0))
- ( (states.sensor.sa_data_by_5min_energy_consumed.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_ev_charger.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_air_conditioner.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_hot_water.state|float(0.0)) )
-}}
{%- else -%}
0.0
{%- endif %}
{%- else -%}
0.0
{%- endif -%}
{%- else -%}
{{- state_attr( 'sensor.sa_todays_hot_water_generated', 'hw_energy_last5min' )
if states.sensor.sa_todays_hot_water_generated.attributes.hw_energy_last5min|is_number
else "0.0"
-}}
{%- endif -%}) renders=2264>:
and ( states.sensor.sa_data_by_5min_energy_consumed.state|is_number )
and ( states.sensor.sa_data_by_5min_energy_generated.state|is_number )
and ( states.sensor.sa_data_by_5min_load_ev_charger.state|is_number )
and ( states.sensor.sa_data_by_5min_load_air_conditioner.state|is_number )
-%}
{%- if states.sensor.sa_data_by_5min_load_hot_water.state|float(0.0) > 0.0 -%}
{%- if (states.sensor.sa_data_by_5min_energy_generated.state|float(0.0)) >=
( (states.sensor.sa_data_by_5min_energy_consumed.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_ev_charger.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_air_conditioner.state|float(0.0)) )
-%}
{{- states.sensor.sa_data_by_5min_load_hot_water.state|float(0.0) -}}
{%- elif (states.sensor.sa_data_by_5min_energy_generated.state|float(0.0)) >
( (states.sensor.sa_data_by_5min_energy_consumed.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_ev_charger.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_air_conditioner.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_hot_water.state|float(0.0)) )
-%}
{{- (states.sensor.sa_data_by_5min_energy_generated.state|float(0.0))
- ( (states.sensor.sa_data_by_5min_energy_consumed.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_ev_charger.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_air_conditioner.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_hot_water.state|float(0.0)) )
-}}
{%- else -%}
0.0
{%- endif %}
{%- else -%}
0.0
{%- endif -%}
{%- else -%}
{{- state_attr( 'sensor.sa_todays_hot_water_generated', 'hw_energy_last5min' )
if states.sensor.sa_todays_hot_water_generated.attributes.hw_energy_last5min|is_number
else "0.0"
-}}
{%- endif -%}) renders=2264> all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset({'sensor.sa_data_by_5min_energy_consumed', 'sensor.sa_data_by_5min_load_hot_water', 'sensor.sa_todays_hot_water_generated', 'sensor.sa_data_by_5min_load_ev_charger', 'sensor.sa_data_by_5min_energy_generated'}) rate_limit=None has_time=False exception=None is_static=False>, Template
and ( states.sensor.sa_data_by_5min_load_hot_water_total.state|is_number )
-%}
{% if ( states.sensor.sa_data_by_5min_load_hot_water_total.state|float(0.0) > 0.0 ) -%}
{{- (( states.sensor.sa_data_by_5min_load_hot_water_generated.state|float(0.0) )
/ (states.sensor.sa_data_by_5min_load_hot_water_total.state|float|default('none')) * 100.0 ) | int
-}}
{%- else -%}
none
{%- endif -%}
{%- else -%}
none
{%- endif -%}) renders=18>:
and ( states.sensor.sa_data_by_5min_load_hot_water_total.state|is_number )
-%}
{% if ( states.sensor.sa_data_by_5min_load_hot_water_total.state|float(0.0) > 0.0 ) -%}
{{- (( states.sensor.sa_data_by_5min_load_hot_water_generated.state|float(0.0) )
/ (states.sensor.sa_data_by_5min_load_hot_water_total.state|float|default('none')) * 100.0 ) | int
-}}
{%- else -%}
none
{%- endif -%}
{%- else -%}
none
{%- endif -%}) renders=18> all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset({'sensor.sa_data_by_5min_load_hot_water_generated'}) rate_limit=None has_time=False exception=None is_static=False>, Template: all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset() rate_limit=None has_time=False exception=None is_static=True>}>>>
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/sensor/init.py", line 664, in state
numerical_value = int(value)
^^^^^^^^^^
ValueError: invalid literal for int() with base 10: 'unknown'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/sensor/init.py", line 667, in state
numerical_value = float(value)
^^^^^^^^^^^^
ValueError: could not convert string to float: 'unknown'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/event.py", line 296, in _async_dispatch_entity_id_event
hass.async_run_hass_job(job, event)
File "/usr/src/homeassistant/homeassistant/core.py", line 700, in async_run_hass_job
hassjob.target(*args)
File "/usr/src/homeassistant/homeassistant/helpers/event.py", line 1215, in _refresh
self.hass.async_run_hass_job(self._job, event, updates)
File "/usr/src/homeassistant/homeassistant/core.py", line 700, in async_run_hass_job
hassjob.target(*args)
File "/usr/src/homeassistant/homeassistant/components/template/template_entity.py", line 434, in _handle_results
self.async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 989, in async_write_ha_state
self._async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1110, in _async_write_ha_state
state, attr, capabilities, shadowed_attr = self.__async_calculate_state()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1047, in __async_calculate_state
state = self._stringify_state(available)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 995, in _stringify_state
if (state := self.state) is None:
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/sensor/init.py", line 671, in state
raise ValueError(
ValueError: Sensor sensor.sa_todays_hot_water_generated has device class 'energy', state class 'None' unit 'Wh' and suggested precision 'None' thus indicating it has a numeric value; however, it has the non-numeric value: 'unknown' ()}}) renders=14>: <RenderInfo Template<template=({{- states.sensor.sa_data_by_5min_load_hot_water_generated.state -}}) renders=14> all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset({'sensor.sa_data_by_5min_load_hot_water_generated'}) rate_limit=None has_time=False exception=None is_static=False>, Template<template=(total_increasing) renders=1578>: <RenderInfo Template<template=(total_increasing) renders=1578> all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset() rate_limit=None has_time=False exception=None is_static=True>, Template<template=({{- states.sensor.sa_data_by_5min_time_stamp.state -}}) renders=994>: <RenderInfo Template<template=({{- states.sensor.sa_data_by_5min_time_stamp.state -}}) renders=994> all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset({'sensor.sa_data_by_5min_time_stamp'}) rate_limit=None has_time=False exception=None is_static=False>, Template<template=({%- if ( states.sensor.sa_data_by_5min_load_hot_water.state|is_number )
and ( states.sensor.sa_data_by_5min_energy_consumed.state|is_number )
and ( states.sensor.sa_data_by_5min_energy_generated.state|is_number )
and ( states.sensor.sa_data_by_5min_load_ev_charger.state|is_number )
and ( states.sensor.sa_data_by_5min_load_air_conditioner.state|is_number )
-%}
{%- if states.sensor.sa_data_by_5min_load_hot_water.state|float(0.0) > 0.0 -%}
{%- if (states.sensor.sa_data_by_5min_energy_generated.state|float(0.0)) >=
( (states.sensor.sa_data_by_5min_energy_consumed.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_ev_charger.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_air_conditioner.state|float(0.0)) )
-%}
{{- states.sensor.sa_data_by_5min_load_hot_water.state|float(0.0) -}}
{%- elif (states.sensor.sa_data_by_5min_energy_generated.state|float(0.0)) >
( (states.sensor.sa_data_by_5min_energy_consumed.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_ev_charger.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_air_conditioner.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_hot_water.state|float(0.0)) )
-%}
{{- (states.sensor.sa_data_by_5min_energy_generated.state|float(0.0))
- ( (states.sensor.sa_data_by_5min_energy_consumed.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_ev_charger.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_air_conditioner.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_hot_water.state|float(0.0)) )
-}}
{%- else -%}
0.0
{%- endif %}
{%- else -%}
0.0
{%- endif -%}
{%- else -%}
{{- state_attr( 'sensor.sa_todays_hot_water_generated', 'hw_energy_last5min' )
if states.sensor.sa_todays_hot_water_generated.attributes.hw_energy_last5min|is_number
else "0.0"
-}}
{%- endif -%}) renders=2264>:
and ( states.sensor.sa_data_by_5min_energy_consumed.state|is_number )
and ( states.sensor.sa_data_by_5min_energy_generated.state|is_number )
and ( states.sensor.sa_data_by_5min_load_ev_charger.state|is_number )
and ( states.sensor.sa_data_by_5min_load_air_conditioner.state|is_number )
-%}
{%- if states.sensor.sa_data_by_5min_load_hot_water.state|float(0.0) > 0.0 -%}
{%- if (states.sensor.sa_data_by_5min_energy_generated.state|float(0.0)) >=
( (states.sensor.sa_data_by_5min_energy_consumed.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_ev_charger.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_air_conditioner.state|float(0.0)) )
-%}
{{- states.sensor.sa_data_by_5min_load_hot_water.state|float(0.0) -}}
{%- elif (states.sensor.sa_data_by_5min_energy_generated.state|float(0.0)) >
( (states.sensor.sa_data_by_5min_energy_consumed.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_ev_charger.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_air_conditioner.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_hot_water.state|float(0.0)) )
-%}
{{- (states.sensor.sa_data_by_5min_energy_generated.state|float(0.0))
- ( (states.sensor.sa_data_by_5min_energy_consumed.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_ev_charger.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_air_conditioner.state|float(0.0))
- (states.sensor.sa_data_by_5min_load_hot_water.state|float(0.0)) )
-}}
{%- else -%}
0.0
{%- endif %}
{%- else -%}
0.0
{%- endif -%}
{%- else -%}
{{- state_attr( 'sensor.sa_todays_hot_water_generated', 'hw_energy_last5min' )
if states.sensor.sa_todays_hot_water_generated.attributes.hw_energy_last5min|is_number
else "0.0"
-}}
{%- endif -%}) renders=2264> all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset({'sensor.sa_data_by_5min_energy_consumed', 'sensor.sa_data_by_5min_load_hot_water', 'sensor.sa_todays_hot_water_generated', 'sensor.sa_data_by_5min_load_ev_charger', 'sensor.sa_data_by_5min_energy_generated'}) rate_limit=None has_time=False exception=None is_static=False>, Template
and ( states.sensor.sa_data_by_5min_load_hot_water_total.state|is_number )
-%}
{% if ( states.sensor.sa_data_by_5min_load_hot_water_total.state|float(0.0) > 0.0 ) -%}
{{- (( states.sensor.sa_data_by_5min_load_hot_water_generated.state|float(0.0) )
/ (states.sensor.sa_data_by_5min_load_hot_water_total.state|float|default('none')) * 100.0 ) | int
-}}
{%- else -%}
none
{%- endif -%}
{%- else -%}
none
{%- endif -%}) renders=18>:
and ( states.sensor.sa_data_by_5min_load_hot_water_total.state|is_number )
-%}
{% if ( states.sensor.sa_data_by_5min_load_hot_water_total.state|float(0.0) > 0.0 ) -%}
{{- (( states.sensor.sa_data_by_5min_load_hot_water_generated.state|float(0.0) )
/ (states.sensor.sa_data_by_5min_load_hot_water_total.state|float|default('none')) * 100.0 ) | int
-}}
{%- else -%}
none
{%- endif -%}
{%- else -%}
none
{%- endif -%}) renders=18> all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset({'sensor.sa_data_by_5min_load_hot_water_generated'}) rate_limit=None has_time=False exception=None is_static=False>, Template: all_states=False all_states_lifecycle=False domains=frozenset() domains_lifecycle=frozenset() entities=frozenset() rate_limit=None has_time=False exception=None is_static=True>}>>>
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/sensor/init.py", line 664, in state
numerical_value = int(value)
^^^^^^^^^^
ValueError: invalid literal for int() with base 10: 'unknown'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/sensor/init.py", line 667, in state
numerical_value = float(value)
^^^^^^^^^^^^
ValueError: could not convert string to float: 'unknown'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/event.py", line 296, in _async_dispatch_entity_id_event
hass.async_run_hass_job(job, event)
File "/usr/src/homeassistant/homeassistant/core.py", line 700, in async_run_hass_job
hassjob.target(*args)
File "/usr/src/homeassistant/homeassistant/helpers/event.py", line 1215, in _refresh
self.hass.async_run_hass_job(self._job, event, updates)
File "/usr/src/homeassistant/homeassistant/core.py", line 700, in async_run_hass_job
hassjob.target(*args)
File "/usr/src/homeassistant/homeassistant/components/template/template_entity.py", line 434, in _handle_results
self.async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 989, in async_write_ha_state
self._async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1110, in _async_write_ha_state
state, attr, capabilities, shadowed_attr = self.__async_calculate_state()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1047, in __async_calculate_state
state = self._stringify_state(available)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 995, in _stringify_state
if (state := self.state) is None:
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/sensor/init.py", line 671, in state
raise ValueError(
ValueError: Sensor sensor.sa_todays_hot_water_generated has device class 'energy', state class 'None' unit 'Wh' and suggested precision 'None' thus indicating it has a numeric value; however, it has the non-numeric value: 'unknown' ()

solar_analytics.yaml configuration invalid!

Numerous errors in solar_analytics.yaml where checking configuration is saying configuration invalid. This includes spaces throughout the code. Once fixed, am stuck on expected '', but found '' in '/config/solar_analytics/yaml", line 2155, column 15

SA template processing errors show up regularly in the HA log file

These SA template processing errors show up regularly in the HA log file - they don't seem to impact the results but need some further investigation:

1/3

Logger: homeassistant.helpers.template
Source: helpers/template.py:537
First occurred: 21 August 2022 at 20:20:48 (185 occurrences)
Last logged: 00:04:22

Template variable error: No last item, sequence was empty. when rendering '{% set most_recent_sensor_data = states.sensor.sa_data_by_5min.attributes.data | rejectattr('load_stove', 'equalto', None) | list | last %} {% if most_recent_sensor_data.load_stove > 30 %} on {% else %} off {% endif %}'
Template variable error: No last item, sequence was empty. when rendering '{% set most_recent_sensor_data = states.sensor.sa_data_by_5min.attributes.data | rejectattr('energy_generated', 'equalto', None) | list | last %} {% if most_recent_sensor_data.energy_generated > 20 %} on {% else %} off {% endif %}'
Template variable error: No last item, sequence was empty. when rendering '{% set most_recent_sensor_data = states.sensor.sa_data_by_5min.attributes.data | rejectattr('load_hot_water', 'equalto', None) | list | last %} {% if most_recent_sensor_data.load_hot_water > 30 %} on {% else %} off {% endif %}'
Template variable error: No last item, sequence was empty. when rendering '{% set most_recent_sensor_data = states.sensor.sa_data_by_5min.attributes.data | rejectattr('load_air_conditioner', 'equalto', None) | list | last %} {% if most_recent_sensor_data.load_air_conditioner > 240 %} Both-on {% elif most_recent_sensor_data.load_air_conditioner > 120 %} One-on {% else %} All-off {% endif %}'
Template variable error: No last item, sequence was empty. when rendering '{% set most_recent_sensor_data = states.sensor.sa_data_by_5min.attributes.data | rejectattr('load_ev_charger', 'equalto', None) | list | last %} {% if most_recent_sensor_data.load_ev_charger > 30 %} on {% else %} off {% endif %}'

2/3

Logger: homeassistant.helpers.template
Source: helpers/template.py:584
First occurred: 21 August 2022 at 20:20:20 (106 occurrences)
Last logged: 04:00:28

Template variable warning: 'dict object' has no attribute 'data' when rendering '{% set most_recent_sensor_data = value_json['data'] | list | last %} {{ as_timestamp(most_recent_sensor_data.t_stamp) | timestamp_custom ('%Y-%m-%d %H:%M:%S')}}'
Template variable error: No last item, sequence was empty. when rendering '{% set most_recent_sensor_data = value_json['data'] | list | last %} {{ as_timestamp(most_recent_sensor_data.t_stamp) | timestamp_custom ('%Y-%m-%d %H:%M:%S')}}'
Template variable error: No last item, sequence was empty. when rendering '{% set most_recent_sensor_data = value_json['data'] | rejectattr('energy_consumed', 'equalto', None) | list | last %} {{ most_recent_sensor_data.t_stamp }}'

3/3

Logger: homeassistant.components.sensor.recorder
Source: components/sensor/recorder.py:396
Integration: Sensor (documentation, issues)
First occurred: 22 August 2022 at 06:50:10 (4 occurrences)
Last logged: 05:50:10

Entity sensor.sa_todays_energy_generated_total from integration template has state class total_increasing, but its state is negative. Triggered by state -1 with last_updated set to 2022-08-21T20:45:20.722234+00:00. Please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+template%22
Entity sensor.sa_todays_energy_generated_total from integration template has state class total_increasing, but its state is not strictly increasing. Triggered by state 25544 (25.547) with last_updated set to 2022-08-22T07:05:20.925830+00:00. Please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+template%22
Entity sensor.sa_todays_stove_oven_total from integration template has state class total_increasing, but its state is negative. Triggered by state -1 with last_updated set to 2022-08-25T19:45:22.155014+00:00. Please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+template%22

sensor.sa_todays_energy_consumed_total There is no state available for this entity. HA2022.06

Following upgrade to HA 2022.06

sensor.sa_todays_energy_consumed_total There is no state available for this entity.

No data is displayed in energy page

Fix issue states :

This entity has no state at the moment, if this is an orphaned entity, you may want to remove the long term statistics of it from your database.

Do you want to permanently remove the long term statistics of sensor.sa_todays_energy_consumed_total from your database?

Investigating

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.