Я хочу переопределить кнопки переключения над значением базы данных mysql - PullRequest
0 голосов
/ 23 мая 2019

Я управляю светодиодом, подключенным к 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-файле в базе данных, только когда я нажал только.

...