Ma plante m’envoie un SMS quand elle a soif

 

 

 

Il y a dans le bureau une belle plante: une Zamuoculcas.

C’est une jolie plante qui ne demande pas trop s’entretient, mais qui doit quand même être arrosée de temps en temps.

Le problème est de savoir quand l’arroser pour éviter qu’elle perde son bel aspect !

La solution retenue: l’équiper d’un capteur d’humidité planté à sa base, avec envoi régulier de la mesure sur un serveur dans le cloud. Celui-ci se chargera d’étudier les mesures et d’envoyer le SMS en cas de besoin.

Partie ‘Hardware’

La mesure se fait grâce à un capteur d’humidité que l’on trouve facilement sur ebay (ou autre).

Capteur d’humidité à planter à la base de la plante

Noter que la mesure n’a pas d’unités:

  • Si la tension est proche de 0V, cela indique que le capteur est dans un environnement assez humide & conducteur
  • Si latension est élevée, cela indique que le capteur est dans un environnement sec & peu conducteur

Le signal de sortie est relié à un SiPy (de chez Pycom) alimenté par une batterie Li-Ion.

SiPy module

Pourquoi un « SiPy » ?

Parce qu’il peut être programmé simplement en micro-python (une version adapté aux objets ayant de faible ressources) et qu’il intègre un module SigFox permettant d’envoyer des messages simplement sur ce réseau.

Toutes les heures (il est en mode ‘deep sleep’ entre temps, ce qui consomme très peu d’énergie) il se réveille pour faire une mesure et envoyer l’information.

Le code micro-python pour effectuer une mesure (tension analogique):

import machine
adc = machine.ADC()                                  # create an ADC object
apin = adc.channel(pin='P20')                        # create an analog pin
va = apin()                                          # read pin voltage

Cette valeur sera proche de 0 si la terre du pot est humide, et au plus 4096 si elle est seche.

Pour envoyer la valeur sur le réseau Sigfox:

from network import Sigfox
import socket
data = va.to_bytes(2)+vb.to_bytes(2)                 # convert float value to bytes array
sigfox = Sigfox(mode=Sigfox.SIGFOX, rcz=Sigfox.RCZ1) # init Sigfox for RCZ1 (Europe)
s = socket.socket(socket.AF_SIGFOX, socket.SOCK_RAW) # create a Sigfox socket
s.setblocking(True)                                  # make the socket blocking 
s.setsockopt(socket.SOL_SIGFOX, socket.SO_RX, False) # configure it as uplink only
s.send(data) # Send data

Update 2018:

Depuis dec 2017, une gateway « The Thing Network » est installée dans les locaux.

Ce n’est plus par le réseau Sigfox que les messages transitent, mais par LoRaWAN via le réseau « The Thing Network » avec la gateway disponible.

Ce n’est plus un « Sipy » qui est utilisé, mais un « Lopy » – côté hardware, c’est transparent (même pinout), côté python juste quelques lignes à changer  !

Partie ‘Software’

Plusieurs choses sont à configurer pour y arriver:

1 – Configurer le callback Sigfox

Cela se fait dans la console Sigfox: Celui qui nous intéresse est un callback de type ‘DATA’

Les informations utiles (seqNumber, data) sont passées en paramètre de la requète POST émise vers le serveur

Update 2018:

On passe d’une console (Sigfox) à une autre (The Thing Network), le principe reste le même.

 

2 – La cible du POST

A la réception d’un appel, le champ « data » est décodé (on y trouve la tension batterie et la mesure de l’humidité fournis par le SiPy).

Ces informations sont enregistrés dans une base de donnée MySQL, avec la date & l’heure de réception – cela servira à faire le graphique.

En plus de mémoriser les informations, 2 tests sont faits:

  1. La mesure d’humidité est-elle trop forte ?
  2. La tension batterie est-elle trop basse ?

Si l’une de ces conditions est vérifiée, un SMS est envoyé par utilisation de l’API SMS de Free (https://smsapi.free-mobile.fr/sendmsg) d’utilisation très simple.

3 – Une page web pour afficher le graphique

L’humidité et la tension batterie peuvent être visualisés sur une page dédiée.

Voici en copie d’écran de la page:

Copie d’écran de la page d’affichage du graph

Il suffit d’attendre les SMS pour savoir quand arroser ou  recharger la batterie !

 

Un QRcode permet aussi d’accéder directement à la page montrant les graphiques.

A noter que le dépoussiérage des feuilles ne sera pas demandé automatiquement, ni le rempotage…

3 thoughts on “Ma plante m’envoie un SMS quand elle a soif”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *