Aller au contenu
sebcbien

Conseils Pour Analyser Et Améliorer La Couverture Zwave

Recommended Posts

Bonsoir,

 

Cet article est en cours d'écriture, car je suis occupé à  améliorer mon réseau Zwave et je ne fais part ici que de ma méthodologie en cours.

 

J'ai acheté deux antennes, la zigbee dont on parle ici: http://www.domotique-fibaro.fr/index.php/topic/2706-remplacer-lantenne-de-sa-home-center-2/ et une autre chinoiserie à  3€50

 

Première chose:

 

J'ai commencé par installer une scène pour monitorer les DeadNodes, les réveiller et notifier (récupérée ailleurs et modifiée):

 

cette ligne permet d'enlever certains devices du scan (keyfob, appareils débranchés etc.)

if ( not (i==1285 or i==1286 or i==10 or i==64 or i==65 or i==66 or i==67 or i==68 or i==27 or i==28 or i==29 or i==30 or i==31 or i==32 or i==43 or i==77 or i==117)) then
--[[ 
%% autostart 
%% properties 
%% globals 
--]] 
a=1 
wait_time=6 --minutes between dead node check 
push_dev =2 -- id of the device to send push message to 
disable_push = 0 -- Change to 1 if you don't want to receive a push notification when a dead node is discovered 
fibaro:debug("Starting") 
  if (fibaro:countScenes()>1) then 
    fibaro:debug("Multiple instances not allowed, killing this instance") 
    fibaro:abort(); 
  end 
  fibaro:debug("Looping") 
  request_update=0 
  i=0 
  for i = 0, 1300 do 
    if ( not (i==1285 or i==1286 or i==10 or i==64 or i==65 or i==66 or i==67 or i==68 or i==27 or i==28 or i==29 or i==30 or i==31 or i==32 or i==43 or i==77 or i==117)) then
    local type = fibaro:getType(i); 
    if type ~= "" then 
      if tonumber(fibaro:getValue(i, "dead")) == 1 then 

        dev=fibaro:getName(i) 
        msg = type.." "..dev.." has been marked as dead, waking up device" 
        fibaro:debug(msg) 
        fibaro:call(1, "wakeUpDeadDevice", i); 

        if disable_push==0 then 
          --fibaro:call(push_dev, "sendPush", msg); 
          fibaro:call(push_dev, "sendEmail", msg, msg); 
            
        end 
        request_update=1 
      end 
    end 
   end   
  end 
  if request_update==1 then 
    request_update=0 
    i=0 
    --fibaro:call(1,'requestNodeNeighborUpdate',1) 
    --fibaro:sleep(21*60*1000) 
    fibaro:debug("Routing should be updated") 
  end 

Je lance cette scène toute les minutes via une autre scène, en effet, le script original prévoyait de tourner en boucle mais après un certain temps, ça plantait.

 

Schedule:

post-826-0-42877600-1417978678_thumb.jpg

 

Ceci me permet d'avoir dans mon mail une trace horodatée des modules qui ne sont pas stables.

 

Voila donc la première chose de faite pour pouvoir améliorer le signal: la mesure SCI-EN-TI-FIQUE ... et pas le "j'ai l'impression que il y a 3 jours c'était mieux" ;)

 

Maintenant vous pouvez mettre une antenne quelques jours, puis mettre l'autre et voir laquelle fonctionne le mieux, objectivement.

 

MAIS vous vous rendrez vite compte que le DeadNodes apparaissent lorsque l'on se sert de son réseau zwave et pas lorsqu'il "dort" se limiter à  cette méthode est donc un peu caduque.

 

 

Deuxième chose: Améliorations en temps réel

 

Certains le savent, les WP de fibaro ont une fonctionnalité de mesure du "signal"

 

Ce n'est pas vraiment une mesure du signal, mais un indicateur de la connectivité au HC

 

Voici quelques "tuyaux":

 

Pour activer la fonctionnalité de surveillance de connectivité:

 

Branchez le WP et appuyez sur le bouton en continu pendant 10-15 secondes jusqu'à  ce que le cercle de couleur devienne violet.

Relâchez et ré-appuyez une fois sur le bouton.

Votre WP est en mode test de signal.
 
Signification des couleurs:
- Vert: connexion directe avec le HC,
- Jaune, connexion via un autre module zwave (utilisation du maillage)
- Violet/rouge, échec de connexion
 
