# Como criar uma base de dados leve no HA com histórico e apresentação gráfica

**URL:** https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888
**Category:** Tutoriais
**Created:** [24 Junho , 2020 02:58 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888 "2020-06-24T02:58:42Z")
**Posts on this page:** 20
**Page:** 15

<div class="post-metadata">

### Author: ![Fl4v10](https://forum.cpha.pt/user_avatar/forum.cpha.pt/fl4v10/32/354_2.png) [@Fl4v10](https://forum.cpha.pt/u/Fl4v10)
#### Post date: [6 Outubro , 2021 13:46 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/288 "2021-10-06T13:46:07Z")

</div>

> [@ricreis394](#):
>
> pip install pymysql

Por acaso já tinha feito esse comando no container e não deu erro nenhum:

![image](https://forum.cpha.pt/uploads/default/optimized/2X/e/e845e728fd49b87dc8e20ca5851ea9e5ed28d580_2_640x38.png)

---

<div class="post-metadata">

### Author: ![ricreis394](https://forum.cpha.pt/user_avatar/forum.cpha.pt/ricreis394/32/7810_2.png) [@ricreis394](https://forum.cpha.pt/u/ricreis394)
#### Post date: [6 Outubro , 2021 15:22 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/289 "2021-10-06T15:22:43Z")

</div>

podes postar o código ?

---

<div class="post-metadata">

### Author: ![Fl4v10](https://forum.cpha.pt/user_avatar/forum.cpha.pt/fl4v10/32/354_2.png) [@Fl4v10](https://forum.cpha.pt/u/Fl4v10)
#### Post date: [6 Outubro , 2021 16:02 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/290 "2021-10-06T16:02:32Z")

</div>

Este é o meu yaml de package.

```auto
shell_command:
  daily_insert_mysql: "python3 /config/python_scripts/daily_insert_mysql.py --host=core-mariadb --user=hass --password=xpto --db=custom_data --table={{ table }} --value={{ value }} {{ '--col='+column if column is defined }}"
  python_install_pymysql_dependency: "pip install pymysql"

automation:
  - alias: "Instala a dependencia no arranque do ha"
    initial_state: true
    trigger:
      - platform: homeassistant
        event: start
    action:
      - service: shell_command.python_install_pymysql_dependency

  - alias: "Custo carregamento do Leaf"
    initial_state: true
    trigger:
      - platform: state
        entity_id: sensor.leaf_custo_diario
    action:
      - service: shell_command.daily_insert_mysql
        data_template:
          table: leaf_custo_carregamento
          value: >
            {{ trigger.to_state.state }}
          column: >
            {% if trigger.entity_id == "sensor.leaf_custo_diario" %}
              leaf_custo_diario
            {% endif %}

```

Aqui no meu o que tenho diferente é a localização que é …/python\_scripts/… mas bate certo pois é o nome da pasta onde tenho os meus scripts.

---

<div class="post-metadata">

### Author: ![ricreis394](https://forum.cpha.pt/user_avatar/forum.cpha.pt/ricreis394/32/7810_2.png) [@ricreis394](https://forum.cpha.pt/u/ricreis394)
#### Post date: [8 Outubro , 2021 15:06 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/291 "2021-10-08T15:06:10Z")

</div>

Sim, deveria dar. O que acho estranho é o erro estar relacionado com a dependência, será que não tens mais erros?

---

<div class="post-metadata">

### Author: ![Ricardo\_Lameiro](https://forum.cpha.pt/user_avatar/forum.cpha.pt/ricardo_lameiro/32/4919_2.png) [@Ricardo\_Lameiro](https://forum.cpha.pt/u/Ricardo_Lameiro)
#### Post date: [6 Novembro , 2021 00:51 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/292 "2021-11-06T00:51:53Z")

</div>

@ricreis394 segui o tutorial e tenho tudo a funcionar, mas agora estava a pensar em migrar a base de dados do Home Assistant para a MariaDB, mas como não percebo muito disto antes de fazer asneiras podias me tirar uma duvida? Como já tenho a app MariaDB configurada para utilizar nesta nesta aplicação se migrar a base de dados do Home Assistante não vai dar confusão? Caso não seja o topico correcto para a questão por favor avisa que apago. Obrigado

---

<div class="post-metadata">

### Author: ![j\_assuncao](https://forum.cpha.pt/user_avatar/forum.cpha.pt/j_assuncao/32/3_2.png) [@j\_assuncao](https://forum.cpha.pt/u/j_assuncao)
#### Post date: [7 Novembro , 2021 07:01 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/293 "2021-11-07T07:01:19Z")

</div>

Podes migrar para MariaDB sem problemas. A DB utilizada pelo HA tem outro nome e não cria conflitos.

---

<div class="post-metadata">

### Author: ![Pedro\_Oliveira](https://forum.cpha.pt/user_avatar/forum.cpha.pt/pedro_oliveira/32/2204_2.png) [@Pedro\_Oliveira](https://forum.cpha.pt/u/Pedro_Oliveira)
#### Post date: [15 Novembro , 2021 22:14 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/294 "2021-11-15T22:14:33Z")

</div>

Boas,  
Fiz o update da versão 2021.9.7 para a 2021.11.3. Passei a ter este erro ao registar na BD MariaDB  
021-11-15 21:59:24 ERROR (MainThread) [homeassistant.components.shell\_command] Error running command: `python3 /config/py_scripts/daily_insert_mysql.py --host=core-mariadb --user= ******--password=****** --db=custom_data --table={{ table }} --value={{ value }} {{ '--col='+column if column is defined }}`, return code: 1

Alguém já passou pelo mesmo problema ?

---

<div class="post-metadata">

### Author: ![ricreis394](https://forum.cpha.pt/user_avatar/forum.cpha.pt/ricreis394/32/7810_2.png) [@ricreis394](https://forum.cpha.pt/u/ricreis394)
#### Post date: [15 Novembro , 2021 22:17 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/295 "2021-11-15T22:17:54Z")

</div>

Boas, ainda estou na versão de Outubro, não te sei confirmar se está tudo a funcionar direito ou não.  
No entanto, podes seguir o que disse num post acima para tentar ver onde está o erro mais concretamente

> [@Como criar uma base de dados leve no HA com histórico e apresentação gráfica](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/274):
>
> Como o log não é muito detalhado Podes colocar isto no configuration.yaml para que o erro seja mais especifico logger: default: warning logs: homeassistant.components.shell\_command: debug Talvez o HA não esteja a conseguir comunicar com o mariadb, usas o mariadb no recorder do HA também? E funciona?

---

<div class="post-metadata">

### Author: ![Pedro\_Oliveira](https://forum.cpha.pt/user_avatar/forum.cpha.pt/pedro_oliveira/32/2204_2.png) [@Pedro\_Oliveira](https://forum.cpha.pt/u/Pedro_Oliveira)
#### Post date: [15 Novembro , 2021 22:31 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/296 "2021-11-15T22:31:09Z")

</div>

Não estou a usar no recorder. Até ao update tenho registos na Base de dados. Após o update passou a dar erros.  
2021-11-15 22:25:34 ERROR (MainThread) [homeassistant.components.shell\_command] Timed out running command: `pip install pymysql`, after: 60s  
Traceback (most recent call last):  
File “/usr/local/lib/python3.9/asyncio/streams.py”, line 517, in \_wait\_for\_data  
await self.\_waiter  
asyncio.exceptions.CancelledError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):  
File “/usr/local/lib/python3.9/asyncio/subprocess.py”, line 196, in communicate  
stdin, stdout, stderr = await tasks.gather(stdin, stdout, stderr,  
asyncio.exceptions.CancelledError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):  
File “/usr/local/lib/python3.9/asyncio/tasks.py”, line 492, in wait\_for  
fut.result()  
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):  
File “/usr/src/homeassistant/homeassistant/components/shell\_command/ **init**.py”, line 83, in async\_service\_handler  
stdout\_data, stderr\_data = await asyncio.wait\_for(  
File “/usr/local/lib/python3.9/asyncio/tasks.py”, line 494, in wait\_for  
raise exceptions.TimeoutError() from exc  
asyncio.exceptions.TimeoutError  
2021-11-15 22:30:11 ERROR (MainThread) [homeassistant.components.automation.registar\_temperatura\_quarto\_suite] Registar Temperatura Quarto Suite: Error executing script. Error for call\_service at pos 1: Error rendering data template: UndefinedError: ‘dict object’ has no attribute ‘to\_state’  
2021-11-15 22:30:11 ERROR (MainThread) [homeassistant.components.automation.registar\_temperatura\_quarto\_suite] Error while executing automation automation.registar\_temperatura\_quarto\_suite: Error rendering data template: UndefinedError: ‘dict object’ has no attribute ‘to\_state’

---

<div class="post-metadata">

### Author: ![karma](https://forum.cpha.pt/letter_avatar_proxy/v4/letter/k/bcef8e/32.png) [@karma](https://forum.cpha.pt/u/karma)
#### Post date: [8 Dezembro , 2021 18:34 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/297 "2021-12-08T18:34:29Z")

</div>

O gráfico que apresentas está muito bom para o que queria.  
No entanto estou a ter dificuldades na leitura da minha fatura para alterar os valores do “function” no Node-RED.  
Queria:

- 1x sensor com o custo da eletricidade em si ( €/dia (do dia 9 ao 9) + €/kWh)

Alguém me consegue ajudar a inserir os valores e quais?  
Segue duas fotos da minha fatura com a Galp (electricidade e gas).

 ![valores eletricidade](https://forum.cpha.pt/uploads/default/original/2X/4/45599f6a76e797d1207d27ebeaa59c1f218749da.jpeg)  
 ![taxas eletricidade](https://forum.cpha.pt/uploads/default/original/2X/2/28b71e68d2a294b76b09be20a4b23ec628432b79.jpeg)

Seria assim algo do genero?:

```auto
  ROUND(SUM(\`consumo_energia_diario\`), 3) AS total,
  FORMAT(round(((sum(\`consumo_energia_diario\`) * 0.1547 )), 2), 2) AS 'total_eur',
  CONCAT(

```

Mas falta me os dias x 0,2143€…  
Estarei a interpretar mal?

Obrigado

---

<div class="post-metadata">

### Author: ![Skysurf](https://forum.cpha.pt/user_avatar/forum.cpha.pt/skysurf/32/4841_2.png) [@Skysurf](https://forum.cpha.pt/u/Skysurf)
#### Post date: [4 Janeiro , 2022 21:43 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/298 "2022-01-04T21:43:20Z")

</div>

também me esta a dar o mesmo erro ?  
conseguiste solucionar ?

---

<div class="post-metadata">

### Author: ![Skysurf](https://forum.cpha.pt/user_avatar/forum.cpha.pt/skysurf/32/4841_2.png) [@Skysurf](https://forum.cpha.pt/u/Skysurf)
#### Post date: [5 Janeiro , 2022 16:57 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/299 "2022-01-05T16:57:28Z")

</div>

Esta a dar-me este erro ao registar na BD MariaDB  
ERROR (MainThread) [homeassistant.components.shell\_command] Error running command: `python3 /config/py_scripts/daily_insert_mysql.py --host=core-mariadb --user= ******--password=****** --db=custom_data --table={{ table }} --value={{ value }} {{ '--col='+column if column is defined }}` , return code: 1

Alguém já passou pelo mesmo problema ?

e nao regista nada na base de dados…

---

<div class="post-metadata">

### Author: ![JCOR65](https://forum.cpha.pt/letter_avatar_proxy/v4/letter/j/c2a13f/32.png) [@JCOR65](https://forum.cpha.pt/u/JCOR65)
#### Post date: [29 Janeiro , 2022 23:58 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/300 "2022-01-29T23:58:02Z")

</div>

Desculpem a minha ignorância, mas não é suposto o HA gravar os dados na base de dados MariaDB automaticamente?

É que eu tenho BD MariaDB instalada no HA e os dados estão a ser lá gravados, sem ter que instalar qualquer ficheiro py (a não ser que esse ficheiro seja necessário para gravar os dados noutra tabela).

---

<div class="post-metadata">

### Author: ![ricreis394](https://forum.cpha.pt/user_avatar/forum.cpha.pt/ricreis394/32/7810_2.png) [@ricreis394](https://forum.cpha.pt/u/ricreis394)
#### Post date: [30 Janeiro , 2022 00:29 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/301 "2022-01-30T00:29:42Z")

</div>

Correto, é uma tabela à parte com o único fundamento de gravar dados para longo prazo sem que o HA os elimine.

---

<div class="post-metadata">

### Author: ![JCOR65](https://forum.cpha.pt/letter_avatar_proxy/v4/letter/j/c2a13f/32.png) [@JCOR65](https://forum.cpha.pt/u/JCOR65)
#### Post date: [30 Janeiro , 2022 00:35 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/302 "2022-01-30T00:35:50Z")

</div>

Mas supostamente o HA só elimina os dados da MariaDB se tu deres ordem/programares para os apagar.

---

<div class="post-metadata">

### Author: ![ricreis394](https://forum.cpha.pt/user_avatar/forum.cpha.pt/ricreis394/32/7810_2.png) [@ricreis394](https://forum.cpha.pt/u/ricreis394)
#### Post date: [30 Janeiro , 2022 09:08 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/303 "2022-01-30T09:08:59Z")

</div>

Correto mas mesmo assim ocupa mais espaço. Na minha tabela externa do HA tenho dados desde 2020 e apenas me ocupa menos de 1MB porque para certos casos apenas me interessa 1 valor por dia, e é nisto que esta implementação é útil.

---

<div class="post-metadata">

### Author: ![Luis\_Coelho](https://forum.cpha.pt/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@Luis\_Coelho](https://forum.cpha.pt/u/Luis_Coelho)
#### Post date: [9 Março , 2022 11:57 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/304 "2022-03-09T11:57:51Z")

</div>

Bom dia,  
Estou de novo a tentar colocar datalabel no gráfico tendo como guia o link partilhado, mas infelizmente não tenho conhecimentos de js para ultrapassar a parte do _scripting_. O último post do link (\*) partilhado inclui o codigo para o chartjs 3.7 (versão actual do card).  
Abaixo código de um gráfico simples que estou a usar para testes, onde inclui o scripting, mas não está a funcionar.  
Alguma sugestão do que poderei estar a fazer mal?  
Obrigado desde já.

(\*) link: [https://stackoverflow.com/questions/31631354/how-to-display-data-values-on-chart-js](https://stackoverflow.com/questions/31631354/how-to-display-data-values-on-chart-js)

```auto
type: custom:chartjs-card
chart: bar
data:
  datasets:
    - backgroundColor: >-
        ${ c => {var bg = c.chart.ctx.createLinearGradient(0,0,0,600);
        bg.addColorStop(0, "lightgreen"); bg.addColorStop(1, "blue"); return
        bg;} }
      borderColor: >-
        ${ c => {var bg = c.chart.ctx.createLinearGradient(0,0,0,600);
        bg.addColorStop(0, "lightgreen"); bg.addColorStop(1, "blue"); return
        bg;} }
      borderWidth: 2
      borderRadius: 7
      data: ${'[20,10,5,15]'}
      label: TV
  labels: ${'[1,2,3,4]'}
options:
  scales:
    'y':
      position: left
  plugins:
    title:
      display: true
      text: example
  animation:
    duration: 0
    onComplete: |
      ${' function() {
        ctx = this.ctx;
        ctx.font = Chart.helpers.fontString(Chart.defaults.font.size, Chart.defaults.font.style, Chart.defaults.font.family);
        ctx.textAlign = 'center';
        ctx.textBaseline = 'bottom';
        chartinst = this;
        this.data.datasets.forEach(function(dataset, i) {
            if(chartinst.isDatasetVisible(i)){
                var meta = chartinst.getDatasetMeta(i);
                meta.data.forEach(function(bar, index) {
                    var data = dataset.data[index];
                    ctx.fillText(data, bar.x, bar.y - 5);
                 });
              }
           });
        }'}

```

---

<div class="post-metadata">

### Author: ![Luis\_Coelho](https://forum.cpha.pt/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@Luis\_Coelho](https://forum.cpha.pt/u/Luis_Coelho)
#### Post date: [10 Março , 2022 15:56 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/305 "2022-03-10T15:56:21Z")

</div>

Ainda sobre o post acima, incluir o plugin “datalabel”(\*) também permitia utilizar datalabels e seria mais “user friendly” para desenhar gráficos. Não sei se será muito dificil ou não incluir este plugin no card (Eu sei que pedir é fácil 🙂 ).  
Se fosse possível era excelente e penso que seria um grande complemento ao card. Fica a sugestão.

(\*) [https://github.com/chartjs/chartjs-plugin-datalabels](https://github.com/chartjs/chartjs-plugin-datalabels)

Termino o post agradecendo o trabalho do developer deste card. Este card combinado com sensores SQL permite uma grande flexibilidade na elaboração de gráficos para o nosso HA!!

Exemplos de como estou a utilizar  
Consumo de energia por semana:

 ![image](https://forum.cpha.pt/uploads/default/original/2X/d/de2c560581a0f02280346bfbce5106219557b29f.png)

Horas de utilização e numero de utilizações por semana (ainda em desenvolvimento):

 ![image](https://forum.cpha.pt/uploads/default/original/2X/8/8a70003035bb19c4258a324776ac5f7e04c9307f.png)

---

<div class="post-metadata">

### Author: ![karma](https://forum.cpha.pt/letter_avatar_proxy/v4/letter/k/bcef8e/32.png) [@karma](https://forum.cpha.pt/u/karma)
#### Post date: [20 Março , 2022 21:07 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/306 "2022-03-20T21:07:13Z")

</div>

@RodolfoVieira no function node, é possivel fazer o €/kWh + (sensor dias corridos x €/dia) ? Identico ao template abaixo:

```auto
    custo_energia_mes_casa:
        friendly_name: "Fatura Energia Mensal"
        icon_template: "mdi:currency-eur"
        value_template: >
          {{ ( states('sensor.energy_shelly_em_casa_monthly_total')|float(0) * 0.1927 + states('sensor.monthly_energy_cicle_days_shelly_em_casa')|float(0) * 0.1459 ) | round(2) }}

```

Obrigado

---

<div class="post-metadata">

### Author: ![GreenUser](https://forum.cpha.pt/user_avatar/forum.cpha.pt/greenuser/32/9046_2.png) [@GreenUser](https://forum.cpha.pt/u/GreenUser)
#### Post date: [1 Outubro , 2022 08:52 UTC](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888/307 "2022-10-01T08:52:54Z")

</div>

No meu caso, hoje mudou de mês (1 outubro 2022), mas não foi criada a coluna referente a Outubro, mantem-se a de Setembro. Nota: comecei a recolher dados desde o dia 22 de Setembro. Na tabela estão registados todos os dias de setembro e o dia 1 de outubro. O que faltará? Obrigado.

[Página anterior](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888.md?page=14)

[Próxima página](https://forum.cpha.pt/t/como-criar-uma-base-de-dados-leve-no-ha-com-historico-e-apresentacao-grafica/4888.md?page=16)
