Publicar en twitter datos desde Arduino

En este proyecto, aprenderás a publicar en Twitter lecturas de datos desde una placa Arduino UNO de forma automática cada hora.

El objetivo principal será twittear lecturas de temperatura y humedad recopiladas por un sensor DHT22 de forma automática cada hora.

El montaje consiste en conectar un sensor DHT con una placa Arduino UNO y luego transferir cada hora, los datos de temperatura y humedad recopilados a un ESP8266.

El módulo ESP8266 se configura para enviar una solicitud POST al recibir los datos.

Finalmente la solicitud POST activará un applet, que permite enviar un tweet a una cuenta registrada en el sitio web IFTTT.

Proyecto para publicar en Twitter lecturas de datos desde una placa Arduino

El montaje físico para este proyecto lo podrás observar en la siguiente gráfica:

Cómo enviar tweets con un Arduino - Diagrama de cableado de ESP8266 y DHT22

 

Configurar una cuenta en IFTTT

En primer lugar es necesario ir al sitio web de IFTTT y crear una cuenta nueva.

Ingrea en tu cuenta y luego ve a la barra de herramientas ubicado en la parte superior derecha. Luego haz click en Crear.

Una vez en este paso podrás crear el applet:

Cómo enviar un correo electrónico con ESP8266 e IFTTT - Creación de cuenta

Haciendo clic en «+ This» puedes establecer la condición.

Cómo enviar correo electrónico con ESP8266 e IFTTT - Creación de cuenta Paso 2

Ahora selecciona webhooks.

En webhooks selecciona solicitud web. Haz click en crear un trigger de un evento ESP_tweetDTH.

Luego establece la acción haciendo clic en la opción «+ That».

Cómo enviar un correo electrónico con ESP8266 e IFTTT - Parámetro de acción

A continuación, busca Twitter como un servicio de acción.

Si aún no tiene una cuenta de Twitter asociada con IFTTT, aparecerá un mensaje. Debes hacer click en conectar para registrar la cuenta de twitter donde serán publicadas las lecturas.

Permite que IFTTT acceda a la cuenta de Twitter.

Una vez que su cuenta esté registrada, selecciona «Publicar un Tweet» como acción.

Finalmente, redacte el tweet. Hay algunas variables útiles que puede usar para redactar su mensaje:

EventName que contiene el nombre del evento;

OccurredAt muestra la fecha y hora en que se activó el evento,

Value que puede contener cualquier número que desee enviar al servidor IFTTT.

Compruebe si ha introducido los datos correctos y finaliza.

El applet ya está listo.

Adquisicion de la llave

Para activar el Applet, necesitamos la clave con el nombre del evento en nuestra solicitud HTTP.

Para obtener su clave IFTTT única, vaya a la página de inicio y busque webhooks en la barra de búsqueda superior izquierda.

Ahora, en la página de webhooks, haz click en el vínculo Documentación en la esquina superior derecha de la página.

Finalmente, aparece una página que contiene su clave personal y la solicitud web completa para el evento.

Esta clave es única para cada cuenta IFTTT. Al incluir el nombre del evento, puede desencadenar una acción IFTTT a través de webhooks.

Finalmente, te mostramos el código que vas a subir en la plaza Arduino.

Código para el Arduino

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

#define DHTPIN 5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
float t,h;

SerialTransfer myTransfer;

void setup()
{
  Serial.begin(115200);
  dht.begin();
}

void loop()
{
  t = dht.readTemperature();
  h = dht.readHumidity();  
  Serial.println
  Serial.println(h);
  myTransfer.txObj(status, sizeof
  myTransfer.sendData(sizeof(h));
  delay(3600000);
}

Código para el módulo ESP8266

#include <ESP8266WiFi.h> 
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
#include "SerialTransfer.h"

SerialTransfer myTransfer;

const char* ssid     = "Wifi Name";
const char* password = "WiFi Password";

const char* resource = "https://maker.ifttt.com/trigger/YOUR EVENT NAME HERE/with/key/YOUR KEY HERE";
const char* server = "maker.ifttt.com";

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

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }

  myTransfer.begin(Serial);
}

void loop() 
{
  if(myTransfer.available())
  {
    float t,h;
    myTransfer.rxObj(myFloat, sizeof(myFloat));
    HTTPClient http;
    http.begin(serverName);
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");
    String httpRequestData = "value1=" + String
    int httpResponseCode = http.POST(httpRequestData);
    http.end();
  }
  delay(10000);
}  

Código para NodeMCU

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
#include <DHT.h>

#define DHTPIN D5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
int t,h;

const char* ssid = "Centropolis409";
const char* password = "ChitoMikeArnelRuz409!";

const char* serverName = "http://maker.ifttt.com/trigger/YOUR EVENT NAME HERE/with/key/YOUR KEY HERE";

unsigned long lastTime = 0;
unsigned long timerDelay = 10000;

void setup() 
{
  Serial.begin(115200);
  dht.begin();
  delay(100);
  WiFi.begin(ssid, password);
  Serial.println("Connecting");
  while(WiFi.status() != WL_CONNECTED) 
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to WiFi network with IP Address: ");
  Serial.println(WiFi.localIP());
 
  Serial.println("Timer set to 1 hour (timerDelay variable), it will take 1 hour before publishing the first reading.");
}

void loop() 
{
  if ((millis() - lastTime) > timerDelay) 
  {
    if(WiFi.status()== WL_CONNECTED)
    {
      HTTPClient http;
      http.begin(serverName);
      t = dht.readTemperature();
      h = dht.readHumidity();  
      Serial.println
      Serial.println(h);
      http.addHeader("Content-Type", "application/x-www-form-urlencoded");
      String httpRequestData = "value1=" + String
      int httpResponseCode = http.POST(httpRequestData);
      Serial.print("HTTP Response code: ");
      Serial.println(httpResponseCode);
      http.end();
    }
    else 
    {
      Serial.println("WiFi Disconnected");
    }
    lastTime = millis();
  }
}

 

Resultado final

Después de cargar el código, Arduino envíará inmediatamente la solicitud POST.

Luego, después de una hora, enviará otro tweet.

Este proyecto puede aplicarse a diferentes escenarios y aplicaciones distintas a Twitter.

Esperamos que este proyecto te sirva para aprender a publicar en twitter datos desde Arduino

Deja un comentario

programar en arduino logo

En este sitio aprenderas a programar en Arduino de forma gratuita a través de sencillos tutoriales y distintos proyectos.