esp32_thread_client_rest_api_webserver
Thread
#include <WiFi.h> #include <WebServer.h> #include <HTTPClient.h> #include <ArduinoJson.h> #include <Thread.h> const char *ssid = "....."; const char *password = "....."; float btc; Thread myThread = Thread(); void getBtcFromKraken() { HTTPClient http; http.begin("https://api.kraken.com/0/public/Ticker?pair=XXBTZEUR"); int httpCode = http.GET(); if (httpCode == HTTP_CODE_OK) { String response = http.getString(); JsonDocument doc; DeserializationError error = deserializeJson(doc, response); if (!error) { btc = doc["result"]["XXBTZEUR"]["c"][0].as<float>(); Serial.print("BTC: "); Serial.println(btc); } } http.end(); } WebServer server(80); void handleRoot() { String html = "BTC = " + String(btc); server.send(200, "text/plain", html); } void setup(void) { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) delay(500); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); //if (MDNS.begin("esp32")) { // Serial.println("MDNS responder started"); //} myThread.onRun(getBtcFromKraken); myThread.setInterval(10000); myThread.run(); server.on("/", handleRoot); server.onNotFound([]() { server.send(404, "text/plain", "Not Found"); }); server.begin(); Serial.println("HTTP server started"); } void loop(void) { if (myThread.shouldRun()) myThread.run(); Serial.print("."); server.handleClient(); delay(500); //allow the cpu to switch to other tasks }
esp32_thread_client_rest_api_webserver.txt · Last modified: 2025/03/06 20:28 by bruno