Well I was certainly making things more complex than I needed to. I ended up using the controller's toggle function, storing all controller values in the JSON and when recalling the JSON sending the controller values back to the controller. This activates the toggle and will set the effects to the correct state...when I get to that stage of the build.
KISS principal applied.