Je me décide à faire appel ici car je galère depuis deux jours et je n’arrive ni à comprendre ce qui se passe, ni à comprendre comment je peux avancer plus.
Je suis sur mon RPi5 de Dev pour un plugin sous Debian 12.8 et Jeedom 4.5 (voir page Santé ci-dessous).
En PHP, j’ai une méthode importData dans ma classe principale du plugin qui réalise un import de données d’un serveur.
Cet importData fait appel à un script Python (basé sur aiohttp).
La donnée récupérée de cette méthode est une string JSON.
Je précise que la string JSON possède des caractères français accentués (comme le é).
Dans ma classe principale, je fais appel à cette méthode importData de 2 manières différentes:
En l’appelant à partir d’une function quelconque toto()
En l’appelant à partir de la static function cron()
Je n’obtient pas le même résultat …
avec l’appel toto(), cela fonctionne comme attendu, ma string JSON est correcte.
Un log dans la routine Python qui fait la requête HTTP montre dans la réponse les caratères accentués → OK
avec l’appel cron(), la string JSON n’est pas valide UTF-8 et j’ai ensuite des erreurs de traitement dues à cela.
Un log dans la routine Python qui fait la requête HTTP montre dans la réponse un ? à la place des caractères accentués.
J’ai fait des essais multiples et réduit mon code pour les essais au strict minimum pour n’avoir que ce qui est décrit plus haut.
Il n’y a qu’avec l’appel à partir de cron() (et cron5 …) que j’obtiens une réponse erronée ???
Qu’est-ce qui peut bien générer cette différence ?
Des idées qui pourraient m’aider ?
Merci d’avance …
Merci pour ton message.
Le problème ne vient pas de mon code (assertion à 99% ).
J’ai fait beaucoup de manips.
Je pencherais pour un problème de variable d’environnement ou config Apache ?
Demain matin, je reformulerais mon message pour re-adresser la question …
RPi5 sur lequel j’ai installé l’image Raspberry Pi OS
puis installation de Jeedom
J’ai ré-éditer mon premier message pour être plus précis.
Même en lancant la fonction importData à partir de la classe principale, (sans appel Ajax donc), le résultat attendu est correct.
Il n’y a qu’à partir de CRON() qu’apparement, le serveur répond un message erroné ???
J’en déduit que dans Jeedom, le traitement avec cette fonction Cron() n’utilise pas A L’IDENTIQUE la configuration classique.
A quel niveau ? Apache ?
Je ne connais pas assez bien Jeedom pour trouver tout seul.
Ajax ou dans ta class c’est pareil, c’est dans apache
Je ne connais pas ca par coeur mais cherches sur le net ou et comment configurer php pour apache vs cli pour vérifier que tu n’as pas de différence à ce niveau
Edit: CLI = command line interface au cas où c’était pas clair
Donc c’est le fait d’appeler un script php avec la commande php mapage.php, ce que fait le cron