Skip to content

Diagram for weekly history of data from eloverblik/Diagram for ugentlig historik af data fra eloverblik

Notifications You must be signed in to change notification settings

MaximusClavius/eloverblikugeforbrug

Repository files navigation

eloverblikugeforbrug

Den hurtige løsning

Et diagram som viser ugeforbrug. Bemærk at hvis du skal have mere end 10 dages historik, så skal du bruge løsning med sætte purge_keep_days, https://www.home-assistant.io/integrations/recorder/. Standard i HA er 10 dages historik.

"Tilføj kort" til din brugergrænseflade/dashboard, og vælg apexcharts-card. Så kopier du koden ind vinduet til venstre, så skulle diagrammet komme til syne i højre vindue. Diagrammet bruger grøn, gul og rød farve for at markere forskelle i forbrugt kWh, hvor grøn er lavest og rød højest.

Hvis der står "Loading" i diagram, så mangler der data. Enten er koden formateret forkert eller så mangler der kode. På github ville jeg bruge knappen "Copy raw contents", og i apexchart Ctrl+a i venstre vindue (for vælg al kode) og Ctrl+v for at indsætte/erstatte med ny kode.

For mere historik på diagrammet ændres "graph_span", fx 10d. Af ukendte årsager mister man til tider yderste højre dato, dog kan det løses ved lægge tid til, fx et sekund -> 10d1s

image

Den korrekte løsning

Datoen passer ikke, og det skyldes at HA bruger last_updated frem for den korrekte metering_date på sensor.eloverblik_energy_total. Får at få fat på den korrekt dato(metering_date), så er en løsning på dette:

  1. at entity_id faktisk er sensor.eloverblik_energy_total (nogen hedder fx sensor.eloverblik_energy_total_2)
  2. at lave en SQL integration
  3. at lave en data_generator på apexcharts-card

Ad 1
Der skal tilføjes en SQL-integration - Indstillinger > Enheder og tjenester > Tilføj integration (nedre højre hjørne) og søg på SQL.

image

Jeg har valgt navnet "eloverblik historik", hvilket betyder jeg får en sensor som hedder: sensor.eloverblik_historik. Hvis du ikke ved hvilken database du bruger, så er HA født med sqlite.

Query skal være følgende:
Sqlite kender ikke nøgleordet: "separator", så det skal ersattes med et komma.

Sqlite

Efter databaseændringerne april 2023:
SELECT group_concat(Dato || ': ' || state, ',') AS Data, state from (SELECT substr(shared_attrs, instr(shared_attrs, '":"') + 3, instr(shared_attrs, '","') - instr(shared_attrs, '":"') - 3) AS Dato, state FROM states s, state_attributes a, states_meta m WHERE m.metadata_id = s.metadata_id AND m.entity_id = 'sensor.eloverblik_energy_total' AND state NOT IN ('unavailable','unknown','none') AND s.attributes_id = a.attributes_id GROUP BY s.attributes_id ORDER BY state_id ASC) b;

Før databaseændringerne april 2023:
SELECT group_concat(Dato || ': ' || state, ',') AS Data, state from (SELECT substr(shared_attrs, instr(shared_attrs, '":"') + 3, instr(shared_attrs, '","') - instr(shared_attrs, '":"') - 3) AS Dato, state FROM states s, state_attributes a WHERE entity_id = 'sensor.eloverblik_energy_total' AND state NOT IN ('unavailable','unknown','none') AND s.attributes_id = a.attributes_id GROUP BY s.attributes_id ORDER BY state_id ASC) b;

MariaDB/MySQL

Efter databaseændringerne april 2023:
SELECT GROUP_CONCAT(Dato, ': ', state SEPARATOR ',') AS Data, state FROM (SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(shared_attrs, '","', 1), '":"', -1) AS Dato, state FROM states s, state_attributes a, states_meta m WHERE m.metadata_id = s.metadata_id AND m.entity_id = 'sensor.eloverblik_energy_total' AND state NOT IN ('unavailable','unknown','none') AND s.attributes_id = a.attributes_id GROUP BY s.attributes_id ORDER BY state_id ASC) b;

Før databaseændringerne april 2023:
SELECT GROUP_CONCAT(Dato, ': ', state SEPARATOR ',') AS Data, state FROM (SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(shared_attrs, '","', 1), '":"', -1) AS Dato, state FROM states s, state_attributes a WHERE entity_id = 'sensor.eloverblik_energy_total' AND state NOT IN ('unavailable','unknown','none') AND s.attributes_id = a.attributes_id GROUP BY s.attributes_id ORDER BY state_id ASC) b;


og husk at angive "state" for "Column"
Hvis du har valgt at bruge anden database end sqlite, så skal Database URL udfyldes. Eksempelvis

image

Når det lykkes vil sensoren hedde det samme som det navn du gav den ifm. SQL-integrationen. Egenskaben "Data:" er historikken.

image

Ad 2
På kortet skal data formateres korrekt og således:
data_generator: |
var new_data = entity.attributes.Data.split(',');
if (isNaN(new_data[new_data.length - 1][0]))
new_data.pop();
var hist = new_data.map((start) => {
var element = start.split(': ');
return [new Date(element[0]).getTime(), parseFloat(element[1])];
});
return hist;

image

Et komplet eksempel og formateret korrekt findes her: https://github.com/MaximusClavius/eloverblikugeforbrug/blob/main/Ugeoversigt%20med%20korrekte%20datoer

Doner en skræv

About

Diagram for weekly history of data from eloverblik/Diagram for ugentlig historik af data fra eloverblik

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published