Automatisation de serres professionnelles avec ESP32 et Google Sheets

Bonjour à toutes et à tous, j’écris aujourd’hui sur ce forum car je pense que certains d’entre vous pourrais avoir des bonnes idées à me suggérer. Mes questions arrivent après la description de mon projet. Je suis aussi intéressé par tout type de commentaires constructifs.

Je travaille actuellement dans une entreprise qui produit des légumes sous serre en France on y fait de la recherche et développement et on teste des nouvelles façons de produire des légumes. Une de ces techniques nécessite notamment qu'on contrôle finement le climat des serres (principalement température/humidité de l'air et l'humidité du sol) pour ajuster ces conditions à la plante cultivée, aux conditions climatiques et à nos exigences.

Je développe actuellement un projet dans ce cadre. Pour l’instant, j’ai installé 9 cartes ESP32 sur le site, elle sont en fonctionnement depuis 3 mois. Chaque carte est équipée d’un capteur humidité/température de l’air (j’en teste plusieurs : DHT22, DHT21, SHT20, SHT31) et est connectée au Wi-Fi. Les données sont relevées toutes les 5 minutes et envoyées dans un Google Sheets.
Cette première phase vise à savoir ce qui se passe en temps réel dans les serres, et à collecter les données nécessaires au suivi des expérimentations.

Je m’apprête à lancer la deuxième phase du projet, et c’est là que j’aurais besoin de vos conseils. L’idée est désormais de pouvoir piloter les serres à distance, via un deuxième ESP32 qui contrôlerait électrovannes et moteurs d’ouverture à l’aide de relais. La partie électronique n'est pas compliquée : grâce à des relais on contrôle les électrovannes et les moteurs des ouvrants cette partie-là est déjà réglée.

Ma principale question porte sur la plateforme de contrôle. J’ai pensé continuer à utiliser Google Sheets : c’est gratuit, accessible, facile à prendre en main, et suffisamment flexible. Par exemple on peut imaginer un tableau de bord sur lequel je sélectionne la température et l'humidité que je veux maintenir dans chaque serre, la carte ESP 32 lit ce Google Sheets en permanence et adapte le déclenchement des relais en conséquence et en fonction des conditions climatiques de la serre (cf phase 1 : on utilise le Google Sheets avec les données collectées par l'autre ESP).

Pensez-vous que l’utilisation d’un Google Sheets comme document de contrôle est réalisable pour un projet de cette ampleur avec pour l'instant une dizaine de serres mais à terme peut être le double ?
Est-ce que vous me conseillez de développer une application web (ou autre système ?) pour permettre ce contrôle ? En effet peut être que ça pourrait être plus robuste et plus efficace mais je ne sais pas à quel point et si cela est vraiment nécessaire.
Enfin, pour la partie stockage des données pensez-vous qu'il y a d'autres options possibles, plus robuste ?

Il faut garder à l'esprit que je cherche à faire un système peu couteux, le plus simple possible, le plus accessible et éventuellement reproductible par des personnes qui ne sont pas expertes en programmation et électronique. Toutefois des cultures légumières sont en jeux, ce système doit être fiable et durable.

Des systèmes professionnels permettant de faire un contrôle précis des conditions climatiques des serres existent déjà mais ils sont plutôt destiné aux grand industriels de la culture sous serres qui font des millions de chiffre d’affaire par an. Mon projet est plutôt destiné à des plus petites structure tel mon entreprise, qui sont prêt à mettre quelque centaines d’euros pour automatiser une serre mais pas beaucoup plus.

Ci-dessous un schéma permettant de visualiser la structure globale de la phase 1 du projet:


Ci-dessous un schéma permettant de visualiser la structure globale de la phase 2 du projet:

Bonjour,
Avec 20 serres, les requêtes répétées toutes les 5 minutes peuvent finir par saturer les quotas journaliers de Google Sheets.

Je pense qu'il vaut mieux se dirigier vers un serveur hébergé sur un raspberry par exemple et une interface web pour le contrôle et l'affichage des données.

Voir les quotas de Google Sheets:

Bonjour,

Suivant la taille mémoire nécessaire, c'est aussi possible de le faire directement sur l'ESP ; avec l'ajout optionnel d'une carte SD au besoin.

Je n'y connais pas grand chose sur les règles de Google, mais êtes-vous sûr que même pour les professionnels c'est gratuit ?