Avec ceci vous pourrez déjà  avoir une idée de la couverture directe de votre HC
C'est déjà  bien, mais allons plus loin.
 
La chose importante à  savoir, c'est que lorsque le WP est en mode de connexion direct avec le HC, il commence à  stresser le réseau !!!!
En effet, si vous regardez la led Zwave sur votre HC (4e en partant de la droite) lorsque le WP est éclairé en vert, vous verrez qu'il y a une activité continue et soutenue!
Sachant cela, vous remarquerez que avec une bonne connexion, le cercle vert du WP ne clignotte pas et reste au vert en permanence.
 
Utiliser ceci permettra un meilleur diagnostic:
 
- Pour tester les éléments perturbateurs (téléphones DECT, GSM, micro-ondes, wifi etc)
En effet, si lorsque vous allumez ces appareils le WP en vert continu commence à  clignoter de temps en temps, cela voudra dire que l'appareil perturbe le réseau zwave
 
- Pour détecter plus finement l'amélioration du remplacement de votre antenne:
Si vous mettez votre WP de test sur une allonge électrique, vous pourrez vous balader avec et tester le point ou vous perdez une connexion de qualité, si avec une nouvelle antenne vous pouvez aller 4m plus loin sans pertes de connexion, c'est que l'antenne est meilleure
Mettre votre WP sur une allonge permettra aussi de mesurer la qualité du signal au niveau des interrupteurs encastrés.
 
- Pour tester l'amélioration de la couverture en repositionnant le HC ou en inclinant son antenne
 
 
Concernant l'antenne:
 
il faut savoir que une antenne filaire du style de notre HC émet latéralement, cà d que si votre antenne Zwave est verticale, elle couvre à  360° autour d'elle, avec un cône qui va en s'élargissant; Corollaire: l'antenne émet relativement peu directement au dessus et en dessous d'elle.
 
Dépendant de cela, mettre le HC dans un coin permettra peut être d'avoir une meilleure couverture que au milieu de la maison
 
Pour une réception/émission optimale, il faut que les antennes soient le plus possible parallèles pour optimiser au maximum le gain de l'antenne (pensez-y lorsque vous encastrez vos dimers et autres).
 
Incliner l'antenne permettra parfois d’atteindre mieux certaines zones mais risque de diminuer la force du signal ailleurs.
 
Pensez également aux réflexions, les ondes ne se propagent pas qu'en ligne droite, elles réfléchissent aussi sur certaines matières, (métallique)... avec ce jeu des réflexions un meilleur signal à  un endroit ne veut pas nécessairement dire meilleur signal partout
 

 

Conseils:

 

Si vous ne pouvez pas avoir une connexion directe avec tous vos modules Zwave, essayez au moins qu'il y ait un WP ou deux entre le HC et la zone moins bien couverte qui aie une connexion PARFAITE avec la HC, comme ça au moins les ordres relayés via ce WP relais le seront dans les meilleures conditions  pour la liaison HC <-> WP relais <-> Module éloigné

  • Like 1
  • Upvote 10

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai essayé deux répétiteurs aeonlabs et je les ai renvoyés... ;-)

Je ne dis pas que ça ne marche pas mais pas suffisamment dans mon cas..

Sent From my Vic20

Partager ce message


Lien à poster
Partager sur d’autres sites

ok merci  donc autant mettre des WP qui servent aussi à  autre chose.

Partager ce message


Lien à poster
Partager sur d’autres sites

 Mon DSD-37 ne me sert toujours à  rien, peut-être qu'avec la v4?

Partager ce message


Lien à poster
Partager sur d’autres sites

 Je ne vois pas de différence quand je le débranche.

Partager ce message


Lien à poster
Partager sur d’autres sites

+1 pour le répéteur....

Donc les Wall Plugs c'est pas mal, mais je pense que le plus efficace chez moi ce sont les FGD que j'installe un peu partout dans les murs. Forcément bien répartis sur la maison puisqu'on a normalement un interrupteur àl'entrée de chaque pièce.

Tandis que les Wall Plug, ils sont presque tous localisés au même endroit (séjour) donc l"effet routage du signal est moins utile.

Partager ce message


Lien à poster
Partager sur d’autres sites

Après avoir amélioré mon réseau, maintenant ça fait 3 semaines que  je n'ai plus qu'une moyenne de 1 dead node tous les 2 ou 3 jours...

Et quand je dis dead node, je ne leur laisse pas une minute pour disparaître, mon script scanne sans arrêt.

