Один ESP8266 не позволяет другому ESP8266 оставаться в сети - PullRequest
0 голосов
/ 30 августа 2018

У меня есть 2 ESP8266, которые я хочу подключить к одной сети с разными статическими адресами. Один работает отлично. Когда я добавляю другое, оба перестают работать. Прочитав больше о здесь https://github.com/knolleary/pubsubclient/issues/259, Я думаю, что это проблема с идентификатором клиента, но я не знаю, как ее решить. Это код, который я использую:

#include <ESP8266WiFi.h>

const char* ssid = "ESP Test";
const char* password = "88888888";

; // 
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  delay(10);
  pinMode(0, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(0, OUTPUT);
  pinMode(13, OUTPUT);
  digitalWrite(0, LOW);
  digitalWrite(2, LOW);
  digitalWrite(0, LOW);
  digitalWrite(13, LOW);

  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

WiFi.begin(ssid, password);
IPAddress ip(192,168,5,199); 
IPAddress gateway(192,168,5,1);
IPAddress subnet(255,255,255,0);   
WiFi.config(ip, gateway, subnet);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");

}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }

  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();

  // Match the request


  if (request.indexOf("/light1on") > 0)  {
    digitalWrite(0, HIGH);

  }
  if (request.indexOf("/light1off") >0)  {
    digitalWrite(0, LOW);

  }

   if (request.indexOf("/light2on") > 0)  {
    digitalWrite(2, HIGH);

  }
  if (request.indexOf("/light2off") >0)  {
    digitalWrite(2, LOW);

  }
    if (request.indexOf("/light3on") >0)  {
    digitalWrite(0, HIGH);

  }
  if (request.indexOf("/light3off") > 0)  {
    digitalWrite(0, LOW);

  }
   if (request.indexOf("/light4on") > 0)  {
    digitalWrite(13, HIGH);

  }
  if (request.indexOf("/light4off") > 0)  {
    digitalWrite(13, LOW);

  }
// Set ledPin according to the request
//digitalWrite(ledPin, value);

  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.println("<head>");
  client.println("<meta name='apple-mobile-web-app-capable' content='yes' />");
  client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");
 client.println("</head>");
  client.println("<body bgcolor = \"#f7e6ec\">"); 
  client.println("<hr/><hr>");
  client.println("<h4><center> Esp8266 Electrical Device Control </center></h4>");
  client.println("<hr/><hr>");
  client.println("<br><br>");
  client.println("<br><br>");
  client.println("<center>");
  client.println("Device 1");
  client.println("<a href=\"/light1on\"\"><button>Turn On </button></a>");
  client.println("<a href=\"/light1off\"\"><button>Turn Off </button></a><br />");  
  client.println("</center>");   
  client.println("<br><br>");
   client.println("<center>");
   client.println("Device 2");
  client.println("<a href=\"/light2on\"\"><button>Turn On </button></a>");
  client.println("<a href=\"/light2off\"\"><button>Turn Off </button></a><br />");  
client.println("</center>"); 
  client.println("<br><br>");
    client.println("<center>");
   client.println("Device 3");
  client.println("<a href=\"/light3on\"\"><button>Turn On </button></a>");
  client.println("<a href=\"/light3off\"\"><button>Turn Off </button></a><br />");  
client.println("</center>"); 
  client.println("<br><br>");
   client.println("<center>");
   client.println("Device 4");
  client.println("<a href=\"/light4on\"\"><button>Turn On </button></a>");
  client.println("<a href=\"/light4off\"\"><button>Turn Off </button></a><br />");  
client.println("</center>"); 
  client.println("<br><br>");
  client.println("<center>");
  client.println("<table border=\"5\">");
 client.println("<tr>");
  if (digitalRead(5))
         { 
           client.print("<td>Light 1 is ON</td>");
                 }
          else
          {
            client.print("<td>Light 1 is OFF</td>");
              }

        client.println("<br />");

         if (digitalRead(4))
          { 
           client.print("<td>Light 2 is ON</td>");

         }
          else
          {
            client.print("<td>Light 2 is OFF</td>");
          }
          client.println("</tr>");
          client.println("<tr>");
          if (digitalRead(0))
          { 
           client.print("<td>Light 3 is ON</td>");
          }

          else
          {
            client.print("<td>Light 3 is OFF</td>");
          }
          if (digitalRead(13))
          { 
           client.print("<td>Light 4 is ON</td>");

          }
          else
          {
            client.print("<td>Light 4 is OFF</td>");
         }

          client.println("</tr>");


          client.println("</table>");

          client.println("</center>");
  client.println("</html>"); 
  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");

}

1 Ответ

0 голосов
/ 03 сентября 2018

Поскольку я не могу добавить комментарий, я опубликую это как ответ. Пожалуйста, имейте в виду, что это в основном спекуляция

Мне просто интересно, есть ли проблема с MAC-адресами? Вы проверили оба устройства на наличие уникальных MAC-адресов?

Если они имеют идентичные адреса, это может быть проблемой. Если найдена эта статья , которая может помочь. Я не пробовал, но автор показывает, как изменить MAC-адрес на устройстве esp8266.

Как я уже сказал, спекуляция:)

...