Bonjour, je teste mon plugin en Debian12. J’ai ces lignes de code :
$formula = str_replace('#value#', $st, $formula);
$print = (string) print_r( $st,true);
log::add('wifilightV2','debug'," eqlogic:".$eqLogic->getName());
log::add('wifilightV2','debug'," name:".$Cmd->getName());
log::add('wifilightV2','debug'," $formula :".$print);
$st =(string)$st;
$Cmd->event($st);
Le code a des « cast » car je pensais envoyer un type incorrect en php8.
Code qui génère ces logs (troncature car il y en a des centaines) :
[2024-09-17 00:37:29][DEBUG] : eqlogic:6 Double Digital Meter 6
[2024-09-17 00:37:29][DEBUG] : name:total_energy1_108_GET
[2024-09-17 00:37:29][DEBUG] : 274406/1000 :274.406
...
[2024-09-17 00:39:20][DEBUG] : name:test_bit_21_GET
[2024-09-17 00:39:20][DEBUG] : 1 :1
[2024-09-17 00:39:20][DEBUG] : eqlogic:Conso Climatisation
[2024-09-17 00:39:20][DEBUG] : name:cur_voltage_20_GET
[2024-09-17 00:39:20][DEBUG] : 2303/10 :230.3
[2024-09-17 00:39:22][DEBUG] : eqlogic:Conso Prises
[2024-09-17 00:39:22][DEBUG] : name:cur_voltage_20_GET
[2024-09-17 00:39:22][DEBUG] : 2321/10 :232.1
[2024-09-17 00:39:22][DEBUG] : eqlogic:Conso Prises
[2024-09-17 00:39:22][DEBUG] : name:cur_power_19_GET
[2024-09-17 00:39:22][DEBUG] : 0/10 :0
...
[2024-09-17 00:39:57][DEBUG] : eqlogic:6 Double Digital Meter 6
[2024-09-17 00:39:57][DEBUG] : name:total_energy1_108_GET
[2024-09-17 00:39:57][DEBUG] : 274407/1000 :274.407
[2024-09-17 00:39:57][ERROR] : Erreur sur wifilightV2::daemonTuya() : TypeError Object (
[message:protected] => Unsupported operand types: float - string
[string:Error:private] =>
[code:protected] => 0
[file:protected] => /var/www/html/vendor/symfony/expression-language/Node/BinaryNode.php
[line:protected] => 149
[trace:Error:private] => Array (
[0] => Array ( [file] => /var/www/html/vendor/symfony/expression-language/Node/BinaryNode.php [line] => 95 [function] => evaluate [class] => Symfony\Component\ExpressionLanguage\Node\BinaryNode [type] => -> )
[1] => Array ( [file] => /var/www/html/vendor/symfony/expression-language/ExpressionLanguage.php [line] => 67 [function] => evaluate [class] => Symfony\Component\ExpressionLanguage\Node\BinaryNode [type] => -> )
[2] => Array ( [file] => /var/www/html/core/php/utils.inc.php [line] => 1014 [function] => evaluate [class] => Symfony\Component\ExpressionLanguage\ExpressionLanguage [type] => -> )
[3] => Array ( [file] => /var/www/html/core/class/jeedom.class.php [line] => 1416 [function] => evaluate )
[4] => Array ( [file] => /var/www/html/plugins/virtual/core/class/virtual.class.php [line] => 549 [function] => evaluateExpression [class] => jeedom [type] => :: )
[5] => Array ( [file] => /var/www/html/core/class/cmd.class.php [line] => 1917 [function] => execute [class] => virtualCmd [type] => -> )
[6] => Array ( [file] => /var/www/html/plugins/wifilightV2/core/class/wifilightV2.class.php [line] => 3731 [function] => event [class] => cmd [type] => -> )
[7] => Array ( [file] => /var/www/html/plugins/wifilightV2/core/class/wifilightV2.class.php [line] => 1050 [function] => update [class] => wifilightV2 [type] => :: )
[8] => Array ( [file] => /var/www/html/core/php/jeeCron.php [line] => 87 [function] => daemonTuya [class] => wifilightV2 [type] => :: ) ) [previous:Error:private] => )
C’est toujours la mise à jour de la même commande :
[2024-09-17 00:39:57][DEBUG] : eqlogic:6 Double Digital Meter 6
[2024-09-17 00:39:57][DEBUG] : name:total_energy1_108_GET
qui provoque l’erreur. Mais avec $st =274.406 c’est ok et 274.407 donne l’erreur, ça ne dépend pas de la valeur qui est évaluée. Quand je relance le deamon, comme la valeur s’incrémente, l’erreur survient soit la 1ère fois soit la deuxième fois où cette commande info doit être mise à jour.
la ligne qui provoque l’erreur est donc dans :
/var/www/html/vendor/symfony/expression-language/Node/BinaryNode.php
return $left - $right;
Je sèche complètement.
Merci pour votre aide.