2 messages d'erreur à minuit tous les soirs

Bonjour à tous,

J’ai changé de machine la semaine dernière et j’en ai profité pour passer à Debian 12 sur mon Jeedom 4.5.2. J’ai fait une « fresh install » suivi d’une restauration de sauvegarde.

Tout s’est très passé.

Par contre depuis, j’ai 2 messages tous les soirs à minuit concernant suiviconso :

2026-01-21 00:00:11 conso Erreur sur la fonction cronDaily du plugin : Unsupported operand types: string / int
2026-01-21 00:00:07 conso Erreur sur conso::StartDeamon() : Unsupported operand types: string / int

Dans la log conso je n’ai que les évènements à partir de 3h00. Au dessus c’est noté « truncated log ». Je ne sais pas comment voir avant.

Mais à priori tout semble quand même fonctionner.
Avez-vous déjà rencontré cela ?

Par avance, merci pour votre aide.
Amitiés
Lal

Ma page santé :

Bonjour

Vous pouvez tester cette modification :

Mais si vous utilisez un virtuel comme source dans suivi conso, cela peut-être simplement qu’au moment ou suivi conso lance un calcul avec, elle est encore vide.

Antoine

1 « J'aime »

Pour voir les logs avant 3h, il faut télécharger le log et le regarder dans un éditeur de texte genre Notepad++
Sinon rien dans le log http.error?

Dans http.error je n’ai rien dans ces heures.

Pour le log conso j’ai ceci :

						CASE WHEN id_equipement IN (388) THEN ((MAX(`hchp2`) - MIN(`hchp2`)))	ELSE ((MAX(`hchp2`) - MIN(`hchp2`)) / 1000)  END AS hp2,
			                CASE WHEN id_equipement IN (388) THEN  ((MAX(`hchc2`) - MIN(`hchc2`)))	ELSE  ((MAX(`hchc2`) - MIN(`hchc2`)) / 1000)  END AS hc2,
						CASE WHEN id_equipement IN (388) THEN ((MAX(`hchp3`) - MIN(`hchp3`)))	ELSE ((MAX(`hchp3`) - MIN(`hchp3`)) / 1000)  END AS hp3,
		                	CASE WHEN id_equipement IN (388) THEN  ((MAX(`hchc3`) - MIN(`hchc3`)))	ELSE  ((MAX(`hchc3`) - MIN(`hchc3`)) / 1000)  END AS hc3,MAX(hchp) as idx_max_hp,
				MIN(hchp) as idx_min_hp,
				MAX(hchc) as idx_max_hc,
				MIN(hchc) as idx_min_hc,
				MAX(hchp2) as idx_max_hp2,
				MIN(hchp2) as idx_min_hp2,
				MAX(hchc2) as idx_max_hc2,
				MIN(hchc2) as idx_min_hc2,
				MAX(hchp3) as idx_max_hp3,
				MIN(hchp3) as idx_min_hp3,
				MAX(hchc3) as idx_max_hc3,
				MIN(hchc3) as idx_min_hc3,
				id_equipement,
				FORMAT(MAX(temp),2) AS temp_max,
				FORMAT(MIN(NULLIF(temp,0)),2) AS temp_min,
				FORMAT(AVG(NULLIF(temp,0)),2) AS temp_moy, CASE WHEN DATE_FORMAT(rec_date, '%m-%d') NOT BETWEEN
						    DATE_FORMAT(STR_TO_DATE('06-15', '%m-%d'), '%m-%d') AND
						    DATE_FORMAT(STR_TO_DATE('09-15', '%m-%d'), '%m-%d')  THEN 0 WHEN 18 = 0 THEN 0
		WHEN FORMAT(AVG(NULLIF(temp,0)),2) = 0 THEN 0
		WHEN 18 >= FORMAT(MAX(temp),2) THEN 0
		WHEN 18 <= FORMAT(MIN(NULLIF(temp,0)),2) THEN FORMAT(AVG(NULLIF(temp,0)),2)-18
		WHEN FORMAT(MIN(NULLIF(temp,0)),2) < 18 AND 18 <= FORMAT(MAX(temp),2) THEN (FORMAT(MAX(temp),2)-18) * (0.08+0.42* (FORMAT(MAX(NULLIF(temp,0)),2)-18) / (FORMAT(MAX(temp),2) - FORMAT(MIN(NULLIF(temp,0)),2)))
		END AS dju_clim,  CASE WHEN DATE_FORMAT(rec_date, '%m-%d') NOT BETWEEN
							DATE_FORMAT(STR_TO_DATE('10-15', '%m-%d'), '%m-%d') AND	'12-31' AND

						DATE_FORMAT(rec_date, '%m-%d') NOT BETWEEN	'01-01' AND
							DATE_FORMAT(STR_TO_DATE('04-15', '%m-%d'), '%m-%d')  THEN 0  WHEN 18 = 0 THEN 0
		WHEN 	FORMAT(AVG(NULLIF(temp,0)),2) = 0 THEN 0
		WHEN 18 >= FORMAT(MAX(temp),2) THEN 18 - FORMAT(AVG(NULLIF(temp,0)),2)
		WHEN 18 <= FORMAT(MIN(NULLIF(temp,0)),2) THEN 0
		WHEN FORMAT(MIN(NULLIF(temp,0)),2) < 18 AND 18 <= FORMAT(MAX(temp),2) THEN (18-FORMAT(MIN(NULLIF(temp,0)),2)) * (0.08+0.42* (18-FORMAT(MIN(NULLIF(temp,0)),2)) / (FORMAT(MAX(temp),2) - FORMAT(MIN(NULLIF(temp,0)),2)))
		END AS dju 	 FROM `conso_teleinfo`	INNER JOIN eqLogic ON id=id_equipement 	where rec_date >= SUBDATE(CURRENT_DATE, INTERVAL 1 DAY) GROUP BY rec_date,id_equipement
