Etre prévenu du trafic à l’aide du plugin Waze pour Jeedom

 

Je me suis créé depuis quelques mois un scénario pour me prévenir des embouteillages pour mon trajet maison-travail. Je me décide enfin à le décrire ici, même si j’ai encore pas mal d’améliorations que je souhaite ajouter ! D’autres versions suivront certainement, principalement pour la facilité de paramétrage et d’interactions..

Avant de rentrer dans le détail du scénario, voilà le résultat obtenu sur un trajet avec le paramétrage suivant :

  • Vérification et notification (si nécessaire tous les 5 minutes)
  • Trajet considéré avec embouteillage au delà de 20 minutes
  • Notifications actives entre 8h et 9h30

Notifications des embouteillages

  1. On me prévient d’un risque d’embouteillage
    • Durée du trajet entre 18 et 21 minutes selon mon itinéraire choisi
    • Heure d’arrivée prévue par le trajet le plus rapide à 9h15
  2. Nouvelle notification 5 minutes plus tard (durée paramétrable dans le scénario), embouteillage toujours en cours
    • Modification du temps le plus rapide (17 minutes au lieu de 18)
    • Nouveau calcul de l’heure d’arrivée
  3. Nouvelle notification pour prévenir de la fin d’embouteillage
    • Plus d’itinéraires calculés au dessus de 20 minutes (temps paramétrable dans le scénario)
    • Nouveau calcul de l’heure d’arrivée
  4. Nouvelle notification pour prévenir d’un nouvel embouteillage possible (au moins un itinéraire possible dépasse 20 minutes)
    • Durée du trajet entre 17 et 21 minutes selon mon itinéraire choisi
    • Heure d’arrivée prévue par le trajet le plus rapide à 9h35

On remarque qu’il n’y a pas eu de notification entre 3. et 4. car pas de nouvel embouteillage prévu 5 minutes après la notification 3.

L’idée est de prévenir (par notifications, mail, SMS, Telegram ou autre), avant de partir, sur une période définie lorsqu’il y a des risques d’embouteillage pour agir en conséquence (partir plus tôt ou prévenir du retard par exemple)

On va donc devoir préciser plusieurs paramètres :

  • le trajet bien sûr (récupéré depuis le plugin Waze)
  • la plage horaire où on souhaite être prévenu (de 8h à 9h30 par exemple)
  • la durée de trajet minimum à partir de laquelle on souhaite être prévenu
  • la fréquence des rappels (intervalles entre chaque notification)

Le scénario utilise plusieurs plugins Jeedom :

  • le plugin Waze in Time
  • le plugin de localisation Ios Cloud (plugin pour iPhone)
    • utile seulement si on souhaite arrêter la réception des notifications une fois arrivé à destination
    • il peut être remplacé par un autre plugin de localisation
  • un plugin de notification (Telegram, Mail, Application mobile Jeedom pour l’envoi de notifications)

Le scénario aura alors le comportement suivant :

  • A partir du début de la plage horaire définie et jusqu’à la fin de la plage horaire définie, du lundi au vendredi, il enverra une notification si la durée du trajet dépasse celle paramétrée
  • Cette notification sera à nouveau envoyée toutes les x minutes (fréquence en paramètre)
  • Si le trafic est revenu à la normale, une nouvelle notification le précisera
  • Pas de notification envoyée si aucun embouteillage prévue (on évite de recevoir des notifications inutiles pour dire que tout va bien !)
  • Lorsqu’on arrive à destination, les notifications sont désactivées (on évite à nouveau des notifications inutiles, une fois arrivé à destination)
  • Des scénarios et/ou interactions peuvent être ajoutés pour demander l’arrêt d’envoi de notifications pour la journée
  • On va considérer qu’il y a un embouteillage dès qu’un des 3 trajets proposés par le plugin Waze dépassera la durée de trajet minimum paramétrée
  • La notification affichera un intervalle de temps (trajets le plus rapide et le moins rapide), l’heure d’arrivée prévue et le trajet pour cette heure d’arrivée

Il faudra dupliquer le scénario pour gérer de la même façon le retour (On peut imaginer gérer l’utilisation d’un seul scénario pour l’aller et le retour, par gestion de paramètres, mais c’est pour plus tard..).

Les améliorations possibles sont les suivantes :

  • ajouter la possibilité de paramétrer les jours où on souhaite être notifié
  • ajouter la possibilité de stopper/reprendre les notifications (actuellement, mon scénario permet de le faire pour la journée courante. Un simple ajout de variable permettrait cette fonctionnalité)
  • créer un widget ou plugin pour gérer visuellement tous les paramètres

Maintenant, passons à la description du scénario :

  • le scénario sera exécuté tous les matins à 8h

Lancement à 8h chaque jour

  • La description du scénario fera référence aux chiffres de chaque action :

Scénario Partie 1

Scénario Partie 2

  1. Lancement du scénario du lundi au samedi, la destination est à plus de 500m, pas de demandes d’arrêt des notifications
    • J’utilise le plugin iosCloud pour déterminer ma position (envoyée par mon iPhone à Jeedom)
    • La variable stopTrajetAller détermine si on continue l’envoi de notifications ou pas (à modifier depuis une interaction ou un autre scénario)
  2. variable heureMaxNotifications : définit la fin des notifications
  3. frequenceNotificationsEnMinutes : définit la fréquence d’envoi des notifications (ici 5 minutes pour tester)
  4. dureeMinEmbouteillageEnMinutes : définit la durée à partir de laquelle on considère qu’un embouteillage est présent sur le trajet
  5. On commence par rafraîchir les données du plugin Waze pour avoir les dernières informations en temps réel
  6. On calcule :
    • la durée minimum possible du trajet (durée minimum entre les 3 trajets proposés par le plugin Waze)
    • la durée maximum possible du trajet (durée maximum entre les 3 trajets proposés par le plugin Waze)
    • L’heure d’arrivée prévue à partir de la durée minimum
  7. Si un des trajets possibles est supérieur à la durée paramétrée, on va envoyer une notification
  8. on récupère alors la description du trajet le plus rapide à suivre
  9. On envoie une notification qui affiche la durée minimum et maximum prévue, l’heure d’arrivée prévue avec le trajet en prenant le trajet le plus rapide
  10. Si le calcul (7) montre qu’il n’y a plus d’embouteillage, on envoie alors une notification (11) pour prévenir que l’embouteillage est fini, avec les informations de durée et de trajet.
  11. Envoi de la notification ci-dessus
  12. On mémorise qu’il n’y a plus d’embouteillage
  13. Si on est toujours dans la tranche horaire paramétrée, on relance le scénario pour de nouvelles notifications si nécessaire
  14. Le scénario sera relancé dans x minutes (paramétré en début de scénario)
  15. on réinitialise la variable de gestion d’embouteillage

Il faut ajouter des scénarios permettant de mettre à jour la variable stopTrajetAller : arrêt (0) / reprise (1) des notifications pour la journée. Ces scénarios pourront être appelé chaque matin par Jeedom de façon automatique (remise à 0) et par des interactions (arrêt / reprise par l’utilisateur depuis Google Home ou Telegram par exemple)

Voilà pour le scénario « arretTrajetAller » vraiment basique :modification de la valeur d’une variable stopTrajetAller à l’aide du paramètre arret passé au scénario :

Ce scénario peut alors être appelé depuis une interaction (voir ci-dessous), ce qui permettra d’utiliser Google Home (en passant par une requête IFTTT, ce qui pourra faire l’objet d’un petit tuto) ou Telegram pour arrêter ou relancer les notifications !

OK, Google, arrete trajet aller

OK Google, lance trajet aller

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*