-
Notifications
You must be signed in to change notification settings - Fork 11
Connectivité entre ESP et API (MQTT)
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
outemperature
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.)
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.
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.