Parlons de Gladys V4

C’est exactement l’objectif! Que l’utilisateur ait une simple caméra montée sur un Pi Zero, ou une caméra chinoise achetée sur Alibaba, il n’a pas à s’embêter tout est fait dans Gladys pour la partie accès à distance :wink:

Seulement les dernières, il n’y a pas d’historique dans cette première itération. Pour garder un historique il faudrait réfléchir un peu plus le sujet et faire des tests pour voir à quel point ça devient lourd de garder trop de photos.

C’est super, je vais commencer à tester sur la V3 une caméra.
Serait il possible de faire en sorte:

  • Le flux vidéo est enregistré lorsque celle-ci détecte un mouvement dans le champs de la caméra pendant un temps défini par l’utilisateur, (sauvegarde sur un disque dur ou sur carte SD ou même sur le cloud).

Je sais que c’est possible via des soft gratuit (je ne me souviens plus du nom, je le mettrais en message) mais comment le mettre en place dans Gladys.

Là on rentre dans une implémentation technique, ça va dépendre de chaque caméra. Ca peut-être une fonctionnalité pour plus tard oui :slight_smile:

1 Like

Le soft c’est contaCam.
Oui je comprend.

J’ai vue que @PhilippeMA avait étudié cette piste.
https://community.gladysassistant.com/t/creation-module-denregistrement-et-lecture-video/1259

1 Like

Salut à tous!

J’ai une super nouvelle pour vous: je viens d’atteindre le premier milestone de développement de Gladys 4! :rocket::tada::scream:

Ce milestone signifie que nous avons désormais une première base de backend fonctionnelle, et que selon moi nous avons un core assez solide pour pouvoir commencer à développer des intégrations Gladys 4.

L’objectif maintenant est de voir comment on peut migrer progressivement les modules de Gladys 3 à Gladys 4.

J’ai donc écrit un tutoriel expliquant comment créer des services (services=modules) pour Gladys 4.

Le tutoriel est disponible ici =>

https://gladys-4-docs.gladysassistant.com/en/development

[AVIS] Je cherche désormais des développeurs de modules de Gladys v3 voulant migrer leur module! L’objectif est de faire ça ensemble, manifestez vous sur ce sujet et on verra ensemble comment on peut faire ça :wink:

L’objectif n’est pas de faire ça en sous-marin de votre côté, je pense qu’il va y avoir plein de questions qui vont se poser lors des développements et j’aimerais qu’on y réfléchisse tous ensemble aux différents problèmes qui seront soulevés pour qu’on fasse bien les choses :slight_smile:

:warning: Le premier milestone backend a été atteint, mais pas encore celui frontend. Côté UI, tout n’est pas encore utilisable. Ce n’est néanmoins pas bloquant pour développer les services, je pense que ce serait dommage de ne pas avancer les deux sujets en parallèle.

J’attends vos retours!

4 Likes

Salut,

C’est top ça :slight_smile:

Du coup outre le fait de migrer les modules, il est donc possible de développer des nouveaux modules ? Et question pour le côté dev, y a t-il un postman ou quelque chose comme ça de déjà mis en place afin de tester l’application surtout la partie dev ?

Merci :slight_smile:

C’est Génial ! :grinning:

Par contre est ce que tu aurais un module de démo ? j’ai cru comprendre que tu en vais déjà développé un pour tester les api.

Merci

Tout à fait :slight_smile: Développement de nouveau service ou portage d’existant, tout est possible. Le tutoriel ci-dessus décrit comment développer un service!

De mon côté j’utilise Insomnia, si ça peut t’aider je peux exporter mes requêtes que j’ai en local… Après il n’y a rien de sorcier

Il faut que je publie la documentation de l’API quelques part, pour l’instant tu peux l’avoir en local mais c’est vrai que ça serait bien de l’avoir en ligne même si Gladys 4 n’est pas encore sortie. Je m’en occupe!

Oui! J’ai déjà développé 7 services que tu peux trouver sur GitHub ici => https://github.com/GladysAssistant/gladys-4-playground/tree/master/server/services

Dont le service « example » disponible ici =>

https://github.com/GladysAssistant/gladys-4-playground/tree/master/server/services/example

Tu verras, c’est très proche de la v3 :slight_smile:

1 Like

@damalgos Bon j’ai bossé toute la matinée et j’ai quelque chose de solide!

La documentation de l’API REST est disponible en ligne ici =>

https://gladys-4-apidoc.gladysassistant.com

J’ai rentré dans Insomnia toutes les routes d’API de Gladys 4, ça donne ça:

Avec ça il est donc très simple de tester l’API de Gladys, tout est déjà rentré!

Petit tutoriel pour importer ce setup chez vous

  1. Télécharge Insomnia
  2. Importe le fichier insomnia.json en faisant:

Clique sur “Data” => “Import Data” => “From URL”, puis copie colle l’URL:

