[Plugin tiers] Sure Petcare

Le plugin Sure petcare les objets connectées pour animaux Sure Petcare (Sureflap).
Le plugin peut gérer plusieurs foyers, plusieurs équipements et plusieurs animaux.
Pour le moment il gère les hubs, les chatières (petit et grand modèle) et je travaille sur l’intégration du distributeur de nourriture mais cette fonctionnalité n’est pas encore disponible.
Il faut préalablement avoir créé un compte sur le serveur https://www.surepetcare.io. Ne pas oublier de renseigner dans la configuration du plugin adresse mail et mot de passe de ce compte. Ensuite cliquer sur Synchroniser dans la page principale du plugin et vos équipements et animaux seront récupérés.
N’hésitez pas à créer un message pour demander des informations, signaler un problème ou un bug et suggérer de nouvelles fonctionnalités.

1 « J'aime »

Je travaille maintenant sur l’intégration du distributeur de nourriture, mains comme je n’en possède pas c’est un peu compliqué.
Merci à Biarnes64 qui m’a envoyé son log ce qui m’a permis de comprendre comment sont organisées les données pour le distributeur:
dans data il y a un élément bowls pour les ou le bol(s) du distributeur avec un type = 1 pour le grand bol et 4 pour les 2 demi bols dans lid / close_delay ce doit être le délai de fermeture mais je n’ai pas encore trouvé à quoi correspond le chiffre
training_mode ce doit être l’apprentissage et 0 semble correspondre à pas d’apprentissage mais je ne connais pas encore les autres valeurs
Dans settings on trouve food_type (valeurs : 1=humide 2=seche 3=humide et seche et null= ??) et aussi target dont je ne sais pas à quoi il correspond.
Comme le distributeur a une balance je m’attendais à trouver le poids de nourriture mais je ne sais pas où il est à moins que ce soit target ?
Mais maintenant il faut que j’explore les données relatives au distributeur pour chaque animal. Pour cela il faut que je modifie le code qui récupérait la position de l’animal pour qu’il récupère aussi ces données supplémentaires.
Je sais déjà qu’un appel à l’url https://app.api.surehub.io/api/pet/(petId)?with[]=status en remplaçant (petid) par l’id de l’animal doit me donner tout ce que je veux : dans status/activity il y a les éléments where et since qui nous donnent la position et la date/heure du dernier passage et dans status/feeding on doit avoir les données concernant la nourriture, mais je ne sais pas encore bien comment c’est organisé.
Je vais donc publier une nouvelle version qui quand les logs sont en debug écrira le résultat de cet appel et avec çà et l’aide des possesseurs du distributeur on doit y arriver.

Bonjour,
Cool ça avance.
Je t’enverrai des nouveaux log dès que tu publie la nouvelle version.

Oui je pense qu’on va y arriver.
Si je me souviens bien @Alexandre a aussi la gamelle donc peut-être trouvera-t-il le temps de nous aider mais il doit être bien occupé :smiley:
J’ai publié la version modifiée (en stable et en béta car je voulais maximiser les chances d’avoir des retours de possesseurs du distributeur)
Choses à vérifier en premier : que je n’ai pas cassé la récupération de la position et de la date/heure de dernier passage des animaux (et je serai particulièrement intéressé par un retour de quelqu’un qui a plusieurs chatières) car j’ai été obligé de modifier cette partie du code par tout récupérer en un seul appel au serveur.
Ensuite il faut que les possesseur de chatière mettent en debug et me communique les ligne des logs qui contient Résultat getPetStatus (je n’ai pas besoin de tout le reste)
Peux tu me dire aussi si j’ai bien deviné que ton distributeur a un seul grand bol, que ton type de nourriture est humide et que l’apprentissage est désactivé ?

Alors dans les logs que je t’ai envoyé c’est:
grand bol
nourriture sèche
apprentissage désactivé

A savoir aussi que la balance est paramétrée pour 20gr de nourriture lorsque je fais le plein de croquette mais elle transmets vers l’appli du fabriquant le poids réel de nourriture dans la gamelle.
A chaque fois que louloute vient manger il y a aussi une transmission du poids de croquette dévoré

Oops oui tu as raison je me suis trompé « food_type »:2 c’est sèche et donc « target »:20 cela veut dire que la balance est paramétrée pour 20g. Mais je ne vois pas où est le poids réel de croquettes. Si tu peux regarder ce qui change avant et après que tu ait remis des croquettes.
Le poids de croquettes dévoré par louloute on doit le voir dans son status quand tu aura installé la nouvelle version.
On avance, on avance

