Lectura de todos los pines digitales + envío de sms

Hola Colegas!!! Soy nuevo en el foro, me estoy incursionando de a poco y no tengo con quien hablar de estas cuestiones, espero que me puedan ayudar con el siguiente código, que cuando envío un sms con la palabra STATE no me responde nada o me responde sólo la última acción realizada.
Por ejemplo: Si envío un sms para encender un relé, y luego envío otro sms con la palabra state, sólo responde que el relé está encendido, pero no me informa el estado de los demás relés.

/*

  • Complete Project Details
    */

// Incluye la biblioteca de software de serie para comunicarse con GSM
#include <SoftwareSerial.h>

// Configurar puerto serie de software
SoftwareSerial SIM900(7, 8);

// Variable para almacenar mensaje de texto
String textMessage;

// Crear una variable para almacenar el estado de la Lamp state
String lampState = "HIGH";

// Relé conectado al pin 12,11,10,6,5,4,3,2
const int relay1 = 12;
const int relay2 = 11;
const int relay3 = 10;
const int relay4 = 6;
const int relay5 = 5;
const int relay6 = 4;
const int relay7 = 3;
const int relay8 = 2;

void setup() {
// Enciende automáticamente el escudo
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(5000);

// Establecer relé como SALIDA
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
pinMode(relay5, OUTPUT);
pinMode(relay6, OUTPUT);
pinMode(relay7, OUTPUT);
pinMode(relay8, OUTPUT);

// Por defecto el relé está apagado
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, HIGH);
digitalWrite(relay5, HIGH);
digitalWrite(relay6, HIGH);
digitalWrite(relay7, HIGH);
digitalWrite(relay8, HIGH);

// Inicializando comunicación serial
Serial.begin(19200);
SIM900.begin(19200);

// Dale tiempo a tu escudo GSM para iniciar sesión en la red
delay(20000);
Serial.print("SIM900 ready...");

// AT comando para configurar SIM900 en modo SMS
SIM900.print("AT+CMGF=1\r");
delay(100);
// Configurar el módulo para enviar datos SMS a la salida de serie al recibirlos
SIM900.print("AT+CNMI=2,2,0,0,0\r");
delay(100);
}