Et ma maison est vraiment une catastrophe pour les ondes, deux niveaux, planchers en béton armé, treillis dans les chapes... le bonheur ;)

Je n'aurais jamais espéré aussi bien 

p.s. Je suis en V 3.6

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

sebcbien,

Je vais enfin utiliser ton script maintenant que ma HC2 est presque prête.

J'essaie de comprendre :

  • ligne24 : il teste si le node i est "dead" (compris  :) )
  • ligne 28 : il réveille (dans les faits, il essaye ...) le node i qui était mort
  • ligne 32 : il envoie une notif comme quoi le node i était mort => quel code devrais-je utiliser pour que la box (ID=1 ?) envoie un mail plutôt qu'une notif sur mon smartphone ?
  • ligne 35 : je remplacerais request_update=1 par request_update=request_update+1 afin de pouvoir envoyé un mail récapitulatif (entre ligne 40 et 41) avec le nombre de nodes morts découverts ?

Qu'en penses-tu ?

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai trouvé l'idée de sebcbien tellement géniale, que je l'ai adaptée à  mes besoins :

  • j'ai tout mis dans un VD
  • j'ai rajouté quelques infos

Outre de pouvoir voir quels sont les modules qui sont le plus souvent mort, il permet de les réveiller toutes les minutes, ce qui est GENIAL quand vous avez un module qui est mort une fois toutes les lunes (jamais quand il faut  :) ) et rarement toujours le même.

post-1320-0-82504600-1422730174_thumb.jpg

post-1320-0-23746100-1422730175_thumb.jpg

 

DeadNodesAnalysis.V1.0.VJO.vfib

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

merci Jojo, j'ai implantent brutalement, sans rien modifier ; est ce qu'il y a des choses à  customiser ? le pushmail fonctionne directement ?

 

et 0 impact sur la consoo des piles ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Sakkhoo,

J'ai oublié de joindre les icônes que j'utilise => ça tu dois adapter le n°.

post-1320-0-58585400-1422784151_thumb.png

post-1320-0-66083500-1422784227_thumb.png

Pour le reste tu peux simplment importer le VD, et ça devrait fonctionner (il n'y a pas de variable globale à  créer)

Ou bien les num que j'ai mis existent déjà  chez toi, et tu auras des icônes bizarres, ou bien ils n'existent pas et le script risque de ne pas fonctionner. Mais si tu as des valeurs dans le VD, c'est qu'il fonctionne.

 

Je ne pense pas que cela a d'impact sur la conso des pilles, car il n'interroge pas les devices, sauf pour les réveiller lorsqu'il est mort : j'ai débranché un WP (donc il était mort), et le fibaro a continué à  le voir alive quelques minutes, avant de le marquer dead. Ce qui veut dire qu'il regarde dans sa DB interne pour connaitre le status, et le script interroge la DB interne.

Partager ce message


Lien à poster
Partager sur d’autres sites

Yes j'avais deja modifié cela et utilisé mes icones

 

Nodes 2

Nodes

Partager ce message


Lien à poster
Partager sur d’autres sites

Désolé, mais ce WE, entre les enfants, aniversaires, balades et la migration de mon PC vers une nouvelle machine, je n'ai plus trop suivi...

 

jojo, tu as eu réponse à  toutes tes questions ?

 

Dès que je peux j'installe ce beau VD :-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci Sebcbien, j'ai eu réponse à  toutes mes questions.

Prochaine étape, optimiser l'utilisation CPU avec les recommandations de Berale24 : 

De L'utilisation Des Triggers

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai modifié légèrement ma VD, car je constatais que les mails que je recevais, c'était toujours "... is still dead after unsuccessful wakeup"

En fait, je lançais le wakeup, et testait dans la ms s'il était de nouveau up => impossible.

Donc j'ai rajouté un sleep de 30 s après le wakeup avant de refaire le test, et maintenant j'ai :

post-1320-0-90751400-1422904639_thumb.png

:D  :D

 

Voici la VD modifiée

 

DeadNodesAnalysis.V1.1.VJO.vfib

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai rajouté la ligne 32

        -- wakeup dead node
        fibaro:call(1, "wakeUpDeadDevice", i)
        fibaro:sleep(30*1000) -- attendre 30s pour tester si le node est réveillé
        if tonumber(fibaro:getValue(i, "dead")) == 1 then
          -- le node i est toujours dead

Partager ce message


Lien à poster
Partager sur d’autres sites

×