×

ARDUINO

Control d’accés amb contrasenya. Orgue de llums. Comparativa de editors Arduino. Projecte bon Nadal. Sensor de gas i de fums. Control de la qualitat del aire interior (CO2) amb semàfor LED.

NodeMCU

NodeMCU-ThingSpeak. ThingSpeak. NodeMCU com AccessPoint. Control de la llum de casa per web. Control de un led per el mòbil. Sistema de fitxers en ESP8266. Altura del nivell d'aigua. Avis d’alarma a Telegram. Control de la llum de casa des de Telegram. Control de la intensitat de llum de un LED per Internet. Magatzematge de temperatura i humitat en Thinger. Publicar temperatura i humitat en Google Sheets. ESP8266 i Firebase. ESP8266-BME280 Firebase. La bàscula. ESP8266 NodeMCU amb cèl·lula de càrrega..

ESP32

ESP32-CAM, exemple de prova. Esp32-Cam captura fotos per ser vistes en la WEB. Pujar fotos a un servidor FTP amb ESP32-CAM. Foto amb ESP32-CAM i Telegram. Alarma amb avis a Telegram, utilitzant la placa ESP32-CAM.

PROGRAMACIÓ

Matemàtiques. App Inventor tutorial. MicroPython en ESP8266. Visual Estudio Code per Arduino

Intel·ligència artificial

Classificador d’imatges.

SERVIDORS

Instal·lar i configurar Apache en Ubuntu. Accés a un servidor Linux remotament. Client i Servidor FTP.

MÀQUINES VIRTUALS

Màquina virtual UBUNTU. WindowsXP en Virtualbox.

ELECTRÒNICA

Simulador Multisim. Simulador Proteus.

BASE DE DADES

MySQL. Instal·lació. MySQL. Aplicacions.

JAVA

Netbeans Maven MySQL. Java+Netbeans+Maven+EclipseLink+MySQL Aplicació d’escriptori JavaFX App JavaFX amb SceneBuilder App Java-Swing
favicon
logo

Tresavis

Benvinguts al blog de tresavis de noves tecnologies i més.

Correu : tresavis3@gmail.com

facebook   Instagram   youtube   x   tiktok

☰ Pràctiques   ☰ Articles

Descripció.

En aquesta practica amb la placa NodeMCU (ESP8266 ), volem publicar les lectures del sensor DH22, de temperatura i humitat a un full de càlcul de Google Sheets.

Publiquem cada 30 minuts al full de càlcul, utilitzant IFTTT.

IFTTT es un servei WEB de tercers, que serveix per integrar el ESP8266 amb Google Sheets.

presentacio

Components.

1.- Placa NodeMCU en mode estació.

2.- Sensor DHT22.

3.- Resistència de 10 KOhm.

4.- IDE de Arduino.

5.- Servei WEB IFTTT.

6.- Full de càlcul de Google Sheets.

Bibliografia.

https://randomnerdtutorials.com/esp32-esp8266-publish-sensor-readings-to-google-sheets/

Circuit.

Disenyat amb la app de circuito.io

esquema

Diagrama seqüencial.

El diagrama seqüencial mostra tots el passos que implementem en aquesta practica.

diagrama

Pas 1.- Connexió del NodeMCU a la nostre WiFi.

Pas 2.- El sensor DHT22 llegeix la temperatura i la humitat.

Pas 3.- El NodeMCU es comunica amb el servei WEB IFTTT, per publicar les lectures de temperatura i humitat a un full de càlcul de Google Sheets. Aquest full de càlcul es guarda en el Google Drive.

Pas 4.- Després de publicar, el ESP8266 es posa en mode Deep Sleep durant 30 minuts.

Pas 5.- Passats els de 30 minuts, el ESP es desperta.

Pas 6.- El ESP al despertar-se connecta amb la WiFi i torna a repetir-se el procés.

Configuració IFTTT.

Crear un compte de IFTTT.

Entrar en https://ifttt.com

Escriu el e-mail i una contrasenya.

ifttt1
ifttt2

Crear un Applet. Click en Create.


ifttt3

Click en Add.


ifttt4

En el buscador escriu Webhooks.


ifttt5

Click en el icona del servei Webhooks.


ifttt6

Click en Receive a Web request.


ifttt7

Click en Connect.


ifttt8

Posar el nom del event, en el nostres cas posem : Lectura_DHT22


ifttt9

Click en That Add.


ifttt10

En el buscador buscar Google Sheets.


ifttt11

Click Google Sheets.


ifttt12

Click en Add row to speadsheet.


ifttt13

Click Connect.


ifttt14

Escollim el e-mail del compte de IFTTT.


correu

Click en Permet.


nom<

Escriu el nom del full de càlcul, el format el deixem per defecte i la ruta del Google Drive on es guardarà.

Click en Create action.


continue

Click en Continue.


finish

Click en Finish.


Test de funcionament de IFTTT.

Anar a https://ifttt.com/maker_webhooks

test1

Anar a Documentation.


key

Tenim la nostre unica key.


Click en Test it. Si anat bé es mostra la seguent pantalla.

test2

