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