Comment envoyer des données de NodeMCU vers Google Sheets

Publié: 2020-08-26
Comment envoyer des données de NodeMCU vers Google Sheets

L'envoi de données de capteur à l'aide du micrologiciel NodeMCU via Internet dans une feuille de calcul Google Sheets est très pratique. Cela peut être fait via un script Google et présente l'avantage de ne coûter rien, contrairement à de nombreuses alternatives de stockage Cloud.

Pour les besoins de cet article, nous allons vous montrer un projet simple pour envoyer des relevés de température à l'aide de l'ESP8266 et d'un capteur de température et d'humidité DHT11.

Configurez votre feuille Google

Tout d’abord, vous souhaiterez créer une nouvelle feuille de calcul. Connectez-vous à votre compte Google, accédez à Mon Drive et ouvrez une feuille de calcul vierge.

Copiez la clé URL de votre feuille de calcul. Donnez à la feuille de calcul un nom intuitif. Accédez à l'éditeur de script, dans le menu Outils.

éditeur de script

Donnez un nom à votre script (encore une fois, gardez-le intuitif, surtout si vous réalisez plusieurs projets). Utilisez le script donné et copiez-le-collez dans l'éditeur de script Google.

code de l'éditeur de script

Sous la ligne d'ID de la feuille de calcul, collez la clé URL de votre feuille de calcul enregistrée.

