Comando a telecamera IP, e lettura risposta.

Buongiorno a tutti. Ho deciso di scrivere perchè mi sto dannando dopo aver fatto mille prove e mille ricerche su internet. Vengo subito al dunque, ho uno sketch che mi accende e spegne gli infrarossi di una telecamera ip se chiudo il relativo ingresso su arduino, e fin qui non ho particolari problemi, anche se probabilmente il codice non è scritto alla perfezione. Ora aprendo il monitore seriale, una volta eseguito il comando, mi compaiono o "ir=on" se gli infrarossi si accendono, o "ir=off" se si spengono. Non riesco però ad estrapolare queste risposte per poi eseguire altri comandi (esempio: se ir=on, alza uscita tot)...mi servirebbe una mano :grinning:

 #include <Dns.h>
#include <Ethernet.h>
#include <EthernetClient.h>
#include <EthernetServer.h>
#include <WString.h>
#include <SPI.h>
#include <Ethernet.h>

int val;
int bottone = 2;
int val2;
int bottone2 = 3;
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};


IPAddress ip(192, 168, 1, 177);
IPAddress myDns(8, 8, 8, 8);
EthernetClient client;

char server[] = "192.168.1.202";

void setup() {

  pinMode; 13, OUTPUT;
  Serial.begin(9600);
  while (!Serial) {
    ;
  }
  delay(1000);

  Ethernet.begin(mac, ip, myDns);
}

void loop() {


  val = digitalRead (bottone);
  val2 = digitalRead (bottone2);
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }


  if (val == 1) {
    httpRequest();
  }
  if (val2 == 1) {
    httpRequest2();
  }
}
void httpRequest() {
  client.stop();
  delay(100); 
  if (client.connect(server, 8002)) {

    
    client.println("GET /ir=on HTTP/1.1");
    client.println("Host: 192.168.1.202");
    client.println("User-Agent: arduino-ethernet");

    client.println();



  }
}
void httpRequest2() {

  client.stop();
  delay(100); 
  if (client.connect(server, 8002)) {

    client.println("GET /ir=off HTTP/1.1");
    client.println("Host: 192.168.1.202");
    client.println("User-Agent: arduino-ethernet");

    client.println();




  }

}

Ciao! La tua richiesta è un po un "paradosso" nel senso utilizzi codice avanzato e poi ti perdi in una cosa semplice!

Tu ricevi dal client un carattere e ti limiti a stamparlo, quello che devi fare è salvare tutti i caratteri all'interno di una variabile stringa. Una volta che hai la stringa completa salvata puoi confrontarla semplicemente "il C++ permette di confrontare due stringhe semplicemente con =="

Puoi cercare esempi del tipo "come leggere una stringa da seriale" avrai numerosi esempi, e usare un oggetto Client o un oggetto Serial è praticamente la stessa cosa.