Correction du Calcul temps de trajet

Bonjour,

Suite au problème remonté dans ce post, je me suis un peu remis au php.

Le soucis vient à priori d’un changement de structure dans le json retourné par waze (pas cherché confirmation dans les docs de l’API Waze, j’y suis allé en mode barbare).
Du coup, CHEZ MOI, la solution suivante fonctionne :

  • Ouvrir le fichier wazeintime.class.php dans /var/www/html/plugins/wazeintime/core/class/

  • Rechercher le texte :
    public static function extractInfo($_data, $_prefix = '') {

  • Remplacer le code suivant qui se trouve sous le texte recherché :

		$return['route' . $_prefix . 'name1'] = (isset($_data['alternatives'][0]['response']['routeName'])) ? trim($_data['alternatives'][0]['response']['routeName']) : "NA";
		$return['route' . $_prefix . 'name2'] = (isset($_data['alternatives'][1]['response']['routeName'])) ? trim($_data['alternatives'][1]['response']['routeName']) : "NA";
		$return['route' . $_prefix . 'name3'] = (isset($_data['alternatives'][2]['response']['routeName'])) ? trim($_data['alternatives'][2]['response']['routeName']) : "NA";
		$return['time' . $_prefix . '1'] = 0;
		$return['time' . $_prefix . '2'] = 0;
		$return['time' . $_prefix . '3'] = 0;

		if (isset($_data['alternatives'][0]['response']['results'])) {
			foreach ($_data['alternatives'][0]['response']['results'] as $street) {
				$return['time' . $_prefix . '1'] += $street['crossTime'];
			}
		}

		if (isset($_data['alternatives'][1]['response']['results'])) {
			foreach ($_data['alternatives'][1]['response']['results'] as $street) {
				$return['time' . $_prefix . '2'] += $street['crossTime'];
			}
		}

		if (isset($_data['alternatives'][2]['response']['results'])) {
			foreach ($_data['alternatives'][2]['response']['results'] as $street) {
				$return['time' . $_prefix . '3'] += $street['crossTime'];
			}
		}
		$return['time' . $_prefix . '1'] = round($return['time' . $_prefix . '1'] / 60);
		$return['time' . $_prefix . '2'] = round($return['time' . $_prefix . '2'] / 60);
		$return['time' . $_prefix . '3'] = round($return['time' . $_prefix . '3'] / 60);
  • Par
$return['route' . $_prefix . 'name1'] = (isset($_data['response'][0]['route_name'])) ? trim($_data['response'][0]['route_name']) : "NA";
		$return['route' . $_prefix . 'name2'] = (isset($_data['response'][1]['route_name'])) ? trim($_data['response'][1]['route_name']) : "NA";
		$return['route' . $_prefix . 'name3'] = (isset($_data['response'][2]['route_name'])) ? trim($_data['response'][2]['route_name']) : "NA";
		$return['time' . $_prefix . '1'] = 0;
		$return['time' . $_prefix . '2'] = 0;
		$return['time' . $_prefix . '3'] = 0;

		$return['time' . $_prefix . '1'] = round($_data['response'][0]['total_route_time'] / 60);
		$return['time' . $_prefix . '2'] = round($_data['response'][1]['total_route_time'] / 60);
		$return['time' . $_prefix . '3'] = round($_data['response'][2]['total_route_time'] / 60);

IMPORTANT :
Remarque 1 : En vrai, je vous conseille de commenter l’ancien code et de coller le nouveau en dessous.
Remarque 2 : Si déjà vous ne savez pas comment ouvrir le fichier php, je vous recommande d’attendre une mise à jour officielle plutôt que d’aller bidouiller le code source sans maitriser ce que vous faites.
Remarque 3 : L’opération précédente consistait à additionner les durées de chaque tronçon (crossTime). Une valeur total_route_time vient avantageusement fournir l’info sans calcul (j’ai vérifié, dans mon cas les deux résultats sont bien identiques).
Remarque 4 : Désolé, je ne pourrais pas faire de support sur cette bidouille. Chez moi elle fonctionne bien, j’espère qu’il en sera de même pour vous !

Good luck :slight_smile:

2 « J'aime »

Bonjour,
Pourquoi ne proposez-vous pas un PR sur le projet pour corriger ?
Le repo est public.

1 « J'aime »

Parce que je ne sais même pas ce que c’est qu’un PR ? :man_shrugging:
Je suis pas dev, les repo et tout, c’est pas mon truc en vrai :blush:

Maintenant, si quelqu’un avec de réelles compétences (en code et en git) se sent de proposer l’update du plugin, qu’il n’hésite pas :+1: :wink:

J’ai noté pour regarder ajd.
J’avais regardé rapidement hier après-midi mais je recevais des http 403 depuis jeedom donc je pensais que le problème était la et je n’avais pas eu le temps de regarder plus

Edit: pas eu le temps du coup, grosse journée.
Ça sera pour demain.

2 « J'aime »

Si tu peux, refais peut-être un check sur l’adéquation du résultat de la somme des crossTime avec la valeur de total_route_time.
Depuis que j’utilise ma version avec total_route_time le résultat a toujours été cohérent par rapport à la réalité et à ce que j’avais avant, j’ai assez peu de doute du coup, mais encore une fois, j’ai pas été regarder dans la doc de l’API pour confirmer ce point.

1 « J'aime »

Merci ! J’ai effectué la modif et ca fonctionne chez moi également !

1 « J'aime »

Un petit retour: j’ai inclus les changements de mon coté, j’en ai profité pour faire un peu de maintenance dans l’écran de config pour être plus au goût de jeedom v4, quelques fixes et optimisations et j’ai inclus le support de la config geoloc faite dans le core comme option supplémentaire (en plus des commandes existantes et de l’encodage manuel).

Visuellement, on passe de ceci:


à

trouvez les 7 différences :joy:

Je vais encore faire quelques tests de tout ca avant de proposer le changement en beta, probablement demain.

3 « J'aime »

Ah, j’ai bien fait de pas faire de RP sur le repo :grin:
Du coup on va même avoir un plugin tout propre !

Merci @Mips :+1:

1 « J'aime »

Update de ce matin (on peut le voir à la couleur des screens :joy:):


c’est facile ici, il n’y a qu’une différence :wink:

PR fait:

@Loic, vu que tu es le dernier à avoir fait des changements sur le plugin, si tu as le temps de valider mon PR en beta qu’on puisse valider que cela résout le problème pour tout le monde?
Merci

Salut,
Le soucis c’est que je connais pas du tout le plugin je peux donc pas dire si ton PR est bon ou pas… Donc je le valide en te faisant confiance, par contre que ce soit clair je ne fais AUCUN SAV sur ce plugin (j’en ai deja trop a gerer)

Ça roule. On laisse en bêta et j’attends les retours pendant quelques jours.
S’il y a des soucis je gère.

Je te fais signe s’il y a un nouveau pr à valider ou si on peut passer en stable.

Merci !

Super merci

Merci à tous.

Merci pour cette béta qui refait fonctionner ce plugin.
Je ne sais pas si il y aurait un intérêt à trier les trois trajets suivant le temps de parcours.

C’est pas le cas par défaut et fait par waze? j’ai toujours eu le trajet le plus court (en temps) en premier et ainsi de suite.

Capture d’écran du 2021-10-18 11-07-31 Capture d’écran du 2021-10-18 11-08-05

:thinking:

bonjour,

Cela semble fonctionner pour les temps dans les commandes, test demain en présentiel :slight_smile:

par contre widget vide, mais je ne l’utilise pas :stuck_out_tongue:
image

Curieux ca, quelle version de jeedom?
Aucune personnalisation activée? (css ou autre)
les trajets sont bien configuré pour être affichés? voir config sur l’équipement