[2026-01-21 00:00:04][INFO] CrontabJour:REPLACE INTO conso_jour (`timestamp`,rec_date,periode,hp,hc,hp2,hc2,hp3,hc3,idx_max_hp,idx_min_hp,idx_max_hc,idx_min_hc,idx_max_hp2,idx_min_hp2,idx_max_hc2,idx_min_hc2,idx_max_hp3,idx_min_hp3,idx_max_hc3,idx_min_hc3,id_eq,temp_max,temp_min,temp_moy,dju_clim,dju)
				SELECT
				MIN(`timestamp`) AS `timestamp`  ,
				`conso_teleinfo`.`rec_date` AS `rec_date`,
				DATE_FORMAT(`conso_teleinfo`.`rec_date`,'%a %e %y') AS `periode`, 	CASE WHEN id_equipement IN (388) THEN ((MAX(`hchp`) - MIN(`hchp`)))	ELSE ((MAX(`hchp`) - MIN(`hchp`)) / 1000)  END AS hp,
			                CASE WHEN id_equipement IN (388) THEN  ((MAX(`hchc`) - MIN(`hchc`)))	ELSE  ((MAX(`hchc`) - MIN(`hchc`)) / 1000)  END AS hc,
						CASE WHEN id_equipement IN (388) THEN ((MAX(`hchp2`) - MIN(`hchp2`)))	ELSE ((MAX(`hchp2`) - MIN(`hchp2`)) / 1000)  END AS hp2,
			                CASE WHEN id_equipement IN (388) THEN  ((MAX(`hchc2`) - MIN(`hchc2`)))	ELSE  ((MAX(`hchc2`) - MIN(`hchc2`)) / 1000)  END AS hc2,
						CASE WHEN id_equipement IN (388) THEN ((MAX(`hchp3`) - MIN(`hchp3`)))	ELSE ((MAX(`hchp3`) - MIN(`hchp3`)) / 1000)  END AS hp3,
		                	CASE WHEN id_equipement IN (388) THEN  ((MAX(`hchc3`) - MIN(`hchc3`)))	ELSE  ((MAX(`hchc3`) - MIN(`hchc3`)) / 1000)  END AS hc3,MAX(hchp) as idx_max_hp,
				MIN(hchp) as idx_min_hp,
				MAX(hchc) as idx_max_hc,
				MIN(hchc) as idx_min_hc,
				MAX(hchp2) as idx_max_hp2,
				MIN(hchp2) as idx_min_hp2,
				MAX(hchc2) as idx_max_hc2,
				MIN(hchc2) as idx_min_hc2,
				MAX(hchp3) as idx_max_hp3,
				MIN(hchp3) as idx_min_hp3,
				MAX(hchc3) as idx_max_hc3,
				MIN(hchc3) as idx_min_hc3,
				id_equipement,
				FORMAT(MAX(temp),2) AS temp_max,
				FORMAT(MIN(NULLIF(temp,0)),2) AS temp_min,
				FORMAT(AVG(NULLIF(temp,0)),2) AS temp_moy, CASE WHEN DATE_FORMAT(rec_date, '%m-%d') NOT BETWEEN
						    DATE_FORMAT(STR_TO_DATE('06-15', '%m-%d'), '%m-%d') AND
						    DATE_FORMAT(STR_TO_DATE('09-15', '%m-%d'), '%m-%d')  THEN 0 WHEN 18 = 0 THEN 0
		WHEN FORMAT(AVG(NULLIF(temp,0)),2) = 0 THEN 0
		WHEN 18 >= FORMAT(MAX(temp),2) THEN 0
		WHEN 18 <= FORMAT(MIN(NULLIF(temp,0)),2) THEN FORMAT(AVG(NULLIF(temp,0)),2)-18
		WHEN FORMAT(MIN(NULLIF(temp,0)),2) < 18 AND 18 <= FORMAT(MAX(temp),2) THEN (FORMAT(MAX(temp),2)-18) * (0.08+0.42* (FORMAT(MAX(NULLIF(temp,0)),2)-18) / (FORMAT(MAX(temp),2) - FORMAT(MIN(NULLIF(temp,0)),2)))
		END AS dju_clim,  CASE WHEN DATE_FORMAT(rec_date, '%m-%d') NOT BETWEEN
							DATE_FORMAT(STR_TO_DATE('10-15', '%m-%d'), '%m-%d') AND	'12-31' AND

						DATE_FORMAT(rec_date, '%m-%d') NOT BETWEEN	'01-01' AND
							DATE_FORMAT(STR_TO_DATE('04-15', '%m-%d'), '%m-%d')  THEN 0  WHEN 18 = 0 THEN 0
		WHEN 	FORMAT(AVG(NULLIF(temp,0)),2) = 0 THEN 0
		WHEN 18 >= FORMAT(MAX(temp),2) THEN 18 - FORMAT(AVG(NULLIF(temp,0)),2)
		WHEN 18 <= FORMAT(MIN(NULLIF(temp,0)),2) THEN 0
		WHEN FORMAT(MIN(NULLIF(temp,0)),2) < 18 AND 18 <= FORMAT(MAX(temp),2) THEN (18-FORMAT(MIN(NULLIF(temp,0)),2)) * (0.08+0.42* (18-FORMAT(MIN(NULLIF(temp,0)),2)) / (FORMAT(MAX(temp),2) - FORMAT(MIN(NULLIF(temp,0)),2)))
		END AS dju 	 FROM `conso_teleinfo`	INNER JOIN eqLogic ON id=id_equipement 	where rec_date >= SUBDATE(CURRENT_DATE, INTERVAL 1 DAY) GROUP BY rec_date,id_equipement
