Allora, una soluzione un pò complicata, facendo l'uso delle stringhe e array memorizzati in memoria flash:
Primo tra le variabili ad inizio sketch aggiungi queste, ovvero tabella dei vari comandi:
#include <avr/pgmspace.h>
const char str0[] PROGMEM = "GET /?out=AllTemp";
const char str1[] PROGMEM = "GET /?out=all";
const char str2[] PROGMEM = "GET /?out=0&value=";
const char str3[] PROGMEM = "GET /?out=0&status=1";
const char str4[] PROGMEM = "GET /?out=22&status=1";
const char str5[] PROGMEM = "GET /?out=23&status=1";
const char* const string_table[] PROGMEM = {str0,str1,str2,str3,str4,str5};
#define K_DIM_STRING_TABLE 6
Poi dove vuoi metti questa funzione, che cerca tra quei comandi una stringa e ti dice quale è in base al numero di indice, 0=comando AllTemp, etc.
int CercaComando(char* p_cmd) // trova il numero del comando tra 0 e 5, -1 = non trovato
{ for(byte i=0;i<K_DIM_STRING_TABLE;i++)
{ if ( strcmp_P(p_cmd, (char*)pgm_read_word(&(string_table[i])) ) == 0 )
{ return(i);
}
}
return(-1);
}
Nel tuo programma, al posto di readString.startsWith, una volta letto readString, lo converti dentro a buf e lo passi a quella funzione
char buf[30];
readString.toCharArray(buf, 30);
switch( CercaComando(buf) )
{ case 0: Serial.println("AllTemp"); break;
case 1: Serial.println("all"); break;
case 2: Serial.println("0 value"); break;
case 3: Serial.println("0 status");break;
case 4: Serial.println("22"); break;
case 5: Serial.println("23"); break;
default: Serial.println("nessun comando"); break;
}