// ESP8266 Code
#include <Arduino.h>

// Используем аппаратный UART для связи с ESP32
// TX (GPIO1) -> RX ESP32 (GPIO16)
// RX (GPIO3) <- TX ESP32 (GPIO17) - не используется в этом варианте, но подключение должно быть
#define UART_TO_ESP32 Serial

String inputString = "";         // Строка для хранения входящих данных
bool stringComplete = false;     // Флаг: строка полностью получена

void setup() {
  // Инициализация основного Serial (для монитора порта ПК)
  Serial.begin(9600);
  
  // Ждем инициализации порта (опционально, для стабильности)
  while (!Serial) {
    ; 
  }
  
  Serial.println("Ready. Type LED_ON or LED_OFF");
}

void loop() {
  // Чтение данных из монитора порта (от ПК)
  while (Serial.available()) {
    char inChar = (char)Serial.read();
    
    // Если пришел конец строки (Enter), обрабатываем команду
    if (inChar == '\n') {
      processCommand(inputString);
      inputString = ""; // Очищаем строку
    } else {
      inputString += inChar; // Добавляем символ к строке
    }
  }
}

// Функция обработки команд
void processCommand(String cmd) {
  // Убираем пробелы и лишние символы (опционально, но полезно)
  cmd.trim(); 
  
  if (cmd == "LED_ON") {
    Serial.println("Command sent: LED ON");
    UART_TO_ESP32.write('1'); // Отправляем команду включения на ESP32
  } 
  else if (cmd == "LED_OFF") {
    Serial.println("Command sent: LED OFF");
    UART_TO_ESP32.write('0'); // Отправляем команду выключения на ESP32
  } 
  else {
    Serial.println("Unknown command. Use LED_ON or LED_OFF");
  }
}   