[2026-01-21 00:00:07][ERROR] Erreur sur conso::StartDeamon() : Unsupported operand types: string / int
[2026-01-21 00:00:11][ERROR] Erreur sur la fonction cronDaily du plugin : Unsupported operand types: string / int
[2026-01-21 00:30:02][INFO] CrontabJour:REPLACE INTO conso_jour (`timestamp`,rec_date,periode,hp,hc,hp2,hc2,hp3,hc3,idx_max_hp,idx_min_hp,idx_max_hc,idx_min_hc,idx_max_hp2,idx_min_hp2,idx_max_hc2,idx_min_hc2,idx_max_hp3,idx_min_hp3,idx_max_hc3,idx_min_hc3,id_eq,temp_max,temp_min,temp_moy,dju_clim,dju)
				SELECT
				MIN(`timestamp`) AS `timestamp`  ,
				`conso_teleinfo`.`rec_date` AS `rec_date`,
				DATE_FORMAT(`conso_teleinfo`.`rec_date`,'%a %e %y') AS `periode`, 	CASE WHEN id_equipement IN (388) THEN ((MAX(`hchp`) - MIN(`hchp`)))	ELSE ((MAX(`hchp`) - MIN(`hchp`)) / 1000)  END AS hp,
			                CASE WHEN id_equipement IN (388) THEN  ((MAX(`hchc`) - MIN(`hchc`)))	ELSE  ((MAX(`hchc`) - MIN(`hchc`)) / 1000)  END AS hc,
						CASE WHEN id_equipement IN (388) THEN ((MAX(`hchp2`) - MIN(`hchp2`)))	ELSE ((MAX(`hchp2`) - MIN(`hchp2`)) / 1000)  END AS hp2,
			                CASE WHEN id_equipement IN (388) THEN  ((MAX(`hchc2`) - MIN(`hchc2`)))	ELSE  ((MAX(`hchc2`) - MIN(`hchc2`)) / 1000)  END AS hc2,
						CASE WHEN id_equipement IN (388) THEN ((MAX(`hchp3`) - MIN(`hchp3`)))	ELSE ((MAX(`hchp3`) - MIN(`hchp3`)) / 1000)  END AS hp3,
		                	CASE WHEN id_equipement IN (388) THEN  ((MAX(`hchc3`) - MIN(`hchc3`)))	ELSE  ((MAX(`hchc3`) - MIN(`hchc3`)) / 1000)  END AS hc3,MAX(hchp) as idx_max_hp,
				MIN(hchp) as idx_min_hp,
				MAX(hchc) as idx_max_hc,
				MIN(hchc) as idx_min_hc,
				MAX(hchp2) as idx_max_hp2,
				MIN(hchp2) as idx_min_hp2,
				MAX(hchc2) as idx_max_hc2,
				MIN(hchc2) as idx_min_hc2,
				MAX(hchp3) as idx_max_hp3,
				MIN(hchp3) as idx_min_hp3,
				MAX(hchc3) as idx_max_hc3,
				MIN(hchc3) as idx_min_hc3,
				id_equipement,
				FORMAT(MAX(temp),2) AS temp_max,
				FORMAT(MIN(NULLIF(temp,0)),2) AS temp_min,
				FORMAT(AVG(NULLIF(temp,0)),2) AS temp_moy, CASE WHEN DATE_FORMAT(rec_date, '%m-%d') NOT BETWEEN
						    DATE_FORMAT(STR_TO_DATE('06-15', '%m-%d'), '%m-%d') AND
						    DATE_FORMAT(STR_TO_DATE('09-15', '%m-%d'), '%m-%d')  THEN 0 WHEN 18 = 0 THEN 0
		WHEN FORMAT(AVG(NULLIF(temp,0)),2) = 0 THEN 0
		WHEN 18 >= FORMAT(MAX(temp),2) THEN 0
		WHEN 18 <= FORMAT(MIN(NULLIF(temp,0)),2) THEN FORMAT(AVG(NULLIF(temp,0)),2)-18
		WHEN FORMAT(MIN(NULLIF(temp,0)),2) < 18 AND 18 <= FORMAT(MAX(temp),2) THEN (FORMAT(MAX(temp),2)-18) * (0.08+0.42* (FORMAT(MAX(NULLIF(temp,0)),2)-18) / (FORMAT(MAX(temp),2) - FORMAT(MIN(NULLIF(temp,0)),2)))
		END AS dju_clim,  CASE WHEN DATE_FORMAT(rec_date, '%m-%d') NOT BETWEEN
							DATE_FORMAT(STR_TO_DATE('10-15', '%m-%d'), '%m-%d') AND	'12-31' AND

						DATE_FORMAT(rec_date, '%m-%d') NOT BETWEEN	'01-01' AND
							DATE_FORMAT(STR_TO_DATE('04-15', '%m-%d'), '%m-%d')  THEN 0  WHEN 18 = 0 THEN 0
		WHEN 	FORMAT(AVG(NULLIF(temp,0)),2) = 0 THEN 0
		WHEN 18 >= FORMAT(MAX(temp),2) THEN 18 - FORMAT(AVG(NULLIF(temp,0)),2)
		WHEN 18 <= FORMAT(MIN(NULLIF(temp,0)),2) THEN 0
		WHEN FORMAT(MIN(NULLIF(temp,0)),2) < 18 AND 18 <= FORMAT(MAX(temp),2) THEN (18-FORMAT(MIN(NULLIF(temp,0)),2)) * (0.08+0.42* (18-FORMAT(MIN(NULLIF(temp,0)),2)) / (FORMAT(MAX(temp),2) - FORMAT(MIN(NULLIF(temp,0)),2)))
		END AS dju 	 FROM `conso_teleinfo`	INNER JOIN eqLogic ON id=id_equipement GROUP BY rec_date,id_equipement

L’erreur apparaît bien.

Je pense que tu as un équipement SuiviConso avec un calcul dans l’expression des commandes index avec des types différents. Et que c’est ça qui pose problème. Je t’invite à suivre la proposition de Tonio16 ou sinon désactiver équipement par équipement pour essayer de déterminer lequel pose problème.

Quand tu parles des commandes index c’est les commandes d’entrées ?

oui c’est ça. Tu as plusieurs equipements?

juste 3 :

image

Tu peux montrer le paramétrage des 2 équipements (lave linge et compteur eau)

Probablement imax1. Calcul à minuit alors que la valeur n’existe pas encore.

Antoine

Lave-linge

image

Eau

Merci @Tonio16 mais pour le imax1 j’avais suivi un tuto.

Qui date d’avant php8.
Expérience perso:

il faut donc trouver une nouvelle syntaxe…