Le samedi étant consacré à Madame je ne te garantie pas des logs ce soir quand on remplira la gamelle.
Je ferai cela demain.

Nb: nouvelle version plugin installée.

Modification mineure (pour le moment seulement dans la version béta) :
Nouvelle commande pour les animaux « Passé par » qui donne le nom de la chatière par laquelle l’animal est entré ou sorti pour la dernière fois.
Cela n’intéressera bien sûr que ceux qui ont plusieurs chatières mais comme avec la nouvelle façon dont je récupère le status des animaux en prévision de l’intégration du distributeur de nourriture je récupérais cette info autant la rendre disponible.
Au sujet du distributeur j’ai deux problèmes
Le premier c’est pour le distributeur lui même car selon qu’il y a un grand bol ou 2 demi bols je dois trouver un moyen d’organiser les commandes et j’ai un peu de mal
Le second c’est pour les animaux où je récupère un truc (merci à biarnes64 pour le log) du style

         [feeding] => Array                         (
             [tag_id] => 44557                             
             [device_id] => 264763
             [change] => Array                                 (
                 [0] => -20.18                                     
                 [1] => 0                                 
             )
             [at] => 2019-10-12T17:14:20+00:00
         )

Bon tag_id c’est le tag de l’animal, device_id c’est l’id du distributeur et at c’est la date et l’heure du changement tout çà aucun problème.
Mais j’ai du mal à interpréter le ‹ change › avec ses éléments 0 et 1
C’est sans doute des grammes mais le 0 et 1 correspondent-ils aux bols (ce qui expliquerait pourquoi le 1 est 0 voulant dire qu’il n’y a que le grand bol) ?
Et puis je ne comprends pas bien comment distinguer quand on ajoute des croquettes et quand l’animal se nourrit est ce que c’est d’après le signe ? Un signe - correspond à quoi ?
Bien sûr avec un distributeur ce serait facile de faire des tests !
comme je n’en ai pas, je vais devoir me reposer sur les utilisateurs qui en ont un.

Le -20.18 ça serait peut être ce que la balance a mesuré quand j’ai fait le plein de croquettes sachant que j’avais mis 20gr et que la gamelle est calibré pour allumer toutes ses leds de la balance à 20gr. C’est un paramètre que l’on donne dans l’appli, de même que nourriture sèche ou humide et 1 ou 2 bols

Edit: j’ai trouvé ce que représente le -20.18: c’est la quantité de croquette que la Louloute a englouti la dernière fois qu’elle a mangé dans la gamelle. Ce soir j’ai regardé les logs a chaque fois qu’elle passée à la gamelle . Ca correspond bien a cela d’autant plus que l’appli du fabriquant m’ envoyée un message avec la même quantité mais arrondi au gramme.

OK donc on a ce que l’animal mange avec un chiffre négatif.
Et quand tu met des croquettes tu ne vois rien dans les logs ?
Et sur l’appli on voit quand il n’y a plus de croquettes ?

Ca semble cohérent, donc dans le log que tu m’as envoyé on a 2 fois ou Lilou a mangé

"feeding":{"tag_id":44557,"device_id":264763,"change":[-20.18,0],"at":"2019-10-12T17:14:20+00:00"}
"feeding":{"tag_id":44557,"device_id":264763,"change":[-15.03,0],"at":"2019-10-13T06:26:18+00:00"}

Que je traduis par 20 grammes à 17h14 GMT le 12/10/2019
et 15 grammes à 6h26 GMT le 13/10/2019
Dis moi elle est très jeune Lilou parce que quand je vois ce que mes 2 fauves dévorent en poids de croquettes chaque jour :smile:
Note: toutes les heures sont données en GMT par le serveur (et il faut aussi les donner en GMT dans les commandes action) c’est le plugin qui traduit dans le fuseau horaire de votre Jeedom, il faut donc absolument que celui ci soit correct dans la configuration de votre Jeedom (je crois que je devrais le rajouter dans la doc).

J’ai rien vu dans les logs quand je mets des croquettes et j’ai pas souvenir d’avoir reçu une notification de l’appli du fabricant. Pourtant quand j’ouvre l’application sur mon iPhone j’ai bien le poids et l’heure a laquelle j’ai fais le dernier plein de croquettes et la nourriture restante.

