Historique des positions sur Google maps

Bonjour à tous,
Je partage mon script qui permet de récupérer les infos de log d’une position du plugin « geotrav », pour les afficher sur maps.
Le but étant d’afficher sous forme de points sur une maps de google, toutes les positions reçues par geotrav (d’une personne/voiture/animal), entre deux dates/heure :

Pré-requis :

  • Avoir le plugin geotrav ("Localisation et trajets)
  • Avoir le niveau de log sur « Debug » pour geotrav
  • Avoir un équipement de type « Localisation » configuré sur le plugin geotrav (celui qu’on va « suivre »).
  • Avoir le plugin « Script » d’installé
  • Etre en mesure d’écrire un fichier sur le disque où est jeedom (idéalement avec le plugin JeeXplorer)

Marche à suivre

  • Déposer un fichier nommé « coord.pl » à l’emplacement « /var/html/script » :
    image

  • Modifier son contenu par le code suivant :

use strict;
use warnings;
use Time::Piece;

my $file = '/var/www/html/log/geotrav';
open my $fh, '<', $file or die "Could not open '$file' $!\n";

my ($id_cmd, $dateToExtractdebut, $dateToExtractfin) = @ARGV;

$dateToExtractdebut = Time::Piece->strptime($dateToExtractdebut, "%Y-%m-%d %H:%M:%S");
$dateToExtractfin = Time::Piece->strptime($dateToExtractfin, "%Y-%m-%d %H:%M:%S");

my $coords = "";
while (my $line = <$fh>) {  
   if ($line =~ qr/^\[.*\].+Trigger cmd $id_cmd\s.+$/) {
  $line =~ /\[(.+\s.+)\]\[DEBUG\].+(\d\d\.\d+),(-?\d{1,2}\.\d+).+/;
  my $date = $1;
  my $lat = $2;
  my $lon = $3;
 
 my $t = Time::Piece->strptime($date, "%Y-%m-%d %H:%M:%S");
 if(($t > $dateToExtractdebut) and ($t < $dateToExtractfin)) {
 $coords = "${coords}/'${lat},${lon}'";
 }
 
   }
}

print "https://www.google.fr/maps/dir/${coords}"
  • Créer un équipement dans le plugin Script. Il doit être de type « Script ». Le contenu du champs « Requête » doit être de la forme « /var/www/html/script/coord.pl CMD_ID DATE_DEBUT DATE_FIN », avec :
  • CMD_ID : L’id de la commande « Coordonnées » de l’équipement geotrav que vous voulez suivre
  • DATE_DEBUT : La date de début de suivi, de la forme « YYYY-MM-DD HH:MM:SS »
  • DATE_FIN : La date de fin de suivi, de la forme « YYYY-MM-DD HH:MM:SS »

Exemple : /var/www/html/script/coord.pl 1212 "2021-12-16 07:00:00" "2021-12-16 09:00:00"

Lorsqu’on clique sur « Tester », le script imprime une url google. Copier/coller cette url dans votre browser pour avoir le résultat.

Application :
Fliquer son gamin (femme ? :open_mouth:) pour voir qu’il est bien allé chez son copain dans l’intervalle où il était censé y être. Je ne suis pas responsable de l’utilisation « éthique » qui peut être fait de ce script. Il permet juste de rendre une info lisible sur des données déjà disponibles dans votre jeedom :slight_smile: . Faites en bon usage !

ATTENTION :

  • Ne pas prendre un range de date trop grand, car la quantité de données à afficher peut être énorme en fonction du taux de rafraichissement de votre équipement geotrav. Si par exemple la position est rafraichi toutes les 5min, un range de plusieurs jours sur le script va sortir beaucoup trop de points.
  • En fonction du taux de rafraichissement de vos équipementz geotrav, la consommation en espace disque du log geotrav en mode debug peut être assez conséquente. Monitorer sa taille régulièrement pour éviter qu’il grossisse trop.
1 « J'aime »

Bonjour,

Merci pour le tuto.
J’utilise le plugin traceur_gps et la localisation vient de l’application jeemate, on peut utiliser ton script avec ça ?

Je vais peut-être dire une bêtise mais ça voudrait pas le coup de rajouter tout cela directement dans le plugin traceur_gps ?

Merci

Parle-tu du plugin Traccar ?

Non je n’ai pas ce plugin
Traceur_gps est en version alpha appelée Master sous jeedom il me semble…

Mon script parse le log debug du plugin geotrav, il n’est pas conçu pour marcher avec un autre plugin. A moins de l’adapter.