Привожу тут пример кода для 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();
}
}
Комментариев нет :
Отправить комментарий