Viva Marcos,
Por partes:
-
MariaDB é uma base de dados com addon do HA - instala usando o supervisor
-
Instala também o add-on phpMyAdmin p/ poderes aceder e configurar as base de dados/tabelas
-
Tens que criar a bd e a tabela:
-
A periodicidade é definida na automação
Exemplo de automação:
## AUTOMAÇÕES PARAR GUARDAR DADOS DE FIT
automation:
# Contador dados do relógio
- id: FIT | Guardar dados 1x ao dia
alias: mariaDB | Guarda dados 1x ao dia - 23h59
trigger:
- hours: '23'
minutes: '59'
seconds: '00'
platform: time_pattern
action:
- data_template:
table: tbl_dados_fit
atleta: '{{ 100 }}'
calorias: '{{ ( states.sensor.google_fit_calories.state | float ) | round (2) }}'
distancia: '{{ ( states.sensor.google_fit_distance | float ) | round (2) }}'
pulsacao: '{{ ( states.sensor.google_fit_heart_rate | float ) | round (2) }}'
tempo_movimento: '{{ ( states.sensor.google_fit_move_time | int ) }}'
tempo_sono: '{{ ( states.sensor.google_fit_move_time | int ) }}'
passos: '{{ ( states.sensor.google_fit_steps | float ) | round (2) }}'
peso: '{{ ( states.sensor.google_fit_weight | float ) | round (2) }}'
service: shell_command.script_insert_tbl_dados_fit
É necessário definir um shell_command, que basicamente faz a chamada à base de dados e insere os dados:
shell_command:
### IMPLEMENTAÇAO REGISTO DE DADOS FIT EM MARIADB
script_insert_tbl_dados_fit: "python3 /config/python_scripts/script_insert_tbl_dados_fit.py --host=core-mariadb --userxxxxxx --password=xxxxxx --db=bd_dados_fit --table={{ table }} --atleta={{ atleta }} --calorias={{ calorias }} --distancia={{ distancia }} --pulsacao={{ pulsacao }} --passos={{ passos }} --peso={{ peso }} --tempo_movimento={{ tempo_movimento }} --tempo_sono={{ tempo_sono }}"
- É necessário criar um script (e colocar na pasta python_scripts com extensão .py)
#!/usr/local/bin/python
# coding: utf8
import datetime
import argparse
## on homeassistant container:
## pip install pymysql
import pymysql
import warnings
def main(args):
with warnings.catch_warnings():
warnings.simplefilter("ignore")
dt = datetime.datetime.today()
connection = pymysql.connect(
host=args.host,
user=args.user,
password=args.password,
db=args.db,
charset="utf8mb4",
cursorclass=pymysql.cursors.DictCursor
)
try:
with connection.cursor() as cursor:
sql = "INSERT INTO `tbl_dados_fit` (`date`, `atleta`, `calorias`, `distancia`, `pulsacao`, `tempo_movimento`, `tempo_sono`, `passos`, `peso`) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s);"##.format(table=args.table)
sql_data = (dt.strftime("%Y-%m-%d %H:%M"), args.atleta, args.calorias, args.distancia, args.pulsacao, args.tempo_movimento, args.tempo_sono, args.passos, args.peso)
cursor.execute(sql, sql_data)
connection.commit()
finally:
connection.close()
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Insert kWh value of current day to mariadb database. This creates table if not exists.")
parser.add_argument('--host', type=str, required=True, help='REQUIRED: DB Host')
parser.add_argument('--user', type=str, required=True, help='REQUIRED: DB User')
parser.add_argument('--password', type=str, required=True, help='REQUIRED: DB Password')
parser.add_argument('--db', type=str, required=True, help='REQUIRED: DB Name')
parser.add_argument('--table', type=str, required=True, help='REQUIRED: DB Table')
parser.add_argument('--atleta', type=float, required=False, help='REQUIRED: Value to insert')
parser.add_argument('--calorias', type=float, required=False, help='REQUIRED: Value to insert')
parser.add_argument('--distancia', type=float, required=False, help='REQUIRED: Value to insert')
parser.add_argument('--pulsacao', type=float, required=False, help='REQUIRED: Value to insert')
parser.add_argument('--tempo_movimento', type=int, required=False, help='REQUIRED: Value to insert')
parser.add_argument('--tempo_sono', type=float, required=False, help='REQUIRED: Value to insert')
parser.add_argument('--passos', type=float, required=False, help='REQUIRED: Value to insert')
parser.add_argument('--peso', type=float, required=False, help='REQUIRED: Value to insert')
args = parser.parse_args()
try:
main(args)
except IndexError:
raise ValueError("Argument required")
- ODBC - é um conetor que liga o Excel ao mariaDB para consulta/edição dos dados. Há um driver especifico para o MariaDB
De um forma mt resumida, é desta forma que tenho isto implementado.
Isto não pretende, nem de longe nem de perto, ser um tutorial. Servirá para, eventualmente, dar pistas de como fazer.