Génial! Beau boulot 
Pour l’instant je n’ai pas encore réfléchi à cet aspect 
En y réfléchissant la maintenant, effectivement ce qu’on cherche à avoir c’est:
- Quand un périphérique est vu dans un logement, alors marquer l’utilisateur comme « vu » dans le logement.
- Un utilisateur peut avoir plusieurs périphériques.
- Un périphérique n’appartient qu’à un utilisateur (sinon ça n’a pas de sens).
Donc la modélisation qu’on avait jusqu’à là dans Gladys 3 est plutôt logique. (un attribut dans la table device).
Néanmoins je pense qu’il faudrait donner un meilleur nom à cet attribut, et surtout le présenter d’une manière tout autre dans l’UI, dans Gladys 3 c’était vraiment pas clair. Pour moi il faut que dans l’UI ce soit une petite UI à part entière dédié à cette détection de présence.
L’attribut dans device ça pourrait être presence_detection_user_id
(c’est pas fou, si quelqu’un a une meilleure idée…)
On pourrait par exemple faire un service « Détection de présence », qui expliquerait clairement:
"Certains périphériques ont la possibilités d’être détecté quand ils sont chez vous: via un scan Bluetooth, un scan du réseau Wi-Fi, où via leur géolocalisation. Gladys peut utiliser ces informations pour en déduire si vous êtes chez vous, où au contraire absent.
Si vous souhaitez que Gladys utilise la détection de certains appareils pour vous marquer comme présent à la maison, il faut indiquer à Gladys les périphériques qu’elle peut utiliser pour vous détecter.
Par exemple: si vous avez un porte-clé bluetooth accroché à vos clés, vous pouvez lié ce porte clé à votre utilisateur, et quand il sera vu en bluetooth chez vous, vous serez marqué comme « présent ». Au bout d’un certain délai, si le périphérique n’est plus vu par Gladys, vous serez marqué comme « absent ».
Sélectionnez les périphériques que Gladys peut utiliser pour vous détecter:
[Liste avec checkbox des périphériques avec un deviceFeature de présence ayant remonté de l’information + indication de la dernière information remontée + ordonner la liste par information remontée la plus récente].
Exemple:
Fitbit Charge 2 (seen 2 min ago)
Nut Mini (seen 12 min ago)
Gladys peut vous marquer automatiquement comme absent si ces périphériques ne sont pas détecté au bout d’un certains moments.
Activer la détection d’absence automatique
(par défaut désactivée)
Délai avant absence: 15 minutes (select box avec 4-5 options, genre 5, 10, 15, 30, 45)
"
Niveau développement
Pour récapituler:
- Un attribut dans la table « t_device », genre
presence_detection_user_id
, nullable et clé étrangère sur t_user.id.
- Une nouvelle catégorie de device_feature qui indique que c’est un device_feature de « présence » d’un périphérique. Exemple: { category: « detection », type: « push », min: 1, max: 1 }
- Une route d’API de GET de device filtered by category.
- Une route d’API de PATCH de device.
- Deux variables en DB, genre « ABSENCE_DETECTION_ENABLED », et « ABSENCE_DETECTION_TIMEOUT ».
- Une tâche dans le scheduler (pas encore développé) de Gladys 4 pour aller checker l’absence potentiel d’un user. Si on fait tout en RAM (comme c’est souvent le cas dans Gladys 4), un passage toute les minutes ne devrait pas poser de problèmes.
Qu’en penses-tu? 