[Plugin tiers] Sure Petcare

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.

Pas besoin d’un mac un PC fera très bien l’affaire.
Je laisse @kimagure te guider.

Voila je viens de publier une nouvelle version pour ceux qui ont le distributeur.
Pour (essayer !) de récupérer des infos intéressantes il faut que les logs soient en debug et il faut faire une synchronisation (sans synchro je ne verrai rien d’intéressant)
La ligne qui m’intéresse dans les logs est celle qui contient « Result me/start : » attention elle est très longue il me la faut en entier.
Cette nouvelle version n’apporte rien de plus et comme elle fait des appels en plus au serveur je ne conseille pas aux autres utilisateurs du plugin de faire la mise à jour.

Voici une procédure pour utiliser Fiddler sur Windows avec un iPhone pour capturer les appels API d’une application.

Désolé, j’ai fait ça rapidement, donc pas de screenshots.

Si quelque chose n’est pas clair, j’essayerai de compléter :
Fiddler.pdf (479,5 Ko)

Ta procédure me parait claire. Je vais me lancer sur cela demain car j’aurai le temps de faire ces manip car en rtt et donc la gamelle a portée de main

J’ai bien fait la synchro après l’installation de la dernière version mais pas une seule fois “Result me/start :” dans les logs

Tu es sûr ? Si tu as bien la version du 2019-10-15 (beta ou stable çà n’a pas d’importance) et si tu es bien en debug je ne comprends pas comment c’est possible que tu n’ai pas cette ligne lorsque tu fais une synchronisation.

Bon au cas où j’aurais fait une bêtise hier j’ai repoussé la même version sur le market mais je ne comprends vraiment pas comment la ligne pourrait ne pas être écrite dans les logs quand on fait une synchro (même si le serveur retourne une réponse vide ou un message d’erreur on devrait voir quelque chose).
Et j’ai testé sur un Jeedom çà marche.

Quand je configure le proxy sur mon iPhone j’ai pas la case à cocher « Allow remote computers to connect »

Effectivement, erreur dans la doc. C’est sur Fiddler qu’il faut cocher la case (dans l’onglet « Connection », le même ou on configure le port). Par défaut, Fiddler n’enregistre que les requêtes locales. Pour permettre l’enregistrement des requêtes provenant de l’iphone (du réseau), il faut que cette case soit cochée.

J’ai mis à jour la doc dans mon message précédent.

En fait je viens de réaliser qu’on n’a pas besoin de smartphone. Une fois Fiddler installé et que https est configuré et le root certificate est installé sur le PC il suffit d’ouvrir un navigateur et de se connecter au site https://www.surepetcare.io et c’est bon on sniffe tout le traffic

Tiens, bonne découverte.

C’est étonnant que l’application web fonctionne avec des appels asynchrones comme l’appli mobile. En général, les interfaces web fonctionnent en mode « tout serveur »…

Du coup, c’est effectivement plus simple comme ça, à conditions que toutes les fonctionnalités soient disponibles sur les 2 interfaces…

La doc n’est pas perdue, elle est réutilisable pour toute application web qui fonctionne via des appels à une API distante…

K.

En fait j’ai fait les deux en essayant de voir s’il y a des différences.
J’espère que Yannick va y arriver car vraiment avec çà on a tout le dialogue et donc on va découvrir tous les appels possibles.
déjà j’ai découvert pour les animaux des with que je ne connaissais pas

/api/pet?with[]=photo&with[]=breed&with[]=conditions&with[]=tag&with[]=food_type&with[]=species&with[]=position&with[]=status

En y réfléchissant je pense que je vais pouvoir réduire beaucoup le nombre de requêtes au serveur par exemple dans le cron une requête pour tous les équipements et un pour tous les animaux alors que maintenant un requête par équipement et 2 par animal.
Cela nous évitera certainement de nous faire blackbouler du serveur s’il installent une limite du nombre de requêtes à l’avenir.
Bien sûr pour cela je vais devoir réorganiser mon code mais je pense que cela vaut le coup.

Et ta doc est super. A conserver !

J’ai reussi a faire des logs mais j’avais pas vu tous vos messages. Donc après avoir bataillé et cherché sur le net pour cette case non présente j’ai fait quelques log que j’ai envoyé par email.

Si besoin de plus ou que j’ai pas prit ce qu’il faut dit le et je recommence.
Maintenant que je maitrise
Par contre j’avais des logs que quand j’ouvre l’appli sur l’iPhone, pas de log quand le serveur du fabriquant envoie des notifications.

Bien reçu les logs.
Pas facile de tout explorer mais si je lis correctement, le bon with à rajouter est

&with[]=weights

Et bien que ce soit assez logique j’avoue que je n’y aurais sans doute pas pensé tout seul.
Par contre la structure qui suit semble assez complexe donc il nous faudra un peu de temps pour la comprendre et des essais en ajoutant de la nourriture.
Pour voir si j’ai vu juste je viens de publier une nouvelle version qui logue ce nouvel appel.
Je suis curieux de voir le log (dans Jeedom, pas besoin de Fiddler).

Bon en relisant les logs j’ai un petit doute car il y a des weights au pluriel et des weight au singulier donc je viens de pousser à nouveau une version sur le market avec un test pour chaque.