Загрузка из интернета различной информации с помощью микроконтроллера ESP32 + Arduino IDE. Можно подгружать курсы валют, погоду и любую другую полезную информацию.
#include <WiFi.h> /// - Обязательно для подключения WiFI #include <HTTPClient.h> /// - Обязательно для отправки HTTP-запросов /// Настройка подключения к сети WiFi begin const char* ssid = "MikroTik-83BBBA"; // Введите название сети WiFi const char* password = "88888888"; // Введите пароль к сети Wifi /// Настройка подключения к сети WiFi end; HTTPClient http1; String RequestURL =""; String ResponseData = ""; int httpCode = 0; void setup() { Serial.begin(115200); Serial.println("Connecting to "); Serial.print(ssid); Serial.print(" "); WiFi.begin(ssid, password); //check wi-fi is connected to wi-fi network while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected =)"); Serial.print("Got IP: "); ///Serial.println(WiFi.localIP()); ///LocalIP = WiFi.localIP().toString(); } void loop() { /// Записываем в переменную адрес HTTP запроса RequestURL = "https://www.sberometer.ru/"; ///Serial.println(RequestURL); http1.begin(RequestURL); // Устанавливаем URL для запроса в объект HTTP httpCode = http1.GET(); // Отправляем GET-запрос if (httpCode == 200) { Serial.println("Request: Success"); } /// Далее разбираем ответ сервера if (httpCode > 0) { Serial.println(httpCode); ResponseData = http1.getString(); ResponseData = ParseString(ResponseData,",\"USD\":","}"); ResponseData = RemoveHTMLTags(ResponseData); Serial.println(ResponseData); } else { Serial.println("Error on HTTP request"); } http1.end(); //Освобождаем объект HTTP запросов delay(15000); /// Пауза между запросами. Не ставьте слишком маленькую, так как можно получить бан от сайта за частые запросы } String ParseString(String DataString, String StartMask, String EndMask) { int i = 0; int j = 0; int SL = DataString.length(); uint8_t founded = 0; int StartPos = -1; String ParseResult = ""; if ( (DataString == "") || (StartMask == "") || (EndMask == "")) { return(""); } while (i<SL) { if (DataString.charAt(i) == StartMask.charAt(0)) { j = 1; StartPos = i; while (j<StartMask.length()) { if (DataString.charAt(i+j) != StartMask.charAt(j)) { j = StartMask.length(); } j++; } if (j == StartMask.length()) { founded = 1; i = SL; } } i++; } if (founded == 1) { i = StartPos + StartMask.length(); while (i<SL) { if (DataString.charAt(i) == EndMask.charAt(0)) { int j = 1; while (j<EndMask.length()) { if (DataString.charAt(i+j) != EndMask.charAt(j)) { j = EndMask.length(); } j++; } if (j == EndMask.length()) { ParseResult = DataString.substring(StartPos+StartMask.length(),i+j-EndMask.length()); i = SL; } } i++; } } return(ParseResult); } String RemoveHTMLTags(String DataString) { int i = 0; uint8_t HTMLTagIsOpen = 0; uint8_t CanSUM = 1; String CuredString = ""; while (i < DataString.length()) { if (DataString.charAt(i) == '<') { HTMLTagIsOpen = 1; } if ((HTMLTagIsOpen == 1) && (DataString.charAt(i) == '>')) { HTMLTagIsOpen = 0; CanSUM = 0; } else { CanSUM = 1; } if ((HTMLTagIsOpen == 0) && (CanSUM == 1)) { CuredString += DataString.charAt(i); } i++; } return(CuredString); } |
