Por acaso já tinha feito esse comando no container e não deu erro nenhum:
podes postar o código ?
Este é o meu yaml de package.
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.
Sim, deveria dar. O que acho estranho é o erro estar relacionado com a dependência, será que não tens mais erros?
@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
Podes migrar para MariaDB sem problemas. A DB utilizada pelo HA tem outro nome e não cria conflitos.
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 ?
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
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’
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).
Seria assim algo do genero?:
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
também me esta a dar o mesmo erro ?
conseguiste solucionar ?
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…
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).
Correto, é uma tabela à parte com o único fundamento de gravar dados para longo prazo sem que o HA os elimine.
Mas supostamente o HA só elimina os dados da MariaDB se tu deres ordem/programares para os apagar.
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.
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
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);
});
}
});
}'}
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
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:
Horas de utilização e numero de utilizações por semana (ainda em desenvolvimento):
@RodolfoVieira no function node, é possivel fazer o €/kWh + (sensor dias corridos x €/dia) ? Identico ao template abaixo:
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
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.