Привожу тут пример кода для SparkFun ESP8266 The Thing, который подключается к WiFi и выполняет POST-запрос к указанному серверу. (Про то, как подключить эту плату к компьютеру и прошить я писал здесь). В качестве сервера я использовал NodeJS сервер, который я описывал здесь (этим и объясняется содержание JSON в запросе). Собственно, плата подключается к WiFi и раз в 30 секунд через POST отправляет серверу вот такой JSON:
А вот и сам код:
{ "var1": "1", "var2": "0" }
#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(); } }
Комментариев нет :
Отправить комментарий