Calcul de distance

Tags: #<Tag:0x00007fa7ab1226b8>

Bonjour,

Je lutte un peu pour trouver ma solution.
J’ai créer 3 equipement sous Geoloc
-mon smartphone, dynamique
-mon domicile, fixe, je recupere les coordonnés sur l’adresse de googlemap
-la distance, distance, calculer entre mon domicile et mon smartphone

sur le dashboard, pour mon smarthone j’ai mon emplacement qui apparait sur goolemap
Pour mon domicile, rien n’apparait
et la distance, et bien j’ai une distance a 0

une idée d’ou ca loupe? Je pense que ca viens de mon domicile mais je vois pas l’erreur que je fait.
,

bon je lutte toujours
dans le log du plugin j’ai cette ligne

[2019-11-08 20:47:54][INFO] : Info sur le démon : {"launchable_message":"","launchable":"nok","state":"nok","log":"nok","auto":0}
[2019-11-08 20:47:54][DEBUG] : Lancement de : /var/www/html/core/class/../../core/php/jeePlugin.php  plugin_id=geoloc function=install callInstallFunction=1

je me dit que il y a un problème mais j’ai rien qui me parle du demon ou autre
image

Je viens d’essayer le plugin Geoloc et je rencontre exactement le même problème, mon domicile est bien localisé, mon téléphone aussi mais le calcul de distance échoue.

Chez moi, impossible de faire fonctionner Geoloc à l’époque (ça fait un moment), je suis passé sur geotrav et tout fonctionne pardaitement depuis donc je n’ai jamais réessayé Geoloc, à essayer également peut-être.

finallement j’ai repomper un scenario avec du code qui fait le calcul a partir des emplacements de mon téléphone et de ma maison et qui le donne dans un virtuel

# Calcul de la distance entre 2 coordonnées GPS

# Recupère la chaine de caractère "lat,long" de Icloud
$cmd = cmd::byString("#[Gérald][Place Téléphone Gérald][Smartphone]#");
$LocalisationGpsPhone = $cmd->execCmd();

# Recupère la chaine de caractère "lat,long" de la maison
$cmd = cmd::byString("#[Gérald][Place Téléphone Gérald][Maison]#");
$LocalisationGpsHome = $cmd->execCmd();

# Isole les Latitudes et longitude dans les chaines de caractères et récupère les valeures numériques
$PosCommaPhone = stripos ($LocalisationGpsPhone, ',');
$LatPhone = substr ($LocalisationGpsPhone,0,9);
$LongPhone = substr ($LocalisationGpsPhone,$PosCommaPhone+1,8);
$PosCommaHome = stripos ($LocalisationGpsHome, ',');
$LatHome = substr ($LocalisationGpsHome,0,9);
$LongHome = substr ($LocalisationGpsHome,$PosCommaHome+1,8);

$ValLongPhone = (float)$LongPhone;
$ValLatPhone = (float)$LatPhone;
$ValLongHome = (float)$LongHome;
$ValLatHome = (float)$LatHome;
$ValEarthRadius=6371000;

# calcule la distance entre les 2 coordonnées GPS
$DistY = $ValEarthRadius * pi() * ( $ValLatPhone - $ValLatHome ) / 180;
$DistX = $ValEarthRadius * cos($ValEarthRadius*pi()*($ValLatPhone+$ValLatHome)/(2*180)) * pi()*($ValLongPhone-$ValLongHome)/180;
$Dist = round (0.1 * sqrt ($DistX*$DistX + $DistY*$DistY)) * 0.01;

# Place dans la variable Jeedom la distance à la bonne place
$cmdC = "#[Gérald][Gérald][Distance]#";
$cmd = cmd::byString($cmdC);
$cmd->event(((string)$Dist));

Un énorme merci @hgmorse, je commencais à desespérer :stuck_out_tongue:

Merci merci merci :slight_smile:

Bonjour,
Je suis confronté à ce problème, et le bug traine depuis bien longtemps.
Un fix est-il prévu ?

Hello,

J’ai moi meme le meme problème.
Mon iPhone et mon domicile sont correctement détectés / remontés en terme de coordonnées.
Tout se met bien à jour en cas de déplacement. (les coord évoluent) :slight_smile:

Par contre dans le plugin le calcul de présence et de distance ne s’actualise pas.
J’ai tout retourné dans tous les sens, pas d’update.
@lunarok je sais plus ou chercher et ca m’ennuierai d’avoir à passer par un virtuel pour contourner le problème

Je sais pas si c’est un bug en cours de correction.
Merci

Hello,

J’ai un peu de mal à comprendre la sortie du code.
c’est un nombre de minutes de trajet ? Je cherche à produire une distance en mètres.

merci

J’ai constaté des écarts imporants avec l’outil de calcul de google maps. Du coup j’utilise plutot cette formule qui donne de les memes resultats que google maps :

$Dist = 2 * 6371 * asin(sqrt(pow(sin((deg2rad($ValLatPhone) - deg2rad($ValLatHome))/2),2)+cos(deg2rad($ValLatHome)) *cos(deg2rad($ValLatPhone)) *pow(sin((deg2rad($ValLongPhone) -deg2rad($ValLongHome))/2), 2)));

merci !
ce petit script est super efficace ! distance en km à vol d’oiseau
merci beaucoup pour le partage

je trouve que ce script calcul une distance tres approximative. J’utilise plutot la formule donnée plus haut qui est bien plus efficace.

C’est fou qu’un plugin officiel soit buggué depuis 2019 et qu’il ne soit pas réparé !!!
Ca fait peur, vous ne trouvez pas ??

Ce n’est pas un bug mais 2 methodes differentes de calcul.
Celle que j’utilise donne des resultats plus exacts. Ca doit dépendre de l’utilisation.

Je parlais du bug de distance qui reste à 0 dans le plugin Geoloc…

Car j’ai le même problème…