Ydle - version 0.5

FIXME Page non à jour (le 20/01/2015)

Le protocole radio de la version 0.5 se décrit comme suit :

  • 8 bits ID emetteur
  • 8 bits ID cible
  • 3 bits types de données
  • 2 bits de taille de trame
  • Taille variable pour le payload
  • 8 bits de CRC


Ydle v0.2


Il est envoyé “physiquement” de la manière suivante :

  • 32 alternances de 1 et 0 de 275µs pour régler la sensibilité du récepteur
  • Un premier verrous à l'état bas de 9,9ms
  • Un bit à l'état haut de 275µs
  • Un second verrous à l'état bas de 2,2ms
  • 64 bits de trame en code Manchester


Les bits sont représentés par modulation dans le temps, de la façon suivante :

  • 1 logique = 310µs à Vcc puis 1340µs à 0V
  • 0 logique = 310µs à Vcc puis 310µs à 0V

Les types de paquets

STATE: Frame d'état. Utilisé lors de l'envois de la valeur d'un capteur par exemple.

STATE_ACK: Frame d'état demandant au destinataire d'envoyer un accusé récéption aprés sa récéption.

CMD: Frame de commande. Utilisé pour le transport de commande vers la node.

ACK: Frame d'accusé récéption. Envoyé pour accuser récéption d'une frame.

Mécanisme des accusés récéptions

Un accusé-récéption est envoyé par le destinataire dans deux cas. L'envois d'une commande, ou lorsque l'émetteur le demande expréssement lors de l'envois d'un paquet de type STATE_ACK.

Tant que l'accusé récéption n'est pas reçu, l'emetteur retente la transmission. Le time-out est fixé pour le moment à 1 seconde. Il y a deux nouvelles tentatives de transmission en plus de l'envois initial. Si au bout des tentatives, aucun accusé récéption n'est reçu. La trame est considérée comme perdue.

Le type CMD

Lorsqu'une frame de type CMD est reçu par le destinataire, des sous-types sont contenus dans le payload. Il est donc nécéssaire de les extraire pour en faire le traitement.

Quatre types de sous-commandes sont pour le moment implémentés :

  • CMD_LINK
  • CMD_ON et CMD_OFF
  • CMD_RESET

[Note] Pour la prochaine version, les types CMD_ON et CMD_OFF vont disparaitre au profit de la commande CMD_USER

Lors de la premiére initialisation d'une node, elle ne peut pas communiquer. Il faut lui attribuer une adresse d'émetteur. Cette adresse d'émetteur est codée sur 8 bits. Ce qui donne 255 valeurs possible. Néanmoins, les adresses 0,1 et 254 sont réservés.

Pour procéder à une initialisation, il faut envoyer un paquet CMD_LINK. Aucune information supplémentaire n'est nécéssaire, le destinataire prendra alors en compte comme adresse, l'adresse de destinataire.

[Note] Ce mode de fonctionnement va évoluer dans la prochaine version. La proposition actuelle étant de faire générer à la node qui n'est pas initialisée un chiffre aléatoire, et elle enverra une demande d'initialisation. Cela va permettre de pouvoir d'avoir plusieurs nodes non initialisées allumés en même temps.

CMD_RESET

Une frame de RESET est envoyé afin que le destinataire libére son adresse, en vue de pouvoir l'initialiser avec une nouvelle adresse.

CMD_USER

[Note] Ce type n'est pas encore implémenté, il le sera dans la prochaine version du protocole.

Ce type permet de définir son propre type de node. Les données utilisateurs doivent être placés dans le payload. Leur traitement est à la charge du développeur et ne fait pas partie des spécifications.

Le type STATE

Le type state est envoyé par une node pour informer de l'évolution d'une grandeur physique mesurée (Température, Humidité par exemple) Les données actuellement acceptées sont :

  • DATA_STATE On - OFF (4bits)
  • DATA_DEGREEC Degrée Celsius -204.7 à 204.7 (12bits)
  • DATA_DEGREEF Degrée Fahrenheit -204.7 à 204.7 (12bits)
  • DATA_PERCENT Pourcentage -100% à 100% (12bits) * DATA_DISTANCE Distance en Cm 0 à 4095 (12 bits)
  • DATA_WATT Watt 0 à 1048575 (20bits) * DATA_HUMIDITY Pourcentage humidité 0 à 100% (12bits)
  • DATA_PRESSION Pression en hpa 0 à 4095 (12bits)

Elles sont codés dans le payload sous la forme suivante :

[Type donnée 1][Valeur de la donnée 1][Type donnée 2][Valeur de la donnée 2]….[Type donnée n][Valeur de la donnée n]

[Note] Dans la prochaine version, toutes ces données disparaitrons, remplacés par les types suivant : * DATA_INT * DATA_UINT * DATA_FLOAT La gestion de la représentation de la valeur physique se fera à un niveau plus élevé. Ceci va permettre d'avoir un protocole de transport plus flexible.


Autres langues
Traductions de cette page:
QR Code
QR Code Les types de paquets (generated for current page)