Surely I need one string?
Exactly. You need one string and zero Strings.
String and string are completely different things.
Actually, you may not even need a string. You know what character marks the start of the value. When you see that marker, set some variable to 0 and set a flag that indicates that "recording" is happening. Read the next character. If "recording", and the character is not the "stop recording" character, multiply the variable you set to 0 by 10 and add the new character as a digit. If the character IS the "stop recording" character, stop recording.
bool recording = false;
int brightnessVal;
char startMarker = '=';
char endMarker = '&';
while(client.connected())
{
while(client.available() > 0)
{
char c = client.read();
if(c == startMarker)
{
recording = true;
brightnessVal = 0;
}
else if(c == endMarker)
{
recording = false;
}
else
{
if(recording)
{
if(isdigit(c))
{
brightnessVal *= 10;
brightnessVal += c - '0';
}
else
recording = false;
}
}
}
}
The isdigit() test makes sure that the S in Send, after the 2nd equal sign doesn't mess up brightnessVal (and that the 1.1 at the end don't result in brightness being 10011).