Enregistrez le script et déployez-le en tant qu'application. Vous trouverez cette option dans le menu Publier. Configurez les paramètres de déploiement pour garantir que la feuille de calcul fonctionnera correctement.

  1. Enregistrez l'« URL actuelle de l'application Web ».
  2. Enregistrez la version du projet comme nouvelle pour toutes les révisions du script (cela permet à Google de mettre à jour toutes les révisions que vous pourriez apporter à l'avenir).
  3. Pour le champ Exécuter l'application en tant que, ajoutez le texte suivant « moi (votre adresse Gmail) ».
  4. Pour le champ Qui a accès à l’application, ajoutez la ligne suivante « n’importe qui, même anonyme ».

Code de configuration des capteurs ESP8266 et DHT11

Voici ce que vous devez télécharger lors de la connexion de votre ESP8266 au capteur DHT11 :

#inclure « ESP8266WiFi.h »

#inclure « DHT.h »

#define DHTPIN 2 // à quelle broche numérique vous êtes connecté

//pin2 à D4 sur la carte ESP

// Supprimez le commentaire dans le code du type de capteur DHT que vous utilisez.

#définir DHTTYPE DHT11 // DHT 11

//#définir DHTTYPE DHT21 // DHT 21

//#définir DHTTYPE DHT22 // DHT 22

DHT dht(DHTPIN,DHTTYPE);

const char SITE WEB[] = « api.pushingbox.com » ; //le serveur API PushingBox

const String devid = « <VOTRE_Devid_HERE> » ; //ID de périphérique de Pushingbox

const char* MY_SSID = « <VOTRE_NOM_WIFI_HERE » ;

const char* MY_PWD = « <YOUR_WIFI_PASSWORD_HERE> » ;

void setup()

{

Série.begin(115200);

dht.begin();

Serial.print ("Connexion à "+*MY_SSID);

WiFi.begin(MY_SSID, MY_PWD);

Serial.println("entrer dans wl connect");

while (WiFi.status() != WL_CONNECTED) //non connecté,..en attente de connexion

{

retard (1000);

Série.print(".");

}

Serial.println("wl connecté");

Série.println("");

Serial.println("Identifiants acceptés ! Connecté au wifi\n ");

Série.println("");

}

boucle vide()

{

//Laisser plus de temps s'écouler entre les lectures

//la feuille google se remplit, pour éviter de dépasser le nombre de requêtes gratuites de PushingBox

retard (10000); //10 secondes (taux d'échantillonnage par rapport au quota d'appels de service)

float MoistureData = dht.readHumidity();

// Lire la température en Celsius (valeur par défaut)

float celData = dht.readTemperature();

// Lire la température en Fahrenheit (isFahrenheit = true)

float fehrData = dht.readTemperature(true);

// Vérifiez les lectures ayant échoué, quittez plus tôt (pour réessayer).

si (isnan(humidityData) || isnan(celData) || isnan(fehrData))

{

Serial.println("Échec de la lecture du capteur DHT!");

retour;

}

// Calculer l'indice de chaleur en Celsius (isFahreheit = false)

float hicData = dht.computeHeatIndex(celData, MoistureData, false);

// Calcule l'indice de chaleur en Fahrenheit (valeur par défaut)

float hifData = dht.computeHeatIndex(fehrData, MoistureData);

//Imprimez sur un moniteur série ou un terminal de votre choix à 115 200 Bauds

Serial.print("Humidité: ");

Serial.print(humiditéData);

Série.print(” %\t”);

Serial.print ("Température en degrés Celsius : ");

Serial.print(celData);

Série.print(" *C ");

Serial.print("Température en Fehr : ");

Serial.print(fehrData);

Serial.print(" *F\t");

Serial.print("Indice de chaleur en Cel : ");

Serial.print(hicData);

Série.print(" *C ");

Serial.print("Indice de chaleur à Fehr : ");

Serial.print(hifData);

Serial.print(" *F\n");

Client WiFiClient ; //Instancier un objet WiFi

//Démarrer ou service API utilisant notre client WiFi via PushingBox

if (client.connect(SITE WEB, 80))

{

client.print("GET /pushingbox?devid=" + devid

+ "&humidityData=" + (Chaîne) humiditéData

+ "&celData=" + (Chaîne) celData

+ "&fehrData=" + (Chaîne) fehrData

+ "&hicData=" + (Chaîne) hicData

+ "&hifData=" + (Chaîne) hifData

);

client.println(” HTTP/1.1″);

client.print("Hôte : ");

client.println(SITE WEB);

client.println("Agent utilisateur : ESP8266/1.0");

client.println("Connexion : fermer");

client.println();

}

}

Exemple de code de script d'application Google

Voici le code dont vous avez besoin pour créer un script lisible pour le transfert de données de votre capteur.

Requête de requête GET :

https://script.google.com/macros/s/<votre gscriptID>/exec?celData=data_here

HumidityDat, celData, fehrData, hicData, hifData (variables GScript, PushingBox et Arduino dans l'ordre dans lequel vous devez les écrire)

Fonction doGet(e) {

Logger.log ( JSON.stringify(e) ); // c'est pour visualiser les paramètres

Résultat Var = 'Ok';

Si (e.paramètre == non défini) {

Résultat = 'Aucun paramètre' ;

}

Autre {

Var id= '<URL de votre feuille de calcul\;

Var feuille = SpreadsheetApp.openById(id).getActivesheet();

Var newRow = sheet.getLastRow() + 1;

Var rowData = [];

//var waktu = nouvelle Date()'

rowData[0] = new Date(); //pour l'horodatage dans la colonne A

pour (var param dans e.parameter) {

logger.log('dans la boucle for, param='+param);

var value = stripQuotes(e.parameter[param]);

commutateur (paramètre) {

case 'humidityData' : //Paramètre

rowData[1] = valeur ; //Valeur dans la colonne B

casser;

cas 'celData' ;

rowData[2] = valeur ;

casser;

cas 'fehrData' :

rowData[3] = valeur ;

casser;

cas 'hicData' :

rowData[4] = valeur ;

casser;

cas 'hifData' :

rowData[5] = valeur ;

casser;

défaut:

résultat = « paramètre non pris en charge » ;

}

Logger.log(JSON.stringify(rowData));

Var newRange = sheet.getRange(newRow, 1, 1, rowData.length);

newRange.setValues([rowData]);

}

Renvoie ContentService.createTextOutput(result);

}

Fonction stripQuotes( valeur ){

Valeur de retour.replace(/^["']|['|]$/g, "");

}

Configurer PushingBox

Ce service agit comme intermédiaire entre les données de votre capteur DHT et Google Sheets. À l'aide de l'API PushingBox, vous pouvez transformer les données transmises via HTTP en données HTTPS cryptées reconnues par Google.

Notez que PushingBox vous limite à 1 000 requêtes par jour. Cependant, cela élimine une grande partie du travail fastidieux et de l'expertise requis pour créer votre propre algorithme de cryptage auquel Google répondra.

  1. Créez un compte PushingBox, si vous n'en avez pas déjà un.
  2. Utilisez l'adresse Gmail que vous utilisez également pour le projet de données du capteur NodeMCU.
  3. Accédez à Mes services.
  4. Ajoutez un nouveau service à partir de l'option Ajouter un service.
  5. Faites défiler jusqu'à la dernière option intitulée CustomURL, définissez votre propre service !
  6. Remplissez les champs nécessitant le nom, l'URL et la méthode.
  7. Pour la méthode, sélectionnez GET.
  8. Pour l'URL, utilisez l'URL commençant par « script.google.com… », à partir de l'URL générée lors de la création de l'adresse Google Scrip.
  9. Soumettez le service et accédez à Mes scénarios.
  10. Entrez un nom intuitif et appuyez sur le bouton Ajouter.
  11. Ajoutez une action lorsque vous y êtes invité à l'écran.
  12. Configurez la méthode GET en formatant les noms de chaque variable. Cette étape diffère en fonction du nombre de capteurs que vous enregistrez et de ce qu'ils enregistrent.

Configuration du matériel

Si vous utilisez un capteur DHT avec votre ESP8266, alimentez l'appareil avec 5 V au lieu de 3,3 V. Une tension inférieure peut ne pas vous donner des lectures correctes.

Connectez les broches 2 et D4 de votre ESP8266.

Configuration du logiciel

Cette configuration fonctionne avec l'IDE Arduino, de préférence une version plus récente que la 1.6.4. Cela signifie également que vous devez télécharger certaines bibliothèques sur votre système.

Les bibliothèques peuvent être trouvées sur les liens suivants :

  1. hhtps://github.comesp8266/Arduino/tree/master/libraries/ESP8266WiFi
  2. https://learn.adafruit.com/dht

L'étape suivante consiste à télécharger le croquis Arduino et à le configurer pour votre projet et votre appareil. Il n'y a que trois champs pertinents que vous devez formater et personnaliser pour votre projet :

  1. Réseau Wi-Fi.
  2. Mot de passe WiFi.
  3. ID de la PushingBox.

Comment abordez-vous le transfert de données NodeMCU ?

Il existe d'autres façons de procéder et des tonnes de types de capteurs que vous pouvez utiliser pour transférer des données à l'aide d'un ESP8266 avec le micrologiciel NodeMCU directement vers Google Sheets ou d'autres plates-formes Cloud.

Préférez-vous écrire vos propres scripts et codes pour personnaliser vos projets ou recherchez-vous en ligne des scripts vérifiés sur github et d'autres plateformes et vous adaptez-vous à partir de là ? Faites-nous savoir vos sources de code et de script préférées ainsi que les combinaisons ESP8266 et capteurs, dans la section commentaires ci-dessous.