Répertoire d'articles
一 、 Couche d'accès
Il existe trois types de code opération, 1 octet, 2 octets et 3 octets. 1 octet, 2 octets sont des commandes définies par SIG. 3byte
est une commande définie par le fournisseur et 2 octets sont un identifiant de fournisseur (CID). Dans l'ensemble du réseau maillé, un
identifiant de fournisseur peut prendre en charge jusqu'à 64 opcodes de fournisseur.
La couche d'accès contient le code opérationnel et le paramètre, et la prise en charge maximale est de 380 octets.
二 、 Couche de transport
À l'heure actuelle, pour être compatible avec les périphériques qui ne prennent pas en charge les longs paquets de diffusion, tels que
BLE4.2 , la charge utile maximale de adv est uniformément fixée à 31 octets. Supprimez certains paquets de données de protocole qui doivent occuper une partie de la charge utile effective, un seul paquet est de 11 octets, donc lorsque
la couche d'accès sur 11 octets, nécessite une sous-traitance, donc pour le code d'op du fournisseur, lorsque les paramètres sont grands
en huit octets (8 = 11-3 ), la pile de protocoles maillés effectuera automatiquement la transmission de sous-paquets. L'utilisateur n'a pas besoin d'intervenir.
三 、 Couche réseau
3.1 Adresse
Valeurs | Type d'adresse | La description |
---|---|---|
0b0000 0000 0000 0000 | Adresse non attribuée | 0, aucune adresse attribuée |
0b0xxx xxxx xxxx xxxx | Adresse unicast | adresse d'élément |
0b11xx xxxx xxxx xxxx | Adresse de groupe | Adresse de groupe, utilisée pour le contrôle de groupe et la publication / l'abonnement |
0b10xx xxxx xxxx xxxx | Adresse virtuelle | Non utilisé temporairement |
3.2 PDU réseau
- IVI: index iv (c'est-à-dire le bit le plus bas de l'octet de iv_idx_st.tx [3] du SDK, actuellement l'index iv du SDK est stocké comme big endian).
- NID: lié à la clé réseau
- CTL: si la marque est un message de contrôle
3.3 Compte / / intervalle de transmission du réseau ((définition du nombre de retransmissions et intervalle de retransmission))
Le nombre de transmissions réseau fait référence au nombre de fois qu'une commande doit être retransmise. Ces paquets RF retransmis sont exactement les mêmes, y compris sno. Le but de la retransmission est d'améliorer le taux de réussite de la réception. S'il n'y a que deux nœuds maillés dans le réseau, le taux de réussite de l'envoi d'une seule fois est de 80%, c'est-à-dire que le taux de perte de paquets est de 20%. Ensuite, théoriquement, le taux de perte de paquets d'envoi 6 fois est de 20% au 6ème puissance, qui est de 0,0064%, c'est-à-dire que le taux de réussite de la réception du colis est de 99,993% Bien sûr, il s'agit d'une analyse théorique. Il existe une certaine relation avec l'environnement RF.
Notre pile de protocoles SDK retransmet 5 fois par défaut, à savoir TRANSMIT_CNT_DEF (5), et le nombre total de transmissions est n + 1 = 6.
L'intervalle de transmission du réseau fait référence à l'intervalle de transmission entre deux paquets retransmis. Notre SDK est par défaut de 30 à 40 ms, ce qui est déterminé par TRANSMIT_INVL_STEPS_DEF (2). La méthode de calcul est ((TRANSMIT_INVL_STEPS_DEF +1) * 10 + (0-- - 10)) ms. Le
compte de transmission du réseau et l'intervalle de transmission peuvent également être configurés via la commande de configuration standard CFG_NW_TRANSMIT_SET définie par SIG.
En résumé, notre SDK envoie un paquet réseau par défaut, comme la commande générique ONOFF no ack (cette commande ne nécessite pas de sous-emballage), et le temps requis est d'environ 40 * 6 = 240ms.
3.4 Reliable retry (nombre de tentatives d'envoi de paquets)
Reliable retry fait référence à la nouvelle tentative de la couche application, utilisée pour les commandes avec réponse d'état, telles que ONOFF générique. Après l'envoi d'un paquet réseau (y compris la transmission réseau), il jugera si l'état est reçu. Sinon, nous réessayerons. Lors d'une nouvelle tentative, le numéro de séquence du paquet réseau changera. Par défaut, nous réessayons au maximum deux fois.
Quatre, balise en maille
La figure ci-dessous est la PDU de la balise de périphérique non provisionnée.
L'UUID de l'appareil peut identifier de manière unique le nœud. Étant donné que certains téléphones mobiles, tels que IOS, ne peuvent pas obtenir mac et ne peuvent pas obtenir mac dans la future fourniture à distance, donc dans le maillage SIG, l'UUID du périphérique est utilisé pour identifier de manière unique le nœud au lieu de mac. La balise non provisionnée est envoyée via un paquet ADV non connectable et est utilisée en
mode de fourniture PB-ADV .
Pour les informations Oob et le hachage d'URI, veuillez vous référer à la spécification "3.9.2 Balise de périphérique non provisionnée". Lorsque le réseau n'est pas connecté, la balise non provisionnée sera envoyée et envoyée via unov_beacon_send (). La période d'envoi est définie par "beacon_send.inter = MAX_BEACON_SEND_INTERVAL", et la valeur par défaut est de 2 secondes. Après la mise en réseau, une balise de sécurité sera envoyée via mesh_tx_sec_nw_beacon (). De plus, le commutateur d'activation d'envoi peut être activé ou désactivé via la commande CFG_BEACON_SET. Reportez-vous au fonctionnement du bouton "SecNwBc" "dans le chapitre" 4.4 Contrôle du nœud correspondant "de cet article. Le cycle d'envoi est défini par SEC_NW_BC_INV_DEF_100MS, et la valeur par défaut est de 10 secondes.
五 、 Procédure de mise à jour IV
Autrement dit, le flux de mise à jour de l'index iv. Les processus de chiffrement et de déchiffrement de la couche réseau et de la couche d'accès doivent utiliser l'index iv.
Comme mentionné précédemment, le réseau maillé nécessite que le numéro de séquence de la PDU réseau soit accumulé en permanence, et le numéro de séquence
est représenté par 3 octets. Lorsque le numéro de séquence est proche de la valeur maximale après une longue période d'utilisation, vous devez envisager de mettre à jour l'
index iv, sinon le numéro de séquence reviendra à 0, ce qui amènera la fin de réception à considérer un message invalide. Dans une certaine
mesure, on peut comprendre que l'indice iv est le bit étendu du numéro de séquence.
Le flux de mise à jour de l'index iv est un processus que le nœud initie et se met à jour lui-même. Dans le SDK actuel, lorsqu'un nœud détecte que son
numéro de séquence dépasse IV_UPDATE_START_SNO (0xC00000), il lancera une mise à jour iv
suivant. Après chaque mise à jour Iv, l'index iv ajoutera 1. Pour le
déroulement détaillé de la mise à jour iv, veuillez vous référer aux chapitres appropriés de spe: SPEC V1.0 "3.10.5 IV Update procedure".
六 、 battement de cœur
Le cycle de transmission de paquets de battements de cœur de maillage peut être configuré, il peut être utilisé pour créer un détecteur hors ligne (le cycle peut publier un mécanisme
pour effectuer une détection hors ligne), des sauts et un calcul, c'est-à-dire, calcule le message de battement de cœur après combien de sauts, a ensuite été
reçu.
Après avoir compté le nombre de battements de cœur reçus dans une certaine période de temps (count), et calculé
la valeur des sauts de chaque battement de cœur , les sauts min et les sauts max sont obtenus, puis la disposition de l'ensemble du réseau et
la fiabilité de la transmission du message de chaque nœud sont compris . Cependant, chaque configuration d'abonnement Heartbeat ne peut surveiller et compter l'état que d'un nœud.
La méthode de calcul des sauts est la suivante: hops = InitTTL-RxTTL +1.
- InitTTL: est le paramètre TTL dans l'ensemble de publication Heartbeat.
- RxTTL: est le TTL dans la PDU réseau du message reçu.
Le nœud n'envoie pas de pulsation par défaut. Pour la méthode de configuration spécifique, reportez-vous au chapitre "5.6 Démonstration de pulsations"
Sept, santé
Le message lié au modèle d'intégrité est utilisé pour refléter l'état d'avertissement ou d'erreur du nœud.
Valeur | La description |
---|---|
0x00 | Sans faute |
0x01 | Avertissement de batterie faible |
0x02 | Bettery Low Error |
0x03 | Avertissement de tension d'alimentation trop basse |
0x04 | Erreur de tension d'alimentation trop faible |
0x05 | Avertissement de tension d'alimentation trop élevée |
0x06 | Erreur de tension d'alimentation trop élevée |
0x07 | Avertissement d'interruption de l'alimentation électrique |
0x08 | Erreur d'alimentation interrompue |
0x09 | Aucun avertissement de charge |
0x0A | Aucune erreur de chargement |
0x0B | Avertissement de surcharge |
0x0C | Erreur de surcharge |
0x0D | Avertissement de surchauffe |
0x0E | Erreur de surchauffe |
0x0F | Avertissement de condensation |
0x10 | Erreur de condensation |
0x11 | Avertissement de vibration |
0x12 | Erreur de vibration |
0x13 | Avertissement de configuration |
0x14 | Erreur de configuration |
0x15 | Avertissement d'élément non calibré |
0x16 | Erreur d'élément non calibré |
0x17 | Avertissement de mémoire |
0x18 | Erreur de mémoire |
0x19 | Avertissement d'autotest |
0x1A | Erreur d'auto-test |
0x1B | Avertissement d'entrée trop bas |
0x1C | Erreur d'entrée trop faible |
0x1D | Avertissement d'entrée trop élevé |
0x1E | Erreur d'entrée trop élevée |
0x1F | Avertissement d'entrée sans changement |
0x20 | Erreur d'entrée sans changement |
0x21 | Avertissement d'actionneur bloqué |
0x22 | Erreur d'actionneur bloqué |
0x23 | Avertissement de logement ouvert |
0x24 | Erreur de logement ouvert |
0x25 | Avertissement de sabotage |
0x26 | Erreur de sabotage |
0x27 | Avertissement de déplacement de périphérique |
0x28 | Erreur de déplacement du périphérique |
0x29 | Avertissement de chute de périphérique |
0x2A | Erreur de l'appareil abandonné |
0x2B | Avertissement de débordement |
0x2C | Erreur de débordement |
0x2D | Avertissement vide |
0x2E | Erreur vide |
0x2F | Avertissement de bus interne |
0x30 | Erreur de bus interne |
0x31 | Avertissement de blocage du mécanisme |
0x32 | Erreur de blocage du mécanisme |
0x33-0X7F | Réservé pour une utilisation future |
0x80-0XFF | Avertissement / erreur spécifique au fournisseur |
Si vous pensez que c'est bien, un seul clic pour trois chants consécutifs (J'aime + Favoris + Suivre)