Skip to content
This repository has been archived by the owner on Sep 3, 2020. It is now read-only.

Connectivité entre ESP et API (MQTT)

Aub Guillemette edited this page May 7, 2017 · 1 revision

Préface + Structure de données

Un bucket est composé de plusieurs sondes (appelées sensors).

La base de données dans laquelle sont stockées les informations sur le jardin se compose de trois tables:

  • buckets
    • Contient les informations sur le bucket en général.
    • id : le ID du bucket
    • name : le nom du bucket
    • ip : l'adresse réseau du bucket
  • sensors
    • Contient les informations sur les sensors d'un bucket en particulier.
    • id : le ID du sensor
    • bucket_id : le ID du bucket auxquel appartient le sensor
    • name : le nom du sensor
    • type : le type du sensor (humidity ou temperature pour le moment)
  • values
    • Contient les valeurs retournées par les différents sensors à travers le temps
    • id : le ID de la valeur
    • sensor_id : le sensor auxquel appartient la donnée
    • value : la valeur
    • timestamp : le timestamp de quand la valeur a été retournée

Le nom du ESP est composé de "esp8266_" suivi de sa mac adresse, ex.: esp8266_deadbeef. C'est ce nom qui est contenu dans la colonne name de la table buckets.

La connectivité entre le ESP et l'API s'effectue sur deux topics MQTT: control_ + le nom du bucket et status_ + le nom du bucket. Ex.: control_esp8266_deadbeef et status_esp8266_deadbeef. (Pour faciliter l'écriture des points plus techniques de cette page, le nom esp8266_deadbeef sera utilisé comme exemple.)

control_esp8266_deadbeef

Le topic control_esp8266_deadbeef est le topic auxquel l'ESP est abonné. Il reçoit des commandes envoyées par l'API. Pour l'instant, ces commandes sont représentées par un entier 32 bits. Cet entier est séparé en quatre sections de 8 bits:

  • Section 1: Contrôle LEDs couleur bleue
    • Valeur de 0 à 255
  • Section 2: Contrôle LEDs couleur blanche
    • Valeur de 0 à 255
  • Section 3: Contrôle LEDs couleur rouge
    • Valeur de 0 à 255
  • Section 4: Conrtôle ventilation (Fan)
    • Valeur de 0 à 170 (à vérifier), mais on attribue une plage de 256 valeurs, soit 8 bits

L'ESP parse ces valeurs et effectue les actions nécessaires.

status_esp8266_deadbeef

Le topic status_esp8266_deadbeef est le topic auxquel l'API est abonné. Il reçoit les valeurs des différents sensors du bucket. Ces valeurs sont encodées dans une chaîne JSON représentée comme suit: {"nom_sensor":"valeur"}. Ex. d'une chaîne de status:

{"temperature":26, "humidity":30}

L'API entre ensuite ces données dans la base de données avec un timestamp.