а рабочий вариант есть, где нет ошибок и все работает?
Уже решили проблему
const char* starter = "{ \"idx\" : 2, \"svalue\" : \"";
const char* ender = "\" }";
const char* middler = "middl";
String(middler) = String(starter) + String(temp) + String(ender);
client.publish("domoticz/in2", String(middler).c_str(),true);