fuccpuff

Untitled

Oct 28th, 2023
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.28 KB | None | 0 0
  1. #include <Servo.h>
  2. #include <ESP8266WiFi.h>
  3.  
  4. Servo servoMotor; // Создаем объект Servo
  5. #define relayPin D5 // Пин, на котором подключено реле
  6. const char* ssid = "ITKVANT"; // Название вашей Wi-Fi сети
  7. const char* password = "f4220Ak3"; // Пароль от Wi-Fi сети
  8.  
  9. WiFiServer server(80);
  10.  
  11. boolean isFeeding = false; // Флаг, указывающий, выполняется ли кормление
  12.  
  13. void setup() {
  14. servoMotor.attach(D1); // Подключаем сервопривод к пину D1 (GPIO5)
  15. pinMode(relayPin, OUTPUT); // Устанавливаем пин реле как выход
  16. digitalWrite(relayPin, HIGH); // Выключаем реле (включаем питание сервопривода)
  17. Serial.begin(115200); // Инициализация монитора порта
  18.  
  19. // Подключение к Wi-Fi сети
  20. WiFi.begin(ssid, password);
  21. while (WiFi.status() != WL_CONNECTED) {
  22. delay(1000);
  23. Serial.println("Подключение к Wi-Fi...");
  24. }
  25. Serial.println("Подключено к Wi-Fi");
  26. Serial.print("IP-адрес: ");
  27. Serial.println(WiFi.localIP());
  28.  
  29. // Настройка сервера
  30. server.begin();
  31. }
  32.  
  33. void loop() {
  34. WiFiClient client = server.available();
  35.  
  36. if (client) {
  37. Serial.println("Новый клиент подключен");
  38.  
  39. // Читаем данные от клиента
  40. String request = client.readStringUntil('\r');
  41. client.flush();
  42.  
  43. // Обработка запросов
  44. if (request.indexOf("/feed") != -1) {
  45. if (!isFeeding) {
  46. isFeeding = true;
  47. startFeeding();
  48. isFeeding = false;
  49. }
  50.  
  51. // Отправляем ответ на запрос
  52. sendFeedResponse(client);
  53. } else {
  54. client.println("HTTP/1.1 404 Not Found");
  55. client.println("Content-Type: text/html; charset=utf-8"); // Установка кодировки UTF-8
  56. client.println();
  57. client.println("<html><body></body></html>");
  58. }
  59.  
  60. // Отправка веб-страницы
  61. sendWebPage(client);
  62.  
  63. client.stop();
  64. Serial.println("Клиент отключен");
  65. }
  66. }
  67.  
  68. void startFeeding() {
  69. digitalWrite(relayPin, LOW); // Включаем реле (включаем питание сервопривода)
  70. Serial.println("Кормление начато");
  71. servoMotor.write(0); // Устанавливаем сервопривод в 0 градусов
  72. delay(20000); // Запускаем сервопривод на 20 секунд
  73. servoMotor.write(90); // Возвращаем сервопривод в исходное положение (90 градусов)
  74. digitalWrite(relayPin, HIGH); // Выключаем реле (выключаем питание сервопривода)
  75. Serial.println("Кормление завершено");
  76. }
  77.  
  78. void sendWebPage(WiFiClient client) {
  79. client.println("HTTP/1.1 200 OK");
  80. client.println("Content-Type: text/html; charset=utf-8"); // Установка кодировки UTF-8
  81. client.println();
  82. client.println("<html><body>");
  83. client.println("<h1>Покормить рыбок</h1>");
  84. client.println("<button onclick='feedFish()'>Покормить рыб</button>");
  85. client.println("<script>");
  86. client.println("function feedFish() {");
  87. client.println("var xhr = new XMLHttpRequest();");
  88. client.println("xhr.onreadystatechange = function() {");
  89. client.println("if (xhr.readyState == 4 && xhr.status == 200) {");
  90. client.println("alert('Благодаря вам рыбки покушают!');");
  91. client.println("}");
  92. client.println("};");
  93. client.println("xhr.open('GET', '/feed', true);");
  94. client.println("xhr.send();");
  95. client.println("}");
  96. client.println("</script>");
  97. client.println("</body></html>");
  98. }
  99.  
  100. void sendFeedResponse(WiFiClient client) {
  101. client.println("HTTP/1.1 200 OK");
  102. client.println("Content-Type: text/html; charset=utf-8"); // Установка кодировки UTF-8
  103. client.println();
  104. client.println("<html><body>");
  105. client.println("<h1>Рыбки покормлены</h1>");
  106. client.println("<p><a href='/'>Вернуться на главную</a></p>");
  107. client.println("</body></html>");
  108. }
  109.  
Advertisement
Add Comment
Please, Sign In to add comment