Je n'ai pas posté ça dans la rubrique "programmation", puisque ça concerne ici les paramétrages Z-Wave concernant les valeurs des paramètre sur 1 à 4 octets
NB : je ne sais pas si le sujet a été traité, mais je vois encore beaucoup d'incompréhension à ce sujet et moi même j'ai été surpris de voir une valeur sur 2 octets, 900 exprimée en 3 puis 132, mais tout s'explique
On poura s'aider du convertisseur eedomus
Vous pouvez sauter les rappels et descendre au sous-titre "1 Octet"
et si vous trouvez trop "roman fleuve", vous pouvez sauter au message suivant
Rappels :
un octet, c'est 8 bits, le poids faible à droite (comme en écriture décimale), on commence bien sur à 0 et on va jusqu'à ... 11111111 en binaire, ça se numérote de 0 à 7 en commençant par la droite, et chaque bit est une puissance de 2 (l'exposant est son numéro d'ordre)...
bit 11111111
N° 76543210
ça va donc de 0 à 255 donc 256 valeurs
on compte de droite à gauche et on multiplie par 2 puissance N° d'ordre soit
7 6 5 4 3 2 1 0
128 64 32 16 8 4 2 1
ex: 01101011 = 64+32+8+2+1 = 107
2 octets, c'est donc 16bits, l'octet de poids faible à droite, comme pour les bits, comme en décimal
pour écrire de manière plus rapide les octets, on emploie l'hexadécimal : au lieu d'aller de 0 à 9 pour 10 chiffres, on va de 0 à F pour 16 chiffres
0 1 2 3 4 5 6 7 8 9 A B C D E F
Avec A=10, B=11, C=12, D=13, E=14 et F=15
ça ne va pas suffire pour écrire un octet, puisqu'avec 16 chiffres, on ne peut écrire que 4 bits, donc il en faut 2 : toujours le poids faible à droite, on écrira donc de 0 à 255 en 00 à FF le premier terme étant un multiple de 16 (puisque hexa), comme le premier terme d'un nombre à deux chiffres est un multiple de 10 (en décimal).
Pas grave si pour certains ça chauffe, puisqu'en fait on n'en a pas trop besoin puisque...
1 Octet
La valeur est toujours exprimée en décimal, par exemple, si on demande un pourcentage de 0 à 99, inutile de le convertir, vous le noterez tel quel !
Notez que dans le convertisseur, cela correspond à "8 bits" mais si on met 16 bits, 24 bits ou 32 bits cela ne changera pas la valeur Hexa Un GET renverra aussi la valeur en décimal !
SI par hasard, on vous explique que le bit 2 correspond à telle fonction et que le 5 à une autre, vous utiliserez le convertisseur, au cas ou vous voudriez n'activer que ces bits 2 et 5 ça donnerai :
76543210
00100100
ce qui en décimal est, vous dit le convertisseur, 36, valeur à entrer dans valeur1 (sur un octet)
2 Octets (ou 3 ou 4, le raisonnement est le même)
La ça se complique puisque ... La valeur est toujours envoyée (SET) et récupérée (GET) en décimal, mais ce n'est pas du tout ce que vous allez lire dans l'historique !
et cette valeur s'appelle valeur1 dans les fonctions documentées... or ...
dans l'historique, seront détaillées les valeurs dont le numéro d'ordre sera celui des octets mais avec celui de poids fort en premier et noté ... 1 ! (pas dans le même sens que l'écriture des chiffres) et cette valeur s'exprimera toujours en décimal, mais dans une logique héxadécimale, d'où la confuse, avec donc, si la fonction est documentée :
si la valeur, entrée valeur1, est inférieure à 256, l'historique la notera valeur1
si la valeur, entrée valeur1, est supérieure à 256, il y aura 2 octets (inférieur à 65535 sinon, 3 ou 4 octets), donc 2 valeurs, valeur1 sera cette fois ci l'octet de poids fort et valeur2, celui de poids faible, les deux exprimés en décimal dans l'historique !
si la fonction n'est pas documentée, alors il faudra entrer valeur1 et valeur2 comme suit :
si la valeur est inférieure à 256, on la notera dans valeur2 et on notera valeur1=0
si la valeur est supérieure à 256, il y aura 2 octets (inférieur à 65535 sinon, 3 ou 4 octets), donc 2 valeurs, le plus simple est d'inscrire 900 dans le convertisseur, ce qui donne 384 en hexa, les 2 octets sont donc 03 et 84 et chacun vaut en décimal 3 et 120 à mettre respectivement dans valeur1 et valeur2
dans tous les cas, c'est ce que vous verrez aussi en historique du SET, mais le GET vous donnera, lui, la valeur décimale complète, 900
et voila pourquoi votre fille est muette (*)
Le raisonnement sera le même avec 3 ou 4 octets, mais dans tous les cas, ne vous perturbez pas avec les fonctions documentées, puisque les entrées sont en décimales, sur une seule valeur globale, le contrôle aussi.
Avec les fonctions non documentées, il vous faudra donc calculer vous même les valeurs décimales des octets en commençant par valeur1 pour le poids fort, de gauche à droite, à l'envers de la numérotation des bits, sans oublier de noter 0 pour les octets non utilisés.
L'autre cas ou vous devrez utiliser le convertisseur, c'est celui ou le paramétrage concerne les N° de bit - et comme les valeurs Z-Wave ne sont pas systématiquement renseignées dans la page Eedomus (voir mon mot dans les eedotrucs), vous pourriez en avoir besoin.
Si le staf a prévu l'entrée sur un seul nombre : il faut choisir ici, dans "Taille", les entrées de type
2 (Décimal 0 à 65 535) et on fait comme d'hab
(*) Le médecin malgré lui, Molière