Datos de tu coche en HomeAsssistant con ayuda de la app Fuelio
Contenidos
- 1 Introduccion
- 2 La app Fuelio
- 3 Dropbox
- 4 Los datos
- 5 Homeassistant
- 5.1 Homeassistant y Dropbox en el sistema
- 5.2 Homeassistant y Dropbox en docker
- 5.2.0.1 Sensores
- 5.2.0.1.1 Sensor odometro
- 5.2.0.1.2 Media consumo
- 5.2.0.1.3 Fecha ultimo repostaje
- 5.2.0.1.4 Litros último repostaje
- 5.2.0.1.5 Costo último repostaje
- 5.2.0.1.6 Costo litro último repostaje
- 5.2.0.1.7 Costo repostaje año actual
- 5.2.0.1.8 Costo respostaje año anterior
- 5.2.0.1.9 Costo medio mensual y csoto medio diario
- 5.2.0.2 Grupo
- 5.2.0.3 Customize
- 5.2.0.1 Sensores
Introduccion
Con este tutorial vamos a llevar los datos de consumo y gastos de nuestro coche al frontend de Homeassistant. Lo primero que tengo que aclarar es la mecánica de como se va a realizar, ya que hay que cumplir unos requisitos previos, todos los damos tenemos que recogerlos en una app en el movil, la app se llama Fuelio y está disponible sólo para la plataforma Android, podeis descargarla y probarla desde la tienda de Google Play, es gratuita; desconozco si en el futuro saldrá para ios.
La app Fuelio
La aplicación es muy fácil de usar, tienes que meter primero tu coche y los kilometros actuales, además del resto de datos de el que quieras tener organizados y guadados. Cuando repostes combustible lo haces con el botón + y vas rellenando todos los datos, de esta manera la app va guardando el registro y va sacando estadísticas de todo. También puedes meter otro tipo de gastos relacionados con el coche, como averías, peajes, impuestos y todo lo que quieras, aunque eso no será tratado en este tutorial ya que sería demasiado amplio, y lo dejamos para que cada uno si quiere que lo adapte/amplie a su gusto.
La app Fuelio guarda toda esa base de datos en un archivo csv, formateado y que se puede leer con herramientas para mostrar esos datos en Homeassistant. Fuelio por defecto guarda su base de datos en el sitio habitual dentro del movil Android donde se guardan los datos de aplicaciones, y aunque supongo que habría forma de sacarlo de ahí para leerlo desde fuera se complica demasiado.
Fuelio > Dropbox > Homeassistant
Fuelio tiene una opción muy interesante que se llama Respaldo en Dropbox, lo que hace es una copia de seguridad configurable de la base de datos del programa, con lo que nos deja abierta la opción de acceder a ese archivo de Dropbox, que además se actualiza al instante según haces algun cambio en Fuelio.
También hay opción de usar OneDrive en vez de Dropbox, nunca he usado esa opción pero supongo que será igual la mecánica.
Dropbox
Para poder acceder a la base de datos y leer los datos de registro del vehículo desde Homeassistant tenemos que buscar una manera de poder tener siempre actualizado una copia de los datos de la app Fuelio que guarda en Dropbox.
Doy por sentado que quién quiera realizar este tutorial estará usando Linux, así que las opciones desde Windows aunque se podria hacer no las vamos a tratar aquí.
Linux
Desde la página de Dropbox podeis descargar la ultima versión disponible, o si quereis podeis hacerlo desde la linea de comandos, en ésta página están las instrucciones y todos los pasos que hay que seguir.
Lo ideal en estas circunstancias si sólo lo vas a poner para éste uso es que utilices la opcion de «sincronizacion selectiva» para que sólo deje copia en tu servidor de lo que quieres, aquí teneis mas información sobre este tema.
Docker
Otra opción si usas docker es dejarlo en un contenedor con todas las ventajas que ello conlleva. Yo estoy usando la imagen janeczku/dropbox pero hay mas que supongo que funcionarán de manera muy parecida.
Para instalarlo solo hay que poner este comando por ssh, cambiando la ruta del volumen donde quereis dejar los datos de Dropbox por vuestra ruta, en mi caso lo dejo en /media/dropbox.
docker run -d \
--name=dropbox \
--restart=always \
--net="host" \
-v /media/dropbox:/dbox/Dropbox \
janeczku/dropbox
docker exec -t -i dropbox dropbox help

Los datos

