Debian 12 : erreur "Argument #1 ($string) must be of type string"

Bonjour,
Je suis passé sous Bookworm en raison de l’indisponibilité de debian 11 sur des machines récentes avec un eMMC de capacité décente. Jeedom 4.4.5 tourne impec maintenant avec tous mes plugins, scénarios et virtuels sauf Cozytouch version 2023-09-27 01:23:11 qui me renvoie l’erreur « 500 Internal server error » avec le log suivant en erreur http:

0000|[Fri May 17 11:42:47.792705 2024] [php:error] [pid 306191] [client 192.168.1.1:58524] PHP Fatal error:  Uncaught TypeError: trim(): Argument #1 ($string) must be of type string, stdClass given in /var/www/html/core/class/log.class.php:107\nStack trace:\n#0 /var/www/html/core/class/log.class.php(107): trim()\n#1 /var/www/html/plugins/cozytouch/3rdparty/cozytouch/client/CozyTouchApiClient.class.php(66): log::add()\n#2 /var/www/html/plugins/cozytouch/3rdparty/cozytouch/client/CozyTouchApiClient.class.php(41): CozyTouchApiClient->getToken()\n#3 /var/www/html/plugins/cozytouch/3rdparty/cozytouch/client/CozyTouchApiClient.class.php(225): CozyTouchApiClient->authenticate()\n#4 /var/www/html/plugins/cozytouch/core/class/CozyTouchManager.class.php(111): CozyTouchApiClient->getSetup()\n#5 /var/www/html/plugins/cozytouch/core/ajax/cozytouch.ajax.php(47): CozyTouchManager::syncWithCozyTouch()\n#6 {main}\n  thrown in /var/www/html/core/class/log.class.php on line 107, referer: https://192.168.1.8/index.php?v=d&m=cozytouch&p=cozytouch&id=cozytouch

Je pense que c’est sans doute un problème de plugin et que debian 12 n’est pas encore très supporté, mais si quelqu’un a une idée… Merci.

Bonjour,

Peux-tu montrer ta page santé.

C’est probablement plus lié à PHP8 qu’à Debian 12 en lui même.

Dans les tag il faudrait retirer v4_4 et mettre plugin-cozytouch vu que c’est lui qui n’est pas prêt pour ce système.

Maintenant, dans les faits, le développeur n’a plus l’air très actif et il y a peu de chance pour qu’il adapte son plugin. Quelqu’un d’autre va essayer de voir pour le reprendre, si possible, et donc régler les soucis mais ça va prendre du temps !

Bref si c’est important pour toi d’avoir CozyTouch il faudrait mieux trouver un moyen d’avoir une Debian 11

Je vais faire une VM en debian 12 (et PHP 8 car pas de doute c’est lui qui pose problème il ) avec juste ma version de CozyTouch et tester pour étudier la compatibilité. Jusque là je n’avais testé qu’en PHP 7

1 « J'aime »

En fait c’est la ligne 66 du fichier plugins/cozytouch/3rdparty/cozytouch/client/CozyTouchApiClient.class le coupable :

log::add('cozytouch', 'debug', $result_arr);

On ne peut pas passer un array il faut passer une string
Mais comme cette ligne ne sert que pour du debug on peut la supprimer ou la commenter comme çà:

// log::add('cozytouch', 'debug', $result_arr);

J’avais déjà vu ce problème et je l’avais déjà corrigé dans ma version.

log::add('cozytouch', 'debug', 'curl response array : ' . print_r($result_arr, true));

Ceci dit je doute qu’il n’y ait que cette correction à faire pour PHP8.
Si @Mecagigi se sens l’âme d’un explorateur et s’il veut aider il peut corriger celle là et continuer en postant à chaque fois les messges d’erreur mais çà risque d’être un processus assez long peut-être vaut-il mieux attendre que je puisse sortir une version compatible PHP8.

Merci Vedrine.
Effectivement il y a bien d’autres problèmes. Voici le log Cozytouch après modif:

0003|[Fri May 17 16:52:17.751657 2024] [php:error] [pid 397486] [client 192.168.1.1:52906] PHP Fatal error:  Uncaught Error: Non-static method cozytouch::preConfig_password() cannot be called statically in /var/www/html/core/class/config.class.php:85\nStack trace:\n#0 /var/www/html/core/ajax/config.ajax.php(76): config::save()\n#1 {main}\n  thrown in /var/www/html/core/class/config.class.php on line 85
0004|[Fri May 17 16:52:24.825909 2024] [php:error] [pid 351624] [client 192.168.1.1:52912] PHP Fatal error:  Uncaught Error: Call to undefined function displayExeption() in /var/www/html/plugins/cozytouch/core/ajax/cozytouch.ajax.php:60\nStack trace:\n#0 {main}\n  thrown in /var/www/html/plugins/cozytouch/core/ajax/cozytouch.ajax.php on line 60, referer: https://boxajp.freeboxos.fr/index.php?v=d&m=cozytouch&p=cozytouch&id=cozytouch

Et le log http error:

