Parlons de Gladys V4

Bonjour à tous,
J’arrive peut être en retard ou en décalé. Mais je viens de penser à un cas d’usage. Mais il est peut être déjà prévu par Pierre-Gilles.
Admettons que le speaker de Gladys soit dans le salon en bluetooth par exemple et que je possède des airpods (ou assimilés).
En fonction de l’heure, de la présence, du moment de la journée, je peux vouloir que les informations distillées par Gladys soit sur un canal en particulier.
Alors on peu toujours le définir dans un script mais je pensais qu’un “moteur de règles” pourrait éventuellement avoir son utilité.
Je peux par exemple vouloir que tous les scénarios qui s’exécutent quand je suis présent avec les airpods détectés après une certaine heure et qui doivent faire un return vers un périphérique audio soit vers mes écouteurs et pas sur l’enceinte.
J’espère avoir été assez clair pour me faire comprendre du cas d’utilisation.

En fait si tu tapes ton adresse ça me donne juste… ton adresse ! :smiley: Nous ce qu’on veut c’est la latitude/longitude de ta maison (ce qui permet de calculer le levée de soleil sur ta maison + aller chercher la météo par exemple)

Ce que je disais plus haut, c’est que si l’utilisateur tape son adresse et que derrière on passe par une API en ligne pour convertir adresse en latitude/longitude, c’est pas hyper respectueux de la vie privée et c’est pas forcément dans les valeurs du projet je pense!

C’était le cas dans Gladys 3, tu pouvais définir des règles de priorités de notifications (Ex: me parler si je suis à la maison => Sinon Telegram).

Je n’ai pas encore définir la façon de faire dans Gladys 4 mais ce sera quelque chose dans le même style.

Et pourquoi pas ne pas couper la poire en deux, et proposer un bouton qui irait requêter la base nationale si l’utilisateur le souhaite ?

Cas 1 : l’utilisateur rentre son adresse et la localisation manuellement

Cas 2 : après avoir renseigné son adresse il clique sur le bouton pour automatiquement chercher la localisation

J’aime bien cette alternative, peut-être en précisant que la géolocalisation se connecte à internet et exécute une requête et que donc nos données d’adresses sont transmises. ou alors pour plus de sécurité et de respect de la vie privée, on peut se géolocaliser soit même.

1 « J'aime »

Oui Gladys V3 gère la priorité, mais je pensais plus à des phases ou je souhaite en fonction de la situation que la notification soit envoyer sur plusieurs périphériques.
Aujourd’hui si je mets toutes les sorties en priorités 1, ce sera envoyé partout ?
Entre 20h-22h je souhaite que toutes les infos que Gladys me donne soit dans mes air pods si je suis là et sur l’enceinte si ma compagne est là et que l’info lui est aussi destinée. Mais avec 22h je veux simplement les infos sur les air pods ou sur le/les télégram de chacun.
Ca revient finalement à créer des scénarios qui pourraient être appelés dans les scénarios. Parce que sinon faut gérer dans chaque script avec les horaires et les conditions là ou tu veux que ça envoie.

@thierry1 Mmm ça va être compliqué si on doit faire ça pays par pays. La communauté Gladys ce n’est pas juste la France :slight_smile: Selon les statistiques du site sur la dernière année, les visiteurs viennent de 182 pays différents!

On a certes une dominance française, mais beaucoup d’autres pays qui sont en part non négligeable! Voilà les 24 premiers:

Bon en cherchant un peu j’ai trouvé une API sympa et respectueuse de la vie privée!

Il fallait pas chercher loin, OpenStreetMaps, qu’on utilise déjà pour les tuiles de la carte, fournit une API de geocoding open :slight_smile:

Exemple de query:

https://nominatim.openstreetmap.org/search?q=tour%20eiffel%20paris&format=json&limit=1

Renvoie:

[{
  "place_id": 257507700,
  "licence": "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright",
  "osm_type": "way",
  "osm_id": 5013364,
  "boundingbox": [
    "48.8574753",
    "48.8590465",
    "2.2933084",
    "2.2956897"
  ],
  "lat": "48.8582602",
  "lon": "2.29449905431968",
  "display_name": "Eiffel Tower, 5, Avenue Anatole France, Quartier du Gros-Caillou, 7th Arrondissement, Paris, Ile-de-France, Metropolitan France, 75007, France",
  "class": "tourism",
  "type": "attraction",
  "importance": 0.7537721029714171,
  "icon": "https://nominatim.openstreetmap.org/images/mapicons/poi_point_of_interest.p.20.png"
}]

Donc à priori pas de problème pour mettre une search box d’adresse :slight_smile: Merci à tous pour la réflexion!

Je pense que pour ton cas qui est hyper précis c’est des scène qui appelle des scènes. (je suis d’ailleurs pas sûr que dans la vrai vie ton histoire d’horaire ça marche, c’est assez rare que les jours se ressemblent…)

Salut à tous! Je voulais vous parler aujourd’hui de mon focus de cette semaine dans Gladys 4: la gestion unifiée des caméras.

Je vais vous présenter ici mon implémentation, et vous me direz ce que vous en pensez.

L’objectif, c’est d’avoir dans Gladys 4 une gestion 100% unifiée des caméra, c’est à dire une API propre pour aller chercher la dernière image d’une caméra, et qui renvoie un format constant quel que soit la marque de la caméra. Le gros + de cette API unifiée, c’est que du moment que ça passe par l’API Gladys, ça veut dire qu’on enlève tous les problèmes dès qu’on est hors du réseau, vu que Gladys server devient une sorte de “proxy” caméra. Et c’est compatible Gateway directement!

Je pense qu’avec un schéma ça sera plus clair:

Dans Gladys 3, le frontend contactait directement la caméra. Plus dans Gladys 4!

Ce n’est plus au frontend de s’adapter à chaque caméra, c’est à Gladys server de gérer tout ça.

Pour l’instant je n’ai pas encore travaillé sur du live, mais juste sur une API claire pour:

  • Enregistrer la dernière image d’une caméra
  • Aller chercher la dernière image d’une caméra

C’est déjà une première étape.

J’ai créé deux routes d’API:

Mettre à jour la dernière image d’une caméra:

POST /api/v1/camera/:camera_selector/image

Aller chercher la dernière image d’une caméra:

GET /api/v1/camera/:camera_selector/image

Cette API a uniquement pour but d’aller enregistrer/retourner des images déjà “traitée”, c’est à dire au bon format (on peut même dire des miniatures). J’ai choisi que ces images seraient sauvegardée en base64 en base de donnée (oui, en base de donnée!). Pourquoi ce choix?

Ici, on ne parle pas de stocker des gigas de donnée, on parle de ne stocker que la dernière image d’une caméra dans une taille légère, avec comme taille max 50 ko.

Si l’utilisateur à 30 caméras chez lui, et que l’on stocke 30 images de 50 ko, on parle de 1.5 Mo au total.

L’avantage de le stocker en DB est multiple: Les backups intègrent ces images, et on ne s’embête pas à faire du filesystem, c’est la DB qui gère tout ça.

N’hésitez pas si vous avez des retours.

1 « J'aime »

Je trouve que c’est un bien meilleur fonctionnement que la v3, avec le gros avantage de compléter Gladys core, plutôt que d’en mettre un peu partout (front-end et back-end).

Surtout, d’un point de vu sécurité, c’est plus intéressant. Fini les manipulation hasardeuses par monsieur tout le monde qui va exposer sa caméra sur internet, alors qu’elle est pleine de différentes failles critiques et vulnérabilités en tout genre !

Pour les photos stockées, ce sont seulement les dernières images qui le sont, où toutes celles qui seront demandées par l’utilisateur ?

1 « J'aime »

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 « J'aime »

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 « J'aime »

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 « J'aime »

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 « J'aime »

@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 « J'aime »

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