как отправить аргумент объектам ESP8266WebServer в функции
Вероятно, это простая вещь, однако я не могу придумать, как передать аргумент при вызове функции
ESP8266WebServer server ( 80 );
void toggleRelayOne() {
char temp[400];
String msg = "";
if (relay1 == 0) {
relay1 = 1;
msg = "Light is turned on";
}
else {
relay1 = 0;
msg = "Light is turned off";
}
digitalWrite (5, relay1); //GPIO 5 // Реле 1
snprintf ( temp, 400,
"<html>\
<head>\
<meta http-equiv='refresh' content='5'/>\
<title>NodeMCU DHT11 Sensor and Relay Board</title>\
<meta http-equiv='refresh' content='0; url=../'>\
</head>\
<body>\
%d .</body>\
</html>"
, 1);
server.send ( 200, "text/html", temp );
}
void setup ( void ) {
pinMode(10, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
Serial.begin ( 9600 );
WiFi.begin ( ssid, password );
Serial.println ( "" );
// Ожидаем соединения
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 );
Serial.print ( "." );
}
Serial.println ( "" );
Serial.print ( "Connected to " );
Serial.println ( ssid );
Serial.print ( "IP address: " );
Serial.println ( WiFi.localIP() );
if ( MDNS.begin ( host ) ) {
Serial.println ( "MDNS responder started" );
}
MDNS.addService("http", "tcp", 80);
server.on ( "/", handleRoot );
server.on("/relay1", toggleRelayOne);
server.begin();
Serial.println ( "HTTP server started" );
}
в приведенной выше функции, где я вызываю toggleRelayOne
, используя server.on("/relay1", toggleRelayOne);
я хочу иметь возможность передавать идентификатор реле, поэтому я можно использовать одну и ту же функцию для переключения нескольких реле.
@Ciasto piekarz, 👍2
Обсуждение1 ответ
Лучший ответ:
▲ 2
Используйте server.arg()
для передачи команд из Интернета в качестве параметров GET:
digitalWrite (5, реле1);
становится
digitalWrite (server.arg("pin").toInt(), реле1);
где URL-адрес имеет вид http://192.168.1.5/relay1?pin=15
Конечно, остальную часть вашего кода, вероятно, необходимо адаптировать для управления дополнительными состояниями, чтения/записи всего за один http-вызов и т. д.
,
@dandavis
Смотрите также:
- Цикл While не прерывается
- GSM-модуль IOT-GA6 Arduino + ошибка CME 58
- Получена ошибка недопустимого преобразования из 'const char*' в 'const uint8_t*
- Что именно делает препроцессор Arduino?
- Arduino + кодовые блоки C++
- Проблемы с Serial.read()
- Невозможно получить показания счетчика (Modbus)
- GPS автономный робот
server.on( "/", handleRoot); почему его использовали??, @Guru Prasad Nayak
Когда пользователь пытается перейти к
"/"
, я вызываю функциюhandleRoot
. Эта функция считывает данные с датчиков, подключенных к ESP826., @Ciasto piekarz