Цифровая электроника для начинающих (Елисеев) - страница 47

}

}


Как можно видеть, код довольно прост. Мы сформировали таблицу с нужными нам полями. Для вывода строк yes/no мы использовали конструкцию языка С doorClosed ? "yes" : "no", она позволяет выбрать одно из двух значений в зависимости от условия.


Запускаем браузер, и видим данные с нашего сервера:

Теперь мы можем оставить устройство подключенным, и наблюдать состояние дома или квартиры удаленно, с любой точки земного шара.


Самостоятельная работа #1: подключить реальные датчики, например DS1820.


Самостоятельная работа #2: Поэкспериментировать с раскраской и стилями таблицы. Например, так можно добавить красный цвет к ячейке:

Row 1, Column 1

3.12 Делаем односторонний мессенджер

Плата ESP32 может быть включена круглосуточно, что легко позволяет использовать ее для приема входящих сообщений: достаточно лишь добавить в веб-сервер форму для отправки текстовых данных. Это позволит любому кто знает адрес сервера, зайти на страницу и оставить сообщение его владельцу.


На языке HTML код для отправки выглядит просто, достаточно добавить следующие строки:



Enter your message:




При этом страница в браузере будет иметь следующий вид:


При этом, если пользователь введет текст, например “123 456”, и нажмет кнопку “Submit”, браузером будет отправлен запрос “GET /send?msg=123+456 HTTP/1.1”, который мы можем обработать на сервере. Дальше, как говорится, дело техники - надо извлечить из строки подстроку, убрав начальные и конечные части.


Добавим код там, где проверяется начало строки:


if (currentLine.startsWith("GET /send?msg=") && currentLine.endsWith(" HTTP/1.1")) {

// String looks like GET /send?msg=123+456 HTTP/1.1

String msg = currentLine.substring(14, currentLine.length()-8);

msg.replace("+", " ");

Serial.println(msg);

}


Как можно видеть, с помощью функции substring мы взяли подстроку, пропустив 14 символов сначала (длина “GET /send?msg=”) и 8 символов с конца (длина “ HTTP/1.1”). Функция replace заменяет символы “+” на пробелы, чтобы из строки “123+456” получить “123 456”.


Добавим вместо Serial.println вывод на дисплей, который мы рассмотрели в главе 3.4.

Готовый код “мессенджера” целиком приведен ниже.


#include

#include "SSD1306.h"


const char* ssid = "TP-LINK_AB11";

const char* password = "12345678";

int ledPin = 2;


WiFiServer server(8000);

SSD1306 display(0x3c, 21, 22);


void setup()

{

Serial.begin(115200);

pinMode(ledPin, OUTPUT);