diff --git a/wled00/ir.cpp b/wled00/ir.cpp index 39a254f9..e7516b84 100644 --- a/wled00/ir.cpp +++ b/wled00/ir.cpp @@ -605,12 +605,18 @@ void decodeIRJson(uint32_t code) if (!cmdStr.startsWith("win&")) { cmdStr = "win&" + cmdStr; } - handleSet(nullptr, cmdStr, false); + handleSet(nullptr, cmdStr, false); // no colorUpdated() call here } - colorUpdated(CALL_MODE_BUTTON); } else if (!jsonCmdObj.isNull()) { // command is JSON object - deserializeState(jsonCmdObj, CALL_MODE_BUTTON_PRESET); + if (jsonCmdObj[F("psave")].isNull()) deserializeState(jsonCmdObj, CALL_MODE_BUTTON_PRESET); + else { + uint8_t psave = jsonCmdObj[F("psave")].as(); + char pname[33]; + sprintf_P(pname, PSTR("IR Preset %d"), psave); + fdo.clear(); + if (psave > 0 && psave < 251) savePreset(psave, true, pname, fdo); + } } releaseJSONBufferLock(); }