Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Vitesse EIBNetMux et PHP
#1
Bonjour,
J'ai actuellement un système en place pour gèrer ma domotique via une interface Web, qui fonctionnementy globalement comme suit :
- Un Raspberry a été configuré avec un serveur Web (Apache + PHP) et le service EIBNetMux (pour la communication avec la domotique)
- Un routeur Hager TYF120 fait office de passerelle entre EIBNetMux et ma domotique (en IP donc)

Cela fonctionne plutôt bien (je peux contrôler ce que je veux, je peux récupérer le statut de mes sondes, etc.) mais j'ai un petit soucis de vitesse d'exécution de mes scripts.
En effet, j'ai, par exemple, une page sur laquelle se trouve une douzaine de données de sondes différentes (température, compteur d'eau, etc.) et il faut environ 15-20 secondes pour récupérer ces données.
Chacune de ces sondes se trouve dans un groupe d'adresse différent (et son donc interrogés chacun à leur tour).

Vous allez me dire : ce n'est pas énorme.
Non, mais attendre 15-20 secondes devant la page en attendant de voir les valeurs apparaître, c'est long oO

Ma question est la suivante : avez-vous des idées/solutions pour accélérer cela ?


Au niveau du bus KNX, je pense qu'on ne sait rien faire (il plafonne à 9600 bit/s)
J'avais pensé un second routeur et faire un balancement entre les 2, mais cela a évidemment un coût non négligeable et ne résoudra pas vraiment le problème (je vais juste diviser le temps par 2).
J'ai essayé de créer un groupe avec plusieurs sondes ensemble, mais EIBNetMux ne semble pas l'accepter (la page Web plante).

Je vous remercie d'avance pour vos réponses.
Répondre
#2
La vitesse du script PHP doit être 1.000 à 10.000 fois plus rapide que la vitesse du bus.
Donc si tu as une énorme latence c'est que soit EIBNetMux est extrêmement lent dans son exécution soit il ne fait pas de demande de données mais il attend que tes capteurs envoient les données de manière cyclique sans "stockage" des valeurs intermédiaires.
Le perfectionnement de soi et l'accession à sa légende personnelle passe obligatoirement par le partage de son savoir et de son expérience avec les profanes en demande d'initiation. (R. Bach)
Répondre
#3
Salut,

Dans ton cas il semblerait plus intéressant d'avoir un script qui tourne périodiquement pour stocker la valeur "courante" de tes sondes, et afficher celle-ci sur ta page web, dans ce cas tu n'aurais pas d'attente.

C'est ce que font des supervisions type OpenHAB, Jeedom ou autres. N'as-tu pas exploré ces pistes ?
Monter un système en Apache / PHP / EIBNetMux me semble beaucoup de boulot si tu te limites à du pilotage / affichage standard d'infos KNX alors que c'est déjà disponible dans les outils gratuits que j'ai cités.
Répondre
#4
Bonjour,

Je vous remercie pour vos réponses, et m'excuse pour mon délai de réponse.

@steph : je sais déjà que d'autres systèmes existent pour réaliser (en effet OpenHAB et Jeedom sont 2 très connus).
Cependant, je préfère développer ce système moi-même afin d'avoir un contrôle le plus complet possible.
Mais comme tu dis, je me rend bien compte que cela demande plus de boulot ^^

@pollux06 : par rapport à une possible latence de EIBNetMux, cela m'étonne car c'est un logiciel très léger, hébergé sur un Raspberry Pi (qui a donc largement les resources requises pour le faire tourner).
Ceci dit, je vais quand même y regarder et voir s'il est possible de l'améliorer ;-)

Pour améliorer mon système, je vais également revoir son principe de fonctionnement.
En effet, actuellement, tout est séquentiel : mon script envoi une commande à la domotique (via EIBNetMux) et attend sa réponse, il envoi ensuite la suivante, et ainsi de suite (tout se fait en série).
Je vais donc redévelopper cela pour que le script envoi des requêtes en parallèle (je pense que mon interface IP sera parfaitement à même de gérer cela).

Pour les requêtes périodiques en arrière plan, j'y avais pensé, mais dans ce cas, plusieurs problèmes se posent :
- A quelle fréquence (pas trop pour ne pas surcharger le bus, pas trop peu pour être suffisamment à jour)
- Quid si un statut change entre 2 requêtes
Répondre
#5
Salut Didi,

Je ne connais pas du tout EIBNetMux aussi je vis peut être t'indiquer une méthode qui ne pourra pas fonctionner avec ce système.

Normalement tu ne dois pas avoir à demander de manière cyclique les valeurs de chaque variable car chaque fois qu'une variable change de valeur, elle est systématiquement envoyée sur le bus par un des participants.
Il te faut donc simplement écouter le bus et déclencher les actions spécifiques à la réception de chaque changement de valeur. Par exemple chaque fois que la température extérieure change, cette nouvelle valeur est envoyée sur le bus associée à la GA que tu as défini par ETS. Donc quand ton raspi va recevoir cette GA avec la nouvelle valeur, tu vas déclencher l'action spécifique ( enregistrement, affichage, test de gel, .......) que tu souhaites.
Si en échange au lieu d'écouter le bus, tu dois demander séquentiellement "l'état" de chaque variable, tu vas saturer le bus pour rien du tout.
Il te faut donc revoir ta programmation (json, php, ........)
Le perfectionnement de soi et l'accession à sa légende personnelle passe obligatoirement par le partage de son savoir et de son expérience avec les profanes en demande d'initiation. (R. Bach)
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)