Félicitations, ceci dit je suis un peu impressioné par la quantité utilisée. Est-ce que vous pouvez expliquer pourquoi en utiliser autant ? Est-ce qu'ils sont loins les uns des autres ?

Sur une carte SD ou dans la mémoire de l'ESP directement c'est safe et accessible même sans internet (en connexion locale)

Comme tu voudrais que le système puisse être dupliqué par d'autres et comme dans certains cas, les serres pourraient se trouver dans une zone sans internet.
Tous le travail peut se faire un local avec un PC sur lequel tu pourrais faire tourner un serveur pour collecter les données.
Pour leur traitement, tu peux passer à LibreOffice en lieu et place de Google Sheets. LibreOffice est gratuit et on peut faire tourner du code dans les feuilles, soit une adaptation du VB d'Excel, soit du code Pyhon.
Tu pourrais tout aussi bien faire ton interface et la gestion des données directement en Python et éviter cette dépendance à des outils externes dont la pérennité et/ou l'évolution dans le temps nous échappe complètement.

Bonjour @axelmaux, @Anthony_P, @fdufnews merci pour vos réponses!

En effet, c'est un point que je n'ai pas assez pris en compte mais après quelques recherches je ne pense pas que ca soit le point le plus limitant.
J'ai oublié de le préciser mais je n'utilise pas l'API Google Sheet pour que les ESP puissent envoyer les données sur le tableur mais j'utilise un script App Script (java) pour exécuter une requête GET. Donc si j'ai bien compris les limites ne sont pas de 300 requêtes par minutes et par projet comme on peut le lire dans votre lien mais plutôt de 20 000 requêtes par jour sur ce projet pour un compte google standard. Et je ne suis pas près d'atteindre cette limite même avec 20esp ce qui ferais 1000 données par esp et par jour (c'est énorme, une mesure toutes les 5min est suffisant = 288 par carte/jours) mais je suis bien d'accord que c'est à prendre en compte.
Voir ici :
Quotas associés aux services Google

En fouillant un peu plus on peut voir qu'il y a d'autres limites imposées par Google Sheets qui pourraient affecter ce projet. En effet, des scripts annexes sont exécutés régulièrement (avec des déclencheurs horaires) pour permettre d'avoir une visualisation agréable des données en temps réels : graphiques, statistiques (max/min...), mail d'alerte de température extrême, etc. Là c'est pas très claire, il me semble que la limite est à 90 exécutions de script par jour d'une durée de 6minutes max chacun mais j'ai un doute sur le premier chiffre car au total sur 24h il y a plus de 90 exécution avec mes 10 scripts annexes dont certains s'exécutent toutes les 5min.
Une autre limite est le nombre maximal de cellules : 10 million pour le document Google Sheets. Ainsi j'exporte régulièrement les données et les stockent sur un disque dur.
Donc globalement pour l'instant les quotas ne sont pas un problème pour moi et j'arrive à les contourner si ils sont dérangeant. Mais c'est une limite non négligeable qui pourrait être très embêtante.

Google ne parle pas d'une forme de limitation des utilisations professionnelles dans ses règles d'utilisation et donc oui ses services restent gratuit mais avec plus de quotas qu'avec un compte pro payant google Workspace

Les serres les plus éloignées sont distantes d'environs 200m. C'était donc plus facile de mettre un esp par serre dans son boitier étanche avec sa sonde et son transfo 5V. Prochainement je vais devoir équiper 6 serres qui sont assez proches (40m de distance entre la première et la dernière). Je songeait donc à mettre un seul esp au centre mais une première limite que j'ai observé est la longueur des câbles de l'alim 5V qui diminue déjà pas mal avec 15m de câble blindé (5V->4,5V...) et tirer du 220v dans les serres j'évite car on sait jamais si un bourrins fout un coup de pelle dedans :sweat_smile:. Le câble entre le tranfo et l'esp est long de 15m car je met le tranfo dans l'armoire électrique de la serre et j'essaie de mettre la sonde (donc l'esp aussi) le plus loin du bord de la serre car le bord est moins représentatif du climat de la serre. Une deuxième limite encore sur la longueur des câbles concerne les sondes, le signal est vite dégradé.

@Anthony_P, @fdufnews vous parlez de connexion locale. On est bien d'accord que la carte doit quand même être connectée au réseau internet ? Donc il faut quand même apporter du wifi dans les serres même si on communique en réseau local ?

Je vais creuser les différentes pistes que vous m'avez fourni :
-pour le stockage des données : directement sur l'esp avec une carte SD, le problème étant qu'on ne peut pas visualiser en temps réel ces données et que je préférerais centraliser les données sur un même document/base de donnée. Aussi la carte SD est limitée, il faudra la vider alors autant transférer directement les données en directe par le réseau.
-travailler en local avec un serveur hébergé sur un Raspberry ou un PC avec interface et gestion des données : cela nécessite un beau travail de programmation, il va falloir que je m'entour de connaisseurs :shaking_face:
-remplacer libre office par Google Sheets mais pas de possibilité de collaboration en temps réel, l'avantage de Google Sheets c'est que c'est en ligne donc consultable depuis n'importe quel ordinateur et par toutes les personnes de l'entreprises

Exactement c'est ce qui me dérange le plus dans l'utilisation de Google Sheets... C'est centrale dans ce projet donc si google fait je ne sais quelle modification mon système devient inutile...

Encore merci pour vos réponses je reviendrait vers vous quand j'aurais avancé sur ces pistes

Juste pour que vous vous rendez compte de la praticité de Google Sheets et donc du travail si je dois faire ma propre interface de gestion des données :grin:
C'est facile de faire une mise en forme des données en temps réel, preuve en image :
Le tableau de bord avec les données actualisées pour chaque serres :

Graphs journalier de ce types, actualisé toutes les 15 minutes :


Ou mensuel :

Stats journalier pour chaque serres :

Et ca tout le monde peut y accéder il suffit d'avoir le lien

Vous voulez dire que vous utilisez un compte personnel à des fins professionnelles ? Si c'est le cas, pas sûr que ce soit légal. Quoi qu'il en soit moi je m'en fiche, je faisais juste part d'une "inquiétude".

Ok je comprends bien. Effectivement 15m de câble c'est pas l'idéal surtout que l'ESP peut avoir besoin de courant soudainement (connexion WiFi etc) et les 15m de câbles risquent de faire résistance. Éventuellement penser à mettre un condensateur au niveau des pins d'alimentation de l'ESP.

Aussi, il semblerait que le protocole Zigbee (ou autre protocole en réseau maillé) puisse fortement convenir à vos besoins. Je vous laisse vous renseignez à ce sujet. Suivant la configuration de vos serres ça peut permettre de n'avoir qu'un seul ESP central et des capteurs Zigbee.
Ou bien utiliser ESP-NOW si la portée le permet pour limiter les câbles.

Pas forcément, ça dépend du besoin.
Si vous souhaitez accéder aux infos depuis l'extérieur de la serre, alors oui forcément.
Sinon, l'ESP peut être configuré en point d'accès WiFi (c'est lui qui diffusera le WiFi) et vous vous connecterez à son WiFi lors du besoin d'échanger des données avec.

Si vous ramenez le WiFi et faites le serveur sur l'ESP, les données seront accessibles en temps réel bien sûr.
Par ailleurs, la carte SD n'est pas obligatoire. Il y a des ESP avec plusieurs Mo de dispo pour écrire des fichiers.

Je peux me tromper mais je pense que vous surestimez la place nécessaire.
Votre programme fonctionne actuellement. Savez-vous dire environ (avec la taille du ficher et le nombre de jours d'utilisation) combien d'octets consommés à la journée ?

Avec ChatGPT, j'ai déjà fait plusieurs sites Web, dont un qui permet d'afficher 8 températures instantanément, et tracer leur courbe sur un historique de 48h. Choisir avec des curseurs si on veut afficher moins que 48h. Mettre à jour le code de l'ESP à distance. Et j'en passe. Si on est clair, les IA ça fonctionne très bien (n'en déplaise à certains sur ce forum). Si on l'utilise comme un outil et pas comme un remplaçant, c'est très puissant et permet d'apprendre énormément. Évidemment dans l'exemple cité, l'ESP fait serveur WEB.
L'interface peut laisser à désirer, c'est compliqué de faire un beau site en tant que débutant. Mais les fonctionnalités y seront ! Il faut juste être clair sur ce qu'on veut et bien expliquer les problèmes s'il y en a.

À tester je n'ai pas approfondi : vous pourriez aussi faire le serveur sur l'ESP ainsi que le stockage de données. Comme ça vous savez où sont les données, et elles sont safes. Et créer une Google Sheets qui récupère les données automatiquement depuis votre ESP (vous pouvez rechercher "scrape from website Google Sheets"). Ainsi sur la Google Sheets vous avez vos données, courbes et j'en passe. Mais vous en dépendez pas. Si ça change vous mettez à jour la manière dont vous affichez les données mais dans le cas où ça ne fonctionne plus, vous pourrez toujours vous connecter directement à l'ESP pour lire les données. En revanche pour ENVOYER des valeurs / commandes il faudra toujours se connecter à l'ESP (quoi que... Il doit y avoir une méthode dans Google Sheets pour charger des pages WEB et donc envoyer une requête)

Google ne communique pas sur ce point je ne pense pas que ca soit illégale. Quoi qu'il en soit à terme il serait mieux d'être indépendant de Google Sheets.

D'accord je vais peut être mettre ca en place. J'ai eu quelque problèmes de déconnexion des cartes au début je soupçonne que ca provient de l'alimentation trop instable ou trop insuffisante. L'avantage des tranfo que j'utilise c'est qu'il peuvent se régler sur une plage de 4 à 6V, j'ai donc simplement augmenté la sortie à 5,5V et ca fonctionne pour l'instant.

Zigbee ou ESP-NOW, super idée je ne connaissait pas du tout ! Et je pense que ca pourrait bien fonctionner pour mon cas.

En effet je surestime la place nécessaire. Mon programme fait 5KO. Et une mesure fait environ 32 octets (ex : "2025-04-23T13:00,22.5,56.3\n"), avec une mesure toutes les 5min ca en fait 288 par jours = 9Ko/jour soit plus d'un mois de stockage avec les ESP32-WROOM-32. C'est bon à savoir.

C'est vrai que ChatGPT est impressionnant pour faire du code, absolument tout mes codes sont fait grâce à l'IA et j'apprend petit à petit a coder moi même. Je vais tenter de faire du python comme ca mais comme vous dites pour faire un truc propre en tant que débutant c'est plus compliqué.

Je vais creuser tout ca merci pour les idées!

Sinon autre questions plutôt sur l'électronique. Les ESP32 et les sondes sont dans des serres dont certaines peuvent monter jusqu'à 45°C voir 50°C en été et avec des humidités de l'air stagnant à 100% la nuit et assez élevée en journée (60%). Bref des conditions extrêmes, on étouffe quand on rentre dans ces serres. Pensez vous que les ESP et les sondes (DHT22, DHT21, SHT30, SHT31) vont supporter ces conditions ? J'ai lu que les ESP32 pouvaient fonctionner jusqu'à des températures de 85°C donc j'imagine que oui mais je me demande à quel point ce genre d'électroniques résiste à ce type d'environnement sur la durée.
A noter que les ESP sont protégés dans les boites normalement étanchent qui ne le sont plus vraiment à cause du trous fait pour faire passer les câbles. Il n'y a pas de condensation dans la boite, l'humidité qui pourrait s'accumuler semble être évacuée par la chaleur produit par la carte.

Il faut aussi faire attention au courant qu'ils peuvent fournir. Je dirai que 2A c'est bien pour être stable. Dans tous les cas le condensateur ne fera pas de mal.

En sachant que vous pourriez stocker le temps en format EPOCH. Ca se stocke dans un u32, dont la valeur max est 4294967295 ; ce qui signifie que vous avez besoin uniquement de 10 caractères pour le temps, au lieu de 16. C'est moins lisible pour un humain mais dans la Google Sheets vous pouvez facilement passer de EPOCH à date au format conventionel.

Laaaargement plus qu'un mois oui. La mémoire SPIFF peut se compter en Mo ! Et vous avez aussi accès à la mémoire flash.

Là j'avoue que c'est hors de mon domaine de compétence. 50 degrés ça commence à faire mais je pense pas que ce soit inquiétant, contrairement au niveau d'humidité. Il ne faudrait pas qu'une goutte se forme sur la carte. Il existe des boîtes avec des presses étoupes qui permettent justement de garder l'étanchéité malgré le passage des câbles.

Concernant les capteurs, je vous invite à regarder les datasheets. Voici par exemple pour le DHT22 :


Pour lui, l'humidité et la température de vos serres ne représentent aucun problème

1 Like

@zenoza Le DHT22/DHT21 est peu recommandés dans un environnement aussi humide. À éviter pour un projet durable. Le SHT30/31 est plus recommandé, il est plus robuste pour ton projet.

1 Like

Bonjour

Il serait peut-être possible de faire un "juste milieu" : utiliser un transformateur d'isolement pour faire passer de 220V~ à 24V~ la tension d'alimentation qui sera ensuite distribuée aux serres, et utiliser, pour chaque ESP32 à alimenter, un redresseur + module step-down pour faire passer le 24V~ à 5Vcc

Pour une même énergie transportée, en augmentant la tension (24V au lieu de 5V), on diminue le courant nécessaire à transporter => on diminue la chute de tension (et donc les pertes) dans le câble.

En cas d'accident comme un coup de pelle sur le câble ou autre, avec une tension de 24V~ (ou même 48V~) il n'y aura pas de risque d'électrocution.

Il faudrait demander à des professionnels quelles sont les normes à ce sujet, mais j'ai souvent vu qu'un filet de plastique rouge avait été entérré (quelques dizaines de cm, il me semble) juste au dessus du câble électrique pour prévenir celui qui creuserait par là.


EDIT :
J'ai proposé d'utiliser un courant alternatif pour l'alimentation afin d'éviter les risques d'oxydation, étant donné qu'il s'agit de serres <=> milieu humide.

1 Like

Je saisis pas bien en quoi l'utilisation de courant alternatif prévient l'apparition d'oxydation ? Vraie question, quelque chose m'échappe

Bonjour

Effectivement, j'aurais dû écrire "limiter" plutôt que "éviter".

Je n'ai pas retrouvé l'article que j'avais lu il y a 15 ou 20 ans sur une revue qui parlait de bateaux dans lequel quelqu'un avait testé la vitesse de corrosion en alimentant en courant continu puis en alternatif (même courant et tension) deux feuilles dans un bac d'eau salée.

En courant continu (dans mes souvenirs, c'était 500mA sous 12V), seule la feuille reliée au pôle positif était détruite en 10 mn alors qu'en courant alternatif, c'est après 30 mn que les deux feuilles ont été détruites.

Passe une bonne journée.
Cordialement.

Ma recherche sur internet a été rapide donc j'ai certainement raté quelques articles intéressants mais je n'ai rien trouvé de tel :man_shrugging:

L'impact est peut-être totalement négligeable dans des conditions classiques d'utilisation... Aucune idée

Je l'ai retrouvée indirectement puisque la revue que je cherchais était citée dans ce site web : https://www.plaisance-pratique.com/La-corrosion-electrolytique-en

Voici l'extrait :


Un expert américain (Dick Troberg, Professional Boatbuilder n° 105 fév/mars 2007), travaillant pour des compagnies d’assurances, a mené une série d’expériences afin d’essayer d’y voir plus clair.
Dans une première expérience, deux échantillons d’alliage léger dans un bac d’eau de mer ont été soumis :

  • A un courant de 600 mA sous 14 V alternatif : les deux échantillons ont été dissous en 30 mn
  • A un courant de 600 mA sous 14 V continu : l’échantillon relié au + a été dissous en 10 mn.

Le lien donné dans la page web est mort, mais j'ai fini par retrouver la revue (scannée) et l'article cité : Issue Number 105 - Professional BoatBuilder Magazine

Merci bien pour ces infos :slight_smile:

Il existe des bombes de vernis qui s'appelle du vernis de "tropicalisation".
Je pense que le nom suffit, nul besoin d'explication supplémentaire.

À vaporiser sur l'installation.

Pour la chaleur, 50°C pour des composants électroniques passent à l'aise.
Mais il faut quand même faire attention si les composants sont placés dans un boîtier étanche (c'est bon pour l'humidité, mais pas pour la chaleur), surtout si ledit boîtier peut se trouver exposé directement aux rayons du soleil → les 80 °C pourraient être vite atteints ou dépassés au niveau du boîtier de l'ESP32.

Bah 10 ou 30 minutes c'est quasi pareil. Xd

Ouaih, c'est vrai que finalement ça ne fait même pas une demi-heure de différence :wink: