[V4] Dev service Withings

Bonjour,

j’essaye de développer un service qui récupère les données des devices de cette marque.

une fois les informations récupérées sur le compte et les device, je souhaite récupérer toutes les données des mesures historiques.

je créé des feature_state pour chaque mesure en définissant le created_date et le updated_date, mais apres l’enregistrement ces 2 dates sont forcé à la date courante et pas à ce que j’ai définit .

comment puis je faire pour sauvegarer des mesures de device dans le passé ?

Salut @euguuu! Top si tu développe ce service, j’ai vu ta PR :slight_smile:

Bonne remarque, c’est effectivement le comportement actuel, cf la ligne de code incriminé:

Est-ce que tu pourrais me décrire plus en détail le fonctionnement espéré de ton service pour qu’on voir comment on pourrait faire au mieux ?

Dans ce service, je commence par demander les info pour pouvoir connecter le compte withings de l’utilisateur (par oauth2)

une fois la connexion validé je récupère les infos du compte pour créer les devices existant dans ce compte (balance, montre, …) et je créé les feature associées (batterie, poids, poult,…) , je récupère ausi l’historique des mesures déjà existantes, et je souhaiterai enregistrer ces mesures (avec leur vrai dates de création) pour avoir l’historique dans gladys et permettre l’affichage sous forme du courbe par ex .

une fois tout ça fait je veux mettre un poll pour récup les nouvelles mesure 1 fois par jour, dans mon cas ce n’est pas le moment ou gladys va chercher les mesures qui compte mais la date de création de la mesure par le device sur le compte withings

Ok je vois l’idée !

Comme tu sync d’un coup plein de valeurs, je pense pas que la fonction actuelle ait du sens.

Ce qu’il faudrait, ce serait créer une fonction comme la fonction saveState, mais qui au lieu de prendre 1 valeur prenne un tableau de valeur.

Cette fonction irait:

  1. Insérer la liste de t_device_feature_state en DB
  2. Mettre à jour le t_device_feature.last_value avec la dernière valeur du tableau
  3. Appeler les scènes avec la dernière valeur et propager la dernière valeur en websockets aux clients connectés

En gros, recopier cette fonction:

Pour gérer l’insertion multiple.

Puis écouter sur un nouvel event, genre EVENTS.DEVICE.NEW_STATE_SYNC de la même manière que EVENTS.DEVICE.NEW_STATE

Est-ce que tu pourrais t’en charger dans ta PR? :slight_smile:

N’hésite pas si tu as des questions !

Bonjour,

il faut que je m’y remette , mais oui je vais m’occper d’intégrer cette modif

Bonjour,

j’ai bien avancé sur ce dev, je viens de pousser une version presque finale de la dans la PR [WIP] Withings,

cette intégration permet:

  • la connexion au compte withings
  • une api (server& front) générique pour se connecter à des services oauth2 (à confirmer sur d’autres intégrations)
  • la création des devices withings automatique
  • la récupération des mesures des devices
  • l’affichage dans le dashboard d’une bo ‘Santé’ similaire à la box DeviceInRoom

Le reste à faire pour considérer l’intégration correcte est le suivant:

  • doc d’intégration (en cours)
  • ajouter une conf pour le site de demo
  • relecture du code si possible et prise en compte des remarques
  • [optionnel] test de l’intégration par des volontaires avec plus de device (normalement l’intégration marche pour tous les appareis withings mais je n’en ai qu’un pour le moment)

Idéalement pour une prochaine version j’aurais voulu afficher une box sur le dashboard sous forme d’un graphique en courbe, y a t’il des composant déjà prévu pour afficher l’historique des données ?

quelques images de l’intégration:
withings-dashboard-box

5 Likes

Génial tout ça ! Merci @euguuu
Est-ce que oar hasard il y aurait moyen d’afficher une courbe historique du poids ? Ce qui est en général tout l’interêt d’une balance connectée. A regler comme on le souhaite : 1 semaine / 1 mois / 1 an.

Il se pose aussi la question :wink:

Ah oui en fait si je savais lire je ne poserai pas ce genre de questions cons… ^^
Désolé !

2 Likes

Magnifique !!

C’est du très beau boulot @euguuu :slight_smile:

Je pense que c’est plus quelque chose qu’on veut de manière générale à Gladys, pas juste à ce service. Donc pas la peine de développer ça dans le service à mon avis.

On a cette tâche qui a déjà 12 votes :

Je pense que ça résoudra le problème :slight_smile:

1 Like

J’aimais beaucoup la v3 pour ça… :stuck_out_tongue:

1 Like

Nickel ! Alors comme moi je ne comprends rien à la construction de Gladys, je ne pensais pas qu’on pouvait créer un outil « historique » et s’en servir sur tous les capteurs souhaités. Merci pour l’info !

Oui actuellement l’historique est en base de données, d’ailleurs quand tu configure Gladys pour la 1ère fois tu définis quelle rétention tu souhaites.

Il faut développer la fonctionnalité

Au niveau de cet affichage il y a un dev en cours ? il y a deja des choix de fait sur la techno a uilisé ou l’archi a mettre en place ou il faut commencer de 0 ?

C’est par là que ça se passe

Il n’y a pas de développement en cours. On en a parlé sur l’autre sujet qui est juste une carte de « todo » mais globalement tout est à faire: choix de la lib de charts, et développement :slight_smile:

On en parle sur l’autre sujet ?

Bonjour à tous,
je relance le sujet.
@euguuu est proche de la fin du dev, le PR est en revue, on recherche donc des volontaires pour tester / valider le service, si possible avec du matériel.

Merci par avance.

1 Like

Je relance le sujet, personne n’a de matériel et pourrait tester la PR ? :slight_smile:

Sinon, est-ce qu’il serait possible d’avoir une petite présentation de la PR @euguuu ? :slight_smile:

Qu’est-ce qu’elle fait? Quels périphériques Withings sont gérés?

la doc associé décrit étape par étape chaque page du service , je peux faire une demo au besoin ou donner mes code withings (correspond au oauth2 car je peux les supprimer/changer en 1 clics apres les tests)

je n’ai testé en condition réelle que avec 1 équipement (la balance Body)
mais en thérorie le service est compatible avec tous les équipements de la marque

le service créé automatiquement les device en fonction de ceux déclarer sur la pf withings, récupère l’historique des mesures et ensuite va faire un poll quotidien pour récupérer les nouvelles mesures

au niveau utilisation des mesures il y a une box similaire à la box device in room mais qui récupère uniquement les feature de category ‘health’

1 Like

Ok, et comment tu gère le fait que c’est des équipements de santé plus “personnelle” que liés à la maison ?

Ta balance elle renvoie des poids liés à des personnes de ta maison (et non pas lié à des pièces comme la plupart des capteurs jusqu’ici), comment tu as réfléchi ça ?