LinkSprite Ethernet Shield + yeelink WEB remote control IO (5 / 6 steg)
Steg 5: Exempelkod
/*
Yeelink sensor klienten power switch exempel * / #include #include #include #include byte buff [2]. för yeelink api #define APIKEY "537ef1cef1b8726b39347abb8c0c809a" / / byta ut din yeelink api-nyckel här #define DEVICEID 7931 / / byta ditt enhets-ID #define SENSORID 12568 / / byta din sensor ID / / tilldela en MAC-adress för ethernet-styrenhet. byte [mac] = {0 × 00, 0x1D, 0 × 72, 0 × 82, 0 × 35, 0x9D}; initiera bibliotek instansen: EthernetClient kunden. char server [] = "api.yeelink.net"; namn adress för yeelink API osignerade långa lastConnectionTime = 0; förra gången du ansluten till servern, i millisekunder boolean lastConnected = false; tillstånd för anslutningen förra gången genom viktigaste loop const osignerade långa postingInterval = 3 * 1000; fördröjning mellan 2 datapoints, 30s sträng returnValue = ""; booleska ResponseBegin = false; void setup() {pinMode (7, OUTPUT); Wire.BEGIN(); Starta serieport: Serial.begin(57600); Starta Ethernet-anslutning med DHCP: om (Ethernet.begin(mac) == 0) {Serial.println ("Det gick inte att konfigurera Ethernet via DHCP"); for(;;);} annat {Serial.println ("Ethernet konfiguration OK");}} void loop() {/ / om det finns inkommande data från det netto-anslutning. / / skicka ut den seriella porten. Detta är för felsökning / / endast: om (client.available()) {char c = client.read(); / / Serial.print(c); om (c == ' {") ResponseBegin = true; annars om (c =="} ") ResponseBegin = false; om (ResponseBegin) returnValue += c;} om (returnValue.length()! = 0 & & (ResponseBegin == false)) {Serial.println(returnValue); om (returnValue.charAt(returnValue.length()-1) == ' 1′) {Serial.println ("vänd på LED"), digitalWrite (7, hög);} annat if(returnValue.charAt(returnValue.length() – 1) == ' 0′) {Serial.println ("stänga av lampan"), digitalWrite (7 LÅG); {} returnValue = "";} om det finns ingen netto-anslutning, men det var en sista gång / / genom öglan, sedan stoppa klienten: om (! client.connected() & & lastConnected) {Serial.println(); Serial.println("disconnecting."); client.stop(); } / / Om du inte är ansluten, och tio sekunder har gått sedan / / din senaste anslutning, sedan ansluta igen och skicka data: if(!client.connected() & & (millis()-lastConnectionTime > postingInterval)) {/ / läsa sensordata, ersätta med din kod //int sensorReading = readLightSensor(); Serial.Print("yeelink:"); Hämta data från servern getData(); } / / store tillstånd för anslutningen till nästa gång genom / / slingan: lastConnected = client.connected(); } / / med denna metod är en HTTP-anslutningen till servern och få data tillbaka void getData(void) {/ / om det finns en framgångsrik anslutning: om (client.connect (server, 80)) {Serial.println("connecting..."); Skicka den HTTP GET-begäran: 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 ("acceptera: *"); client.Print("/"); client.println("*"); client.Print ("U-ApiKey:"); client.println(APIKEY); client.println ("Content-Length:" 0 "); client.println ("anslutning: Stäng"); client.println(); Serial.println ("print gjort."); } annat {/ / om du inte kunde göra en anslutning: Serial.println ("Anslutning misslyckades"); Serial.println(); Serial.println("disconnecting."); client.stop(); } / / Obs tiden som anslutningen var gjort eller försökt: lastConnectionTime = millis(); }