Bonjour,
J’avais réinstallé from scratch mon serveur pour passer de debian 11 à debian 12 avec jeedom 4.5 et je constatais des warnings dans http.error.
Avant de le remonter l’info sur le community, j’ai installé la beta pour vérifier que c’était pas déjà corrigé et je suis aussi passé sous jeedom 4.5.1
0036|[Fri Dec 19 23:37:16.343989 2025] [php:warn] [pid 2547839:tid 2547839] [client 127.0.0.1:34384] PHP Warning: foreach() argument must be of type array|object, string given in /var/www/html/plugins/mqtt2/core/class/mqtt2.class.php on line 837
Cela correspond au code suivant :
835 public static function ha_discovery($_topic, $_messages) {
836 foreach ($_messages as $type => $devices) {
837 foreach ($devices as $id => $device) {
838 foreach ($device as $name => $configuration) {
839 //log::add(__CLASS__, 'debug', 'HA : ' . print_r($configuration, true));
840 if (!is_array($configuration) || !isset($configuration['config']['dev']['mf']) || !isset($configuration['config']['stat_t'])) {
841 continue;
842 }
Il faudrait sécuriser en mettant des tests pour vérifier que c’est des tableaux par exemple :
public static function ha_discovery($_topic, $_messages) {
if (!is_array($_messages)) {
return;
}
foreach ($_messages as $type => $devices) {
if (!is_array($devices)) {
continue;
}
foreach ($devices as $id => $device) {
if (!is_array($device)) {
continue;
}
foreach ($device as $name => $configuration) {
//log::add(__CLASS__, 'debug', 'HA : ' . print_r($configuration, true));
if (!is_array($configuration) || !isset($configuration['config']['dev']['mf']) || !isset($configuration['config']['stat_t'])) {
continue;
}
Informations Jeedom
Core : 4.5.1 (master)
DNS Jeedom : non
Plugin : MQTT Manager
Version : 2025-12-16 01:21:25 (beta)
Statut Démon : Démarré - (2025-12-16 19:23:03)