Paso 5: Código de ejemplo
/*
Ejemplo de interruptor de potencia de Yeelink sensor client * / #include #include #include #include byte buff [2]; para yeelink api #define APIKEY "537ef1cef1b8726b39347abb8c0c809a" / / reemplazar su clave de api de yeelink aquí #define DEVICEID 7931 / / reemplazar su ID de dispositivo #define SENSORID 12568 / / reemplazar su ID sensor / / asignar una dirección MAC para el controlador de ethernet. mac de bytes [] = {0 × 00, 0x1D, 0 × 72, 0 × 82, 0 × 35, 0x9D}; Inicializa una instancia de la biblioteca: cliente EthernetClient; Char [servidor] = "api.yeelink.net"; Nombre Dirección yeelink API sin firmar largo lastConnectionTime = 0; última vez conectado al servidor, en milisegundos boolean lastConnected = false; Estado de la conexión del tiempo pasado a través de la cañería del lazo const unsigned postingInterval largo = 3 * 1000; demora entre 2 datapoints, 30s cadena returnValue = ""; Boolean ResponseBegin = false; void setup() {pinMode (7, salida); Wire.Begin(); iniciar el puerto serie: Serial.begin(57600); iniciar la conexión Ethernet con DHCP: Si (Ethernet.begin(mac) == 0) {Serial.println ("fallo al configurar Ethernet usando DHCP"); for(;;);} else {Serial.println ("Ethernet configuración OK");}} void loop() {/ / si hay datos entrantes de la conexión de red. / / enviar por el puerto serie. Esto es para depurar / / propósitos solamente: Si (client.available()) {char c = client.read(); / / Serial.print(c); si (c == ' {') ResponseBegin = true; más si (c == '}') ResponseBegin = false; (ResponseBegin) returnValue += c;} si (returnValue.length()! = 0 & & (ResponseBegin == false)) {Serial.println(returnValue); si (returnValue.charAt(returnValue.length() – 1) == ' 1) {Serial.println ("encienda el LED"); digitalWrite (7, alto);} else if(returnValue.charAt(returnValue.length() – 1) == ' 0′) {Serial.println ("apagar el LED"); digitalWrite (7 BAJA); returnValue} = "";} Si no hay ninguna conexión de red, pero había una última vez / / a través del lazo, entonces deje el cliente: Si (! client.connected() & & lastConnected) {Serial.println(); Serial.println("disconnecting."); Client.STOP(); } / / Si no estás conectado, y han transcurrido 10 segundos / o el de su última conexión, luego vuelve a conectar y enviar datos: if(!client.connected() & & (millis() – lastConnectionTime > postingInterval)) {/ / leer datos del sensor, reemplace el código //int sensorReading = readLightSensor(); Serial.Print("yeelink:"); obtener datos de servidor getData(); } / / almacenar el estado de la conexión para la próxima vez a través de / / el bucle: lastConnected = client.connected(); } / / Este método hace una conexión HTTP con el servidor y obtener datos nuevo void getData(void) {/ / si hay una conexión exitosa: Si (client.connect (servidor, 80)) {Serial.println("connecting..."); enviar la solicitud HTTP GET: client.print ("GET /v1.0/device/"); Client.Print(DEVICEID); Client.Print("/sensor/"); Client.Print(SENSORID); Client.Print("/datapoints"); Client.println ("HTTP/1.1″); Client.println ("Host: api.yeelink.net"); Client.Print ("Accept: *"); Client.Print("/"); Client.println("*"); Client.Print ("U-ApiKey:"); Client.println(APIKEY); Client.println ("Content-Length: 0″); Client.println ("conexión: cerrar"); Client.println(); Serial.println ("imprimir hacer."); } else {/ / si no pudo realizar una conexión: Serial.println ("fallada la conexión"); Serial.println(); Serial.println("disconnecting."); Client.STOP(); } / / Nota el momento en que la conexión fue realizada o intentada: lastConnectionTime = millis(); }