Anem a Google Drive.

drive

Obrim el full de càlcul.

datasheets

El webhook funciona correctament.


Integrar el NodeMCU amb IFTTT.

Hardware.

hardware

Codi.

Temperatura-google-sheets.ino


#include <ESP8266WiFi.h>

#include <Wire.h>
#include "DHT.h"  

// Parametres de WiFi
const char* ssid     = "mirablau";
const char* password = "Cla1DeCasa";


//IFTTT URL resource
//posem la Key del Webhooks
const char* resource = "/trigger/Lectura_DHT22/with/key/dxBHyOpcrIk149cRnZXcRA";

// Maker Webhooks IFTTT
const char* server = "maker.ifttt.com";

// temps que posem la placa a dormir DeepSleep
// Conversor de segons a  micro segons
uint64_t uS_TO_S_FACTOR = 1000000;  
// Dormir 30 minuts = 1800 segonds
uint64_t TIME_TO_SLEEP = 1800;

// Paràmetres del DHT 
#define DHTPIN D1
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200); 
  delay(2000);

  // Inicialització del DHT22  
  dht.begin();
  
  initWifi();
  makeIFTTTRequest();
    
  // Deep sleep 1800 segons (30 minuts)
  Serial.println("Ara a dormir...");
  ESP.deepSleep(TIME_TO_SLEEP * uS_TO_S_FACTOR); 
  
}

void loop() {
  //la placa esta dormin, no arribem aqui.
}

// Estableix la connexió Wi-Fi amb el router
void initWifi() {
  Serial.print("Connectan a: "); 
  Serial.print(ssid);
  WiFi.begin(ssid, password);  

  int timeout = 10 * 4; // 10 segons
  while(WiFi.status() != WL_CONNECTED  && (timeout-- > 0)) {
    delay(250);
    Serial.print(".");
  }
  Serial.println("");

  if(WiFi.status() != WL_CONNECTED) {
     Serial.println("Ha fallat la connexió, a dormir...");
  }

  Serial.print("WiFi connectat a: "); 
  Serial.print(millis());
  Serial.print(", IP address: "); 
  Serial.println(WiFi.localIP());
}

// Envia una petició HTTP a IFTTT web service
void makeIFTTTRequest() {
  Serial.print("Connectem a "); 
  Serial.print(server);
  
  WiFiClient client;
  int retries = 5;
  while(!!!client.connect(server, 80) && (retries-- > 0)) {
    Serial.print(".");
  }
  Serial.println();
  if(!!!client.connected()) {
    Serial.println("Ha fallat la connexió...");
  }
  
  Serial.print("Request resource: "); 
  Serial.println(resource);

  // Temperatura in graus Celsius
  String jsonObject = String("{\"value1\":\"") + dht.readTemperature()
  +"\",\"value2\":\"" + (dht.readHumidity()/100.0F)
  + "\"}";
                      
  // Comment the previous line and uncomment the next line to publish temperature readings in Fahrenheit                    
  /*String jsonObject = String("{\"value1\":\"") + (1.8 * dht.readTemperature() + 32) + "\",\"value2\":\"" 
                      + (bme.readPressure()/100.0F) + "\",\"value3\":\"" + dht.readHumidity() + "\"}";*/
                      
  client.println(String("POST ") + resource + " HTTP/1.1");
  client.println(String("Host: ") + server); 
  client.println("Connection: close\r\nContent-Type: application/json");
  client.print("Content-Length: ");
  client.println(jsonObject.length());
  client.println();
  client.println(jsonObject);
        
  int timeout = 5 * 10; // 5 segons             
  while(!!!client.available() && (timeout-- > 0)){
    delay(100);
  }
  if(!!!client.available()) {
    Serial.println("No hi ha resposta...");
  }
  while(client.available()){
    Serial.write(client.read());
  }
  
  Serial.println("\nTancan la connecxió");
  client.stop(); 
}

Explicació del codi.

Incluir la unica IFTTT URL resource, que es del tipus següent:

//posem la Key del Webhooks
const char* resource = "/trigger/Lectura_DHT22/with/key/**************************#34;;

Definim el sleep time en 30 minuts.

  // Deep sleep 1800 segons (30 minuts)
  Serial.println("Ara a dormir...");
  ESP.deepSleep(TIME_TO_SLEEP * uS_TO_S_FACTOR); 

Tenim que tenir present que el servei IFTTT, no accepta dades en períodes curts de temps.

Enviament de la lectura del sensor DHT22.

  // Temperatura in graus Celsius
  String jsonObject = String("{\"value1\":\"") + dht.readTemperature()
  +"\",\"value2\":\"" + (dht.readHumidity()/100.0F)
  + "\"}";

El objecte json que envia es similar al seguent:

{“Value1”:”20”,”Value2”:”0.60”}

Resultat final.

hardware2
fullCalcul

Contingut.


Nosaltres

llevant
garbi
naufragi
mobil
einstein
einstein2
lascuevas
desdecasa

Tags

Noves tecnologies WEB Arduino Domótica MycroPython NodeMCU IoT Java ESP8266 Lora C++ Programació Server-Client