diff --git a/barrier_controller/barrier_controller.ino b/barrier_controller/barrier_controller.ino index c94f90e..4796dc9 100644 --- a/barrier_controller/barrier_controller.ino +++ b/barrier_controller/barrier_controller.ino @@ -19,7 +19,7 @@ #define ETH_CLK_MODE ETH_CLOCK_GPIO17_OUT #define AP_SSID "Barrier-Setup" -#define FW_VERSION "1.7" +#define FW_VERSION "1.8" #define AP_PASS "barrier123" Preferences prefs; @@ -81,6 +81,7 @@ void loadConfig() { cfg_self_ip = prefs.getString("self_ip", ""); cfg_gateway = prefs.getString("gateway", ""); cfg_subnet = prefs.getString("subnet", "255.255.255.0"); + cfg_peer_ip = prefs.getString("peer_ip", ""); prefs.end(); } @@ -94,9 +95,19 @@ void saveConfig() { prefs.putString("self_ip", cfg_self_ip); prefs.putString("gateway", cfg_gateway); prefs.putString("subnet", cfg_subnet); + prefs.putString("peer_ip", cfg_peer_ip); prefs.end(); } +void notifyPeer(int btn) { + if (cfg_peer_ip.length() == 0) return; + HTTPClient http; + http.begin("http://" + cfg_peer_ip + "/peer_led?b=" + String(btn)); + http.addHeader("X-Token", cfg_token); + http.GET(); + http.end(); +} + void sendCommand(String ip) { if (!ethConnected && !wifiConnected) { Serial.println("Нет сети!"); @@ -187,6 +198,11 @@ input[type=text]:focus,input[type=password]:focus{outline:none;border-color:#219 +
+

Второй пульт

+ + +

IP этого устройства

@@ -214,6 +230,15 @@ input[type=text]:focus,input[type=password]:focus{outline:none;border-color:#219 } void setupRoutes() { + server.on("/peer_led", HTTP_GET, []() { + String token = server.header("X-Token"); + if (token != cfg_token) { server.send(401, "text/plain", "unauthorized"); return; } + digitalWrite(LED_PIN, HIGH); + lastPress1 = millis(); // блокируем debounce + lastPress2 = millis(); + server.send(200, "text/plain", "ok"); + }); + server.on("/", HTTP_GET, []() { server.send(200, "text/html", buildPage()); }); @@ -236,6 +261,7 @@ void setupRoutes() { cfg_self_ip = server.arg("self_ip"); cfg_gateway = server.arg("gateway"); cfg_subnet = server.arg("subnet"); + cfg_peer_ip = server.arg("peer_ip"); String np = server.arg("pass"); if (np.length() > 0) cfg_pass = np; saveConfig(); @@ -331,6 +357,7 @@ void loop() { digitalWrite(LED_PIN, HIGH); Serial.println("Кнопка 1"); sendCommand(cfg_ip1); + notifyPeer(1); } // Гасим светодиод когда debounce прошёл if (now - lastPress1 < DEBOUNCE || now - lastPress2 < DEBOUNCE) { @@ -344,6 +371,7 @@ void loop() { digitalWrite(LED_PIN, HIGH); Serial.println("Кнопка 2"); sendCommand(cfg_ip2); + notifyPeer(2); } delay(10);