Wie ist die Nachricht eigentlich aufgebaut? Nur ein Wert oder noch eine Beschreibung dahinter? Sollen nur die Werte 0-9 übertragen werden können?
Jedenfalls gehst Du den Weg über einen String, nicht sehr günstig.
atoi() wäre eher angebracht (hier nachzulesen)
So sollte es gehen:
if (strcmp(topic, "led2") == 0) {
led2Value=atoi(payload[0]);
}