Temps de Trajet avec l'Api Google Maps

TripTime est un script très simple sans prétention écrit en Python qui permet de récupérer des temps de trajet en voiture depuis l'API de Google Maps et d'intégrer ces données dans Home Assistant via son API REST. Ces données me seront très utiles à des moments chronophages de ma journée. On utilisera en sus des automations dans Home Assistant pour notifier l'information et la rendre utile.
Fonctionnalités
- Récupération des temps de trajet en voiture pour des itinéraires prédéfinis.
- Intégration automatique des données dans Home Assistant.
- Notification sur smartphone via des automations dans Home Assistant.
Prérequis
Avant d'utiliser TripTime, assurez-vous de disposer des éléments suivants :
- Une clé API valide pour Google Maps. (Attention à la facturation !)
- Une instance de Home Assistant ouverte sur Internet + un token d'authentification pour son Api.
- Un environnement capable d'exécuter Python 3 (Un Vps, Un Nas, Un Serveur, ...) ayant acces à internet.
Installation
Clonez le dépôt GitHub sur votre machine :
git clone https://github.com/NicoDupont/TripTime.git
Accédez au répertoire du script :
cd TripTime
Packages python à installer dans votre environnement python3 :
from dataclasses import dataclass
import json
import asyncio
from typing import List
import googlemaps
import aiohttp
config.json
Renommez le fichier config.sample.json en config.json et renseignez les informations suivantes :
{
"google_maps_api_key": "sdqgfdmlqbjhjqbjldfKDSQGQSJQS65uw",
"home_assistant_url": "https://HA_URL/",
"home_assistant_token": "sqidfhkjknmc.jeqhiOIBNJlfdqsf54qs"
}
travels.json
Renommez le fichier travels.sample.json en travels.json et ajoutez y vos trajets personnalisés.
[
{
"name": "Maison -> Travail",
"origin": "Av. Gustave Eiffel, 75007 Paris, France",
"destination": "1 Av. des Champs-Élysées, 75008 Paris, France",
"entity_id": "triptime_home_work"
},
{
"name": "Travail -> Maison",
"origin": "1 Av. des Champs-Élysées, 75008 Paris, France",
"destination": "Av. Gustave Eiffel, 75007 Paris, France",
"entity_id": "triptime_work_home"
}
]
Une fois la configuration terminée, exécutez le script principal pour récupérer les temps de trajet et les envoyer à Home Assistant :
python3 main.py
Automatisation
Ajouter une tache ou plusieurs taches cron :
chmod +x launcher_triptime.sh
crontab -e
0 7 * * 1-5 sh /home/nicolas/launcher_triptime.sh
Home Assistant
Pas grand chose à faire de ce coté, la création des entités se fait automatiquement. Il faudra prévoir quelques automations pour être alerté comme des notification directes sur smartphone. On peut imager d'autres scénarios d'alerting, comme allumer une ampoule d'une couleur spécifique ou la faire clignoter avec une fréquence plus ou moins rapide pour notifier un temps de trajet plus ou moins long... Ici seul notre imagination est la limite mais il faut savoir rester simple !

Exemple d'automation :
alias: Notifier TripTime Work -> Home
description: ""
triggers:
- trigger: time
at: "17:50:00"
conditions:
- condition: time
weekday:
- mon
- tue
- wed
- thu
- fri
- condition: state
entity_id: input_select.planning_nicolas
state: Travail
actions:
- action: notify.mobile_app_iphone_de_nicolas
metadata: {}
data:
title: 🚗 Travail -> Maison @ {{now().strftime('%H:%M')}}
message: >-
{% set t = states('sensor.triptime_work_home') | int %} {% if t < 25
%}🚀{% elif t <= 35 %}😐{% else %}😡{% endif %} Temps de trajet estimé
-> {{ t }} minutes
mode: single
Résumé
TripTime me simplifie la vie matin et soir. Plus besoin d'ouvrir google maps ou waze pour m'afficher le temps de trajet estimé selon la circulation. Plus de surprise sur mes trajets si j'ai oublié de regarder la circulation. Le script est simple, basique, exécutable un peu partout et l'intégration dans home assistant est ultra simple.