perso j’ai tjr ce meme problème et mes tentative de diagnostique montre cela:
Je rencontre depuis quelque temps un problème intermittent avec le plugin EIB/KNX : certaines commandes de lecture échouent avec le message « Aucune réponse », alors que les équipements KNX répondent correctement lors de tests manuels.
Après plusieurs heures de diagnostic sur Jeedom, KNXD et le code PHP du plugin, j’ai identifié plusieurs éléments qui pourraient aider à comprendre l’origine du problème.
1. Environnement
| Composant |
Configuration |
| Jeedom |
Raspberry Pi 4 |
| Système |
Debian 12 Bookworm |
| Plugin |
EIB/KNX, version 2026-08-29 |
| Service KNX |
KNXD |
| Passerelle KNX/IP |
192.168.0.10 |
| Protocole |
KNX/IP Tunneling |
| Port KNX/IP |
UDP 3671 |
| Interface locale KNXD |
TCP 6720 |
| Adresse KNX du client |
15.15.242 |
Le service KNXD fonctionne normalement et le BusMonitor du plugin est actif.
Le processus PHP correspondant est :
php /var/www/html/core/php/jeeCron.php cron_id=171767
La tâche Jeedom associée est eibd::BusMonitor.
2. Description du problème
Le plugin remonte régulièrement des erreurs :
[Maison][Thermostat Primaire][Etat][Read]: Aucune réponse
[Salle de Bains][Thermostat Salle de Bains Fille][Vanne][Read]: Aucune réponse
[Salle de Jeux][Thermostat Salle de Jeux][Température ambiante][Read]: Aucune réponse
Les symptômes sont les suivants :
- Certaines lectures cycliques fonctionnent normalement.
- D’autres échouent de manière intermittente.
- Plusieurs erreurs peuvent apparaître au même moment.
- Les commandes KNX d’écriture continuent de fonctionner.
- Certaines valeurs Jeedom restent figées alors que leur état a changé sur le bus.
- Les lectures manuelles peuvent réussir immédiatement après un échec automatique.
Ce problème affecte notamment la fiabilité du suivi des états de chauffage et des équipements KNX.
3. Tests réalisés
Test A : validation des réponses KNX
Le 06/11/2026 à 08:57, une séquence de 18 lectures a été analysée dans les journaux KNXD.
Résultat :
- 18 demandes GroupValueRead transmises.
- 18 réponses GroupValueResponse observées.
- Temps de réponse généralement compris entre 36 et 65 ms, avec un maximum observé de 164 ms.
Les équipements KNX répondent donc correctement aux lectures de cette séquence.
Test B : lecture manuelle de l’état PAC
Équipement : actionneur KNX 1.1.45
Adresse de groupe : 11/5 (notation KNXD : 11/0/5)
À 08:57:37 :
15.15.242 → 11/0/5 : A_GroupValue_Read
1.1.45 → 11/0/5 : A_GroupValue_Response 00
Réponse obtenue en 66 ms.
La lecture manuelle fonctionne parfaitement.
Test C : échec de lecture automatique
À 09:35:05 :
[Maison][Thermostat Primaire][Etat][Read]: Aucune réponse
L’analyse du journal KNXD entre 09:34:50 et 09:35:15 ne montre aucune demande de lecture vers 11/0/5.
KNXD continue pourtant de traiter d’autres télégrammes à cette période.
Cela suggère que certaines lectures échouent avant leur transmission effective au bus.
Test D : réduction des lectures cycliques
Pour écarter une surcharge liée au nombre de requêtes, j’ai temporairement désactivé :
- Les lectures cycliques des températures ambiantes.
- Les lectures cycliques des états de vannes.
Les températures sont déjà transmises spontanément sur le bus KNX.
Les états de vannes ont également été séparés des commandes ON/OFF :
- 14/… : commandes des vannes.
- 27/… : retours d’état des actionneurs.
Les nouvelles adresses de retour d’état fonctionnent correctement lors des lectures KNX.
Malgré cette réduction des lectures cycliques, les erreurs persistent.
Une saturation du bus ne semble donc pas être l’explication principale.
4. Analyse du code du plugin
J’ai examiné les fichiers installés, sans les modifier.
Fichier core/class/eibd.class.php
La fonction EibdRead() se trouve à la ligne 393.
Elle crée une connexion pour chaque lecture :
$EibdConnexion = new EIBConnection($host,$port);
$EibdConnexion->setTimeout(5);
Dans la fonction execute(), vers la ligne 997 :
try {
$DataBus = eibd::EibdRead($ga);
} catch (Exception $exception) {
$DataBus = false;
}
Puis :
if($DataBus === false){
message::add(
'info',
$this->getHumanName().'\[Read\]: Aucune réponse',
'',
$ga
);
return;
}
Point important : les exceptions sont interceptées sans journalisation de leur cause.
Le message « Aucune réponse » peut donc correspondre à plusieurs situations :
- Échec de connexion TCP.
- Échec d’ouverture du groupe KNX.
- Erreur de communication.
- Timeout.
- Absence réelle de réponse.
Il est actuellement impossible de distinguer ces situations à partir du message affiché.
Fichier core/class/eibclient.class.php
La classe EIBConnection est définie à la ligne 32.
Plusieurs points mériteraient d’être examinés.
A. Gestion des timeouts
Le timeout de cinq secondes est bien appliqué via stream_set_timeout().
Cependant, deux traitements différents existent :
$this->errno = self::ETIMEDOUT;
et :
$this->errno = « Timeout »;
Le code d’erreur n’est donc pas représenté de manière homogène.
B. Fermeture des connexions
Dans EibdRead(), la fermeture explicite :
$EibdConnexion->EIBClose();
est exécutée après une lecture réussie.
Plusieurs chemins d’erreur retournent false avant cette instruction.
Il serait intéressant de vérifier si les ressources sont correctement libérées dans tous les cas.
C. Ouverture des groupes
La fonction EIBOpenT_Group() peut retourner -1.
Cette erreur peut ensuite être transformée en exception, puis en simple message « Aucune réponse ».
5. Hypothèses à investiguer
Les observations semblent orienter le diagnostic vers la gestion des lectures côté plugin plutôt que vers les équipements KNX.
Les pistes suivantes mériteraient une vérification :
- Échec intermittent de création des connexions TCP vers KNXD.
- Échec d’ouverture des groupes KNX.
- Gestion des timeouts et des codes d’erreur.
- Libération des connexions après un échec.
- Interaction entre les lectures cycliques et le processus BusMonitor.
- Gestion de plusieurs tâches Jeedom effectuant des lectures.
À ce stade, aucune de ces hypothèses n’est formellement confirmée.
6. Améliorations proposées
Serait-il possible d’envisager les améliorations suivantes dans une prochaine version du plugin ?
Priorité 1 : améliorer les diagnostics
Journaliser les exceptions et les codes d’erreur retournés par EIBConnection, notamment :
- Adresse de groupe interrogée.
- Étape de communication ayant échoué.
- Code d’erreur.
- Message d’exception.
- Durée de la tentative de lecture.
Priorité 2 : fiabiliser la gestion des connexions
Vérifier que les connexions sont correctement fermées, y compris lorsqu’une exception ou un timeout survient.
Priorité 3 : analyser les lectures cycliques
Vérifier si les tâches planifiées peuvent provoquer des échecs intermittents, notamment lors de lectures successives ou d’exécutions concurrentes.
Priorité 4 : améliorer la remontée des erreurs
Distinguer une absence réelle de réponse KNX d’une erreur interne au plugin.
Cela éviterait d’orienter inutilement les diagnostics vers ETS ou les équipements KNX.
7. Résultat attendu
Lorsqu’une commande Jeedom effectue une lecture KNX :
- La demande doit être transmise à KNXD.
- La réponse doit être correctement récupérée.
- La valeur Jeedom doit être actualisée.
- En cas d’échec, le journal doit indiquer la cause technique réelle.
L’objectif est de garantir des états fiables, notamment pour les installations utilisant KNX dans la gestion du chauffage.
Conclusion
Les tests montrent que les équipements KNX et KNXD fonctionnent correctement lors des lectures réussies.
En revanche, certaines lectures automatiques échouent sans qu’aucune demande correspondante soit visible dans les journaux KNXD.
Le plugin semble masquer plusieurs types d’erreurs derrière le message générique « Aucune réponse ».
Pourriez-vous examiner ce comportement et, si possible, améliorer la gestion des erreurs et des connexions dans une prochaine mise à jour ?
Je préfère éviter toute modification locale du code du plugin, afin de conserver une installation compatible avec les futures mises à jour.
Je peux fournir les extraits de journaux KNXD et EIB/KNX correspondant aux tests décrits.
Merci d’avance pour votre aide et pour le développement de ce plugin.