include

URL. "/api/v1.6/collections/values/?token=EMN0UvYxjcy0pfACcUtPwOYzXWZpePMNj4IxnhWqyyNyPLO4Tjl. RMJbL9aqM&force=true". #include "LDHT.h".
17KB Größe 15 Downloads 39 vistas
#include #include #include #include #include #include #include #define WIFI_AP "UPB" #define WIFI_PASSWORD "Ç" #define WIFI_AUTH LWIFI_OPEN #define URL "things.ubidots.com" #define TOKEN "EMN0UvYxjcy0pfACcUtPwOYzXWZpePMNj4IxnhWqyyNyPLO4TjlRMJbL9aqM" #define VARID1 "5734f9a176254252f4a98d35" #define WEBSITE "things.ubidots.com" #define URL "/api/v1.6/collections/values/?token=EMN0UvYxjcy0pfACcUtPwOYzXWZpePMNj4IxnhWqyyNyPLO4Tjl RMJbL9aqM&force=true" #include "LDHT.h" #define DHTPIN 2 #define DHTTYPE DHT11 LDHT dht(DHTPIN,DHTTYPE);

Seguidamente se definen el tipo de variables a utilizar y su velocidad, y se revisa si hay lectura del sensor DHT11. float tempC=0.0,Humi=0.0; LGPRSUDP u; char payload[180]; char le[4]; String response; void setup() { LTask.begin(); LWiFi.begin(); dht.begin(); Serial.begin(9600); En la siguiente excursión se procede a revisar la conexión Wi-Fi, si esta está disponible se procede a enviar los datos a Ubidots a través de Wi-Fi, en el código se definen los protocolos para él envió de los datos haca la página web de Ubidots. Serial.println("Connecting to AP"); LWiFi.connect(WIFI_AP, LWiFiLoginInfo(WIFI_AUTH, WIFI_PASSWORD)); if(!LBTServer.begin((uint8_t*)"LinkIT ING.Electronica")) { Serial.println("Fail to start BT."); return; } Serial.println("BT server is started.");

} boolean wifi_status(LWifiStatus ws){ switch(ws){ case LWIFI_STATUS_DISABLED: return false; break; case LWIFI_STATUS_DISCONNECTED: return false; break; case LWIFI_STATUS_CONNECTED: return true; break; } return false; } void loop() { if (LWIFI_STATUS_CONNECTED == true){ Serial.println("Connecting to Ubidots..."); LWiFiClient c; while (!c.connect(URL, 80)) { Serial.println("Retrying to connect..."); delay(100); } Serial.println("Connected!"); while(1) { LWifiStatus ws = LWiFi.status(); boolean status = wifi_status(ws); if(!status){ Serial.println("Connecting to AP"); while (0 == LWiFi.connect(WIFI_AP, LWiFiLoginInfo(WIFI_AUTH, WIFI_PASSWORD))) { delay(500); } } if(dht.read()) { tempC = dht.readTemperature(); Humi = dht.readHumidity(); } String payload = "{\"value\":"+ String(dht.readTemperature()) + "}"; String le = String(payload.length()); if(!c.connected()){ while (!c.connect(URL, 80)){ delay(100); } Serial.println("Client reconnected!");

} c.print(F("POST /api/v1.6/variables/")); c.print(VARID1); c.println(F("/values HTTP/1.1")); c.println(F("User-Agent: LinKit One/1.0")); c.print(F("X-Auth-Token: ")); c.println(TOKEN); c.println(F("Connection: close")); c.println(F("Content-Type: application/json")); c.print(F("Content-Length: ")); c.println(le); c.print(F("Host: ")); c.println(URL); c.println(); c.println(payload); c.println(); int v; while(c.available()){ v = c.read(); if(v < 0){ Serial.println("No response."); break; } } delay(1000); } } Si la comunicación Wi-Fi no está disponible se procede a preguntar si GPRS está disponible si es así los datos se envían directamente a través de GPRS, se debe definir el APN del operador celular que se esté utilizando en este caso se utiliza TIGO Colombia por lo que se define (web.colombiamovil.com.co) y se lleva al código de la siguiente manera:

else { Serial.println("Attach to GPRS network"); // Attach to GPRS network - need to add timeout LGPRS.attachGPRS("web.colombiamovil.com.co","",""); if(dht.read()) { tempC = dht.readTemperature(); Humi = dht.readHumidity(); } save_values(tempC); if(LBTServer.connected()) { // echo back all received data if(dht.read()) { tempC = dht.readTemperature(); Humi = dht.readHumidity(); } }