Arduino Client & WebServer

Нет ответов
VaDoSiQ
VaDoSiQ аватар
Offline
Зарегистрирован: 19.01.2017

Здравствуйте. Совместил клиентскую и серверную библиотеки и как всегда появились подводные камни:)

В общем мне нужно, после перехода по определенному URL на веб сервере ардуино, отправить состояние 5 выхода, на свой сервер, то есть 1 или 0. Но не получается отправить. Сама отправка работает (проверял, не вру).

А вот когда ставлю что то типа:

client.println("GET /add.php?value=");
client.println(digitalRead(5));
client.println(" HTTP/1.1");

Отсылается пустота.

Что я не правильно делаю? Спасибо.

Сам скетч:

#include <SPI.h>
#include <Ethernet.h>
byte MAC[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress IP(10, 10, 1, 55);
EthernetServer arduino(81);
EthernetClient client;
boolean InboundRequest = 0;
char resource[] = "pte.pp.ua";

void setup() {
  pinMode(5, OUTPUT);
  Serial.begin(9600);
  Ethernet.begin(MAC, IP);
  arduino.begin();
}

void loop() {
  EthernetClient client = arduino.available();
  if(client) {
    boolean EmptyLine = true;
    while(client.connected()) {
      if(client.available()) {
        char data = client.read();
        Serial.write(data);
        if(data == '\n' && EmptyLine) {
          client.println("HTTP/1.1 200 OK");
          client.println("Connection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println("<head>");
          client.println("<link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"http://arduino.cc/en/favicon.png\"/>");
          client.println("</head>");
          client.println("<body>");
          client.println("</body>");
          client.println("</html>");
          break;
        }
        if(InboundRequest && data == ' ') {
          InboundRequest = 0;
        }
        if(data == '?') {
          InboundRequest = 1;
        }
        if(InboundRequest == 1) {
          int value = data - '0';
          digitalWrite(5, value);
          //Response();  ------- Вот тут, после включения диода, должна идти отправка текущего состояния выхода #5.
        }
        if(data == '\n') {
          EmptyLine = true;
        } else if(data != '\r') {
          EmptyLine = false;
        }
      }
    }
    delay(1);
    client.stop();
    Serial.println("--------------------------");
    Serial.println("The client disconnected.");
    Serial.println("--------------------------");
  }
}



/*void Response() { ------------------------------- / Где то ошибка здесь ошибка + после перехода по адресу включения диода, идёт двойная запись add.php?value=12345
  if(client.connect(resource, 80)) {
    Serial.println("[Connected]");
    client.println("GET /add.php?value=12345 HTTP/1.1");
    client.println("Host: pte.pp.ua");
    client.println("Connection: close");
    client.println();
  } else {
    Serial.println("[Connection failed]");
    Serial.println();
  }
  while(client.connected() && !client.available()) delay(1);
  while(client.connected() || client.available()) {
    char response = client.read();
    Serial.print(response);
  }
  Serial.println();
  Serial.println("[Disconnection]");
  Serial.println("==================");
  Serial.println();
  client.stop();
}*/