https://raw.githubusercontent.com/GladysAssistant/gladys-4-playground/master/insomnia.json

  1. Tu peux modifier l’environnement avec tes paramètres (IP de ton instance, token d’authentification) en allant dans “Manage environnnement”

Voilà :slight_smile:

3 Likes

@pierre-gilles

Ah ouais quand même tu rigoles pas MDR !

Franchement merci c’est top tu perds pas de temps :slight_smile:

Je sais c’est pas sorcier mais je me suis dis ça permet de facilement manipuler l’application pour toute personne souhaitant aider au développement.
Je vais regarder pour mettre en place un petit module pour l’apple tv :).

Salut à tous,
Pour ceux qui vont entreprendre la partie migration des services, il serait intéressant qu’on se synchronise, histoire de ne pas bosser en double sur le même sujet, et même qu’on puisse bosser en équipe.

Soit un nouveau topic sur la communauté, soit un trello, soit autre chose :wink:

Je vous avoue que ma priorité sera le Bluetooth :wink:

Salut tout le monde,
Beau travail @pierre-gilles.
Petite question, si j’ai bien compris maintenant nous n’avons plus de store pour les modules/services. Tous les services seront donc dans le core de Gladys et chargés au démarrage ?

Je commencerai dès que possible la migration du service CalDAV vers Gladys v4.

C’est un des avantages du décalage horaire, quand vous dormez moi je bosse :wink:

Top! Après pour ça pas besoin de l’API REST, tu le fais en interne.

Complètement :slight_smile: Je pense que ce topic est très bien, si tu veux bosser sur un sujet, tu peux en parler ici! Ensuite dès que tu commences à bosser dessus, le plus tôt tu créé une PR le mieux c’est (tu peux indiquer sur GitHub que cette PR est en cours)

Effectivement ce service est crucial. C’est d’ailleurs un bon exemple pour moi de service qui sera en 2 versions:

  • Une version en interne (facile à configurer, pratique quand on a qu’un seul Raspberry Pi)
  • Une version externe pour ceux qui ont plusieurs Pi

La priorité va au service en interne, pour l’instant l’API MQTT pour les services distants n’est pas encore 100% prête.

Tout à fait ! C’est l’objectif de cette v4, apporter une expérience consistante et un produit complet qu’on maitrise de bout en bout.

Le service CalDAV est intéressant, pour l’instant je n’ai pas encore fait de service de calendrier dans Gladys 4 donc il y aura une petite partie réflexion avant le développement.

Je pense ça vaut le coup qu’on réfléchisse ensemble à tout ça :slight_smile: N’hésite pas si tu as des questions, ou même s’appeler, je suis dispo!

Salut, je reste un peu sceptique sur la partie disparition du store de modules.
Tous les anciens modules vont devenir des nouveaux services sur le repo de la v4 ??? Où seuls les services permettant d’avoir un nouveau protocole ?

Je ne souhaite pas être obligé de charger 1000 services pour un seul qui m’intéresse.

J’ai du louper un bout …

Yes :slight_smile: Je veux que Gladys soit un produit consistent, clé en main et qui fonctionne dès le début sans avoir à triffouiller comme c’est le cas aujourd’hui.

(Attention, il n’y aura pas de service redondant, on aura un seul service bluetooth, un seul service Philips hue, etc…)

Avec des modules séparé actuellement, ça créé des tonnes de problèmes. Quand tu installe un module Gladys 3, Gladys fait un git clone + NPM install + reboot de Gladys. Et on ne parle même pas d’intégrer le module dans UI, ça n’a jamais marché correctement dans Gladys 3 et on a du faire des hacks affreux pour que ça marche plus ou moins… Quand je vois le nombre de messages du forum où certains ont une UI qui a sauté à cause de l’installation d’un module, c’est pas normal que ce soit possible!

Tout ce qui est fait côté utilisateur actuellement à l’installation d’un module ne devrait être fait que côté développeur.

Après je pense que tu surestime la taille d’un service… Un service c’est quelques fichiers JS en général, on parle de quelques kilo octets de code… Je ne vois pas en quoi ça alourdit Gladys :slight_smile:

En fait je pense qu’il vaut voir Gladys 4 d’une façon différente de Gladys 3, ce n’est pas le même produit.

Dans Gladys 3, j’ai naïvement pensé que mon rôle en crééant Gladys c’était de créer la plateforme, mais de laisser « l’expérience module » séparée du core.

Mais ce que j’avais sous-estimé, c’est que ce que va retenir un utilisateur sur Gladys, c’est l’expérience globale qu’il a eu. Si il installe Gladys, qu’il installe le module speak, et que Gladys crash. (et on y peut rien, « npm install » ça rate souvent pour des raisons externes type manque de ram, downtime NPM), son feedback ça sera: Gladys ça ne marche pas et c’est instable.

Mon paradigme pour Gladys 4, c’est que les services font partie intégrante du produit, ce n’est pas des détails: c’est le coeur de l’expérience de Gladys.

