Aide création dashboard dans design personnalisé (bonnes pratiques)

Yes merci @ajja17orange, elles s’adressent aussi globalement à la communauté, si quelqu’un de calé dans ces domaines passe par là :wink:

J’y suis pas encore, mais j’aime bien anticiper du mieux que je peux et je pense que d’ici quelques temps j’en mettrai une autre à l’étage (quand la rénovation sera avancée…). Du coup j’imaginais que 2 personnes puisse régler du chauffage en simultané par exemple, au RDC et R+1 sans se parler.

Mais peut-etre que je vais trop loin, un bon moyen de ne pas se prendre la tête serait de n’avoir qu’une tablette et basta :sweat_smile:

Hello @tou(te)s,

:exploding_head: :blush: :grey_question:

Je suis un peu coincé dans mon avancement, car j’ai des questions de base de noob auxquelles je n’arrive pas à répondre. J’ai besoin d’aide et de conseils, d’avis éclairés, bref d’un (ou plusieurs!) oeil extérieur :face_with_peeking_eye: , pour m’aider à prendre une décision sur les questions / remarques ci-dessous. Désolé en avance si c’est un peu long, j’essaye d’être le plus possible clair dans mon raisonnement :blush:

Maintenant que mon design est à peu près calé « esthétiquement » (ça tourne en statique et ressemble à ce que je veux pour une v1, affichage OK FullyKiosk sans scrollbar, etc…), j’ai des questions existentielles sur la façon de relier cette interface à Jeedom pour lui donner vie.

Il y a plusieurs façons de faire, de l’envisager, j’en vois 2 principales. Je vous les expose en détail ci-dessous, en gardant en tête qu’il va falloir trancher pour ensuite dérouler les modifs sur tout le dashboard :wink:

Mon point d’entrée est la valeur de température de la pièce / zone, dans la première tuile tout en haut à gauche (plus tard celle de consigne sera visible juste à côté, j’ai voulu pour l’instant garder une valeur simple de température de sonde pour l’exemple…):

Je veux lier les 25 deg. C à Jeedom, pour avoir la valeur évoluer en Live.
Et donc 2 façons d’y parvenir (après avoir supprimé la valeur statique de mon code, conservé la <div></div> et conservé le style CSS à appliquer pour garder le rendu esthétique) :

1. La méthode "interface graphique" :

Je fait « clique droit » sur ma page de design, « Ajouter une commmande » (ou ce qu’on veut d’autre pour la suite) :

De là, je choisis celle qui m’intéresse (= température de la cuisine) :

