Centre de contrôle Smarthome avec ArduiTouch partie 2 - le protocole de données

Cet article est destiné à expliquer le principe de transmission des messages entre le siège social et les appareils distants (ci-après simplement appelés appareils). Étant donné que les appareils doivent être simples et ne nécessiter aucun réglage manuel, le principe suivant a été conçu.

  • Un appareil utilise toujours son adresse MAC pour l'identification
  • Un nouvel appareil doit se connecter activement au centre de contrôle
  • Pour qu'un appareil puisse échanger des données avec le centre de contrôle, il doit être enregistré manuellement au centre de contrôle.

Structure d'un message:

struct ATMSGPACKET {
uint8_t id [6]; // id du périphérique distant typique son adresse MAC
paquets uint8_t; // nombre de paquets dans le message
uint16_t bits de périphérique; // bits pour contrôler les capacités de l'appareil
};

L'en-tête d'un message comporte 9 octets. Les six premiers octets contiennent l'identifiant suivi d'un octet avec le nombre de canaux (maximum huit). Ceci est suivi d'un entier non signé 16 bits. Chacun de ces 16 bits a une signification différente et indique les capacités de l'émetteur ou les caractéristiques spéciales des paquets de données. Le bit 0 détermine si l'appareil est passif, c'est-à-dire qu'il doit être interrogé par le centre de contrôle. Le bit 1 indique si le centre de contrôle peut modifier l'intervalle d'envoi d'un périphérique actif. Le bit 2 indique qu'une somme de contrôle est formée sur tout le message, qui est ajoutée à la fin du message. Le bit 3 indique que les paquets de données sont cryptés (préparation pour les versions ultérieures). Aucun autre bit n'est actuellement défini. Les paquets de données pour chaque canal individuel suivent l'en-tête.

struct ATDATAPACKET {
canal uint8_t; // canal comme identification
type uint8_t; // type du paquet
uint8_t unit; // unité du paquet
uint8_t value [4]; // quatre octets de données pour contenir un entier long ou un flottant
};

Un paquet de données commence par un octet pour le numéro de canal suivi d'un octet avec le type qui contient à la fois la direction de transport et des informations sur le type de données. 0 = message entier du périphérique au centre de contrôle, 1 = message flottant du périphérique au centre de contrôle, 2 = message entier du centre de contrôle au périphérique, 3 = message flottant du centre de contrôle au périphérique, 4 message booléen du périphérique au centre de contrôle et 5 message booléen du du centre de contrôle à l'appareil. Vient ensuite un octet pour l'unité affectée. Certaines unités ont déjà été définies, d'autres suivront. Et enfin, il y a quatre octets pour enregistrer la valeur. Selon le type, ceux-ci doivent être interprétés comme des flottants ou des entiers 32 bits. Seul l'octet 0 est utilisé pour les messages booléens.

Processus d'échange de données:

1. Appareil actif

Les appareils actifs sont généralement utilisés pour les capteurs. Ils envoient des données au centre de contrôle à intervalles fixes ou variables. Ou, par exemple, un bouton de sonnerie ou un commutateur radio chaque fois que quelqu'un appuie sur le bouton.

Si l'appareil n'a pas encore de centre de contrôle, il recherche un point d'accès avec le SSID "ATSmartHome" dans le WLAN. Si cela a été trouvé, il reste connu de l'appareil tant que l'alimentation n'a pas été interrompue. Les messages avec l'ID de l'appareil sont envoyés à cet AccessPoint.

Si le siège social (point d'accès) reçoit un tel message, il est d'abord vérifié si un appareil avec l'ID reçu a déjà été enregistré. Sinon, les données sont ignorées et le centre de contrôle montre qu'un nouveau périphérique a été trouvé. Cet appareil doit ensuite être enregistré dans le centre de contrôle afin de recevoir des données.

Si le périphérique est enregistré, la somme de contrôle est vérifiée si elle est spécifiée. Si cela est OK, les données sont enregistrées. L'appareil actif reste prêt à recevoir pendant une courte période après l'envoi. Pendant ce temps, toutes les données disponibles peuvent être envoyées à l'appareil ou, si l'appareil est en mesure de le faire, des modifications de configuration telles qu'un nouvel intervalle de temps peuvent être envoyées du centre de contrôle à l'appareil.

2. Dispositif passif

Les appareils passifs sont toujours prêts à recevoir. Le dispositif passif envoie également des messages au centre de contrôle à intervalles réguliers. Celui-ci sert d'une part à l'enregistrement et d'autre part à informer l'unité centrale sur quels canaux l'appareil peut recevoir des données.

Si l'appareil n'a pas encore de centre de contrôle, il recherche un point d'accès avec le SSID "ATSmartHome" dans le WLAN. Si cela a été trouvé, l'appareil, comme l'actif, commence à envoyer régulièrement des données au centre de contrôle.

Si un message est reçu dans le centre de contrôle à partir d'un appareil passif non enregistré, l'ID de cet appareil s'affiche en tant que nouvel appareil et peut être enregistré manuellement. Avec les informations du paquet de données reçues, le centre de contrôle peut déterminer sur quels canaux l'appareil est prêt à recevoir. Un appareil passif peut également transmettre simultanément des valeurs mesurées au centre de contrôle sur d'autres canaux. Si le panneau de commande a enregistré un appareil passif et qu'un interrupteur est enfoncé sur l'un des canaux de cet appareil, il envoie la modification sur le canal correspondant à l'appareil. Si le canal n'a pas la valeur souhaitée la prochaine fois que des données sont reçues de l'appareil passif, la modification est envoyée à nouveau. Cela empêche un processus de commutation de ne pas être exécuté dans l'appareil en raison d'un message perdu.

Attention! Si quelqu'un a déjà chargé la bibliothèque ATMessageBuffer, il doit obtenir la dernière version et recompiler les esquisses qui utilisent cette bibliothèque. Cela est nécessaire car j'ai développé la structure de données ATMESSAGEPKT avec les bits de périphérique variables.

J'espère avoir fourni les informations nécessaires pour développer de nouveaux appareils compatibles avec ce centre. Le premier appareil passif capable de commuter un relais suivra sous peu.

 

 

 

 

Projets pour avancéMaison intelligente

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés

Messages de blogs recommandés

  1. Installez maintenant ESP32 via l'administrateur de la carte
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA-Over the Air-ESP Programmation par WiFi