# Parlons de Gladys V4

**URL:** <https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578>\
**Category:** Développement\
**Created:** [Octobre 20, 2018, 9:24 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578 "2018-10-20T21:24:26Z")\
**Posts on this page:** 20\
**Page:** 16

<div class="post-metadata">

**Author:** ![peb](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/peb/32/3480_2.png) [@peb](https://community.gladysassistant.com/u/peb)\
**Post date:** [Mai 13, 2019, 9:50 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/351 "2019-05-13T09:50:11Z")

</div>

> [@pierre-gilles](#):
>
> En fait le problème est le même non? 😃

Oui, je reconnais 😃  
Ton idée de grouper les actions faites en même temps permettrait de palier à ces problèmes oui !  
Reste à voir ce que ça peut donner 🙂

> [@pierre-gilles](#):
>
> Aujourd’hui j’ai travaillé sur le process d’onboarding!

Côté UX c’est chouette, c’est simple et se concentre sur l’essentiel. Je verrai bien des champs «&nbsp;intelligents&nbsp;» qui vérifient en temps réel leur contenu (comme l’adresse mail de l’user ou la correspondance des mots de passe, et passe du rouge au vert quand c’est bon)

Concernant les services, si j’ai bien compris, ils seront tous installés de base, mais activable en fonction des besoins de l’utilisateur. Top !

Du coup, coté UI, je verrai bien également un élément visuel dans la tuile du service (page des intégrations) comme par exemple une barre d’une certaine couleur en bas de la tuile avec marqué le statut :

- Activé : Barre verte
- Activé, configuration requise : Barre jaune
- Activé, Warning : Barre orange (s’il y a un intérêt pour cette fonctionnalité)
- Activé, Erreur : Barre rouge (s’il y a un intérêt pour cette fonctionnalité)
- Désactivé : Barre grise

Ensuite, je verrai bien une séparation visuelle entre les services actifs, et les services disponibles, ce qui ferait 2 catégories la première au dessus de la seconde.

Concernant les technologies employées, comment s’organiseront l’intégration des différents objets des différentes marques / créations personnelles ?

Je prends l’exemple du Bluetooth : Y aura t il un service Bluetooth maître qui se charge de faire des connexions, et des services dépendants qui gèreront chaque produit ou fonctionnalité  
/marque comme la vérification de présence de l’utilisateur via les Nuts ou autre, les ampoules Awox, et des objets Bluetooth «&nbsp;maison&nbsp;»? Ou ce sera juste une séparation au niveau UI ?

> [@pierre-gilles](#):
>
> **Communication**
> 
> - Speak
> - Telegram
> - Snips?

Oh oui oui oui ! Snips 😃 (je ne dirais pas non à XMPP ou Matrix/Riot d’ailleurs 😛 )

Et je serai dispo pour tester l’alpha à sa sortie 😉

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Mai 13, 2019, 10:59 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/352 "2019-05-13T10:59:17Z")

</div>

C’est bon je viens de créer les 18 issues, une par service, à développer pour cette première alpha.

 ![54](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/5/5034b3333f81fe7282439a0d3f4b92c00c9898b8.png)

Le milestone est disponible ici =\>

[https://github.com/GladysAssistant/gladys-4-playground/milestone/4](https://github.com/GladysAssistant/gladys-4-playground/milestone/4)

Si vous voulez donner un coup de main, et avez des disponibilités dans les jours/semaines qui arrivent, n’hésitez pas à mettre un commentaire dans l’issue qui vous intéresse pour indiquer que vous prenez le lead sur le développement de ce service 🙂 ça évitera que vous soyez plusieurs à travailler sur un même sujet. Et dès que vous commencez, je vous invite à créer une PR (que vous marquez comme «&nbsp;en cours&nbsp;»).

Je m’occuperais des services restants, mais bon le plus de coup de main vous me filerez, le plus vite Gladys 4 sortira 😃

> [@peb](#):
>
> Je prends l’exemple du Bluetooth : Y aura t il un service Bluetooth maître qui se charge de faire des connexions, et des services dépendants qui gèreront chaque produit ou fonctionnalité  
> /marque comme la vérification de présence de l’utilisateur via les Nuts ou autre, les ampoules Awox, et des objets Bluetooth “maison”? Ou ce sera juste une séparation au niveau UI ?

On va faire au cas par cas par service. A priori le service bluetooth ça sera comme le service Z-Wave, tout sera dans le code du dossier «&nbsp;bluetooth&nbsp;». Il y aura une séparation dans l’UI par clarté, mais derrière ça sera un seul service.

> [@peb](#):
>
> (je ne dirais pas non à XMPP ou Matrix/Riot d’ailleurs 😛 )

Commençons déjà par l’essentiel. On parle avant tout d’une alpha, et le temps de développement de chacun est limité. Mais si tu veux développer ces intégrations ce sera avec plaisir qu’elles seront intégrées 😉

---

<div class="post-metadata">

**Author:** ![spenceur](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/spenceur/32/1961_2.png) [@spenceur](https://community.gladysassistant.com/u/spenceur)\
**Post date:** [Mai 13, 2019, 8:02 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/353 "2019-05-13T20:02:03Z")

</div>

Salut @pierre-gilles,

Dans Gladys 4 tu stocks les actions des scenes en base directement au format JSON.  
Cela me semble en effet bien pratique a parser et dev.  
En revanche, si on supprime un device pour une raison x ou y raison.  
Comment gères tu le cas dans ta scene ?

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Mai 14, 2019, 2:04 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/354 "2019-05-14T02:04:11Z")

</div>

> [@spenceur](#):
>
> En revanche, si on supprime un device pour une raison x ou y raison.  
> Comment gères tu le cas dans ta scene ?

Bonne question!

On pourrait faire un passage à la suppression d’un device sur toutes les scènes pour chercher si le périphérique est utilisé, et si oui empêcher la suppression.

---

<div class="post-metadata">

**Author:** ![spenceur](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/spenceur/32/1961_2.png) [@spenceur](https://community.gladysassistant.com/u/spenceur)\
**Post date:** [Mai 14, 2019, 6:55 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/355 "2019-05-14T06:55:16Z")

</div>

Cela ne risque til pas d’être super lourd ?  
Il me semble que dans la communauté un mec a un camping.  
Comment cela se passe til s’il a une multitude de scène avec chacune une multitude d’action ?

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Mai 14, 2019, 7:23 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/356 "2019-05-14T07:23:07Z")

</div>

Les scène sont en RAM. Parcourir même 1 million d’éléments en pure JS, je pense qu’on parle en millisecondes 🙂

Après ça se benchmark, il ne faut pas que ce soit lourd.

L’autre solution serait juste d’assumer que le cas peut arriver, et de gérer le cas intelligement si jamais une scène s’exécute et que le device n’existe pas.

A mon avis il faudrait faire les deux.

---

<div class="post-metadata">

**Author:** ![AlexTrovato](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/alextrovato/32/10705_2.png) [@AlexTrovato](https://community.gladysassistant.com/u/AlexTrovato)\
**Post date:** [Mai 14, 2019, 7:26 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/357 "2019-05-14T07:26:09Z")

</div>

Ou peut-être insérer l’information dans le device ?  
device = {  
…,  
scenes: [1, 5, 8]  
}

En gros faire un lien dans les deux sens.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Mai 14, 2019, 7:27 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/358 "2019-05-14T07:27:43Z")

</div>

Je pense pas que dupliquer la donnée soit la meilleure des solutions. Là ça veut dire qu’il faut maintenir cette liste en plus de l’avoir dans les scène. On a encore plus de risques de corruptions de données

---

<div class="post-metadata">

**Author:** ![lmilcent](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/lmilcent/32/7023_2.png) [@lmilcent](https://community.gladysassistant.com/u/lmilcent)\
**Post date:** [Mai 14, 2019, 7:43 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/359 "2019-05-14T07:43:43Z")

</div>

J’allais le proposer justement :

- Parcourir les scènes et avertir (ou bloquer) lorsqu’un utilisateur veut supprimer un équipement utilisé
- Prévoir le cas où un équipement n’existe pas dans une scène (comme s’il ne fonctionnait pas finalement), pour malgré tout permettre son exécution avec un avertissement.  
Car si la scène est complexe et accède à plusieurs équipements, même s’il en manque un il est souvent encore possible de l’exécuter.

---

<div class="post-metadata">

**Author:** ![peb](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/peb/32/3480_2.png) [@peb](https://community.gladysassistant.com/u/peb)\
**Post date:** [Mai 14, 2019, 8:41 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/360 "2019-05-14T08:41:03Z")

</div>

> [@pierre-gilles](#):
>
> Commençons déjà par l’essentiel.

Absolument 😉

> [@lmilcent](#):
>
> Prévoir le cas où un équipement n’existe pas dans une scène

On peut imaginer des équipements «&nbsp;nécessaires&nbsp;» et «&nbsp;facultatifs&nbsp;» à l’exécution d’une scène : dans le premier cas, la scène s’arrête et se mets en erreur, dans le second cas, elle s’exécute malgré tout (et renvoie un warning ?)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Mai 14, 2019, 9:56 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/361 "2019-05-14T09:56:12Z")

</div>

> [@peb](#):
>
> On peut imaginer des équipements “nécessaires” et “facultatifs” à l’exécution d’une scène : dans le premier cas, la scène s’arrête et se mets en erreur, dans le second cas, elle s’exécute malgré tout (et renvoie un warning ?)

Je ne vois pas l’idée ^^

Gardons les choses simples 🙂 Là on parle d’un edge case qui faut gérer, l’utilisateur n’a pas à se préoccuper de tout ça.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Mai 14, 2019, 2:14 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/362 "2019-05-14T14:14:41Z")

</div>

Salut à tous!

Aujourd’hui j’ai travaillé sur l’UI notamment sur la façon dont le/les dashboard seront organisé et la façon dont l’utilisateur pourra les éditer.

Et, j’ai un petit dilemme.

**Remarque importante**

Dans Gladys 4, je compte rendre possible la création de deux types de dashboard:

- Le dashboard qu’on connait tous, le dashboard d’accueil. Il est fait pour des box assez large et présente 3 colonnes. Il sera probablement possible de créer plusieurs dashboard d’accueil, mais pas des millions non plus pour que ça reste organisé. En gros, c’est ça:

 ![18](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/4/4569319b6c0b8e11d7baccd218685d749b1db873.jpeg)

- Un dashboard “full screen”, pratique pour les tablettes ou écrans muraux Gladys, avec des box plus petites et plus serré. Pratique pour condenser de l’information sur un mur, et avoir des contrôles rapides. En gros, un truc de ce style (image prise sur google image, ce sera pas ça):

![33a3ff5cc5499ed9d25d6b58c66ca1ef](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/d/dc0cd31724886f0bd42ed8dffbdcd99ff015b4e0.jpeg)

Ici, je parlerais du **dashboard d’accueil.**

**La question**

Le débat se situe au niveau de la grille utilisée, pour cela deux façons de faire.

- **System n°1** : Soit on a 3 colonnes, et sur chaque colonne l’utilisateur répartie et fige lui même ou chaque box ira.

C’est à dire:

 ![56%20copy](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/6/67bb0c32b388f0f18d185e58ffe7cf6de8eefe88.jpeg)

Chaque box a donc 2 coordonnées, X et Y. Rien de sorcier.

- **Système n°2** : Soit on a 3 colonnes, et l’utilisateur choisi juste l’ordre des box, et ensuite c’est le navigateur qui place intelligemment les boxs en fonction de l’écran et de la taille dynamique de chaque box.

 ![56](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/2/23239b0896f6a2795d573c2925a93aa92f5aa477.jpeg)

La box n’a plus qu’une cordonnée, X.

Le placement est fait grâce aux “column-card” de bootstrap. C’est super smart et ça tente de mettre le maximum de donnée à l’écran en condensant tout.

C’est ce que j’utilise pour le Gladys Gateway par exemple.

**Question** : Qu’en pensez vous?

**Le mode édition**

Pour éditer les box, contrairement à Gladys 3, il ne sera plus nécessaire d’aller dans les paramètres, ce sera directement dans l’interface.

Je pense à un bouton “Edit”:

 ![13](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/7/708927e33f48af5965011b7258fa79fa5cc7a577.jpeg)

Qui quand on clique dessus, mets toutes les boxs en mode édition:

 ![44](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/c/c96752f8ef33bd5925e72b7f0a87da6781cd6103.jpeg)

(juste la box user presence ici, c’est un exemple)

Pour l’instant je n’ai pas encore réussi à faire du drag and drop propre malheureusement, si quelqu’un est expert je suis preneur ^^ En attendant j’ai mis un système de flèche “Up” et “Down” pour bouger la box.

J’aimerais votre avis sur tout ça 🙂

---

<div class="post-metadata">

**Author:** ![lmilcent](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/lmilcent/32/7023_2.png) [@lmilcent](https://community.gladysassistant.com/u/lmilcent)\
**Post date:** [Mai 14, 2019, 2:43 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/363 "2019-05-14T14:43:53Z")

</div>

> [@pierre-gilles](#):
>
> encore réussi à faire du drag and drop propre malheureusement, si quelqu’un est expert je suis preneur ^^ En attendant j’ai mis un système de flèche “Up” et “Down” pour bouger la box.

Je suis partisan du «&nbsp;drag-and-drop&nbsp;» sur 3 colonnes. Je trouve que niveau utilisateur et à l’utilisation c’est beaucoup plus parlant.  
Quand je choisi de mettre une box «&nbsp;là&nbsp;», elle restera presque toujours «&nbsp;là&nbsp;». Sauf si l’écran devient soudainement plus petit ou plus grand, bien sur.

En fait, j’aime bien pouvoir paramétrer mon dashboard et le retrouver toujours dans le même état.

---

<div class="post-metadata">

**Author:** ![Jean34](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/jean34/32/3349_2.png) [@Jean34](https://community.gladysassistant.com/u/Jean34)\
**Post date:** [Mai 14, 2019, 4:21 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/364 "2019-05-14T16:21:44Z")

</div>

Salut, Perso je préfère la solution X et Y. Ça ressemble pas mal à Gladys 3 et surtout, comme dit plus haut, j’aime que les choses restent où je les aient mises ^^.

Après pour l’édition un drag on drop c’est top, mais les fleches ne me dérangent pas 🙂

---

<div class="post-metadata">

**Author:** ![Hamtaro](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/hamtaro/32/2373_2.png) [@Hamtaro](https://community.gladysassistant.com/u/Hamtaro)\
**Post date:** [Mai 15, 2019, 5:03 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/365 "2019-05-15T05:03:50Z")

</div>

J’aime bien la deuxième solution, moins de taf en config, Gladys fait un premier jet et si ça convient pas, il suffit de réarranger par la suite en drag’n drop.  
Si j’ai bien compris, une fois qu’on les bouge, elles restent fixes ?

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Mai 15, 2019, 5:45 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/366 "2019-05-15T05:45:20Z")

</div>

A priori je vais partir sur la solution X, Y.

> [@Hamtaro](#):
>
> Si j’ai bien compris, une fois qu’on les bouge, elles restent fixes ?

Justement, non! En fonction de la taille du contenu et de la taille de l’écran, les boxs sont arrangés différemment.

Dans l’exemple que j’ai donné, par exemple disons que si la box 5 était bien plus grosse, le CSS fait que ça irait se réarranger et mettre par exemple la box 7 au dessus de la box 8 pour que l’écran soit bien couvert de façon homogène.

Je pense que ça risque d’être pas clair. La solution «&nbsp;X, Y&nbsp;» est plus claire et le dashboard bougera pas. (sauf sur mobile mais ça c’est autre chose)

---

<div class="post-metadata">

**Author:** ![VonOx](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/vonox/32/10128_2.png) [@VonOx](https://community.gladysassistant.com/u/VonOx)\
**Post date:** [Mai 15, 2019, 6:38 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/367 "2019-05-15T06:38:32Z")

</div>

Drag and drop, je me met à la place de l’utilisateur qui je penses en 2019 s’attend à ça plutôt qu’un système de coordonnées. ( je sais c’est pas simple)

---

<div class="post-metadata">

**Author:** ![AlexTrovato](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/alextrovato/32/10705_2.png) [@AlexTrovato](https://community.gladysassistant.com/u/AlexTrovato)\
**Post date:** [Mai 15, 2019, 6:54 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/368 "2019-05-15T06:54:34Z")

</div>

A moins qu’il y ai un motivé, je suis prêt à prendre le sujet du Drag&Drop, avec preact, on doit pouvoir trouver facilement des exemples, mais je pense que ce sera dans un second temps, une issue sur GitHub fera l’affaire 😉

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Mai 15, 2019, 7:33 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/369 "2019-05-15T07:33:31Z")

</div>

> [@VonOx](#):
>
> Drag and drop, je me met à la place de l’utilisateur qui je penses en 2019 s’attend à ça plutôt qu’un système de coordonnées. ( je sais c’est pas simple)

J’ai pas dis que ce sera un système de coordonnée 🙂

Pour l’instant l’interface d’édition ressemble à ça:

 ![04](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/6/61487a7f0cb4b62c806515e95c7708bac91c4dd2.png)

Tu as les petites flèches (up/down) qui te permettent de bouger les boxs.

J’ai commencé à jouer avec le drag and drop, j’ai pas trouvé de librairie sympa mais je pense qu’en natif on devrait s’en sortir. Après j’aurais sûrement besoin d’aide si on veut des animations sympas, c’set pas ma spécialité 🙂

@AlexTrovato C’est gentil, après j’ai besoin de toi plus pour le bluetooth pour l’instant 😃

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Mai 15, 2019, 9:00 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/370 "2019-05-15T09:00:16Z")

</div>

Petite démo vidéo du mode édition actuelle :

[https://gifyu.com/image/9iEa](https://gifyu.com/image/9iEa)

Attention le gif fait 22 Mo donc je l’ai pas mis ici 🙂

[Page précédente](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578.md?page=15)

[Page suivante](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578.md?page=17)
