Tuto : Integrer de manière dynamique Waze In Time à Jeedom Connect

si tu as créé une commande virtuelle creche dans l’équipement virtuel (avec les coordonnées GPS de la creche), il suffit d’appeler le scenario avec comme tag destination=creche

Les commandes Waze in Time seront ainsi mise à jour ainsi que le lien Waze

Norbert

Effectivement … je pensais que ça allait etre bien plus compliqué.
Finalement, la difficulté est plustot de calculer le délais avant départ.

je récupère l’heure de départ avec la fonction suivante (en supposant que je doit arriver à 18h30) :

time_op(1830,-#[Informations][Trajets Waze][Durée 1]#) 

j’obtiens une heure au format hhmm (1730 pour 17h30 par exemple).

Pour calculer le délais avant départ je voudrais utiliser la fonction :

time_diff(date1,date2,format])

C’est la que je bloque, cette fonction utilise les heures sous la forme HH:MM:SS
Il faut que j’arrive a convertir mon « 1730 » en « 17:30:00 »

Alors, J’imagine que tu souhaites avoir cet affiche dans Jeedom Connect
Dans ce cas là, très simple (et beaucoup plus simple que dans Jeedom)
Tu crées un widget générique numérique qui prend comme statut la durée 1
Et dans le sous-titre, tu renseigne la commande suivante (utilisation de la -fabuleuse- librairie moment.js

'Départ '+moment('1730','Hmm',true).subtract(#value#,'minutes').fromNow()

tu auras automatiquement à l’affichage, Départ dans 36min

Explication :

moment('1730','Hmm',true)  --> c'est l'heure d'arrivée prevue
.subtract(#value#,'minutes')  --> à laquelle tu soustrais le #value# enn minute qui est la valeur du widget, donc dans notre cas durée 1
.fromNow() --> et tu lui dis d'afficher le temps en fonction de maintenant , ie "dans 36 min"

il y a peut être plus propre mais voici la solution que j’ai trouvé :

  • je formate mon heure de départ « 1730 » en « 17h30 » avec la fonction :
formatTime(variable(heure_depart))
  • puis je remplace le « h » par « : » avec :
str_replace('h' , ':',strval(variable(heure_depart)))
  • enfin, je calcule la différence en minutes entre mes deux date avec :
time_diff(date("Y-m-d H:i:s"),date("Y-m-d") variable(heure_depart):00,m)

Mon scénario complet est le suivant :

qu’en pensez vous ?

Cordialement,

Coco69530

Nous avons posté en meme temps. Merci pour cette réponse :slight_smile:
J’étais parti dans un premier temps sur une notification Telegram ou Jeeconnect.
Mais effectivement l’affichage dans Jeeconnect peut être intéressant !

Pas bien fan des manipulations de chaines de caractères pour gérer des dates … :wink:
Une proposition avec un bloc code tout simple

Tu initialises 2 tags duree et heureArrivee et tu recupères 2 tag heureDepart et delaiDepart

l’affichage du popup (mais tu peux mettre n’importe quelle commande de notif :
image

et le bloc code

 // récupération des tag du scénario
$tags=$scenario->getTags();    
$duree=$tags['#duree#'];
$heureArrivee=$tags['#heureArrivee#'];

// calcul des heures de depart et delai avant depart
$heureDepart = strtotime($heureArrivee) - $duree*60 ;
$delaiDepart = round(($heureDepart-strtotime(now))/60,0) ;

// log du resultat
$scenario->setLog('depart à '.date('H:i',$heureDepart).', dans '.$delaiDepart.' min, durée : '.$duree.' min');

// envoi des tags au scenario
$tags['#heureDepart#'] = date('Hi',$heureDepart) ;
$tags['#delaiDepart#'] = $delaiDepart ; 
$scenario->setTags($tags);

ahah c’est vrai qu’en comparant les deux méthodes, la mienne est :face_vomiting:
Le code et moi ça fait deux :slight_smile:
Merci en tout cas ngrataloup.
Je vais mettre ça en prod demain.

Juste une petite question : tag et variable sont la même chose ?

Il y a 1 an, moi aussi, mais à force de chercher, creuser, je commence à y arriver … meme si je pense que ce que je fait est sans doute assez loin des bonnes pratiques

Non, une variable est disponible partout dans Jeedom, y compris en dehors du scenario qui l’a créée. Le tag est strictement limité au scenario. tu ne pourras pas l’utiliser en dehors du scenario.
C’ets pour ca que toutes les variables instanciées sont dispo dans outils >> variables et pas les tags

Merci pour ta réponse.
Je n’ai pas encore pris le temps d’intégrer ton code à mon scénario.
Je n’ai pas de doute sur le fait que ça fonctionnera :slight_smile:

1 « J'aime »

Tout fonctionne.
Je voudrais simplement ajouter un bloc IF dans le code pour que :

si le délais départ > 60, j’obtienne par exemple 2h00 au lieu de 120min.

Tu peux rajouter dans ton scénario, hors bloc code, un test :

Si durée 1 >= 60, alors
   Tag dureeHeure = floor('durée 1' / 60)
   Tag dureeMin = 'durée 1' - tag(dureeHeure) * 60
   Notif départ dans tag(dureeHeure) h tag(dureeMin) min
Sinon 
   Notif départ dans 'durée 1' min

Pas forcément utile de faire les calculs dans le bloc code car de toute façon, il faudra faire un SI pour savoir si tu as un affichage xx min ou xx h yy min

Norbert

Parfaitement fonctionnel de mon coté :slight_smile:
merci !

1 « J'aime »

Super le tuto et facile à ajouter :slight_smile:

Par contre, quand je modifie le widget pour masquer le statut mon widget devient readonly.
Je pensais qu’il deviendrait cliquable complètement.

Jeedom Core : 4.3.12
Version JC : 1.6.0+ stable
DNS Jeedom : non
Statut Démon : Stoppé - ()

Equipements :
  iPhone : v1.6.0 stable sur ios [os : 16.2]

Il faut que tu actives « bloquer la vue détail » pour que toute la tuile soit cliquable

Norbert

1 « J'aime »

Oui c’est fait et cela ne fct pas. Je vais refaire le tour j’ai dû louper un truc

tu epux faire une copie du paramétrage de ton widget ?
On est bien d 'accord qu’on parle de ca : Tuto : Integrer de manière dynamique Waze In Time à Jeedom Connect - #11 par ngrataloup ?

Oui bien sûr c’est bien cela.

As-tu également besoin de la config dans l’app mobile ?
N’est-ce pas une fonctionnalité tjs en beta par hasard ?
Merci.

On s’éloigne peut-être du sujet principal :slight_smile:

Tu peux forcer l’affichage carte, supprimer les personnalisations ( via l’App >> perso >> poubelle en haut à droite
Si ça ne règle pas le pb, envoie effectivement une copie de la page « éditer ce widget » sur l’app

Quelqu’un a déjà eu une sortie de ce type avec le widget webview ?

17375 min via 17374

J’ai l’impression que ce sont les ID qui sont affichés.
J’ai bien fait « Ajouter des infos » et mes commandes ont bien une valeur avec le testeur d’expression.
Si j’enlève les commandes, l’affichage affiche les commandes en chaine de caractère.

J’ai rechargé les données et vidé le cache, je ne comprends pas.

Tu peux mettre une copie de tes paramétrages de widget (edition et personalisation) ?

1 « J'aime »