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:

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é !

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!

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.

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.

Ca c’est une nouvelle qui fait plaisir !!

ç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:

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:

J’ai envoyé la v2 aux développeurs intéressés, j’attend leurs retours, pour la sortie officiel de cette nouvelle version !