0003|[Fri May 17 16:52:17.751657 2024] [php:error] [pid 397486] [client 192.168.1.1:52906] PHP Fatal error:  Uncaught Error: Non-static method cozytouch::preConfig_password() cannot be called statically in /var/www/html/core/class/config.class.php:85\nStack trace:\n#0 /var/www/html/core/ajax/config.ajax.php(76): config::save()\n#1 {main}\n  thrown in /var/www/html/core/class/config.class.php on line 85
0004|[Fri May 17 16:52:24.825909 2024] [php:error] [pid 351624] [client 192.168.1.1:52912] PHP Fatal error:  Uncaught Error: Call to undefined function displayExeption() in /var/www/html/plugins/cozytouch/core/ajax/cozytouch.ajax.php:60\nStack trace:\n#0 {main}\n  thrown in /var/www/html/plugins/cozytouch/core/ajax/cozytouch.ajax.php on line 60, referer: https://boxajp.freeboxos.fr/index.php?v=d&m=cozytouch&p=cozytouch&id=cozytouch

Je ne vais pas te dire que c’est pire, mais… Tu parle de sortir une version PHP8 de ce plugin? Super. J’ai jusqu’au 15 octobre… Si je peux aider fais le moi savoir en MP.

Hello Bison,
Voici ma page santé. Pas grand chose à dire à priori. Je te laisse y jetter un oeil et grand merci pour le coup de main.

C’est bon toutes celles là sont corrigées :smiley: mais j’en ai d’autres …
Mais j’ai une VM debian 12 donc je peux avancer.
Je vais voir pour créer un fork sur mon Github et y ajouter toutes mes modifs comme cela d’autres que moi pourront tester.
Mais il faut que j’arrive à résoudre mon problème d’authentification.

Tu veux mes données d’identifications?

Bonjour,
Il faut copier les logs dans un Texte préformaté (bouton </>); sans ça c’est illisible.
j’ai corrigé vos deux messages précédents

C’est noté, merci.

Bonnes nouvelles : @geoblack a mis à jour la version beta du plugin avec mes modifications (il a aussi corrigé une erreur stupide que j’avais fait :crazy_face:) donc la version beta sur le market devrait selon mes tests être compatible avec php 8.
SI vous decidez de la tester (c’est une version beta, n’oubliez pas) signalez tout problème.
Regardez aussi si tout va bien du côté des templates sous Jeedom 4.4 et signalez tout problème.

1 « J'aime »

Super! J’ai trouvé un autre bug sur ce plugin…
Dans l’app Android la température externe est correcte, mais dans Jeedom, elle indique 21°C au lieu de 13°C ce matin et 18° maintenant.
Cela fonctionnait autrefois.
Peut-être Geoblack aura une idée.
Merci.

Hello,

Je vais aussi tester la beta car j’ai également un bug depuis peu sur ma chaudière :
Les modes et commandes on/off fonctionne mais plus le réglage de la température !
On devrait peut être ouvrir un nouveau sujet pour cette nouvelle bêta non ?

Xav

Hello @Mecagigi
Si tu peux me dire quel équipement et quelle commande que je teste comme j’ai tes identifiants.

Hello @Xav-74
J’ai refait les widgets info qui à mon avis ne devaient pas bien s’actualiser en 4.4 car la fonction d’update n’était pas conforme aux derniers standards Jeedom, mais pour le moment je n’ai pas touché les widgets action.
Si tu peux me dire le nom du widget de cette commande de réglage de la température je regarderai.

J’ai regardé les données qui viennent de chez toi et le sensor io:AtlanticPassAPCOutsideTemperatureSensor a pour valeur 21.8 à 17h aujourd’hui et c’est bien ce qui s’affiche sur mon Jeedom de test en debian 12.
Vérifie dans le moteur de tâches qu’il y a bien une tâche cozyRefresh et qu’elle est active. Regarde si sa dernière date d’exécution date bien de moins de 15 minutes (si je n’ai pas fait d’erreur maintenant elle tourne bien toutes les 15 minutes ce qui à mon avis n’était pas le cas avant)

Merci pour ton aide :wink:

Il s’agit du widget core button :

image

Dans les logs, voici l’erreur rencontrée :

5252|[2024-05-22 20:39:27] DEBUG  : json {"label":"Mise a jour du device","actions":[{"deviceURL":"io:\/\/0826-2298-5437\/1374063#7","commands":[{"name":"setCoolingTargetTemperature","parameters":[18.5]}]}]}
5253|[2024-05-22 20:39:27] DEBUG  : call https://ha110-1.overkiz.com/enduser-mobile-web/enduserAPI/exec/apply
5254|[2024-05-22 20:39:27] DEBUG  : {"errorCode":"UNSUPPORTED_OPERATION","error":"No such command : setCoolingTargetTemperature on device io://0826-2298-5437/1374063#7 (io:AtlanticPassAPCHeatingZoneComponent)"}

Hello, ça a l’air de fonctionner maintenant. Merci.

Hello @Xav-74
On dirait bien que ce n’est pas un problème de widget, soit le radiateur ne supporte que les valeurs entières et alors c’est facile à régler car le widget core button a un paramètre optionnel step que tu peux fixer à 1 et c’est réglé
soit c’est plus grave et la configuration de ce radiateur dans le plugin a un problème et je ne suis pas encore assez familier du code du plugin pour pouvoir t’aider.

Je pencherai plus en effet sur un changement de l’API !
J’avais déjà eu le cas il y a qq temps avec un mise à jour Cozytouch ! Je vais voir avec Geoblack :wink:
Merci encore pour ton aide !