Pour info je l’ai piquée depuis mon équipement thermostat, j’aurai pu aussi depuis l’équipement de ma sonde, je n’ai pas de préférence. Comme l’un (thermostat) affiche aussi l’autre (sonde), c’est la même dans Jeedom si je ne me trompe pas (même ID de commande = ici #554).

Elle apparait « non formatée » évidemment, en tout petit en haut à gauche de l’image suivante.
Donc « clique droit » sur l’élément, et « paramètres d’affichage » :

Puis j’applique une surcouche CSS qui va bien pour modifier le rendu (en prenant soin de cocher fond transparent, texte blanc, et masquer le nom…) :

J’obtiens bien ce que je souhaite (avec en prime l’accès à l’historique des valeurs au survol (et popup du core avec diagramme en cliquant dessus…) :

2. La méthode "code avec requêtes API" :

Cette fois, je n’utilise pas les outils graphique standard Jeedom, et je reprends mon code html en remplaçant la valeur statique de la <div> prévue dans ma trame par un appel API :

Donc, dans le code html de la page du dashboard, cela nous donne par exemple :

Traduction en quelques mots :

  • Je fais un requête API toute simple d’une valeur via la commande fetch(Url)
    (pas trouvé mieux pour l’instant pour un code compact…).
  • Conversion en code json
    (peut-être étape inutile ?)
  • Insertion dans le html à l’intérieur de la balise <t id="tempajax"></t>

Le résultat est identique visuellement à la méthode 1, oui, mais je perds pas mal au change (pour l’instant et sans code supplémentaire) :

  • je n’ai pas accès à l’historique (etc, normal puisque je fais juste un appel « brut » de la data seule). Pas forcément rédhibitoire pour un usage tablette familiale… J’ai suffisamment de moyens autres pour aller chercher les infos dans Jeedom si nécessaire, sur ordinateur par exemple.

  • la valeur ne change pas « en live » et nécessite un rechargement de la page (il faut une nouvelle requête pour récupérer l’info à chaque fois…). Cela doit pouvoir se modifier avec d’autres éléments de code. Ou pas, alternative possible en forçant dans FullyKiosk un rechargement de la page systematique après la sortie de veille (déjà testé), juste pas l’idéal, le mieux serait de fairre comme un cron avec une mise à jour régulière des valeurs (d’ailleurs faudrait-il : a / aller chercher la valeur, ou b / pusher la valeur ? Beaucoup de possibilités en code…)

Synthèse de ma réflexion :

Ces x2 façons de faire sont deux approches assez différentes, avec chacune ses avantages et ses inconvénients, de mon point de vue. D’autant que j’essaye de raisonner « à grande échelle » lorsque toutes les tuiles du dashboard seront peuplées, avec chacune ses multiples data…

- Méthode 1 : interface graphique

    Avantages : plutôt facile et rapide à mettre en place, liée au core de Jeedom,

    Inconvénients : moins précis pour le calage des éléments pour les maniacs comme moi (on les positionne à la mano), lourdeur des surcouches graphiques non nécessaires (ajout + multiplication des équipements, etc) qui multiplient les portions de code à interpréter par le navigateur, surdose d’infos pas forcement nécessaire (accès graphique historique, etc), obligation d’héberger dashboard sur le RPI en production, code source éclaté dans autant de popup à renseigner pour les personnaliser qu’il y a de data sur les tuiles, quid compatibilité du design si passage à Jeedom v5 ou v6 ?

- Méthode 2 : code avec requêtes API

    Avantages : plus flexible, code allégé, indépendant du core pour la partie graphique, possible de délocaliser l'hébergement des html + CSS du design en dehors du RPI (en réseau local, ou même externe d'ailleurs avec le principe des requêtes API), code source regroupé au même endroit,

    Inconvénients : besoin de compétences supplémentaires en code pour le refresh des valeurs (de mon côté en tout cas), possible lourdeur des multiples requêtes API à chaque chargement de page ? (à me confirmer ?),

Évidemment, j’aurai tendance à privilégier la méthode la moins gourmande en ressources in fine.
Pour l’instant, j’envisage d’héberger mon design sur le Jeedom, en laissant les pages de code dans les répertoires prévus.

Si de bonnes ames veulent bien se pencher sur mon sujet, je vous en remercie grandement d’avance !
Au plaisir d’échanger ensemble

:pray: :wink:

Bonsoir,

Beau projet :+1:t2:

L’idée qui me vient en tête pour répondre en partie a tes questions serai de passer par la création d’un plugin !
avec dans celui-ci des cmd que l’user importerai …
Ainsi grâce au plugin, tu aurais la possibilité d’accéder a la fonction toHtml() et d’y intégrer toute les personnalisations que tu souhaites (css…) !

2 « J'aime »

Merci beaucoup @Phpvarious :wink:

Tu veux dire un plugin qui permettrai de glisser une commande au choix dans une tuile ? (Excuse moi c’est un peu flou pour moi ce qu’un plugin pourrait faire dans mon projet…)

Toi qui maîtrise le code comme sa langue maternelle (!), aurais-tu une préférence entre la
méthode graphique ou la méthode par requête API pour l’implémentation des commandes sur le Dashboard ? (cf. mon dernier post).

Je sais que ma méthode API est trop succincte et qu’il manque des choses pour la rendre dynamique. Mais ces choses qu’il faut ajouter ne la rendraient-elle pas aussi lourde que la méthode graphique au final ?!

Avec un plugin tu aurait la possibilité de créer un équipement avec les éléments directement intégré dedans (css, js…) et de pouvoir gérer l’affichage (tuile) grâce a la fonction toHtml(), en gros tu aurait la possibilité d’agir directement sur la tuile, contrairement au widget … qui est accessible a tous les users mais qui agit que sur une commande.

Comme tu l’a précisé dans tes Post précèdent, le choix de la méthode est déterminante en fonction de l’utilisation. Par exemple si tu exporte cette page a l’extérieur, la méthode ne serait forcement pas la même, et l’utilisation de l’API serait indispensable et qui dit exportation du code dit aussi que certaine clef API seront potentiellement exposées (code source…), il faudra donc bien sécurisé cette partie. En restant en Local (design) tu n’a pas a te préoccuper de cette partie, perso je choisirai cette méthode sans hésitation.

C’est aussi mon avis, pour la rendre plus dynamique il faudrait plutôt utiliser les fonctions js du core, mais effectivement sa reviendrai a utiliser la méthode graphique.
dans l’idéale je choisirai la méthode graphique, plus simple a mettre en place pour un simple user, permet aussi la personnalisation de l’affichage de la commande dans la tuile (grid), mais le gros soucis c’est que sa oblige l’user d’afficher la commande avec un widget « line » par exemple, hors sur le dashboard il préfèrera peut être le widget « defaut »

1 « J'aime »

Merci pour ta contrib @Phpvarious :wink:

je vais m’orienter dans cette direction, car elle a l’avantage d’être aussi bcp plus rapide pour moi à ce stade à mettre en place, et ça compte :sweat_smile:

Je laisse le fil ouvert pour vous montrer mon avancement.
Si d’autres on des remarques / avis d’ici là, je reste preneur :wink:
A très vite

Hello,

Alors il est fini ce beau dashbord :wink:

Pour l’instant je m’étais concentré sur le meuble d’entrée qui va accueillir la tablette :wink:

Avec double cloison placo + porte à galandage cachée derrière, arrivee élec dans le meuble de gauche blanc, tout ça tout ça :sweat_smile:

Il me reste l’intégration de la tablette dans la niche vide visible du meuble bois au centre, avec prise commandée et scénario pour recharge batterie.

Ensuite, je me remets au design et je vous partage, c’est promis ! :slight_smile:

2 « J'aime »

Salut @alexcrp, Alors cette intégration :slight_smile: ?

J’ai hâte de voir ça! Je galère autant sur le design que sur la façon d’intégrer la tablette à la maison

Merci, moi aussi j’ai hâte !

Mais je suis un peu sur tous les fronts en ce moment dans cette entrée/couloir (voir ici mon sujet de carillon sonnette en POE…)
Plus l’espace est petit, plus c’est long et compliqué j’ai l’impression :sweat_smile:

Promis je vous posterai des avancées bientôt :+1:

Avec une notion du bientôt relative :smiley:

Bon, de l’eau à coulé sous les ponts depuis !
Mais j’ai avancé :smiling_face:

x2 éléments imprimés en 3D maintiennent la tablette à droite et à gauche, ils sont au préalable vissés sur le tasseau de bois horizontal, lui même vissé avec 2 équerres dans la niche du meubles (sur les flancs latéraux avec des vis à bois « courtes » de 16mm pour ne pas traverser les panneaux…)

L’envers du décor en immersion :

Les petits trous en périphérie doivent accueillir des micros-aimants, qui maintiendront un cadre en plexi 3mm noir mat. J’attends de le faire découper au laser pour le fixer, ça fera la finition uniforme :wink:

J’avais envie de donner l’impression que la tablette « flotte » dans le volume, ça marche assez bien, le câble coudé en bas à gauche est assez discret et ne se verra plus une fois le cadre de finition posé…

Si cela peut vous intéresser, je vous partage le fichier 3D du support. Pour mémoire, il est adapté à une Teclast T40 Pro, il fit parfaitement au mm près. Je pense que cela peut marcher pour une M40 (elle à l’air d’avoir la même coque), voir d’autres de chez Teclast, mais à vérifier sans garantie de fonctionnement !

Ci-après :

Différents trous oblongs pour aider au réglages, losanges pour alignement facile sur trait de niveau à visible au travers l’arrière, etc.
/!\ Attention, les deux parties « coulissent » de part et d’autre de la tablette.

« Mais comment faire pour rentrer la tablette dans la niche une fois que le support est vissé sur le tasseau ?! »

= en « jouant » un peu sur la déformation du plastique, et en desserrant très légèrement la partie de droite (au gauche) sur les trous oblongs horizontaux, de façon à la remettre en place en la faisant glisser en forçant… Un peu rude mais ça a marché dans mon cas :slight_smile:

On peut mieux faire en glissant la tablette par le haut, en supprimant le bourrelet sur tout le linéaire supérieur. On perdra un peu en maintien, mais pas rédhibitoire…

1 « J'aime »

Salut @tous,

Quelques captures d’écran pour vous montrer mon avancement.
Beaucoup beaucoup de choses à faire encore, mais c’est en service et remplit ses fonctions de base donc pour l’instant très content.

Il faut considérer « 3 couches » d’interactions :
1. Ecran de veille : avec un minimum d’info au quotidien (avec extinction totale si nuit ou absence)
2. Dashboard de tuiles « thématiques » lorsqu’on clique sur l’écran de veille
3. Les pages détaillées : qui souvrent lors d’un appui sur une tuile.

Principe :
1 clic sur ecran de veille → Dashboard, puis re-clic sur tuile → Page détaillée
1 clic sur retour (en bas à droite systématiquement) pour revenir au Dashboard
→ Efficace pour toute la famille, et pas trop surchargé (pour linstant !)… :wink:

Je vous poste en « quick and dirty » (valable aussi pour le code ahah :sweat_smile:) ci-dessous un florilège de screenshots. N’hésitez-pas si vous avez des questions et si je peux aider à mon tour.
Bon weekend !

  1. Veille :

  2. Dashboard :

  3. Page détaillée


Reste à faire :

  • nourrir et détailler chaque page qui se cache derrière une tuile.
    Pour l’instant, les pages se contentent des équipements de base sur fond neutre, avec le lien « retour » en bas à droite (exemple carburant et thermostat plus haut…).
  • améliorer le design du dashboard : quelques touches manquent, comme par exemple ajouter des visuels de nuages / soleil / pluie selon météo, etc.
  • nettoyer le code : pour le coup pas du tout la priorité, le dashboard est une seule page html avec de nombreuses requêtes API en java avec les ID de commandes infos, pas forcément optimisé mais ça marche et se met à jour en temps réel.
2 « J'aime »

Et le principe du cadre de finition du supprt imprimé en 3D : une façade constituée d’un bandeau en Plexiglas noir mat épaisseur 3mm, coupée au laser et sertie d’aimants neodimes :wink: (des défonces de 0.5mm ont été ménagées au laser en gravure, un point de colle araldite / super glue à suffit pour les aimants…)


Bonjour,
Belle intégration de ta tablette !*
Une petite question : comment as-tu fait pour intégrer le prix des carburants sur une carte ?
J’ai le plugin-prixcarburants
David

Merci :wink:
Alors pour ceci ce n’est pas très compliqué « dans l’idée »:

  • la carte est une image de fond jpeg statique (préparée grâce à ce site : https://snazzymaps.com/ )
  • les point rouges sont sur le jpeg en dur (ajout Photoshop…)
  • les rectangles rouges avec les prix sont les valeurs du plugin-prixcarburants que j’appelle, positionnées + formatées / stylisés avec le css (bord arrondis, couleur, taille police, justification, etc).
  • la tuile a droite avec le meilleur tarif dispo est un appel d’après une commande info d’un virtuel, basée elle même sur une variable que je créé quotidiennement (voir ce sujet du forum).

Si tu veux que j’explique davantage le code dis-moi :slight_smile:

Ah oui bien joué, je comprends mieux maintenant !
Ca doit être dans mes cordes…si j’ai un soucis je te le dis !
Merci,
David

ça donne vraiment envie de se mettre au design

Merci pour le compliment :wink:

1 « J'aime »

Sympa, ça permet de se remettre en question :). J’aime bien. A méditer quand j’aurai du temps pour redévelopper un design.

Oh merci ! Venant de toi c’est un compliment :smiling_face:

1 « J'aime »