Evolution de Gladys

Salut à tous !

Voila (enfin) des news du projet :slight_smile:

L’architecture de Gladys

Suite à une longue et mûre réflexion, j’ai décidé de refondre l’architecture de Gladys. Le combo NodeJS/PHP était sympa, rapide à coder et à débugger, mais malheureusement, pour faire quelque chose de propre, optimisé, et pro, ça n’était pas adapté. Avant de développer une fonctionnalité, j’avais toujours à me demander “est ce que je le fais en JS, ou en PHP ?”, c’était bien au début, mais au vu des fonctionnalités que j’aimerais ajouter à l’avenir, ça n’était vraiment pas pratique.

L’architecture actuelle souffre aussi d’un autre problème : Je ne sais pas si vous avez vu, mais chaque classe comporte quasiment toujours les fonctions “Create, Get, Update et delete”, autrement dit, les 4 fameuses fonctions de base CRUD (Create Read Update Delete). Devoir les créer à chaque fois était contraignant, chaque nouvelle fonctionnalité demandant de réécrire ces fonctions basiques pour la classe, ce qui n’était pas pratique, long, et pas propre.

Je ne sais pas si vous voyez ou je veux en venir, mais Gladys nécessite une chose : un framework. Un framework va nous permettre de donner une structure propre au projet, et de ne pas réinventer la roue à chaque fois. Mais alors, on va utiliser un framework PHP pour Gladys ?
Je m’étais refusé à en utiliser un au début de Gladys, pour des questions de performances (Le Raspberry étant peu puissant, on n’imagine pas faire tourner Symfony dessus!)
Ainsi la réponse est bien évidemment [color=#FF0000]NON[/color] :smiley:

Nous allons utiliser un framework NodeJS : Sails.js ! C’est à dire que même la partie interface web de Gladys sera géré en NodeJS.
Ce framework va nous permettre de développer plus rapidement, et d’organiser mieux notre code. Plus besoin de réecrire à chaque nouveau modèle toutes les fonctions basiques, elles sont gérées automatiquement par Sails, plus besoin de vérifier les données, Sails.js le fait, etc… Sails.js a aussi toute une approche “temps réel”, intègre socket.io en natif, bref,ce framework est fait pour Gladys !

Les fonctionnalités

J’ai décidé de donner à cette nouvelle version une approche très Cloud et quantified self. L’idée est vraiment que si jamais on voulait un assistant Gladys “global”, gérant plusieurs maisons (résidence principale, maison de vacances, etc…), ça ne poserait aucuns problèmes. Gladys devient plus “omniscient, et interconnecté”, et au dela du multi-utilisateur, la gestion de plusieurs logements.
J’en profite pour vous donner un petit schéma de la base de donnée, dites moi ce que vous en pensez ! (si vous ne voyez pas tout, clic-droit sur l’image -> ouvrir dans un nouvel onglet)

Je détaille certains points :

  • LifeEvent : Cela correspond à des évènements du quotidien lié à un utilisateur, que Gladys enregistre : Heure du lever, heure du coucher, etc… Qui permettent à Gladys de faire des logs sur la vie de l’utilisateur (Gladys devient un peu BigBrother, désolé!), ce qui permet surtout de ressortir des stats : temps moyen de sommeil, etc… et avertir l’utilisateur si il ne dort pas assez (en fonction de son âge, et des recommandations de l’OMS par exemple). Mais ce n’est qu’un exemple, les LifeEvent, c’est à peu près tout ce que Gladys peut enregistrer, et qui permettrait de faire des statistiques pour mieux connaitre l’utilisateur, et permettre l’approche prédictive de Gladys.
    -Token : Un token de connexion qui permet à un objet connecté d’utiliser l’API en tant qu’un utilisateur, sans s’identifier.

Voilà c’est à peu près tout, j’espère que j’ai été clair! Si vous avez des questions/réactions, n’hésitez pas en commentaire :wink:

[EDIT 20/01/2015] Changement de l’image du modèle de Gladys

Beau boulot, gros boulot, énorme boulot !!
Admin bravo ! Il y a beaucoup de réflexion, ça à l’air super propre et super bien pensé…
Vraiment bien joué…

Merci ! ça fait plaisir :wink:

Pas mal LifeEvent, par contre sans vouloir être parano ça veut aussi dire faire bien attention à ce qui sera en public de la raspberry sur Internet car donnée privées = interessant pour les hackers vu que ça se revend très cher

Tout à fait :wink:

En matières de sécurité, c’est plutôt bien fait avec Sails.js, on restreint l’accès comme on veut à l’aide de “policies”, c’est vraiment bien géré !

Wahou c’est super bien pensé, moi qui m’étais un peu désintéressé du projet, voilà de quoi me mettre de bonne humeur!
On voit vraiment qu’il y a du progrès qui se fait et je sens que dans quelques temps on aura quelque chose de très “user-friendly” qui permettra aussi à des personnes qui n’y connaissent rien à l’informatique de mettre en en place leur système Gladys :smiley:

Par ailleurs, j’ai un petit projet en tête qui serai surtout utile aux personnes plus agées, j’y ai pensé à cause de la grand-mère d’un ami. Elle a toujours beaucoup de mal à prendre les bonnes pilules au bon moment, par exemple elle prend celles du matin le soir ou vice-versa. J’ai donc réfléchi à une solution.

Mon idée est de construire un pilulier automatique qui contient les pilules dans une visse d’Archimède qui avance d’un tour à chaque fois qu’on appuie sur un bouton et dispense les bons médocs.
Le tout serai doté d’un système d’avertissement sonore, si l’appareil n’a pas donné les pilules pendant la plage horaire préprogrammée mais aussi s’il est encore trop tôt pour les prendre.
Je pensai peut-être le rendre compatible avec Gladys qui pourrait alors envoyer des notifications à l’utilisateur en plus du signal sonore.

Enfin bref, tout cela n’est qu’une idée, qui ne verra peut-être jamais le jour…

Tout à fait c’est le but ! Le prochain Gladys sera beaucoup plus simple, et surtout plus complet. Et grâce à sails.js, beaucoup plus rapide et sécurisé.

L’idée du pilulier est sympa, avec un arduino, un moteur, et un récepteur RF 433MHz, on peut faire un pilulier connecté à Gladys, et pour une quinzaine d’euros max à mon avis!

Est-ce qu’on a des news pour la release v2 :slight_smile: ?

J’avance beaucoup ! Pour te donner une indication toutes les fonctionnalités de Gladys v2 sont implémentée et la v2 est en quelque sorte “terminée”.

On va dire que je peaufine tout ce qui est autour : le système de mise à jour, l’assistant d’installation, les traductions EN/FR vu que Gladys est international, etc… :slight_smile:

Une fois que j’estimerais que la v2 est prête, je sortirais une preview développeur pour trouver les bugs, et pour pouvoir commencer à développer des modules. Pendant ce temps je préparerais le site internet pour la v2 (en version FR et EN) , le nouveau store de modules, et la communication pour cette nouvelle version.

Super nouvelle !
Et comment accède t’on à la preview développeur :slight_smile: ?

Si tu es intéressé, je t’ajoute à la liste des devs pour la preview ! :slight_smile: dis moi.

Après je ne livrerais que le code source pour la preview de la v2, ça sera a toi d’installer Gladys.

Pour le lancement “officiel” , je packagerais Gladys dans une image raspbian toute prête ou il faut juste cloner l’image sur sa carte SD pour faciliter l’installation.

Can’t wait :wink:
Vivement la v2 pour lancer un test sur pi et prises chacon !

Bien sûr que je suis intéressé :slight_smile:
Je me débrouillerai t’en fais pas!

Tu fais la traduction par toi même ?

Ca c’est une nouvelle qui fait plaisir !!

C est super

Tu a une idée de quand ça sortira :wink: ?

ça me fait plaisir aussi d’enfin voir la sortie de cette v2 se profiler ! :slight_smile:

@BillyCallahan : Je traduis tout moi même mais c’est pas très long, j’ai pris la bonne habitude de systématiquement rentrer dans mes fichiers de langage en même temps que je code les version française et anglaise des textes, donc il me reste que 2/3 endroits à traduire, c’est pas la chose la plus longue à faire.

Pour la date de sortie je ne peux rien encore garantir, j’essaie pour l’instant de sortir la preview pour développeurs, et après ça dépendra du temps que je mets à mettre à jour le site et à tout packager bien tout beau tout propre :slight_smile:

Je serais également intéressé par la preview même si je vais probablement passer un certain temps à me préparer pour mon brevet ( c’est cool comme fin d’année scolaire :3 ) mais j’essaierai de regarder ça de plus prêt et éventuellement de me lancer dans cette fameuse traduction en allemand :smiley:

Les modules seront à développer en NodeJS je présume :slight_smile: ?

Tout en NodeJS effectivement !

@Mee: De toute façon la developpeur preview arrive juste avant la sortie officielle, c’est juste en avance pour pouvoir trouver les bugs. Si tu n’as pas le temps tu pourras télécharger la v2 juste à sa sortie toute packagée :wink: