Paso 2: código
Hay unas cuantas cosas habrán añadir alguna información específica el código para que funcione correctamente. El nombre de tu wifi y contraseña y el id de dispositivo y la clave de su nube.
#include
#include #include #include #include #include #define WIFI_AP "" #define WIFI_PASSWORD "" #define WIFI_AUTH LWIFI_WPA / / elegir entre LWIFI_OPEN, LWIFI_WPA o LWIFI_WEP. #define por 50 per1 #define #define 3 DEVICEID "" / entrada tu deviceId #define DEVICEKEY "" / entrada su deviceKey #define SITE_URL "api.mediatek.com"
LWiFiClient c; unsigned int rtc; unsigned int lrtc; unsigned int rtc1; unsigned int lrtc1; carbón puerto [4] = {0}; char connection_info [21] = {0}; char ip [21] = {0}; int portnum; int val = 0; String tcpdata = String(DEVICEID) + "," + String(DEVICEKEY) + ", 0"; String upload_led; String tcpcmd_led_on = "LED_Controller, 1"; String tcpcmd_led_off = "LED_Controller, 0"; String tcpcmd_blue_on = "LED_BlueControl, 1"; String tcpcmd_blue_off = "LED_BlueControl, 0"; String tcpcmd_green_on = "LED_GreenControl, 1"; String tcpcmd_green_off = "LED_GreenControl, 0";
LWiFiClient c2; HttpClient http(c2);
void setup() {LTask.begin(); LWiFi.begin(); Serial.Begin(115200); mientras (!. Delay(1000) serial); / * Comentario esta línea cuando Serial no está presente, es decir. ejecutar esta demo sin conectar a la PC * /
Serial.println ("conexión a AP"); mientras que (0 == LWiFi.connect (WIFI_AP, LWiFiLoginInfo (WIFI_AUTH, WIFI_PASSWORD))) {delay(1000);} Serial.println ("llamar a conexión");
mientras (! c2.connect (SITE_URL, 80)) {Serial.println ("volver a conectar al sitio web"); delay(1000);} delay(100);
pinMode (13, salida); pinMode (12, salida); pinMode (11, salida); getconnectInfo(); connectTCP(); }
void getconnectInfo() {//calling API RESTful para obtener c2.print de conexión de socket TCP ("GET /mcs/v2/devices /"); c2.print(DEVICEID); c2.println ("/connections.csv HTTP/1.1"); c2.print ("Host:"); C2.println(SITE_URL); C2.Print ("deviceKey:"); C2.println(DEVICEKEY); C2.println ("conexión: cerrar"); C2.println(); Delay(500);
int errorcount = 0; mientras (! c2.available()) {Serial.println ("esperando respuesta HTTP:"); Serial.println(errorcount); errorcount += 1; Si (errorcount > 10) {c2.stop(); return;} delay(100); } int err = http.skipResponseHeaders();
int bodyLen = http.contentLength(); Serial.Print ("contenido de longitud es:"); Serial.println(bodyLen); Serial.println(); char c; int ipcount = 0; int cuenta = 0; separador de int = 0; mientras (c2) {int v = c2.read(); if (v! = -1) {c = v; Serial.Print(c); connection_info [ipcount] = c; separador de if(c==',') = ipcount; ipcount ++; } else {Serial.println ("no más contenido, desconectar"); c2.stop();
}} Serial.print ("la información de conexión:"); Serial.println(connection_info); int i; para (i = 0; i
} //getconnectInfo
void uploadstatus() {//calling API RESTful para cargar datapoint a MCS en estado informe LED Serial.println ("conexión llamada"); LWiFiClient c2;
mientras (! c2.connect (SITE_URL, 80)) {Serial.println ("volver a conectar al sitio web"); delay(1000);} delay(100); if(digitalRead(13)==1) upload_led = "LED_Display,, 1"; Else upload_led = "LED_Display,, 0"; int thislength = upload_led.length(); HttpClient http(c2); C2.Print ("POST /mcs/v2/devices /"); C2.Print(DEVICEID); C2.println ("/datapoints.csv HTTP/1.1"); C2.Print ("Host:"); C2.println(SITE_URL); C2.Print ("deviceKey:"); C2.println(DEVICEKEY); C2.Print ("Content-Length:"); C2.println(thislength); C2.println ("tipo de contenido: texto/csv"); C2.println ("conexión: cerrar"); C2.println(); C2.println(upload_led); Delay(500);
int errorcount = 0; mientras (! c2.available()) {Serial.print ("esperando respuesta HTTP:"); Serial.println(errorcount); errorcount += 1; Si (errorcount > 10) {c2.stop(); return;} delay(100); } int err = http.skipResponseHeaders();
int bodyLen = http.contentLength(); Serial.Print ("contenido de longitud es:"); Serial.println(bodyLen); Serial.println(); mientras (c2) {int v = c2.read(); if (v! = -1) {Serial.print(char(v));} else {Serial.println ("no más contenido, desconectar"); c2.stop();
} } }
void connectTCP() {//establish conexión TCP con el servidor TCP con c.stop() IP y el puerto designado; Serial.println ("conexión a TCP"); Serial.println(IP); Serial.println(portnum); mientras que (0 == c.connect (ip, portnum)) {Serial.println ("volver a conectar a TCP"); delay(1000);} Serial.println ("envío TCP conectar"); c.println(tcpdata); c.println(); Serial.println ("esperando respuesta TCP:");} connectTCP
void heartBeat() {Serial.println ("envío TCP del latido del corazón"); c.println(tcpdata); c.println();} //heartBeat
void loop() //Red llevó {//Check comando de socket TCP de MCS Server String tcpcmd = ""; mientras que (c.available()) {int v = c.read(); if (v! = -1) {Serial.print((char)v); tcpcmd += (char) v; si (tcpcmd.substring(40).equals(tcpcmd_led_on)) {digitalWrite (13, HIGH); Serial.Print ("encender LED"); tcpcmd = ""; } else if(tcpcmd.substring(40).equals(tcpcmd_led_off)) {digitalWrite (13, bajo); Serial.Print ("apagar LED"); tcpcmd = ""; } else if(tcpcmd.substring(40).equals(tcpcmd_blue_on)) {digitalWrite (12, HIGH); Serial.Print ("encender LED"); tcpcmd = ""; } else if(tcpcmd.substring(40).equals(tcpcmd_blue_off)) {digitalWrite (12, bajo); Serial.Print ("apagar LED"); tcpcmd = ""; } else if(tcpcmd.substring(40).equals(tcpcmd_green_on)) {digitalWrite (11, alto); Serial.Print ("encender LED"); tcpcmd = ""; } else if(tcpcmd.substring(40).equals(tcpcmd_green_off)) {digitalWrite (11, bajo); Serial.Print ("apagar LED"); tcpcmd = ""; } } }
LDateTime.getRtc(&rtc); if ((rtc - lrtc) >= per) { heartBeat(); lrtc = rtc; } //Check for report datapoint status interval LDateTime.getRtc(&rtc1); if ((rtc1 - lrtc1) >= per1) { uploadstatus(); lrtc1 = rtc1; } }