Caro @RodolfoVieira antes de mais parabéns pelo tutorial! Já há algum tempo que estava para perguntar por uma coisa destas.
É possível arranjar forma de guardar ou exportar os dados para Excel ?
Caro @RodolfoVieira antes de mais parabéns pelo tutorial! Já há algum tempo que estava para perguntar por uma coisa destas.
É possível arranjar forma de guardar ou exportar os dados para Excel ?
Sim, creio que sim. Se não me engano o HeidiSQL permite fazeres essa exportação
Viva,
E pq não fazer uma ligação do Excel via ODBC à Base de dados?
É assim que eu tenho a ligação.
Boas Malta.
Queria apresentar num gráfico o consumo anual por meses mas está apresentar por dia.
Guardo na BD por dia, não dá para agrupar por meses. Não é o que esta função GROUP_CONCAT(MONTH(date) SEPARATOR ‘,’), faz ?
chart: bar
custom_options:
showLegend: false
data:
datasets:
- backgroundColor: '${states["sensor.consumo_mes_tomadasala"].attributes.colors}'
borderWidth: 1
data: '${states["sensor.consumo_mes_tomadasala"].attributes.data}'
label: Sala
- backgroundColor: '${states["sensor.consumo_mes_frigorifico"].attributes.colors}'
borderWidth: 1
data: '${states["sensor.consumo_mes_frigorifico"].attributes.data}'
label: Frigorifico
- backgroundColor: '${states["sensor.consumo_mes_desumidificador"].attributes.colors}'
borderWidth: 1
data: '${states["sensor.consumo_mes_desumidificador"].attributes.data}'
label: Desumidificador
- backgroundColor: '${states["sensor.consumo_mes_cilindro"].attributes.colors}'
borderWidth: 1
data: '${states["sensor.consumo_mes_cilindro"].attributes.data}'
label: Cilindro
labels: '${states["sensor.consumo_mes_cilindro"].attributes.labels}'
entity_row: false
options:
scales:
yAxes:
- ticks:
beginAtZero: true
title:
display: true
text: >
${ "Consumo energético Ano Corrente -> " +
(parseFloat(states["sensor.consumo_mes_tomadasala"].attributes.total_eur)
+
parseFloat(states["sensor.consumo_mes_frigorifico"].attributes.total_eur)
+
parseFloat(states["sensor.consumo_mes_desumidificador"].attributes.total_eur)
+ parseFloat(states["sensor.consumo_mes_cilindro"].attributes.total_eur))
+ "€"}
type: 'custom:chartjs-card'
- name: consumo_mes_tomadasala
query: >-
SELECT
CONCAT(
'[',
GROUP_CONCAT(MONTH(date) SEPARATOR ','),
']'
) AS labels,
CONCAT(
'[',
GROUP_CONCAT(energia_mes_sala SEPARATOR ','),
']'
) AS data,
CONCAT(
'["',
GROUP_CONCAT(IF(`energia_mes_sala` >= 10, 'red', IF(`energia_mes_sala` >= 5, 'orange', 'green')) SEPARATOR '","'),
'"]'
) AS colors,
ROUND(SUM(energia_mes_sala), 2) AS total,
FORMAT(round(((sum(energia_mes_sala) * 0.1281)*1.23), 2), 2) AS 'total_eur',
'info in attributes' AS value
FROM consumo_mes
WHERE MONTH(date) = MONTH(CURRENT_DATE);
column: "value"
- name: consumo_mes_frigorifico
query: >-
SELECT
CONCAT(
'[',
GROUP_CONCAT(MONTH(date) SEPARATOR ','),
']'
) AS labels,
CONCAT(
'[',
GROUP_CONCAT(energia_mes_aquecedorsuite SEPARATOR ','),
']'
) AS data,
CONCAT(
'["',
GROUP_CONCAT(IF(`energia_mes_aquecedorsuite` >= 10, 'red', IF(`energia_mes_aquecedorsuite` >= 5, 'orange', 'blue')) SEPARATOR '","'),
'"]'
) AS colors,
ROUND(SUM(energia_mes_aquecedorsuite), 2) AS total,
FORMAT(round(((sum(energia_mes_aquecedorsuite) * 0.1281)*1.23), 2), 2) AS 'total_eur',
'info in attributes' AS value
FROM consumo_mes
WHERE MONTH(date) = MONTH(CURRENT_DATE);
column: "value"
- name: consumo_mes_desumidificador
query: >-
SELECT
CONCAT(
'[',
GROUP_CONCAT(MONTH(date) SEPARATOR ','),
']'
) AS labels,
CONCAT(
'[',
GROUP_CONCAT(energia_mes_desumidificador SEPARATOR ','),
']'
) AS data,
CONCAT(
'["',
GROUP_CONCAT(IF(`energia_mes_desumidificador` >= 10, 'red', IF(`energia_mes_desumidificador` >= 5, 'orange', 'red')) SEPARATOR '","'),
'"]'
) AS colors,
ROUND(SUM(energia_mes_desumidificador), 2) AS total,
FORMAT(round(((sum(energia_mes_desumidificador) * 0.1281)*1.23), 2), 2) AS 'total_eur',
'info in attributes' AS value
FROM consumo_mes
WHERE MONTH(date) = MONTH(CURRENT_DATE);
column: "value"
- name: consumo_mes_cilindro
query: >-
SELECT
CONCAT(
'[',
GROUP_CONCAT(MONTH(date) SEPARATOR ','),
']'
) AS labels,
CONCAT(
'[',
GROUP_CONCAT(energia_mes_cilindro SEPARATOR ','),
']'
) AS data,
CONCAT(
'["',
GROUP_CONCAT(IF(`energia_mes_cilindro` >= 10, 'red', IF(`energia_mes_cilindro` >= 5, 'orange', 'yellow')) SEPARATOR '","'),
'"]'
) AS colors,
ROUND(SUM(energia_mes_cilindro), 2) AS total,
FORMAT(round(((sum(energia_mes_cilindro) * 0.1281)*1.23), 2), 2) AS 'total_eur',
'info in attributes' AS value
FROM consumo_mes
WHERE MONTH(date) = MONTH(CURRENT_DATE);
column: "value"
O que essa função faz é mostrar o nome dos meses. Isso é possível fazer, eu tenho a query mas não tou no PC agora. Depois envio
Estou ausente do PC, só para a semana é que vou poder enviar
Sem problema. Obrigado
Aqui está a apresentação por meses:
sensor:
- 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 `energy_kwh`
GROUP BY MONTH(`date`), YEAR(`date`)
ORDER BY `date` DESC
LIMIT 12
) AS `something`;
type: 'custom:chartjs-card'
chart: bar
entity_row: true
data:
datasets:
- backgroundColor: var(--accent-color)
borderWidth: 1
data: '${states["sensor.energy_last_12_months"].attributes.data}'
label: Eletricidade
labels: '${states["sensor.energy_last_12_months"].attributes.labels}'
options:
scales:
yAxes:
- ticks:
beginAtZero: true
title:
display: true
text: "${'Consumo energético (últimos 12 meses) \U0001F4B0 ' + states['sensor.energy_invoice'].state.replace('.', ',') + '€'}"
custom_options:
showLegend: false
Obrigado pelo excelente tutoria!
Fiz conforme ele, mas está gerando a seguinte mensagem no log:
2020-08-28 16:48:43 ERROR (MainThread) [homeassistant.components.shell_command] Error running command:
python3 /config/py_scripts/daily_insert_mysql.py --host=core-mariadb --user=custom_data --password=senha --db=custom_data --table={{ table }} --value={{ value }} {{ ‘–col=’+column if column is defined }}, return code: 1
Infelizmente o erro retornado pelo script não é apresentado nos logs do HA. Por isso, a única forma para poderes ver o erro é entrar no container do HA e executar o script manualmente a ver no que dá.
Segue o que tens de fazer (assumindo uma instalação por docker e não HassOS):
sudo docker exec -it homeassistant bash
<- vais entrar dentro do container do HARicardo,
Obrigado pelas orientações. O problema é na senha, que está incorreta!
Eu gostaria de entender quais são os valores informados para o cálculo do valor a ser pago:
FORMAT(round(((sum(consumo_energia_diario) * 0.15184 + 0.1183 + 0.041 + 0.107)*1.23), 2), 2)
Gostaria de alterar para refletir como pagamos no Brasil.
0.15184 - custo por cada kWh
0.1183 - uma taxa diária fixa existente em Portugal
0.041 - mais outra taxa fixa
0.107 - outra taxa fixa
1.23 - IVA (todos os custos anteriores ainda são somados do respetivo IVA - imposto)
Deves ter o cálculo explicado na fatura
Muito obrigado pelo retorno!
@lopitos, é possível eu incluir uma variável para substituir um dos valores no SQL acima?
Por exemplo:
FORMAT(round(((sum(consumo_energia_diario) * 0.15184 + 0.1183 + 0.041 + 0.107) * CONCAT('float(states.input_text.valor_kwh.state)'), 2), 2)
Ou seria melhor armazenar o valor dessa variável na mesma tabela?
Infelizmente não é possível usar templates em Sql query, o componente foi desenhado assim numa perspectiva de segurança.
Podes sim armazenar o valor na base de dados
Bom dia,
Obrigado pela partilha… no entanto teitei criar isto no meu HA e nao obtive resultados … será que poderias dar uma breve explicação do codigo colocado…
Não tens de crear nenhuma automação para que este codigo consigo funcionar?
Obrigado pela ajuda…
Boa tarde, como se abre a porta?
Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt