If i take it out the "volume-ups" part works. "Up" is printed one time.
What is the "it" that you take out?
Sorry, I was trying to preserve the essential parts of your code, while modifying it to fit more of how I think it will work.
Here's a corrected version...
// MQTT Callback
void callback(char* topic, byte* payload, unsigned int length) {
// replace your Serial prints here for debugging
// IR Remote Sony TV
if (strcmp(topic,"skulltronics.net/hive/floor/optimus-prime/IR-SonyTV")==0) {
strncpy(message, (char *)payload, 20);
}
// Volume Up
if (strcmp(message,"volume-ups")==0) {
Serial.println("up");
delay(50);
}
// Stop Volume Up
if (strcmp(message,"volume-stop")==0) {
// do whatever you need to stop the volume-up
Serial.println("stop volume-up");
message[0] = '\0';
}
} // End MQTT Callback
What do you get if you put a Serial.println(message); before the first if in callback()?