edmundronald:
I previously tried it without
/sbin/uci commit wireless
(didn't know about commit) and it didn't work; I guessed something was missing but didn't know what.
When I tried I didn't know about uci.
Let's keep this thread live for discussing this topic, decide which way to do this, and then maybe we could bake this operation into the GUI.
I think OpenWRT was originally for routers and routers don't get moved around a lot so having multiple configurations is not a priority, which is why this feature was left out; Arduinos travel much more than routers, and for us it's useful.
Edmund
@edmundronald,
I should clear up some assumptions for you.
First as you can see, both SonnyYu and ShapeShifter have experience in doing this, so I might blunder or mis-type something. (I might fix it the next day.)
Next, the UCI system is fairly well documented with a cousin that handled the web-interface. It is know as LuCI(technical reference). The LuCI is a Lua implementation. UCI has several libraries you can utilize, that include c++ and python. The technical reference for LuCI has a list of kernel mods and web mods that will make life easier. However, they are written for Lua.
In addition, you should know that while UCI is the best tool, some parts are poorly documented, namely the shell scripts implementation - which are scheduled to be deprecated. I know this because I am documenting this issue (with the shell scripts) this week.
Lastly, for exchanging different types of wireless scenarios, OpenWrt has a list of recipes, which do everything from dumpAP to VoIP.
Given all that I don't want to discourage you from working on anything. I'm just giving you a head start. 
Jesse