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:

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:

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

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».

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.

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