Arduino <== RS232 ==> Arduino

Tu n'est pas obligé de construire ton buffer en char mais directement un String, enfin je sais plus si la clase string peux prendre un tableau de char en paramètre constructeur.
Normalement ceci devrait marché
Via la classe String

    String str = "";
    while(Serial.available()) 
    {
        str+=(char)Serial.read();
    } 
    
    if(str.equals("[ON]") )
    {
    }

sinon via la lib avr

  char Buffer[10];

    int x=0;
    while(Serial.available()) 
     {
      Buffer[x]=(char)Serial.read();
      x++;
    }
    
    if(strncmp(buffer, "[ON]", 4)) 
    {
    }

Pas vérifier mais ça devrait être quelque chose comme ça.
Attention avec ta boucle while(Serial.available()) rien ne dit que tu recevras bien toute la trame en 1 coup.