Estou tentando criar um tipo de "protocolo" para que uma página web envie para o arduino informações de acionamento de lampadas, eletronicos e entre outros. Mas para isso, o arduino precisa saber o que acionar e em que setor, por exemplo:
Iluminação: LZ000 (lampada 0, desligar)
LZ001 (lampada 0, ligar)
LZ010 (iluminação, lampada 1, desligar)
LZ011 (iluminação, lampada 1, ligar)
Eletronicos: EL000 (eletronico 0, desligar)
EL001 (eletronico 0, ligar)
O arduino recebe algo do tipo:
GET /?acao=LZ000&_=1423591719106 HTTP/1.1
Para identificar o "protocolo" na String e depois fazer as comparações pensei algo assim:
void loop()
{
EthernetClient client = server.available();
if(client)
{
boolean continua = true;
String linha = "";
while(client.connected())
{
if(client.available()){
char c = client.read();
linha.concat(c);
if(c == '\n' && continua)
{
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/javascript");
client.println("Access-Control-Allow-Origin: *");
client.println();
int iniciofrente = linha.indexOf("?");
if(iniciofrente>-1){ //verifica se o comando veio
iniciofrente = iniciofrente+6; //pega o caractere seguinte
int fimfrente = iniciofrente+5; //esse comando espero 5 caracteres
String acao = linha.substring(iniciofrente,fimfrente);//recupero o valor do comando
Serial.print(linha);
if(acao.substring(0,2) == "LZ"){
if(acao.substring(2,5) == "000"){
Serial.println("Desliga LUZ 1");
}
else if(acao.substring(2,5) == "001"){
Serial.println("Liga LUZ 1");
}
else {
Serial.println("Nao encontrou a opcao da LUZ");
}
}
else {
Serial.println("NAO ENCOTROU OPCAO");
}
}
break;
}
if(c == '\n') { continua = true; }
else if (c != '\r') { continua = false; }
}
}
delay(2);
client.stop();
}
}
}
Teria alguma outra maneira de fazer essas verificações de uma maneira mais "limpa"?