void loop(){
if(SIM900.available()>0){
textMessage = SIM900.readString();
Serial.print(textMessage);
delay(10);
}
if(textMessage.indexOf("R1ON")>=0){
// Encender el rele y guardar el estado actual
digitalWrite(relay1, LOW);
lampState = "R1 on";
Serial.println("Relay1 set to ON");
textMessage = "";
}
if(textMessage.indexOf("R1OFF")>=0){
// Apagar el rele y guardar el estado actual
digitalWrite(relay1, HIGH);
lampState = "R1 off";
Serial.println("Relay1 set to OFF");
textMessage = "";
}

if(textMessage.indexOf("R2ON")>=0){
// Encender el rele y guardar el estado actual
digitalWrite(relay2, LOW);
lampState = "R2 on";
Serial.println("Relay2 set to ON");
textMessage = "";
}
if(textMessage.indexOf("R2OFF")>=0){
// Apagar el rele y guardar el estado actual
digitalWrite(relay2, HIGH);
lampState = "R2 off";
Serial.println("Relay2 set to OFF");
textMessage = "";
}
if(textMessage.indexOf("R3ON")>=0){
// Encender el rele y guardar el estado actual
digitalWrite(relay3, LOW);
lampState = "R3 on";
Serial.println("Relay3 set to ON");
textMessage = "";
}
if(textMessage.indexOf("R3OFF")>=0){
// Apagar el rele y guardar el estado actual
digitalWrite(relay3, HIGH);
lampState = "R3 off";
Serial.println("Relay3 set to OFF");
textMessage = "";
}
if(textMessage.indexOf("R4ON")>=0){
// Encender el rele y guardar el estado actual
digitalWrite(relay4, LOW);
lampState = "R4 on";
Serial.println("Relay4 set to ON");
textMessage = "";
}
if(textMessage.indexOf("R4OFF")>=0){
// Apagar el rele y guardar el estado actual
digitalWrite(relay4, HIGH);
lampState = "R4 off";
Serial.println("Relay4 set to OFF");
textMessage = "";
}
if(textMessage.indexOf("R5ON")>=0){
// Encender el rele y guardar el estado actual
digitalWrite(relay5, LOW);
lampState = "R5 on";
Serial.println("Relay5 set to ON");
textMessage = "";
}
if(textMessage.indexOf("R5OFF")>=0){
// Apagar el rele y guardar el estado actual
digitalWrite(relay5, HIGH);
lampState = "R5 off";
Serial.println("Relay5 set to OFF");
textMessage = "";
}
if(textMessage.indexOf("R6ON")>=0){
// Encender el rele y guardar el estado actual
digitalWrite(relay6, LOW);
lampState = "R6 on";
Serial.println("Relay6 set to ON");
textMessage = "";
}
if(textMessage.indexOf("R6OFF")>=0){
// Apagar el rele y guardar el estado actual
digitalWrite(relay6, HIGH);
lampState = "R6 off";
Serial.println("Relay6 set to OFF");
textMessage = "";
}
if(textMessage.indexOf("R7ON")>=0){
// Encender el rele y guardar el estado actual
digitalWrite(relay7, LOW);
lampState = "R7 on";
Serial.println("Relay7 set to ON");
textMessage = "";
}
if(textMessage.indexOf("R7OFF")>=0){
// Apagar el rele y guardar el estado actual
digitalWrite(relay7, HIGH);
lampState = "R7 off";
Serial.println("Relay7 set to OFF");
textMessage = "";
}
if(textMessage.indexOf("R8ON")>=0){
// Encender el rele y guardar el estado actual
digitalWrite(relay8, LOW);
lampState = "R8 on";
Serial.println("Relay8 set to ON");
textMessage = "";
}
if(textMessage.indexOf("R8OFF")>=0){
// Apagar el rele y guardar el estado actual
digitalWrite(relay8, HIGH);
lampState = "R8 off";
Serial.println("Relay8 set to OFF");
textMessage = "";
}
if(textMessage.indexOf("RALLON")>=0){
// Encender los rele y guardar el estado actual
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
digitalWrite(relay3, LOW);
digitalWrite(relay4, LOW);
digitalWrite(relay5, LOW);
digitalWrite(relay6, LOW);
digitalWrite(relay7, LOW);
digitalWrite(relay8, LOW);
lampState = "todos on";
Serial.println("All Relay set to ON");
textMessage = "";
}
if(textMessage.indexOf("RALLOFF")>=0){
// Apagar el rele y guardar el estado actual
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, HIGH);
digitalWrite(relay5, HIGH);
digitalWrite(relay6, HIGH);
digitalWrite(relay7, HIGH);
digitalWrite(relay8, HIGH);
lampState = "todos off";
Serial.println("All Relay set to OFF");
textMessage = "";
}
if(textMessage.indexOf("STATE")>=0){
String message = "Reles " + lampState;
sendSMS(message);
Serial.println("Lamp state resquest");
textMessage = "";
}
}

// Funcion que envia SMS
void sendSMS(String message){
// AT comando para configurar SIM900 en modo SMS
SIM900.print("AT+CMGF=1\r");
delay(100);

// REEMPLAZA LAS X CON EL NÚMERO MÓVIL DEL RECEPTOR
// UTILIZAR CÓDIGO DE FORMATO INTERNACIONAL PARA NÚMEROS MÓVILES
SIM900.println("AT + CMGS = "+54911xxxxxxxx"");
delay(100);
// Enviar el sms
SIM900.println(message);
delay(100);

// Finaliza el comando AT con a ^Z, ASCII code 26
SIM900.println((char)26);
delay(100);
SIM900.println();
// Dar tiempo al módulo para enviar SMS
delay(5000);
}

Desde ya les agradezco y espero que puedan ayudarme!
Saludos!

 if(textMessage.indexOf("STATE")>=0){
    String message = "Reles " + lampState;
    sendSMS(message);
    Serial.println("Lamp state resquest");
    textMessage = "";
  }

Claro. Tu mandas un SMS con Reles + lampState que "casualmente" inicializas en cada acción. lampState siempre vale según el ultimo SMS recibido
Cuando recibas un STATE deberías repasar cada relé para averiguar como está o almacenar el stado en un array y sacarlo desde ahí

Saludos

Para variar no salió mi respuesta y como ya te respondieron no la repetiré.
Lo que si te pido es que leas tu casilla de mensajes donde te pido que leas las normas del foro y edites el código de acuerdo a las normas del foro.

Gracias