Unsupported operand types: string / int,@Stack

Salut,

Dans un premier temps, suite à un gros ralentissement de mon installation, j’ai beaucoup cherché ce qui causait cela.
L’ajout d’un commande info/numérique directement dans la tuile d’un module shelly dans jMQTT avec cette formule. ( pas d’erreurs remontées)

max(#[Compteur intelligent][SolarEdge5000][Production journalière]#,first day of january this year)/1000

En supprimant cette commande du module et en la mettant dans une commande du plugin virtuel → OK.

Ensuite d’autres soucis avec message d’erreur cette fois.

jMQTTComFromDaemon::msgIn() a levé l’Exception: Unsupported operand types: string / int,@Stack: #0 /var/www/html/vendor/symfony/expression-language/Node/BinaryNode.php(95): Symfony\Component\ExpressionLanguage\Node\BinaryNode->evaluate() #1 /var/www/html/vendor/symfony/expression-language/ExpressionLanguage.php(67): Symfony\Component\ExpressionLanguage\Node\BinaryNode->evaluate() #2 /var/www/html/core/php/utils.inc.php(1014): Symfony\Component\ExpressionLanguage\ExpressionLanguage->evaluate() #3 /var/www/html/core/class/jeedom.class.php(1416): evaluate() #4 /var/www/html/plugins/virtual/core/class/virtual.class.php(549): jeedom::evaluateExpression() #5 /var/www/html/core/class/cmd.class.php(1917): virtualCmd->execute() #6 /var/www/html/core/class/cmd.class.php(1917): cmd->event() #7 /var/www/html/core/class/eqLogic.class.php(697): cmd->event() #8 /var/www/html/plugins/jMQTT/core/class/jMQTTCmd.class.php(129): eqLogic->checkAndUpdateCmd() #9 /var/www/html/plugins/jMQTT/core/class/jMQTT.class.php(2084): jMQTTCmd->updateCmdValue() #10 /var/www/html/plugins/jMQTT/core/class/jMQTTComFromDaemon.class.php(388): jMQTT->brokerMessageCallback() #11 /var/www/html/plugins/jMQTT/core/php/callback.php(112): jMQTTComFromDaemon::msgIn() #12 {main},@BrkId: 130,@Topic: shellies/shelly1pm-BCFF4DFCA899/ext_temperature/1,@Payload: 9.2,@Qos: 1,@Retain: .


Moins compliqué à trouver car j’ai la commande :

shellies/shelly1pm-BCFF4DFCA899/ext_temperature/1

Dans jMQTT, cette commande remonte simplement une température.
Un virtuel avec ceci en valeur est le coupable:

averageBetween(#[Piscine filtration][Shelly 1PM Filtration][Temp eau piscine]#, 0730, 2000)

A minuit, plantage car la valeur passe à 0.
L’historique de la commande originale (donc de jMQTT et pas du plugin virtuel) est planté.

Si après 7H30 ( voir la valeur de la commande du virtuel → , 0730, 2000) je supprime la commande du virtuel, tout repart sans souci jusqu’à minuit.

La même formule sur un équipement en zigbee ne pose pas de souci car elle passe bien à 0 à minuit et reprend sa vie à 7H30 avec une valeur autre que 0.
Une idée?

Mes infos de config
OS version: debian 12 on RPI 5
PHP version: 8.2.20
Python version: 3.11.2
Core version: 4.4.18 (master)
Nb lines in http.error: 604
Plugins: jMQTT
jMQTT: 23.11.8 (2024-06-08 14:14:45) branch: stable
Nb Errors or Warnings in jMQTT logs: 1226 (level is debug)
Daemon Status: Started (2024-10-03 19:00:04)
Nb eqBrokers: 1 / eqLogics: 27 / cmds: 345

Hello @Furaxworld,

As-tu trouvé une solution à ton problème ?

D’après la trace de la pile d’execution (cf #4), ça vient plutôt d’un Virtuel lié à cette commande :

jMQTTComFromDaemon::msgIn() a levé l’Exception: Unsupported operand types: string / int,
@Stack: 
#0 /var/www/html/vendor/symfony/expression-language/Node/BinaryNode.php(95): Symfony\Component\ExpressionLanguage\Node\BinaryNode->evaluate() 
#1 /var/www/html/vendor/symfony/expression-language/ExpressionLanguage.php(67): Symfony\Component\ExpressionLanguage\Node\BinaryNode->evaluate() 
#2 /var/www/html/core/php/utils.inc.php(1014): Symfony\Component\ExpressionLanguage\ExpressionLanguage->evaluate() 
#3 /var/www/html/core/class/jeedom.class.php(1416): evaluate() 
#4 /var/www/html/plugins/virtual/core/class/virtual.class.php(549): jeedom::evaluateExpression() 
#5 /var/www/html/core/class/cmd.class.php(1917): virtualCmd->execute() 
#6 /var/www/html/core/class/cmd.class.php(1917): cmd->event() 
#7 /var/www/html/core/class/eqLogic.class.php(697): cmd->event() 
#8 /var/www/html/plugins/jMQTT/core/class/jMQTTCmd.class.php(129): eqLogic->checkAndUpdateCmd() 
#9 /var/www/html/plugins/jMQTT/core/class/jMQTT.class.php(2084): jMQTTCmd->updateCmdValue() 
#10 /var/www/html/plugins/jMQTT/core/class/jMQTTComFromDaemon.class.php(388): jMQTT->brokerMessageCallback() 
#11 /var/www/html/plugins/jMQTT/core/php/callback.php(112): jMQTTComFromDaemon::msgIn() 
#12 {main},
@BrkId: 130,
@Topic: shellies/shelly1pm-BCFF4DFCA899/ext_temperature/1,
@Payload: 9.2, 
@Qos: 1, 
@Retain: 

Bad

Salut @Bad ,

En effet, c’est une commande info/numérique du plugin-virtual qui ralenti énormément jMQTT avec les messages d’erreurs qui vont avec.

averageBetween(#[Piscine filtration][Shelly 1PM Filtration][Temp eau piscine]#, 0730, 2000)

Avec ceci, je n’ai plus d’erreur mais c’est assez spécial je trouve.

floatval(averageBetween(#[Piscine filtration][Shelly 1PM Filtration][Temp eau piscine]#, 0730, 2000))

Comme déjà dit, la commande averageBetween ne pose pas de souci avec une commande zigbee dans le même virtuel.

Je ne sais pas ce qui bloque … plugin? core? les 2 :slight_smile:

Salut,

Un idée?
Je vois de plus en plus passer des floatval dans les messages …

Hello,

C’est-à-dire ?

S’il y a maintenant des erreurs là où il n’y en avait pas avant, c’est probablement que le comportement a changé dans le core sur le typage des valeurs.
Et s’il faut maintenant du float, le floatval semble nécessaire :face_with_diagonal_mouth:

Bad

Ici déjà

2 « J'aime »

Ahhh je pensais que tu parlais de tes logs, ok ok

1 « J'aime »