Data type comparison

You are just comparing the addresses of the strings, not their content. You can use strcmp which returns zero if the strings are equal:

  if(strcmp(sms_rx,ON) == 0) {
    // the strings are equal - ON
  } else if (strcmp(sms_rx,OFF) {
    // the strings are equal - OFF
  } else {
    // Neither string is matched
  }

Make sure that sms_rx is null-terminated and also beware of sms_rx having carriage-return and/or linefeed on the end.

Pete