Je veux pour que l’utilisateur, utiliser le bluetooth ça soit juste cocher la case « bluetooth » dans l’interface, rien de plus.

Et pour ça, ça demande d’avoir les services au coeur du produit, avec la même rigueur de développement que le core de Gladys:

  • Test unitaire avec un code coverage > 90% minimum.
  • Linting
  • Intégré au process de build, autant backend que frontend.

C’est la seule façon d’avoir une expérience globale qu’on est capable de maitriser de bout en bout :slight_smile:

N’hésite pas si tu as des questions/remise en question sur tout ça, c’est une partie que j’ai longuement réfléchi et je ne t’ai mis que les grands axes ici. On pourra aussi en parler de vive voix à l’appel communauté de dimanche!

2 Likes

Dans le pire des cas, on créera un service pour charger des “plugins” :stuck_out_tongue:
Mais je comprends l’idée, soit on a une solution ouverte, voire trop ouverte (v3) soit une solution stable et maîtrisée, soumise à la validation constante de l’équipe principale (toi), la v4.
Le seul truc dont j’ai peur, c’est qui si une demande de nouveauté est faite, elle prenne trop de temps à être intégrée.

Aha ça serait revenir aux problèmes de la v3 :stuck_out_tongue:

Exactement! Après je pense que tu es inquiet par rapport à mon rythme de merge GitHub, j’y ai réfléchi et je pense que ça va être assez différent de la v3.

Sur la v3:

  • Sur la v3, il y a facilement une quarantaine/cinquantaine de repo à surveiller pour moi, c’est juste impossible de tester la conséquence d’une PR sur l’ensemble de l’écosystème, surtout quand certains repos sont inter-dépendant. Et GitHub est assez mal fait quand on a autant de repos à surveiller, même à temps plein c’est pas possible d’aller un par un sur chaque repo, et de tester des combinaisons (Gladys v3.13.0 + module 433Mhz + module serialport?)
  • Sur la v3, les modules n’étaient pas testés ni passé aux linter. Honnêtement, je pense que 90% des PRs avaient des erreurs qu’un eslint + testing voit instantanément. On a perdu beaucoup de temps sur des bêtises. Le fait que ce soit des tonnes de repo séparé rendait très compliqué la tâche de configurer chaque repo pour du linting, des tests et de l’intégration continu.

Sur la v4:

  • Un seul repo. Toutes les PR en attente à un seul endroit.
  • Dès que tu submit une PR, tu n’as rien à configurer, l’intégration continu passe, et te dit instantanément si ton service à un souci, si il ne tourne pas, s’il n’est pas conforme, si le code n’est pas de bonne qualité, si le front ne build plus, si le backend plante. Je pense que 90% des retours que je faisais sur les anciennes PR de la v3 seront donnés automatiquement par l’intégration continue :slight_smile: Il y aura beaucoup de temps gagné là dessus.
  • Le frontend de chaque PR est buildé automatiquement par Netlify qui deploy live une instance du front en mode démonstration. En un clic, même depuis mobile, je peux voir à quoi ressemble une PR en terme d’UI et donner mes retours sur le visuel. (pas possible avec Gladys 3 car Gladys 3 n’était pas une PWA statique)

En fait le fait d’avoir tout dans un mono-repo ça change beaucoup de chose.

2 Likes

Salut @pierre-gilles,
super travail ça avance bien de ce que je vois :smiley: !

j’ai quelques question :

  • As tu déjà commencé a réfléchir aux gladys POD avec ce nouveau produit ?
  • As tu du monde pour faire le transfère module (V3) vers service (V4) ?

Il y a quelques modules maintenant et je pense que ça va faire pas mal de taff…

Ensuite j’avoue partager l’inquiétude de @AlexTrovato concernant les services interne.

Si par exemple quelqu’un veut un service TV phillips (par hasard [https://community.gladysassistant.com/t/recherche-module-philips-tv/4667/5]), il devra attendre que cela soit fait et déployé ?

C’est un dire que je ne pourrais pas dev un service dont j’ai pas le materiel et le faire tester a un membre comme j’avais fait avec @Jean34 et la TV Viera avant de le déployer en prod ?

il me semblait avoir compris précédemment que certain module deviendrait des services mais pas tous, a moins que je me trompe :thinking:

4 Likes

Petite suggestion:

  • serait il possible de mettre un bouton on - off aux alarmes et aux scénarios.
    Je m’explique il y a des jours où je ne veux pas me réveiller à 7h00 et faire la grasse matinée. Mais pour l’instant il n’est pas possible de stopper l’alarme, uniquement de la supprimer comme les scénarios.
  • Chez Eedomus, il y a une liste des périphériques supportés classés par marque, protocole,… avec des remarques,…
    Et pour Gladys, pourrait on faire la même choses ou c’est déjà fait? Avec le module à activer pour tel ou tel périphériques, qu’est ce qu’il faut faire ( ex: flasher les sonoff, utiliser un Arduino, …)