Je vais continuer à regarder les logs ce soir lors du remplissage des croquettes. Je t’enverrai ces logs car pareil je passe à côté.

La louloute a 4 ans 6kg mais elle doit manger au max 45gr par jour car une vraie gloutonne donc le véto a dit: régime.

En fait je pense que l’information sur le remplissage doit se trouver dans le distributeur, c’est logique et comme pour le moment on ne la voit pas c’est que je ne dois pas faire le bon appel.
J’ai une idée : j’aimerai voir le résultat de l’appel à

https://app.api.surehub.io/api/device/264763?with[]=status&with[]=control

Plutôt que le deux appels que je fais pour le moment

https://app.api.surehub.io/api/device/264763/status
https://app.api.surehub.io/api/device/264763/control

D’une part si j’ai raison on y gagnera puisque un seul appel au serveur au lieu de 2 et avec un peu de chance on aura l’info qui nous intéresse et si ce n’est pas le cas c’est qu’il nous manque un &with[]= qu’il faudra deviner
Je vais donc publier une nouvelle version pour les autres elle n’apportera rien de nouveau mais pour toi elle devrait faire apparaître une ligne dans les logs avec « Test feeder » qui je l’espère nous fera avancer.

Nouveaux logs envoyée par émail

Merci pour les nouveaux logs, malheureusement j’ai bien fouillé et je ne trouve rien lorsque tu ajoute de la nourriture.
Je pense qu’il nous manque le bon appel et je me suis trompé en pensant l’avoir trouvé.
Je pense publier une version avec la quantité mangée par les chats ce sera déjà çà. lorsqu’on aura trouvé comment récupérer la quantité de nourriture coté distributeur on l’ajoutera.
Pour être franc j’ai aussi fouillé du côté des « concurrents » domotiques de Jeedom (openhab, domoticz, home assistant) et ils ne font pas mieux que ce que j’ai trouvé.

J’ai rien vu non plus mais je me demande si j’ai bien tout car en debug il y en a des lignes .
Demain je vide les log juste avant de mettre les croquettes et je télécharge juste après avoir reçu la notification via l’appli du fabriquant.

Ok j’attends ton log, mais je ne suis pas sûr qu’on aura ce qu’on veut.
La seule solution serait que quelqu’un ayant le distributeur soit capable d’installer sur un PC un logiciel type Fiddler et de sniffer le traffic entre son smartphone et le serveur Sure Petcare.
Même si je ne l’ai jamais fait je crois que j’en serais capable mais je n’ai pas le distributeur.
Sur l’ancien forum il y avait un utilisateur @kimagure qui l’avait fait et m’avait aidé à récupérer les photos des animaux. Je ne sais pas s’il suit ce sujet

Oui, je suis le sujet !

Malheureusement, je n’ai pas le distributeur…

Si besoin, je peux expliquer comment utiliser Fiddler (ou Charles sur Mac) pour capturer les appels de l’appli vers les serveurs. Sur iOS uniquement par contre, parce que les dernières versions d’Android ne permettent plus de dechiffrer le trafic HTTPS simplement…

Bon moi je suis sur IOS et j’ai consulté les tutos de Fiddler et je crois que je serai capable de le faire mais je n’ai pas le distributeur.
Je crois qu’alex a le distributeur et un ou des iphones mais vu le lancement de Jeedom sur Freebox delta je doute qu’il ait le temps de nous aider
Je sais que biarnes64 a le distributeur mais je ne sais pas s’il est sur IOS et s’il se sent le courage de se lancer dans Fiddler.
D’autres candidats ?
Sinon je viens de comprendre qu’un appel à https://app.api.surehub.io/api/me/start permet d’avoir d’un seul coup tous les renseignements que j’obtenais par plusieurs appels, peut-être qu’il permet aussi d’obtenir ce qu’on cherche ? Je vais ajouter un appel à cette url dans la fonction de synchro et publier une nouvelle version. Il faudra donc faire une synchro avant et après ajout de nourriture pour voir ce que çà donne chez quelqu’un qui a la gamelle.

Suis sur IOS avec mon iPhone. J’ai pas de Mac hélas.
Suis pas contre essayer d’utiliser Fiddler si on me donne les étapes à suivre car cela sort un peu de mes connaissances et compétences.