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

Viva,

não encontro maneira de o fazer.

No NOTEPAD++ parece que é a mesma coisa, mas grava sempre em YML e não consigo gravar em YAML.

Alguma dica?

Obg

Daniel Fonseca

Instala o VScode e edita directamente no HA.

Viva,

Já consegui gravar em yaml e parece-me tudo bem mas continuo a não ter nada na base de dados.

Estava a tentar ver o consumo diário da máquina de secar roupa.

É necessário criar a pasta packages na pasta config correcto? Basta isto e adicionar ao configurations.yaml o seguinte

homeassistant:
  packages: !include_dir_named packages/

É necessario mais alguma coisa para ter o packages a funcionar?

Tentei então com a luz do escritório, para ver quantas horas estava ligada por dia.

Segui o tutorial, mas está a dar um erro no configuration.yaml, na criação do sensor

  #Sensor Luz Escritorio
sensor:
  - platform: history_stats
    entity_id: light.midesklamp1s_87a6
    state: 'on'
    name: Horas Luz Escritorio
    start: '{{ now().replace(hour=0, minute=0, second=0) }}'
    end: '{{ now() }}'

Aparece o seguinte erro

duplicated mapping key at line 75, column -237:
sensor:
^

No base_dados.yaml, adicionei o seguinte código

  - alias: "Insere na tabela o número de horas que a luz do escritorio esta ligada"
    initial_state: true
    trigger:
      - platform: state
        entity_id: sensor.horas_luz_escritorio
    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: luzescritorio

Não sei o que pode causar este erro…

Obrigado,

Daniel Fonseca

Só podes escrever uma vez a entrada sensor:.

Então tenho que colocar este código na “zona” dos sensores, é isso?

Assim:

sensor:
  -  platform: uhomeuponor
     host: 192.168.0.30
     prefix: uhome_ # Optional, prefix name for climate entities
  
  -  platform: history_stats
     entity_id: light.midesklamp1s_87a6
     state: 'on'
     name: Horas Luz Escritorio
     start: '{{ now().replace(hour=0, minute=0, second=0) }}'
     end: '{{ now() }}'

Então o “tracinho” (-) utiliza-se quando temos mais do que uma “entidade” dentro do mesmo tipo, certo?

Daniel Fonseca

Sim, isso mesmo. O traço simboliza itens numa lista. Uma pesquisa rápida aqui no Fórum sobre YAML, dava-te este resultado:

Obrigado!

Daniel Fonseca

Parece estar tudo bem no codigo mas continua a não escrever na base de dados

Boas pessoal…

Não estou a conseguir por a base da dados a gravar, as alteraçoes da minha produção…
Vamos por fazes:
1º não consguia instalar a dependencia (pymysql), reiniciei o HA umas 20x
consegui instalar indo ao file editor e execute shell command “pip install pymysql”, ficou instalada
agora quando executo o comando aparece isto (Command executed: pip install pymysql: 0
Requirement already satisfied: pymysql in /usr/lib/python3.8/site-packages (0.10.1))

2ª Agora quando faço o comando “python3 /config/py_scripts/daily_insert_mysql.py --host=core-mariadb --user=xxx --password=xxx --db=custom_data --table=consumo_energia --value=2 --col=consumo_energia_diario” nota-se que no Heidisql já la aparecem o valor “2”

3ª agora os valores não registão automaticamente, da um erro nos log.
erro:
Logger: homeassistant.components.automation.registo_diario_producao_solar
Source: helpers/script.py:1122
Integration: Automação (documentation, issues)
First occurred: 22:34:38 (1 occurrences)
Last logged: 22:34:38

Registo Diario produção solar: Error executing script. Service not found for call_service at pos 1: Unable to find service shell_command/daily_insert_mysql

posso garantir o ficheiro daily_insert_mysql existe e esta na pasta py_scrits.

o outro erro que tambem me da e este

Logger: homeassistant.components.automation.registo_diario_producao_solar
Source: core.py:1401
Integration: Automação (documentation, issues)
First occurred: 22:34:38 (1 occurrences)
Last logged: 22:34:38

While executing automation automation.registo_diario_producao_solar

