Привожу тут пример кода для SparkFun ESP8266 The Thing, который подключается к WiFi и выполняет POST-запрос к указанному серверу. (Про то, как подключить эту плату к компьютеру и прошить я писал здесь). В качестве сервера я использовал NodeJS сервер, который я описывал здесь (этим и объясняется содержание JSON в запросе). Собственно, плата подключается к WiFi и раз в 30 секунд через POST отправляет серверу вот такой JSON:
А вот и сам код:
1 2 3 4 | { "var1": "1", "var2": "0" } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | #include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> const int LED_PIN = 5; // Thing's onboard, green LED const char WiFiSSID[] = "Имя WiFi сети" ; const char WiFiPSK[] = "пароль" ; const char HttpServer[] = "адрес сервера" ; const int HttpPort = 8080; const unsigned long postRate = 30000; unsigned long lastPost = 0; void initHardware() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, LOW); //Uncomment to use Serial monitor //while(!Serial.available()); } int postToServer() { //Turn LED on digitalWrite(LED_PIN, HIGH); Serial.println( "Sending..." ); HTTPClient http; http.begin(HttpServer, HttpPort); http.addHeader( "Content-Type" , "application/json" ); int httpCode = http.POST( "{\"var1\":\"1\",\"var2\":\"0\"}" ); int ret = 1; if (httpCode > 0) { Serial. printf ( "Http code = %d\n" , httpCode); } else { Serial. printf ( "Sending failed, error: %s\n" , http.errorToString(httpCode).c_str()); ret = 0; } http.end(); //Turn LED off digitalWrite(LED_PIN, LOW); return ret; } void connectWiFi() { byte ledStatus = LOW; // Set WiFi mode to station (as opposed to AP or AP_STA) WiFi.mode(WIFI_STA); Serial.println( "Connecting" ); WiFi.begin(WiFiSSID, WiFiPSK); while (WiFi.status() != WL_CONNECTED) { // Blink the LED digitalWrite(LED_PIN, ledStatus); // Write LED high/low ledStatus = (ledStatus == HIGH) ? LOW : HIGH; yield(); } Serial.println( "Connected" ); } void setup() { initHardware(); connectWiFi(); digitalWrite(LED_PIN, HIGH); } void loop() { if (lastPost + postRate <= millis()) { if (postToServer()) lastPost = millis(); else yield(); } } |
Комментариев нет :
Отправить комментарий