À propos du protocole home connect : Bosch, Siemens, Neff, Gaggenau

Je vais regarder. J’utilise la fonction de Jeedom network::getNetworkAccess pour construire l’url mais c’est la première fois que je m’en sert peut-être que j’ai fait une erreur.

Hum bon j’utilisais

network::getNetworkAccess('external','proto:dns')

Parce que j’avais copié sur le plugin Withings mais visiblement çà ne peut pas marcher dans tous les cas car çà ne prend pas en compte le port. Je ne sais pas pourquoi @mika-nt28 a utilisé çà. Je pourrais essayer

network::getNetworkAccess('external','proto:dns:port')

Mais si je regarde les autres plugins y compris Fitbit je vois qu’il utilisent simplement

network::getNetworkAccess('external')

Donc je vais publier une nouvelle version avec çà et voir si çà marche toujours chez @jpty et chez moi et si @OUARZA nous dira si çà résout le problème chez lui.

Cool.
Si c’est bien ça, il faudra modifier la doc.
Mathieu

Voila nouvelle version beta publiée sur le market.
J’attends ton retour pour savoir si ton problème est résolu ou pas.
Pour moi çà n’a rien changé l’url est toujours la même et l’authentification marche toujours.
Je pense que ce qu’il faut changer dans la doc c’est la phrase
Redirect URI : l’url de retour disponible sur la page de configuration du plugin de la forme https://xxxxxxxxxxx.jeedom.com/plugins/homeconnect/core/php/callback.php?apikey=yyyyyyyyyyyyy
Pour quelque chose comme çà
Redirect URI : l’url de retour disponible sur la page de configuration du plugin (elle est de la forme https://xxxxxxxxxxx.jeedom.com/plugins/homeconnect/core/php/callback.php?apikey=yyyyyyyyyyyyy si vous utilisez les DNS Jeedom ou https://zzzzzzz/plugins/homeconnect/core/php/callback.php?apikey=yyyyyyyyyyyyy si vous utilisez un autre moyen de sécuriser l’accès externe de votre Jeedom).

Je vais maintenant me penchz sur le problème des commandes qui ne se créent pas.

J’étais aussi en train de regarder.
Normalement ça crée les commandes sur Synchronisation. C’est bien ça?

Cela semble bon (présence du numéro de port) !
image

Une fois que j’accepte (dernière page du côté Home Connect), je reviens automatiquement sur le plugin.
Si je clique sur « Synchroniser », je n’ai aucun équipement qui ne remonte.
Est-ce normal ?
J’ai bien modifié dans l’application Redirect URIs.

Mathieu

Même en rafraichissant la page ?
Chez moi les appareils remontent mais aucune commande n’est créée.

Oui, voulez-vous que je reparte de zéro (réinstallation du plugin et de l’application Home Connect) ?
Ci-dessous le log tronqué :

[2020-01-22 19:45:06][DEBUG] : ┌────────── Fonction majMachine()
[2020-01-22 19:45:06][DEBUG] : │
[2020-01-22 19:45:06][DEBUG] : ├───── Fonction majConnected()
[2020-01-22 19:45:09][DEBUG] : │ Réponse : {   "data": {     "homeappliances": [{       "name": "Lave-linge",       "brand": "Bosch",       "vib": "WAWH2660FF",       "connected": false,       "type": "Washer",       "enumber": "WAWH2660FF/17",       "haId": "BOSCH-WAWH2660FF-68A40XXXXXXX"     }]   } }
[2020-01-22 19:45:09][DEBUG] : ├───── [Erreur]
[2020-01-22 19:45:09][DEBUG] : │ L'appareil n'existe pas :
[2020-01-22 19:45:09][DEBUG] : │ Type : Washer
[2020-01-22 19:45:09][DEBUG] : │ Marque : Bosch
[2020-01-22 19:45:09][DEBUG] : │ Modèle : WAWH2660FF
[2020-01-22 19:45:09][DEBUG] : │ Id : BOSCH-WAWH2660FF-68A40XXXXXXX
[2020-01-22 19:45:09][DEBUG] : ├─────
[2020-01-22 19:45:09][DEBUG] : ├───── Fin de la fonction majConnected()
[2020-01-22 19:45:09][DEBUG] : │
[2020-01-22 19:45:09][DEBUG] : ├───── Fonction majPrograms()
[2020-01-22 19:45:09][DEBUG] : ├───── Fin de la fonction majPrograms()
[2020-01-22 19:45:09][DEBUG] : └────────── Fin de la fonction majMachine()

Mathieu

Il faut mettre les logs en debug et regarder si un problème est visible
Pour le problème de commandes non créées je viens de trouver une coquille (toujours sur type quelques lignes plus bas). Je ne sais pas si çà explique le problème en entier mais je vais publier une nouvelle version et j’ai rajouté du log pour qu’on puisse suivre ce qui se passe.

J’ai édité mon message pour ajouter le log.

dans le log on voit que pour le lave-linge on a

"connected": false

Et dans ce cas Sartog ne créait pas l’équipement il y a un commentaire dans le code
// Si l’appareil n’est pas connecté, nous ne le créons pas.
J’ignore pourquoi il faisait çà et j’ignore pourquoi ton lave-linge est indiqué comme non connecté. En tout cas le code fait bien ce qu’il est censé faire il n’y a pas de bug et pas besoin de tout réinstaller de ton côté.
J’avoue que naïvement moi j’aurais créé l’équipement et mis à jour sa commande connected? mais je suis loin de saisir toutes les subtilités de Home Connect.
Hélas Sartog ne répond pas à mon mail donc j’en suis réduit aux hypothèses.

Par contre je peux facilement changer le code et créer tous les équipements même non connectés et on verra bien pour la suite.
EDIT: oui je vais faire çà car le code de sartog n’est pas logique: dans la fonction de synchronisation il ne crée pas les appareils non connectés mais dans le cron il affiche un message d’erreur ([Erreur] L’appareil n’existe pas …) pour chaque appareil non connecté puisque l’objet correspondant n’existe pas !

Avant la modif pour passer par les fichiers de config, la commande connected était créée.

Il y a un pb avec les fichiers de config en json.
Dans findProduct, json_decode retourne null .

Résultat du drag&drop d’un json dans le navigateur avec le pb des accents:
image

En enlevant les caractères accentués ça va un peu plus loin mais ça ne crée toujours pas les commandes.

Effectivement, ma machine à laver est éteinte et quand elle est éteinte le wifi est désactivé.
J’attends ta mise à jour pour tenter du coup.

Pourtant je passe toujours mes json dans un validateur et il me semble l’avoir fait.
EDIT: je viens de vérifier et j’ai dans un autre plugin (surepetcare) des json de config avec des caractères accentués et tout fonctionne très bien.
Le validateur indique bien Valid JSON (RFC 8259) pour hood et hob

Voila, nouvelle version disponible les objets doivent être créés que l’appareil soit désactivé ou non. Par contre l’état de la commande connecté n’est pour le moment mis à jour que lors de l’exécution du cron, mais je peux changer çà.

json_decode retourne null
firefox affiche des losanges avec un point d’interrogation
Le premier validator que je viens d’essayer dit aussi que le json est valide RFC8259

Et json_last_error_msg() retourne:
Malformed UTF-8 characters, possibly incorrectly encoded

Autant pour moi ! Il y en a en ANSI et bien sûr quand je faisais un copié collé dans le valdateur çà ne détectait pas le problème !! Je corrige

Et les commandes se créent, je n’ai corrigé qu’un fichier et je vérifiais que les commandes était créées dans la plaque alors que j’avais corrigé la hotte. Hob, hood les mots sont trop proche.

Existe t-il un moyen de connaitre toutes les commandes d’un appareil autrement qu’en parcourant la doc?
Je doute de l’existence de la commande programActive sur la hotte. Hob hood j’ai déjà oublié.