Traceback (most recent call last): File “/usr/src/homeassistant/homeassistant/components/automation/init.py”, line 433, in async_trigger await self.action_script.async_run( File “/usr/src/homeassistant/homeassistant/helpers/script.py”, line 1010, in async_run await asyncio.shield(run.async_run()) File “/usr/src/homeassistant/homeassistant/helpers/script.py”, line 245, in async_run await self._async_step(log_exceptions=False) File “/usr/src/homeassistant/homeassistant/helpers/script.py”, line 253, in _async_step await getattr( File “/usr/src/homeassistant/homeassistant/helpers/script.py”, line 460, in _async_call_service_step await service_task File “/usr/src/homeassistant/homeassistant/core.py”, line 1401, in async_call raise ServiceNotFound(domain, service) from None homeassistant.exceptions.ServiceNotFound: Unable to find service shell_command/daily_insert_mysql

se que isto é uma descrição muito grande mas cria dar o maximo de informação que sei…

a minha automação é esta:

alias: “Registo Diario produção solar”
initial_state: true
trigger:
- platform: state
entity_id: sensor.medidor_solar_energy_today
action:
- service: shell_command.daily_insert_mysql
data_template:
table: produção_energia
value: >
{{ trigger.to_state.state }}
column: >
{% if trigger.entity_id == “sensor.medidor_solar_energy_today” %}
produção_energia_diaria
{% endif %}

Os erros mostram que o shell command não existe, então a automação não chega a finalizar, podes confirmar se o shell_command do script existe?
Seguiste o tutorial a 100%?

Boa noite.

Já consegui resolver o problema.
Ao fim de tantas modificações a ver se o ficheiro pymysql era isntalado devia ter eliminado o “.yaml” do fichero da base da dados por isso não lia.
Já conseguir colocar agravar os valores de produção diaria numa tabela, ja consegui criar uma nova tabela para o consumo diario.

Mas agora surgui mais probelmas.
Em vez de criar um sensor para dizer quantos horas as luzes estão ligadas, cria fazer um sensor que me desse o pico de produção/consumo.

já criei um sensor “statistics” e outro “template”

  • platform: statistics
    entity_id: sensor.medidor_solar_energy_power
    name: solar_max
    sampling_size: 3000
  • platform: template
    sensors:
    solar_max:
    value_template: “{{ state_attr(‘sensor.solar_max’, ‘max_value’) }}”

Mas pelo que leio no HA na parte do senosr statistics o valor STATE é a média, o valor maximo e minimo aparece como ATTRIBUTE.

Pegando na automação de registar na base de dados só consigo que ele actualize perante o STATE (que é a média) e não como o atributo (que é o valor maximo).
já tentei modificar a automação mas sempre sem sucesso.

Esta é uma das minhas invenções. para quem sabe vai-se rir mas para mim que não percebo de qualquer tipo de linguagem de programação, limito-me a pesquisar e tentar copiar…

alias: Registar pico produção
trigger:

  • platform: state
    entity_id: sensor.solar_max_2
    attribute: max_value
    action:
  • service: shell_command.daily_insert_mysql
    data_template:
    table: produção_energia
    value: |
    {{ trigger.to_state.state }}
    column: |
    {% if trigger.entity_id == “sensor.solar_max_2” %}
    pico_produção_diario
    {% endif %}
    initial_state: true

ja consegui.

na automação alterei para {{ trigger.to_state.attributes.max_value }}

1 Curtiu

Boa tarde. Seguindo este tutorial, já tive a base de dados a funcionar impecável. Há algum tempo atraz tive necessidade de reinstalar o HA e agora, seguindo os mesmos passos, não estou a conseguir que os dados diários sejam gravados correctamente. No dia corrente, os dados são mostrados correctamente mas depois passa a mostrar valores que que não percebo.Captura de ecrã 2021-01-19, às 19.14.38

A escrita na base de dados é conforme o sensor que indicares, já verificaste se o sensor está a ler corretamente? O sensor está a fazer reset ao final do dia?

Boa noite Ricardo. Acompanhei estas 2 últimas horas o consumo diário e parece que já percebi o que se está a passar. Por volta das 23 horas registava um consumo de cerca de 28kwh. Fez o reset às 23 horas e gravou às 24 horas apenas o que se consumiu entre as 23 e as 24 horas. Podes por favor dar-me uma ideia de como posso passar o reset para as 24 horas. Obrigado.

@sslopes o problema que descreves parece ter haver com o tasmota.
Podes verificar se tens a hora certa no tasmota onde tens ligado o pzem.
para veres isso basta ires a consola do tasmota e veres lá que horas aparece.

Viva,

O utility_meter não tem definido um offset?

Bom dia @RodolfoVieira. O Tasmota estava adiantado uma hora. Já acertei. Obrigado

2 Curtiram

@sslopes que usas para acertar? na minha “cabula” tenho isto que costumo usar em todos os tasmotas

Backlog NtpServer1 pt.pool.ntp.org; NtpServer2 pool.ntp.org; TimeZone 99; TimeDST 0,0,3,1,1,60; TimeSTD 0,0,10,1,2,0
1 Curtiu

@PDM Uso o mesmo mas com o ip do dispositivo

backlog NtpServer1 192.168.1.45; TimeZone 99; TimeDST 0,0,3,1,1,60; TimeSTD 0,0,10,1,2,0


Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade