J’ai toujours coché la rétention illimité, je me demande pourquoi on dirait que je n’ai aucune données. Peut être le temps que les calculs se fassent ?
Pour l’affichage des axes, je me suis rendu compte qu’en les activants j’avais un graphique. Je pensais donc que c’était obligatoire pour que ça fonctionne. Mais je vois sur ta capture que ce n’est pas le cas et tu as raison c’est plus joli sans.
Il y a un bug dans la retention actuelle des données, on s’en est jamais rendu compte car c’était pas utilisé pour l’instant, cf plus haut:
Je pense pas que ce soit le cas ici, mais si tu veux vérifier, il y a une nouvelle vue « Tâches en arrière-plan » qui te permet de vérifier l’état actuelle des calculs en arrière plan:
Est-ce que tu pourrais vérifier qu’il n’y a pas d’erreur dans la console de ton navigateur ?
Normalement si tu n’as pas de donnée, tu as un message « aucune donnée pour cette période », hors toi tu n’as rien, donc c’est bizarre
Merci pour la précision, j’avais lu le message sans faire le lien ! Tout s’éclaire, heureusement que tu t’en ai rendu compte maintenant (plutôt que dans quelques années ).
J’irais jeter un oeil ce soir pour répondre à tes questions !
Je trouve ça super intéressant d’avoir l’affichage de ces courbes, aux choix très esthétiques !
Est-ce que c’est possible de n’avoir qu’un seul axe d’affiché ? ou de choisir la valeur en ordonnée ou en abscisse ?
J’aurai voulu faire un retour sur la PR du coup avec les soucis des valeurs pas enregistré je peux pas. Par contre l’interface ajoute pour choisir cette valeur est bien, il manque cependant une validation du genre dsauvegarder ou autre pour appliquer le choix, la on a l’impression qu’il se passe rien
Est-ce que c’est vraiment utile ? Je suis pas forcément pour le tout-option, ça créé le produit plus complexe ! Si c’est vraiment utile pourquoi pas, mais j’essaie vraiment de ne pas surcharger l’UI.
ah! Je t’ai ajouté à l’organization github. Mais c’est bizarre, normalement c’est ouvert à tous je croyais…
Tout fonctionne bien de mon côté, c’est vraiment super bien fait et rapide !
Voici mes observations :
Je préfère voir afficher l’heure du point, plutôt que “il y a XX minutes”
J’espère qu’à terme il n’y aura pas de limite sur les types de données qu’on peut afficher. Actuellement je ne peux pas sélectionner un capteur d’ouverture ou de mouvement par exemple.
Est-ce réalisable de proposer d’afficher plusieurs équipements à la fois (du même type) ? Par exemple 2 capteurs de température de 2 pieces différentes dans le meme graphique avec deux couleurs ?
Désolé pour le temps de réponse !!
Non sur la base prod, il ne me semble pas avoir fait de modification. Et pourtant en effet, ma base de donnée en brut fait actuellement 925 Mo et croît toujours. Je pense donc que ca marche …
Je suis en train (enfin) d’installer l image docker avec la DB. On verra ce qu’il en est ^^
Ma DB à l’air d’avoir bien fonctionné puisque j’obtiens un temps de 26 minutes pour la première aggrégation (“horaire”).
Edit 2 : Toutefois, étrange, rien n’est sélectionné pour l’historique dans la vue Paramètres/Système
Au premier démarrage, cette même aggrégation avait plantée sur “database is locked” je suppose. Mais l’aggrégation journalière avait bien débutée. J’ai ensuite redémarré Gladys pour que l’aggrégation “horaire” fonctionne.
Le nom de la box est-il le bon ? “Graphique” tout court ne serait-il pas plus adapté ? Ou bien “Graphique - Capteurs” si tu comptes les dissociés d’autres Graphiques (Binaires …) ?
Pour la sélection de l’appareil, il est toujours aussi dérangeant de ne pas avoir le nom de la feature à la place du nom du device d’autant plus lorsqu’on a plusieurs feature de même catégorie (ici l’énergie horaire consommée et l’énergie totale consommée) :
Pour le type de représentation du graphique, est-il possible de mettre une prévisualisation - ou un exemple - en-dessous pour permettre de bien choisir directement ce que l’on souhaite ?
Pour le type de représentation ne serait-ce pas plus parlant d’appeler l’actuel type “Barres” → “Histogramme” ?
Pour le reste dans l’édition c’est parfait, tout est clair et simple à configurer. Comme l’ont déjà mentionné @VonOx et @lmilcent il serait très intéressant de pouvoir sélectionner plusieurs capteurs et notamment dans différentes pièces si possible… ça augmente tout de même la complication pour la prog.
J’attends que les divers aggrégations se terminent pour les retours sur le dashboard (demain je pense ^^)
Edit :
Après 2h, toutes les tâches précédentes ce sont bien déroulées, et le nouveau cycle d’aggrégation s’est très bien déroulé (les nouveaux cycles se font en environ 50s à 1min pour chaque aggréga). La DB est montée à 1,9Go soit 1Go de plus avec l’aggrégation - A noter que la grosse différence se situe sur le fichier *.db-wal qui lui est monté de 4Mo à 162Mo
Est-il prévu d’avoir un historique sur l’année, 5 ans et 10 ans ? (Rien de pressant pour les 5 et 10 Intérêt : solaire, consos pro, etc. (Lié à l’historique illimité - qu’il serait d’ailleurs toujours intéressant de pouvoir définir pour chaque feature dans l’avenir)
Temps d’affichage moyen pour 12 courbes = 5s avec affichage progressif !! C’est bien ^^
Pour mon premier essai sur le Dashboard, j’ai créé 4 Lignes avec dans chaque colonnes 3 features (Puissance, Energie horaire et Energie Totale de la Phase 1), pour chaque Ligne 1 type de représentation différente et pour les lignes 1 et 3 la représentation des axes à “Oui” tandis que sur les Lignes 2 et 4 ils sont définis sur “Non” - Je n’ai pas la même chose selon le type, et notamment des valeurs en “NaN” puis quelques temps après ces valeurs passent en “Infinity” (problème de langue ici) - J’ai donc redéfinis tous les axes sur “Oui” - voir les 3 images ci-dessous
Les heures ne me paraissent pas non plus être les bonnes car il est 21h46 et sur l’axes ont peut voir que les horaires vont de 19h à 20h (heure française non gérée ?)
Sur les Histogrammes (“Barres”), le temps sur pointeur n’est pas bon contrairement aux autres types de courbes, il indique le jour et le mois au lieu du délai écoulé - j’en profite d’ailleurs pour relever le même avis que @lmilcent, il serait plus intéressant d’avoir la date et l’heure du point plutôt que le délai écoulé
Idem que précédemment, il n’y a pas la même chose d’indiqué sur l’histogramme que sur les autres types, toutefois, AMHA il est plus intéressant d’avoir la même chose que l’histogramme partout soit la date du jour et mois.
Les dimensions des boxs ne sont pas les mêmes en hauteur. AMHA, une courbe devrait toujours être de même dimensions (comparatif visuel) tout du moins en hauteur (si un jour on peut redimensionner les boxs sur plusieurs colonnes, c’est autre chose ^^)
Je testerais d’autres choses dimanche !! En attendant, toutes mes félicitations @pierre-gilles , c’est magnifique, et tu ne peux pas savoir à quel point ceci va m’aider, pour mon usage personnel/professionnel (j’attends encore la courbe annuelle qui est une de celle qui m’intéresse le plus ) !! J’attendais ceci avec impatience, tu as été d’une “redoutable” efficacité ^^ !! Bravo !! Et vivement les courbes multiples ^^
Ok mais je pense que tu n’avais rien sélectionné! Tant mieux si ça marche.
Rassure moi, tu as bien dupliqué ta base, tu fais pas tourner ça à la place de ta prod en live?
Ok je vois le problème pour le « database is locked ». Merci du retour, j’avais tenté un truc mais j’étais pas sûr si ça passerait sur les instances qui sont très sollicitées comme la tienne, je vais corriger.
C’est tout à fait normal, en gros la données historique est dupliquée 3 fois: Agrégation horaire, agrégation journalière, et mensuel. Du coup ça prend plus de place sur disque, car en gros on a « pré-calculée » ce qui va être affichée dans l’UI, c’est comme du cache quoi.
Par contre si je comprend bien il va falloir que je remonte les limites sur les tailles de backups de Gladys Plus Mais bon, c’est normal, ça me choque pas d’avoir une DB de 1.6 GB, surtout quand on a un tel usage comme le tiens!
Pourquoi pas juste graphique effectivement.
Mmm effectivement ici autant mettre la feature!
OUI !! Je veux la prévisualisation aussi, sinon c’est trop chiant il faut valider, et revenir à chaque fois.
T’as sûrement raison, j’avoue que j’ai juste traduit l’anglais, je connaissais pas le mot en français
Je suis d’accord Je vais l’ajouter.
ça me choque pas!
Petite expérience, est-ce que tu pourrais copier ta DB à part (sur ton laptop), et l’ouvrir avec une application genre TablePlus, et exécuter la commande SQL:
VACUUM;
Ensuite tu regarde la taille de la DB après le VACUUM (c’est une commande SQlite pour nettoyer les lignes mortes)
Juste pour voir si tu as des lignes « mortes » qui n’ont pas été nettoyée par SQlite, ou si c’est juste de la vrai donnée (après, 2Go, ça ne me choque pas du tout)
On peut rajouter des plus grande durée oui, sans problèmes.
5s ça rend comment? Tu pourrais faire une vidéo? ça me parait beaucoup !
Tu es en SSD sur ton Pi on est d’accord?
Ah, pas propre ça Je corrige.
Ok, même bug que @lmilcent donc. Je vais regarder.
Sûrement la lib qui ne gère pas les timezone par défaut, je vais regarder ça.
Ok, noté je vais corriger.
Visiblement un problème de titre de box trop long qui fait dépasser et mettre à la ligne le titre ! Je vais regarder ce que peux faire, mais il y a pas trop de magie:
Soit limiter la longueur des titres de box
Soit faire passer le « Dernière 24h » sous le titre…
A voir
Merci !! C’était beaucoup de boulot cet été, et il y en a encore un peu pour corriger tous les petits bugs que tu as trouvé
En tout cas merci pour ton retour très très complet, c’est exactement ce que j’attendais Vaut mieux que tu fasse ce genre de retour maintenant, plutôt que de sortir ça à tout le monde alors qu’il y a plein de bugs à droite à gauche.
ça marche, @Terdious dit pareil donc on va passer sur un affichage en heure/minutes
Ah, je vais retirer la limite.
C’est tout à fait possible, je n’ai pas pu le développer encore car c’est un peu de boulot
Un petit bug a lieu sur la page d’Edition du Dashboard. Je remplie la sélection d’un premier appareil (“Puissance Phase 3 Centre Equithérapie”) et le nom de la box (“Energie Totale Phase 3 Aire”). J’ajoute une nouvelle box dans la même colonne avec un appareil (“Puissance Phase 2 Centre Equithérapie”) et le nom de la box (“Energie Totale Phase 2 Aire”). Je me suis trompé d’ordre donc je clique sur la flèche haute pour remonter la box de la phase au dessus de la phase 3. La box est, je suppose, bien inversée car le nom de la box a bien été inversé mais le nom de l’appareil lui reste inscrit dans la même box et se retrouve donc inversé (plus de cohérence). En sauvegardant et en revenant dans l’édition, les noms des appareils sont bien revenus dans les boxs affiliées. Il s’agit donc juste d’un bug d’affichage
Autre chose, mes données de Puissance sont envoyées en kW mais avec une précision en Watt. Ci-dessous j’ai une consommation de 110 Watts régulière qu’il m’intéresse d’observer. Or l’affichage en haut à gauche s’affiche en kW alors qu’il serait préférable sous les 1000 Watts de les inscrire en W plutôt qu’en kW (d’ailleurs les unités KW et kWh ne sont pas inscrite avec les mêmes majuscules… - pour information les règles d’usage veulent que les unités prennent une majuscule lorsque celles-ci sont dérivées d’un nom propre - ici kilo et heure ne sont pas des noms propres donc doivent s’écrire “k.” et “h.” - Watt est un nom propre donc W. - ce qui donne kW et kW.h - une exception pour le litre qui lui peut s’écrire l. ou L. pour éviter la confusion de la lettre minuscule avec le chiffre 1 dans certains format d’écriture - j’arrête là la digression ). Est-il possible d’effectuer une conversion automatique à ton avis pour les courbes ? Qui pourrait même être repris plus tard pour les valeurs du dashboard…
Je viens de découvrir la fonctionnalité de zoom !! C’est génial et vraiment pratique. J’étais en train de rechercher une consommation précédente. Or sur la dernière heure on ne voit pas assez loin on voit trop large. Je ne sais pas si cela est possible, mais le best serait que lors d’un zoom, on puisse récupérer la précision du rang du dessous… :
J’ai fait les tests également sur mobile, le mode plein écran paysage est vraiment excellent. On retrouve les mêmes bug que sur le PC en édition notamment. Pas de zoom possible avec les 2 doigts. Les temps d’affichage sont les mêmes et il est très sympa de pouvoir voir les courbes se mettre à jour en instantané et de le savoir grâce au loading (indépendant pour chaque courbe). Petit axe d’amélioration qui pourrait vraiment être utile sur mobile c’est 2 petits boutons en transparence en bas à droite (ou autre ^^) pour pouvoir monter tout en haut ou descendre en bas de page en instant car avec l’ensemble des 3 colonnes réunis en une seule … c’est long ^^ bien sûr ça vaut pour Gladys au complet ^^
Tes données sont envoyés en Watt ou en Kilo Watt ? Je saisis pas
Oula, euh ça par contre c’est du cas par cas, je sais pas ce qui pourrait se faire (à part si un jour on fait une box « gestion de l’énergie » clairement séparée)
Parce que là, la box ne sait pas vraiment ce qu’elle affiche.
Je suis 100% d’accord qu’il faudrait qu’on ait une gestion sympa de la consommation énergétique dans Gladys, après je ne sais pas si c’est possible de faire un truc aussi custom dans cette box si générique… Je vais y réfléchir mais je ne te garantie rien dans le développement actuel
Etonnant mais tu as certainement raison ^^ Pour le coup j’ai surement bien fait Je pensais que la sélection était obligatoire.
Evidemment !! ^^ Renommée et tourne sur un autre pi !! Toutefois j’avais zappé Gladys plus que j’ai dû éteindre à temps car il n’a pas eu le temps de faire de backup ^^
Oui oui, ça ne me choque pas du tout non plus ^^ C’était seulement à titre informatif ^^ D’ailleurs une question, pour ceux qui n’en trouverait pas l’utilité (des courbes) et qui n’ont pas trop de place, sera-t-il possible de ne pas activer cette fonctionnalité histoire d’économiser de la place justement ? (Vraiment une question pour ceux qui se sentiraient concerné et qui liraient les échanges de ce poste ^^
Yes en SSD 500Go sur un PI4, mes constantes vitales sont au top ^^ en sachant qu’il y a 3 instances de Gladys qui tournent dessus (un modifié pour le côté Pro, un avec tous les appareils Netatmo donc très sollicité, et du coup le Gladys Chart ^^)
Ah oui en effet du coup ça double au moins les données. Pour autant mes backups font actuellement 300Mo … on a encore un tout petit peu de marge avec ce que tu as remonté la dernière fois ^^
Avant la commande SQL :
Après la requête VACCUM;
Et en fermant TablePlus le fichier db-wal disparait donc on gagne presque 80Mo.
Désolé je ne vois pas comment être plus précis ^^ Mes arduinos envois les données en kiloWatt pour la puissance (car Gladys ne gérait pas l’unité des Watts en tout cas à l’époque) mais avec une précision au Watt près. Soit pour « 1 W » il envoi « 0.001 kW ».
Extrait du fichier server/constant/utils … de l’époque.
Or on voit bien ici que la donnée est actuellement à 110 W soit 0,110 kW mais que la valeur affichée en haut est 0 kW, elle n’affiche pas les virgules. Et à ce jour il est impossible de modifier l’unité dans l’intégration. Donc impossible de revenir en Watt même si l’unité était existante.
Au temps pour moi, je me suis mal exprimé, bien entendu il n’est nullement question de ralentir cette PR avec ça et de mélanger tout. J’aurais dû ouvrir un nouveau sujet. C’est plus une demande d’ajout par le futur. Juste pour préciser la pensée, je m’étais fait une petite PR de mon côté pour bosser là dessus en 2019 et créé une table de conversion pour ça. C’est très simple, rien de compliqué et évidemment c’est du cas par cas. Mais n’étant pas programmeur de base, encore une fois le code était sale. J’arrête la cette nouvelle digression et ouvrirais un sujet (s’il y en a un ^^).
Nouvelle question peut-être hors sujet (mais qui ne tente rien n’a rien ^^) : Possible d’avoir la possibilité d’exporter les point d’une courbe au format .csv ? Ou tu verrais cela plutôt dans une intégration dédiée ?
L’axe X (le temps) est désormais affiché en heure locale désormais, et plus en UTC. @Terdious je veux bien la confirmation que c’est fixé pour toi
Le tooltip affiche bien l’heure/minute et plus le temps en relatif.
Le bug que vous aviez tous les deux est corrigé (affichage sans les axes qui bug quand la première valeur est égale à 0)
Le titre est désormais plus petit pour permettre de mettre un titre plus long. Je mettrais sûrement une limite ensuite sur la taille du titre
Ajout d’un intervalle « Dernière année ». Pour 2 ans - 5 ans, je pense qu’on fera une vue séparée à l’avenir @Terdious, en mode filtrable à souhait pour faire de l’analyse. Là l’objectif de cette box dashboard c’est vraiment plus d’avoir un affichage rapide et instantanée.
Il me reste encore quelques bugs à fixer, et quelques fonctionnalités à développer (notamment la sélection de plusieurs features sur un même graphique), je vous tiens au courant quand j’avance dessus !
En attendant, je veux bien la confirmation que ces bugs sont bien fixés!
Merci à tous les deux pour vos retours !
Je pense pas, on parle vraiment d’une toute petite place, chez toi alors que tu as une installation énorme ta DB ne fait que 2 Go, ce qui est assez ridicule comme taille en 2021
Laisser le choix complexifierait l’utilisation (comment ça se passe si au final il veut l’utiliser alors qu’il a désactivé?) Je pense qu’il vaut mieux laisser l’agrégation pour tous!
ça marche!
Ok ça change quasiment rien, bon à savoir c’était juste pour être sur que c’est de la vrai data
Ok, tu pourrais ouvrir cette page en affichant l’inspecteur onglet « network » de ton navigateur ?
Tu filtre par « XHR/Fetch », et tu filtre en affichant uniquement la requête « aggregated_states », ce qui m’intéresse c’est la size des responses, le temps de réponse, et le waterfall.
J’ai changé, j’ai affiché les 2 dernières décimales si il y en a, par contre pour switcher d’uniter, à voir si on fait pas ça dans un autre développement spécifique à la gestion de l’énergie.
Maintenant ça affichera 0.11 kW ! C’est déjà ça !
Tu verrais un export CSV de juste ce qui est affiché sur la courbe ? Ou un export total de toutes les valeurs de capteurs ?
Merci @Terdious pour ton retour encore plus poussé que moi, c’est intéressant Et vu ce que tu dis, j’imagine même pas tout ce que tu as mis en place, ça à l’air dingue !
Tiens @pierre-gilles j’ai une autre petite proposition : est-il possible d’avoir le nombre et la tendance aussi lorsque l’on sélectionne 7 jours par exemple (actuellement limité à la vue 24h) ?
Pour la consommation de mon frigo, j’aimerai savoir par exemple si la consommation sur 7j est déviante totalement ou dans la normale
@Terdious l’a déjà dit, mais je le redis, c’est vraiment topissime ! Ça ouvre un nouveau champ des possibles pour l’analyse des données récoltées, comme détecter des problèmes de consommation électrique, d’humidité récurrente, ou encore de corrélation de certains événements avec des valeurs sur graphiques.
Je te redis ça demain, j’en avais environ toutes les 2h en journée. Edit : pour le moment après 3h, plus d’échec.
C’est ok pour moi
Alors pour le coup c’est parfait
Néanmoins, est-il possible de n’afficher cette prévisualisation que lorsqu’on modifie une chose de la box, ou même un bouton pour afficher la prévisualisation sans la précharger. car pour le coup on se retrouve avec le même délai d’affichage que sur l’édition. Si c’est trop galère, laisse tomber on s’en accommodera, il vaut mieux une prévisu que pas je pense.
C’est ok pour moi, l’heure est la bonne
J’ai toutefois un soucis lorsqu’une valeur n’est envoyée que 1 fois par heure. Au final rien ne s’affiche. Exemple ci-dessous avec l’énergie horaire qui, en aggrégation « Dernière heure », affiche les jours sur l’axe faisant croire qu’il n’y a plus de valeur depuis au moins avant le 03 Octobre et montre les jours futurs alors que dans l’aggrégation « Dernières 24h » on retrouve bien des valeurs (c’est la même chose pour les 3 phases.
Ok pour moi
Toutefois, le titre affichée sur l’aggrégation « Dernière heure » est traduit tout en majuscules tandis que celui des autres vues est bien écrit au même format que nous l’écrivons dans l’Edition (voir image du dessus). Juste un souci de corrélation.
Ok pour moi
Je suis tout à fait d’accord pour une vue dédiée à l’avenir, ce qui retire notamment ma demande précédente concernant les possibilités du zoom déjà présent qui est suffisant pour cette vue. Parfait.
Très sincèrement, c’était pour faire un rapport détaillé de l’utilisation mais pour l’affichage de 18 graphs, ça me parait vraiment pas mal !! Si je fais la même sur Excel pas sûr que je mette moins de 10 secondes ^^
Ok pour moi
Possible d’en profiter pour changer l’unité « KW » en « kW » par contre, je suis désolé pour mon côté tatasse sur ce coup mais c’est vraiment choquant à voir pour le coup ^^
Est-il possible également de pouvoir avoir la variation sur toute les agrégations disponible. C’est la vue idéale pour ça, et elle peut être bien utile pour toute les échelles : pour la puissance, un niveau de cuve, une température extérieur etc, la variation sur 24h en visu instantanée serait vraiment top. Pour l’énergie totale consommée, la production solaire par exemple, la variation sur 30 jours / 3 mois / 1 an serait également très intéressante. Pour le coup la place sur ces vues est pratiquement la même, on pourrait seulement afficher la variation sans pour autant lui mettre la valeur instantanée si tu ne souhaites pas polluer trop l’affichage. Edit : Oups, je n’avais pas fait attention, mais @lmilcent a déjà évoqué la chose, je me range donc derrière lui pour confirmer que ce serait le top ^^.
Pour ce qui est du sujet switch des unités, en effet c’est un tout autre débat, on peut ouvrir un autre sujet et cela fait parti d’un autre développement oui, désolé d’avoir lancé le débat ici
Ok pour moi C’est très bien ainsi pour le moment merci !!
Le but premier était celui là oui !! Mais avec la réflexion que tu apportes sur une vue dédié à moyen ou long terme, ça ne fait plus sens comme demande, ce sera beaucoup mieux dans cette vue !! Le but de la vue Dashboard étant, comme tu le dis :
Merci pour tout et je me tiens près à essayer tout autre mise à jour sur cette fonctionnalité … notamment ^^
Ah, pas normal ça, normalement il devrait y avoir une box affichant « aucune valeur sur cette interval ». Je vais vérifier.
C’est normal, juste une histoire de design, ce n’est pas le même design pour les deux types d’affichage
Certaines requêtes sont quand même longues (988ms pour la plus longue!)
Je serais curieux de voir ce qui se passe. Je vais rajouter des logs dans le prochain build et on regardera ensemble ce qui prend du temps
Sinon, le navigateur n’autorisant que 5 requêtes par host en parallèle, c’est au final assez normal qu’on ait un tel waterfall, il y a des requêtes en attente forcément !
alors ça au final c’est pas lié à cette PR, c’est partout dans Gladys comme ça (je ne sais pas qui avait développé ça)
Tu confirmes que c’est bon de changer ça pour partout ?
Pourquoi pas, je l’avais retiré car je pensais que c’était inutile sur des longues durée ^^
Mais ça se rajoute !
Effectivement je pense qu’il vaut mieux une vue séparé à terme, genre « export CSV » quelque parts dans une autre vue de Gladys C’est un autre développement !
Alors du coup si, il y a bien une valeur d’envoyée. Et contrairement à une détection de mouvement qui signifierait « Pas de mouvement détecté », ici je reçois « 0 Wh » ce qui me permet de savoir qu’il n’y a pas eu de consommation durant la dernière heure. Donc tout me parait bon au niveau de l’affichage. Il n’y a qu’un souci avec l’axe des dates qui passe de l’affichage des heures à un affichage jour.
Parfait !!
Je confirme !! Le « K » est utilisé pour le « Kelvin » :