Я управляю светодиодом, подключенным к ESP8266 через страницу PHP, на которой есть кнопка, если нажать кнопку, затем обновить состояние кнопки светодиода, чтобы включить, затем ESP8266 использует http-клиент, чтобы получить значение в базе данных таблицы Mysql, затем я добавлена кнопка переключения для переопределения и обновления состояния светодиодной кнопки в таблице базы данных mysql, но она не работала, так как я хочу, чтобы она всегда принимала состояние кнопки и игнорировала веб-кнопку php.
Я создал две пустоты в ESP8266:
эта пустота для получения значения из таблицы состояния светодиодов mysql и отправки сигнала на включение или выключение индикатора:
void led() {
const unsigned long period2 = 2000;
currentMillis2 = millis(); //get the current time
if (currentMillis2 - startMillis2 >= period2) { //test whether the period has elapsed
if (WiFi.status() == WL_CONNECTED) {
client.setFingerprint(fingerprint);
HTTPClient https;
// Serial.print("[HTTPS] begin...\n");
if (https.begin(client, "https://mysite.tech/climate/status.php?id=1")) {
//Serial.print("[HTTPS] GET...\n");
int httpCode = https.GET();
if (httpCode > 0) {
const size_t bufferSize = JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(3)
+ JSON_OBJECT_SIZE(5);
DynamicJsonBuffer jsonBuffer(bufferSize);
JsonObject& root = jsonBuffer.parseObject(https.getString());
int id = root["id"];
const char* state = root["status"];
Serial.print("ID:");
Serial.println(id);
Serial.print("Status:");
Serial.println(state);
String led = root["status"];
if (led=="ON") {
digitalWrite(LEDBULP, 0);
Serial.println("LIGHT ON");
}
if (led=="OFF") {
digitalWrite(LEDBULP, 1);
Serial.println("LIGHT OFF");
}
}
}
https.end();
}
startMillis2 = currentMillis2;
}
}
и это не позволяет обновить состояние светодиода с кнопкой переключателя, подключенной к ESP8266:
void ledswitch() {
const char* state;
if (digitalRead(LEDSWITCH) == LOW) {
state = "OFF";
Serial.println("LED Turned OFF");
}
if (digitalRead(LEDSWITCH) == HIGH) {
state = "ON";
Serial.println("LED Turned ON");
}
Serial.print("connecting to ");
Serial.println(host);
//Serial.printf("Using fingerprint '%s'\n", fingerprint2);
client.setFingerprint(fingerprint2);
int httpPort = 443;
//Add a SSL client
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
String url = "/climate/updateled.php?status=" + String(state);
Serial.print("Requesting URL: ");
Serial.println(url);
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
delay(500);
while (client.available()) {
String line = client.readStringUntil('\r');
Serial.print(line);
}
Serial.println();
Serial.println("closing connection");
}
Надеюсь, я четко объяснил это для моего случая!
Я хочу, чтобы что-то вроде кнопки обновляло мою светодиодную кнопку в php-файле в базе данных, только когда я нажал только.