In FreeRadius under users there is a field for VLAN id, perhaps if you enter a value the user might be constrained to that vlan. Though I have never tried this myself.
This guy looks like he has done it, but I think it is by having a single SSiD. It doesn’t feel very elegant but perhaps you have to have a separate RADIUS NAS for each SSiD, i.e. different credentials or a single SSiD if you have a single NAS.
I added this syntax to "Additional RADIUS Attributes (CHECK-ITEM)
(pfSense / FreeRADIUS, at the bottom of the user configuration page) : Called-Station-Id =~ '.*:ssid_name'
In case you want to catch the complete value (ie : mac:ssid), you simply add : Called-Station-Id == "aa-bb-cc-dd-ee-ff:ssid_name"