Homeassistant
Homeassistant y Dropbox en el sistema
Para hacerlo de esta manera necesitas poder ejecutar comandos SSH en el sistema desde Homeassistant, con lo que puedes usar el tutorial que hay en la web para ello.
Para seguir el tutorial con esta combinación hay que hacer unos pasos extra en la configuración de Homeassistant y cambiar algo los comandos.
- Primero apuntar la ruta donde se ha guardado en el sistema Dropbox y donde ha dejado los archivos de Fuelio Dropbox, deberia ser una ruta parecida a esta
/home/pi/Dropbox/Aplicaciones/Fuelio/sync
, eso es con el user pi, si teneis otro user cambiará la ruta. - En el archivo configuration.yaml de Homeassistant hay que meter la ruta anterior en el apartado de whitelist, debajo de homeassistant:
- Despues de hacer esto reiniciar Homeassistant y ya será posible que Homeassistant lea ficheros desde esa ruta.
- Los comandos son diferentes al hacerlo de esta manera, yo voy a seguir el tutorial de la otra manera, teniendo todo en docker, pero si lo haceis de esta manera tienes que cambiar los comandos así:
ssh user@ip comando1 /ruta/vehicle-1-sync.csv
por esto:comando1 /ruta/vehicle-1-sync.csv
Homeassistant y Dropbox en docker
Si tienes esta combinación puedes usar el tutorial de la confianza SSH entre Homeassistant y el host docker, para poder acceder a los datos que genera la aplicación Fuelio (y Dropbox sincroniza con tu equipo).
Yo voy a seguir el resto del tutorial de esta manera, teniendo todo en docker, tanto Homeassistant como Dropbox, si no es tu caso debes cambiar los comandos como he explicado en el apartado anterior, todo lo demas sería igual.
Sensores
Como dije al principio esto es una guia base que puedes usar para hacer primero lo que ella propone, y despues si quieres puedes ampliarla para incluir mas cosas o recoger mas datos del archivo de Fuelio, he decidido para que no fuera muy extenso incluir una serie de datos básicos y los meteré en estos sensores:
- Odometro, es un dato que da directamente Fuelio.
- Media consumo, también es un dato que da directamente Fuelio, ya que lo calcula el y lo guarda en el .csv.
- Fecha último repostaje, igualmente es un dato que se guarda en el .csv.
- Litros último repostaje, también se guarda directamente en el .csv.
- Costo último repostaje, igual que el anterior.
- Costo litro último repostaje, idem anterior.
- Costo repostaje año actual, este es un dato calculado, se hace la suma de todos los repostajes del año actual.
- Costo respostaje año anterior, igual que el anterior es un dato calculado.
- Costo medio mensual, dato calculado en función del gasto anual dividido entre doce meses, se usará un sensor de plantilla.
- Costo medio diario, dato calculado en función del gasto anual dividido entre treciento sesenta y cinco días, igualmente con un sensor de plantilla.
Los siguientes sensores que voy a poner tendreís que modificarlos con vuestro user y vuestra ip, en función de vuestra configuración, de todos modos podeis aseguraros antes de hacer esto de lanzar los comandos por ssh para ver si os devuelven bien el resultado.
En todos los sensores voy a incluir la variable scan_interval con su dato metido en secret, asi cambio todos a la vez, por defecto lo he puesto en 300, que serian 300 segundos, con lo que tenéis que declarar si quereis hacerlo así esta variable en secrets.yaml:
scan_interval_fuelio: 300
Sensor odometro
- platform: command_line
name: odometro
command: >-
ssh user@ip
cat /media/dropbox/Aplicaciones/Fuelio/sync/vehicle-1-sync.csv | grep '"*"' | cut -d "," -f 2 | awk 'NR==6' | sed 's/"//g'
unit_of_measurement: "Km"
scan_interval: !secret scan_interval_fuelio
Media consumo
- platform: command_line
name: med_consumption
command: >-
ssh user@ip
cat /media/dropbox/Aplicaciones/Fuelio/sync/vehicle-1-sync.csv | grep '"*"' | cut -d "," -f 6 | awk 'NR==7' | sed 's/"//g'
unit_of_measurement: "lt/100 Km"
scan_interval: !secretscan_interval_fuelio
Fecha ultimo repostaje
- platform: command_line
name: last_refueling
command: >-
ssh user@ip
cat /media/dropbox/Aplicaciones/Fuelio/sync/vehicle-1-sync.csv | grep '"*"' | cut -d "," -f 1 | awk 'NR==6' | sed 's/"//g'
scan_interval: !secretscan_interval_fuelio
Litros último repostaje
- platform: command_line
name: last_refueling_liters
command: >-
ssh user@ip cat /media/dropbox/Aplicaciones/Fuelio/sync/vehicle-1-sync.csv | grep '"*"' | cut -d "," -f 3 | awk 'NR==6' | sed 's/"//g'
unit_of_measurement: "lt"
scan_interval: !secretscan_interval_fuelio
Costo último repostaje
- platform: command_line
name: last_refueling_cost
command: >-
ssh user@ip cat /media/dropbox/Aplicaciones/Fuelio/sync/vehicle-1-sync.csv | grep '"*"' | cut -d "," -f 5 | awk 'NR==6' | sed 's/"//g'
unit_of_measurement: "€"
scan_interval: !secretscan_interval_fuelio
Costo litro último repostaje
- platform: command_line
name: last_refueling_liter_cost
command: >-
ssh user@ip cat /media/dropbox/Aplicaciones/Fuelio/sync/vehicle-1-sync.csv | grep '"*"' | cut -d "," -f 15 | awk 'NR==6' | sed 's/"//g'
unit_of_measurement: "€"
scan_interval: !secretscan_interval_fuelio
Costo repostaje año actual
- platform: command_line
name: anual_cost
command: >-
ssh user@ip grep "$(date '+%Y')" /media/dropbox/Aplicaciones/Fuelio/sync/vehicle-1-sync.csv | cut -d "," -f 5 | sed 's/"//g' | awk '{sum+=$1} END {print sum}'
unit_of_measurement: "€"
scan_interval: !secretscan_interval_fuelio
Costo respostaje año anterior
- platform: command_line
name: anual_past_cost
command: >-
ssh user@ip grep "$(date +%Y -d "-1 years")" /media/dropbox/Aplicaciones/Fuelio/sync/vehicle-1-sync.csv | cut -d "," -f 5 | sed 's/"//g' | awk '{sum+=$1} END {print sum}'
unit_of_measurement: "€"
scan_interval: !secretscan_interval_fuelio
Costo medio mensual y csoto medio diario
- platform: template
sensors:
med_cost_month:
unit_of_measurement: "€"
friendly_name: Costo medio mensual
value_template: "{{ ((states('sensor.anual_cost') | int) / 12 ) | round(2)}}"
med_cost_day:
unit_of_measurement: "€"
friendly_name: Costo medio diario
value_template: "{{ ((states('sensor.anual_cost') | int) / 365 ) | round(2)}}"
Grupo
group:
mi_coche:
name: 'Renault Laguna II'
control: hidden
entities:
- sensor.odometro
- sensor.med_consumption
- sensor.last_refueling
- sensor.last_refueling_liters
- sensor.last_refueling_cost
- sensor.last_refueling_liter_cost
- sensor.anual_cost
- sensor.anual_past_cost
- sensor.med_cost_month
- sensor.med_cost_day
Customize
customize:
sensor.odometro:
friendly_name: Total kilometros
icon: mdi:car-side
sensor.last_refueling:
friendly_name: Fecha ultimo repostaje
icon: mdi:calendar
sensor.med_consumption:
friendly_name: Media consumo
icon: mdi:gas-station
sensor.last_refueling_liters:
friendly_name: Litros ultimo repostaje
icon: mdi:gas-station
sensor.last_refueling_cost:
friendly_name: Costo ultimo repostaje
icon: mdi:currency-eur
sensor.last_refueling_liter_cost:
friendly_name: Costo litro ultimo repostaje
icon: mdi:currency-eur
sensor.anual_cost:
friendly_name: Costo repostaje año actual
icon: mdi:currency-eur
sensor.anual_past_cost:
friendly_name: Costo repostaje año anterior
icon: mdi:currency-eur
sensor.med_cost_month:
icon: mdi:currency-eur
sensor.med_cost_day:
icon: mdi:currency-eur
Gracias por este y todos los posts. Enorme el trabajo!
Simplemente contribuir que lo puse para shell_command y google drive (y sin tener que instalar nada, simplemente compartiendo el fichero .csv en google drive).
Solo hay que crear la carpeta fuelio y cambiar la ruta en los sensors, el codigo del shell comando
cd /home/homeassistant/.homeassistant/fuelio && wget –no-check-certificate ‘https://docs.google.com/uc?export=download&id=’ -O /home/homeassistant/.homeassistant/fuelio/vehicle-1-sync.csv
por lo que queda :
shell_command:
actualizar_fuelio: «ssh root@127.0.0.1 bash cd /home/homeassistant/.homeassistant/fuelio && wget –no-check-certificate ‘https://docs.google.com/uc?export=download&id=’ -O /home/homeassistant/.homeassistant/fuelio/vehicle-1-sync.csv»
Muchas gracias
detras de &id=, va el id de vuestro fichero parece que por los símbolos no lo ha pegado.
Un saludo
Gracias a ti!!!!
Buen aporte compañero.
Un saludo.