Perfeito!
Não estava a conseguir passar essa parte da documentação correctamente para dentro do background-color…
Já ia tentar com o card-mod.
Muito Obrigado!
Abraço!
Perfeito!
Não estava a conseguir passar essa parte da documentação correctamente para dentro do background-color…
Já ia tentar com o card-mod.
Muito Obrigado!
Abraço!
Com o card mod não ia dar, porque o card mod só mexe no Css.
Ainda assim, a solução que dei não é a ideal, porque não se ajusta mediante o tamanho da barra.
Experimenta reduzir o valor de 600 para por exemplo 300 para ver se gostas mais. O gradient fica mais apertado
Já me dou por satisfeito com este resultado mas se conseguires saber a parte das linhas brancas melhor ainda. Fica mais apelativo.
Passar para os mensais quando houver tempo.
Obrigado mais uma vez!
Isso está com muito bom aspecto
Atualmente o chartjs está na versão 3.2.1, o card está a atualizar a 2.9.x
Não tinha conhecimento que tinham alterado a estrutura, por isso é que não estás a conseguir.
Podes aceder à documentação da versão antiga aqui:
https://www.chartjs.org/docs/2.9.4/
No entanto se quiseres alterar a cor é assim
...
options:
scales:
xAxes:
- gridLines:
color: 'orange'
yAxes:
- gridLines:
color: 'orange'
Assim sim!
Alguma dúvida diz
Também tenho planeado fazer uns ajustes ao card em breve, atualizar o chartjs e adicionar novas funcionalidades, vamos a ver como corre de tempo disponível
Boa tarde
Podes Por favor partilhar o teu codigo, para eu poder adaptar a minha casa ?
Boa tarde Ricardo, pode por favor ajudar-me
Segui o tutorial acima, mas no então parece que nada é escrito na base de dados
a baixo o meu codigo base_de_dados.yaml
shell_command:
daily_insert_mysql: "python3 /config/py_scripts/daily_insert_mysql.py --host=core-mariadb --user=XXXXXXX --password=XXXXXXXX --db=custom_data --table={{ table }} --value={{ value }} {{ '--col='+column if column is defined }}"
python_install_pymysql_dependency: "pip install pymysql"
sensor:
- platform: history_stats
entity_id: switch.luz_traseiras
state: 'on'
name: Horas Luz Cozinha
start: '{{ now().replace(hour=0, minute=0, second=0) }}'
end: '{{ now() }}'
- platform: sql
db_url: mysql://XXXXXXXXX:XXXXXXXXXXX@core-mariadb/custom_data?charset=utf8
queries:
- name: consumo_electricidade
query: >-
SELECT
CONCAT(
'[',
GROUP_CONCAT(DAY(date) SEPARATOR ','),
']'
) AS labels,
CONCAT(
'[',
GROUP_CONCAT(consumo_energia_diario SEPARATOR ','),
']'
) AS data,
CONCAT(
'["',
GROUP_CONCAT(IF(`consumo_energia_diario` >= 10, 'red', IF(`consumo_energia_diario` >= 5, 'orange', 'green')) SEPARATOR '","'),
'"]'
) AS colors,
ROUND(SUM(consumo_energia_diario), 2) AS total,
FORMAT(round(((sum(consumo_energia_diario) * 0.15184 + 0.1183 + 0.041 + 0.107)*1.23), 2), 2) AS 'total_eur',
'info in attributes' AS value
FROM consumo_energia
WHERE MONTH(date) = MONTH(CURRENT_DATE);
column: "value"
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: "Registar o consumo diário de energia"
initial_state: true
trigger:
- platform: state
entity_id: sensor.daily_energy
action:
- service: shell_command.daily_insert_mysql
data_template:
table: consumo_energia
value: >
{{ trigger.to_state.state }}
column: >
{% if trigger.entity_id == "sensor.daily_energy" %}
consumo_energia_diario
{% endif %}
- alias: "Insere na tabela o número de Horas que a luz da cozinha esta ligada"
initial_state: true
trigger:
- platform: state
entity_id: sensor.horas_luz_cozinha
condition:
- condition: template
value_template: >
{{ (trigger.to_state.state | float) != 0.0 }}
action:
- service: shell_command.daily_insert_mysql
data_template:
table: horas_luzes
value: >
{{ trigger.to_state.state }}
column: luzcozinha
Como configuraste o addon do mariadb? Criou a base de dados? O utilizador criado tem permissão para ler e escrever para a base de dados criada?
Podes colocar isto no configuration.yaml
para que o erro seja mais especifico
logger:
default: warning
logs:
homeassistant.components.shell_command: debug
o addon do mariaDB configurei de acordo o tutorialo utilizador tem permissão
databases:
- custom_data
logins:
- username: fabio.martins
host: '%'
password: XXXXXXX
rights:
- username: fabio.martins
host: '%'
database: custom_data
grant: ALL PRIVILEGES ON
parece-me tudo bem,
Coloca então o logger a funcionar como te disse acima para ver o erro que dá com mais detalhe
Boas.
Antes de mais parabéns pelo topico visto ser aqui uma possibilidade de diminuir o tamando da base de dados do HA.
Ainda estou muito confuso com este metodo e segue já a minha primeira duvida.
Não deveria estar aparecer qq coisa no gráfico?
- alias: "Registar o consumo diário de energia - Casa"
initial_state: true
trigger:
- platform: state
entity_id:
- sensor.energy_shelly_em_casa_today
- sensor.energy_shelly_em_forno_today
- sensor.energy_tomada_tv_sala_today
action:
- service: shell_command.daily_insert_mysql
data_template:
table: consumo_casa
value: >
{{ trigger.to_state.state }}
column: >
{% if trigger.entity_id == "sensor.energy_shelly_em_casa_today" %}
consumo_energia_diario
{% endif %}
{% if trigger.entity_id == "sensor.energy_shelly_em_forno_today" %}
consumo_forno_diario
{% endif %}
{% if trigger.entity_id == "sensor.energy_tomada_tv_sala_today" %}
consumo_sala_diario
{% endif %}
- platform: sql
db_url: !secret db_url_custom_data
queries:
- name: consumo_electricidade
query: >-
SELECT
CONCAT(
'[',
GROUP_CONCAT(DAY(date) SEPARATOR ','),
']'
) AS labels,
CONCAT(
'[',
GROUP_CONCAT(consumo_energia_diario SEPARATOR ','),
']'
) AS data,
CONCAT(
'["',
GROUP_CONCAT(IF(`consumo_energia_diario` >= 10, 'red', IF(`consumo_energia_diario` >= 5, 'orange', 'green')) SEPARATOR '","'),
'"]'
) AS colors,
ROUND(SUM(consumo_energia_diario), 2) AS total,
FORMAT(round(((sum(consumo_energia_diario) * 0.1587 + 0.1183 + 0.041 + 0.107)*1.23), 2), 2) AS 'total_eur',
'info in attributes' AS value
FROM consumo_energia
WHERE MONTH(date) = MONTH(CURRENT_DATE);
column: "value"
chart: bar
custom_options:
showLegend: false
data:
datasets:
- backgroundColor: '${states["sensor.consumo_electricidade"].attributes.colors}'
borderWidth: 1
data: '${states["sensor.consumo_electricidade"].attributes.data}'
label: Eletricidade
labels: '${states["sensor.consumo_electricidade"].attributes.labels}'
entity_row: false
options:
scales:
yAxes:
- ticks:
beginAtZero: true
title:
display: true
text: >
${"Consumo energético Mês Corrente -> " +
states["sensor.consumo_electricidade"].attributes.total_eur + "€"}
type: 'custom:chartjs-card'
Obrigado desde já
Boas, Obrigado!
Antes de mais confirma o teu sensor SQL se está a receber os dados pretendidos.
De facto este sensor “consumo electricidade” estava-me a dar erro.
Tinha alterado o nome do “table” na automation e no sensor não
Tenho o sensor “consumo_casa” a mostrar corretamente no HA (como demonstro em foto) e ao tentar adicionar o exemplo mais acima do sensor “energy_last_12_months” dá-me um erro:
- name: energy_last_12_months
column: "attributes"
query: >-
SELECT
CONCAT('[', GROUP_CONCAT(`month` ORDER BY `order` SEPARATOR ','), ']') AS labels,
CONCAT('[', GROUP_CONCAT(`total` ORDER BY `order` SEPARATOR ','), ']') AS data,
'info in attributes' AS 'attributes'
FROM
(
SELECT
ROUND(SUM(`total`), 2) AS 'total',
CONCAT('"',MONTHNAME(date), ' ', YEAR(date),'"') AS 'month',
DATE(`date`) AS 'order'
FROM `consumo_energia_diario`
GROUP BY MONTH(`date`), YEAR(`date`)
ORDER BY `date` DESC
LIMIT 12
) AS `something`;
Este erro, diz que o “cosum_energia_diario” não existe, mas existe.
É por eu ainda não ter dados suficientes para os 12meses?
Obrigado
Tens que colocar o db_url
a apontar para a tua base de dados
O que puderá estar mal?
Mesmo inserindo continua a dar o erro:
sensor:
### Consumo Eletricidade
- platform: sql
db_url: !secret db_url_custom_data
queries:
- name: consumo_electricidade
query: >-
SELECT
CONCAT(
'[',
GROUP_CONCAT(DAY(date) SEPARATOR ','),
']'
) AS labels,
CONCAT(
'[',
GROUP_CONCAT(consumo_energia_diario SEPARATOR ','),
']'
) AS data,
CONCAT(
'["',
GROUP_CONCAT(IF(`consumo_energia_diario` >= 10, 'red', IF(`consumo_energia_diario` >= 5, 'orange', 'green')) SEPARATOR '","'),
'"]'
) AS colors,
ROUND(SUM(consumo_energia_diario), 2) AS total,
FORMAT(round(((sum(consumo_energia_diario) * 0.1587 + 0.1183 + 0.041 + 0.107)*1.23), 2), 2) AS 'total_eur',
'info in attributes' AS value
FROM consumo_casa
WHERE MONTH(date) = MONTH(CURRENT_DATE);
column: "value"
- platform: sql
db_url: !secret db_url_custom_data
queries:
- name: energy_last_12_months
column: "attributes"
query: >-
SELECT
CONCAT('[', GROUP_CONCAT(`month` ORDER BY `order` SEPARATOR ','), ']') AS labels,
CONCAT('[', GROUP_CONCAT(`total` ORDER BY `order` SEPARATOR ','), ']') AS data,
'info in attributes' AS 'attributes'
FROM
(
SELECT
ROUND(SUM(`total`), 2) AS 'total',
CONCAT('"',MONTHNAME(date), ' ', YEAR(date),'"') AS 'month',
DATE(`date`) AS 'order'
FROM `consumo_energia_diario`
GROUP BY MONTH(`date`), YEAR(`date`)
ORDER BY `date` DESC
LIMIT 12
) AS `something`;
2021-06-12 21:16:58 ERROR (SyncWorker_4) [homeassistant.components.sql.sensor] Error executing query SELECT
CONCAT('[', GROUP_CONCAT(`month` ORDER BY `order` SEPARATOR ','), ']') AS labels,
CONCAT('[', GROUP_CONCAT(`total` ORDER BY `order` SEPARATOR ','), ']') AS data,
'info in attributes' AS 'attributes'
FROM
(
SELECT
ROUND(SUM(`total`), 2) AS 'total',
CONCAT('"',MONTHNAME(date), ' ', YEAR(date),'"') AS 'month',
DATE(`date`) AS 'order'
FROM `consumo_energia_diario`
GROUP BY MONTH(`date`), YEAR(`date`)
ORDER BY `date` DESC
LIMIT 12
) AS `something`;: (MySQLdb._exceptions.ProgrammingError) (1146, "Table 'custom_data.consumo_energia_diario' doesn't exist")
[SQL: SELECT
CONCAT('[', GROUP_CONCAT(`month` ORDER BY `order` SEPARATOR ','), ']') AS labels,
CONCAT('[', GROUP_CONCAT(`total` ORDER BY `order` SEPARATOR ','), ']') AS data,
'info in attributes' AS 'attributes'
FROM
(
SELECT
ROUND(SUM(`total`), 2) AS 'total',
CONCAT('"',MONTHNAME(date), ' ', YEAR(date),'"') AS 'month',
DATE(`date`) AS 'order'
FROM `consumo_energia_diario`
GROUP BY MONTH(`date`), YEAR(`date`)
ORDER BY `date` DESC
LIMIT 12
) AS `something`;]
(Background on this error at: http://sqlalche.me/e/14/f405)
2021-06-12 21:16:59 ERROR (MainThread) [pyipma.location] Station has no observations!
A tabela não está criada.
Já tens a automação a escrever os valores na base de dados?
Se sim, podes ter que dar algum tempo para a automação atuar e fazer a criação. Depende do período de tempo que o sensor altera
Tenho.
É esta aqui, tanto é que aparece no HeidiSQL:
### Consumo Diário
- alias: "Registar o consumo diário em casa"
initial_state: true
trigger:
- platform: state
entity_id:
- sensor.energy_shelly_em_casa_today
- sensor.energy_shelly_em_forno_today
- sensor.energy_tomada_tv_sala_today
action:
- service: shell_command.daily_insert_mysql
data_template:
table: consumo_casa
value: >
{{ trigger.to_state.state }}
column: >
{% if trigger.entity_id == "sensor.energy_shelly_em_casa_today" %}
consumo_energia_diario
{% endif %}
{% if trigger.entity_id == "sensor.energy_shelly_em_forno_today" %}
consumo_forno_diario
{% endif %}
{% if trigger.entity_id == "sensor.energy_tomada_tv_sala_today" %}
consumo_sala_diario
{% endif %}
Ou a automação deveria ser só com um sensor? e não com 3?
Repara que a tabela chama-se consumo_casa
e não consumo_energia_diario
Retifica a tua query sql
Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt