Rebonds de positions GPS

Bonjour,
Depuis quelques temps (quelques mois) je constate des rebonds sur ma position GPS.
Je ne sais pas vraiment d’où vient le problème et en farfouillant les autres sujets je n’ai pas l’impression que mon problème ai déjà été rencontré.
Mais bon qui ne tente rien…

Voici la config :

Jeedom Core : 4.3.22
Version JC : 1.8.0.1 stable
DNS Jeedom : oui
Statut Démon : Stoppé - (NA)

Equipements :
  Iphone_Ju_JeeConnect : v1.8.0 stable sur ios [os : 15.3] (polling) - PA
  Tel_PuPu_JeeConnect : v1.8.0 stable sur android [os : 31] (polling) - PA

Et vu qu’une image vaut mieux qu’un long discours je vous joins une capture pour illustrer mon propos (mon parcours de ce matin).

Si vous avez des pistes, je suis preneur ! :slight_smile:

Hello

Sur cette partie, JC ne fait que recup les infos que le tel lui donne du coup … :confused:

Du coup… Va falloir que je change de téléphone ! ^^
En tout cas merci d’avoir pris le temps de me répondre !

J’ai aussi constaté des rebonds quand la source de localisation ou la précision de la source change.

Par le passé, je faisais ma localisation avec Tasker et un appel d’url sur Jeedom, c’est comme ça que j’ai vu ce comportement.
Mon « workaround » était de calculer le recoupement entre la dernière position connue et sa précision :


→ Localisation X est toujours associée avec Précision X
→ Position X est obtenue en prenant le milieu de l’intersection des précisions X et X-1, sur le segment Loc X et Pos X-1 (cf Pos 3)
→ Si aucune intersection, on reste dans la précision X (cf Pos 4)

Je n’ai pas réussi à retrouver le code, mais j’avais TRES CLAIREMENT négligé le fait que tous ces calcul sont à effectuer à la surface d’une sphère, la résolution n’est pas trop compliquée dans le plan :

Pour trouver PosX, il faut chercher A et B (fonction de PosX-1, Loc X et X-1 et Précison X et X-1 :


A (resp. B) est le point où la droite passant par PosX-1 et LocX coupe Précision X (resp. X-1)

L’équation de la droite PosX-1 et LocX (qu’on va renommer P-L sinon…) est :
y = (x - Px) * (Ly - Py) / (Lx - Px) + Py
L’équation d’un cercle C de centre Cx,Cy et de rayon r est :
r = (x - Cx)² + (y - Cy)²
Résoudre x permet de trouver les 2 points d’intersection G et G’ de la droite P-L avec C :
r = (x - Cx)² + ((x - Px) * (Ly - Py) / (Lx - Px) + Py - Cy)²
ax² + bx + c = 0, avec :
a = 1 + (Px * (Ly - Py) / (Lx - Py))²
b = -2 * Px + 2 * Px * (Ly - Py) * (Py - Cy) / (Lx - Py)
c = Px² + (Py - Cy)² - r
→ Discriminant D = b² - 4 * a * c
D < 0 → Pas de solution (normalement impossible par construction)
D = 0 → 1 seule solution (normalement impossible par construction)
D > 0 → Nos 2 solutions x1 et x2 avec :
x1 = (-b - sqrt(D)) / (2 * a) et x1 = (-b + sqrt(D)) / (2 * a)
On retrouve y1 et y2 en réinjectant x1 et x2 dans l’équiation de la droite

Pour trouver A, on utilise le cercle C de centre LocX et rayon PrécisionX dans la fonction précédente, en gardant de G ou G’, le point le plus proche de PosX-1.
Pour trouver B, on utilise le cercle C de centre PosX-1 et rayon PrécisionX-1 dans la fonction précédente en gardant de G ou G’, le point le plus proche de LocX.

CQFD : PosX = ((Ax + Bx)/2, (Ay + By)/2)

(Oui, j’avais envie de me faire chier là :stuck_out_tongue: )

Bad

1 « J'aime »

Salut Bad,

Il y a une légère erreur dans ta démo.

image

ICI

HAHAHA, mais encore ?
Tu veux dire que je me suis vautré au début de l’équation de la droite ?

Alors si je récap cet étape :
Soit P (respectivement L) de coordonnées (Px, Py) (resp. (Lx, Ly))
La droite passant par P et L répond à l’équation y - Py = m(x - Px)
Avec m = (Ly - Py) / (Lx - Px)
Donc : y - Py = ((Ly - Py) / (Lx - Px)) * (x - Px)
ou bien :y - Py = (x - Px) * (Ly - Py) / (Lx - Px)
Donc : y = (x - Px) * (Ly - Py) / (Lx - Px) + Py

Il me semble que c’est ma réponse ?

1 « J'aime »

Du tout c’est correct :wink:
juste ceci l’équiation :kissing_closed_eyes:

Ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
C’est pas ma faute si j’aime l’équitation

Tout ceci est parfaitement clair et logique (une fois qu’on a pris le temps de se poser dessus, quand même…) et merci pour cette très belle démonstration qui me ramène des années en arrière sur les bancs de l’école. Ca me fait aussi dire que j’ai pas tellement hâte que mes enfants en soient là à l’école… ^^
Malgré tout, on parle d’un rebond de plus de 30km, c’est chaud niveau précision non ?
Ca veut dire qu’il faudrait que la précision 3 dans notre cas soit sacrément dégradée pour faire un bond de 30km en arrière tout pile pour me ramener chez moi et faire ouvrir mon portail. Ce serait quand même sacrément pas de bol…
En tout cas j’ai une autre piste, bien moins etayée celle-là, qui me fait dire que ça vient du train. Jamais eu le problème en voiture et tout le temps quand je prend le train…
Coïncidence ? Je ne crois pas. :face_with_monocle:

Ou alors c’est un problème de cheval, il y a des prés avec des chevaux juste devant chez moi (véridique ! :sweat_smile:) Mais, je ne suis pas assez calé en équitation… :rofl:

Merci pour ton retour

Ca te permettra de te décrasser le cerveau :exploding_head:
Et en attendant tu peux faire des sorties poney avec eux :stuck_out_tongue:

:astonished: j’avais loupé un zero et pris ça pour 3km, pas 30km !
En effet, à moins que la précision n’englobe également l’ancenne position, ca va sauter :horse_racing:

D’ailleurs, c’est bien que tu reviennes vers moi, car j’en ai parlé avec un pote qui a une approche différente. Il critique mon approche de « lissage », purement basée sur la distance et suggère plutôt une approche de « filtrage » basée sur le temps de transit : Il est peu probable que le commun des mortels ne se déplace à plus de ~920km/h (vitesse max avion de ligne) soit ~256m/s, à moins d’être Thomas Pesquet ou pilote d’avion de chasse, mais même dans ce cas là, peu probable d’avoir son téléphone sur soi.

Donc son algo est SUPER simple :
Si distance(LastPos, NewPos) / (date(newPos) - date(LastPos)) > 256m/s
Alors on ignore newPos ; Sinon on enregistre newPos et la communique à Jeedom.
On peut aussi compter le nombre de mauvaises newPos pour savoir si/quand/combien ça arrive.

Je n’ai pas l’échelle suffisante sur ton graph, mais si tu peux déjà faire à la main les calculs lors des sauts, l’approche devrait être intéressante.

Bad

Effectivement cela semble intéressant et assez simple à appréhender.
Malheureusement je ne suis même pas sûr que cela suffise. Je crois que j’ai vraiment un truc tordu avec ma position GPS… (Voir image, je n’ai pas fait 2 fois le même trajet ! ^^)
J’ai l’impression que, comme si le téléphone avait « laggué », il me renvoi tout mon dernier itinéraire. Ou juste des fois ça saute… Bref, il y a un truc pas clair là dessous…

Il faudrait que je puisse être sur Maps pour voir si je vois le phénomène en live. Mais ça semble bizarre quand même.

Bonjour,

J’ai eu le cas sur un téléphone où, de temps en temps, il rejouait les n dernières positions.

Sur le téléphone, dans l’application, JC, j’ai passé le nombre de Points d’enregistrement, qui se trouve dans Préférences/Géolocalisation/Paramètres avancés, à 1.

Depuis cela ne s’est plus reproduit.

Merci pour cette piste ! :pray:
J’essaye ça de suite et je vous tiens au courant.
:+1:

Juste une question tu as quoi comme tel?

Essaye de reduire les points d’enregistrement dans les paramètres géo-localisation de JC. Il suffit dune perte de connexion et JC rejouera la position.

Jai eunoe cas avec le tel de ma femme et une fois arrivée a 5-6km de la maison ca rejouait les positions depuis la derniere reçue correctement et la ouverture du portail, désarmement de l’alarme, ouverture de volet alors que personne n’était à la maison. Puis reverrouillage 1 mins après… je te dis pas la tete des voisins

J’ai un Xiaomi redmi note 10 pro. :+1:

Et effectivement plus de « rebonds » depuis que j’ai passé le nombre d’enregistrements à « 1 » au lieu de « -1 ».

Merci à tous, j’aurais cherché un moment sans ça !! :grin: :grin:

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.