Crescimento/Decrescimo do nosso ficheiro de BD


(jpm) #1

Como basicamente passo o dia a fazer relatórios, tudo para mim é importante e gosto de perceber como é que está a evoluir a dimensão do meu ficheiro de DB para perceber (mesmo sem alterar o nivel de log) se algo está mal e começou a escrever para a BD se eu me aperceber, como tal, e em linha com o que tenho publico, pesquisei, encontrei e adaptei as minhas necessidades.

#Conteúdo no ficheiro dos sensores:

#Sensor com o tamanho da bd actual

- platform: command_line
  name: db_size
  command: "du -m /config/home-assistant_v2.db | cut -f1"
  unit_of_measurement: 'MB'
  value_template: '{{ value | int - 1 }}'
  scan_interval : 21600

#Sensor com o tamanho da bd no dia anterior

- platform: mqtt
  state_topic: 'ha/log_db_file_size_prior'
  name: 'db_size_prior'
  unit_of_measurement: 'MB'
  value_template: '{{ value_json.day_1 }}' 

#Sensor que mostra o crescimento/decrescimo da mesma

- platform: template
  sensors:
    db_grow:
      value_template: '{%- if not (is_state("sensor.db_size","unknown") or is_state("sensor.db_size_prior","unknown") )-%}  {{ ((states.sensor.db_size.state | float)) - (states.sensor.db_size_prior.state | float) | max (0) | round(1) }} {%- endif -%}'
      friendly_name: 'DB Grow Today'
      unit_of_measurement: 'MB'

Por fim precisamos de algo que diariamente, ou conforme queiram, guardem o valor no momento do tamanho da BD, para isso usamos o nosso mqtt server

#Automação para guardar a dimensão da BD no “dia anterior”

automation:
- id: update size of db with previews day
  alias: update size of db with previews day
  initial_state: 'on'
  condition: []
  trigger:
  - at: '23:59:00'
    platform: time
  action:
    service: mqtt.publish
    data_template:
      payload: '{"day_1":"{{states.sensor.db_size.state}}"}'
      retain: true
      topic: ha/log_db_file_size_prior

O sensor que mostra o crescimento têm ainda em consideração valores que saem fora do scope e evita mostrar erros caso as automações não corram ou caso não exista valor previo (EX: quando adicionarem estes sensores não tem histórico)


(Diogo Gomes) #2

Para quem usa outras bases de dados que não o sqlite:


(Rodolfo) #3

muito bom essa info @jpm, nunca me tinha informado sobre isso.