If you really want to do this, then…
I suggest you need to read all about the ANT+ and ANT+ FE-C protocol, and then understand how Bluetooth Smart trainer control is implemented - although at this time I am assuming the methodology of interacting with the trainer would be similar to ANT+ FE-C.
First suggestion, read this article at DC Rainmaker for an overview
Everything you ever wanted to know about ANT+ FE-C and bike trainers
then start reading the life out of the Developer info on the ANT site…and any similar site you can find for Bluetooth (and BT Smart).
e.g. for ANT
It seems from some very quick reading that the software (like Zwift) probably transmits a resistance percentage value to the trainer, which then adjusts the accordingly to simulate the gradient getting harder. Software can also send a target wattage value to the trainer if the user is doing a Workout or something with a specific power target. (Erg mode?) but we wouldn’t care about that for this use case.
You assumed you could receive a grade (%) parameter, which may not be true, but you could at least use this resistance parameter as a proxy. While it’s possible that maybe Zwift itself could somehow send the actual grade - because they know it -that would seem to be outside of the actual protocol support, and I don’t think Zwift would have time for this, and you wouldn’t want to depend on anything custom coded anyway.
So then you know all that, you would need to then have a device with either an ANT chipset or stick and Bluetooth Smart (4.x?) support. And drivers. Mmm drivers.
Then you would need to have code that could pick up the signal from the software (Zwift) would could read the resistance value and then trigger a motor to move to adjust your platform. I see a couple issues right off:
One, that I believe ANT is a 1:1 communications protocol so Zwift probably can’t send those ANT FE-C commands to more than one device. And you need it to go to your actual Smart trainer first… if you have one, in which case maybe you have to use Bluetooth Smart instead. But if you don’t have a Smart trainer, then I guess your Arduino device could masquerade as the Smart Trainer and receive the signals. … Although the problem there might be that Zwift needs to know what kind of trainer it is talking to, and if your device pretends to be a smart trainer, then you can’t be telling Zwift at the same time that you are actually using (say) a Kurt Kinetic “dumb” trainer with a known power curve… which would be used for zPower. (sigh)
Two, that the motor you trigger has to be powerful enough to adjust this platform, while you may have much of the weight of your body on it. I’m sure that is not insurmountable, but it may not be cheap as in some of those tiny little motors you can get. Something to consider might be a device where you can get a good deal of mechanical advantage. Something that springs to mind is the Retul Levul wheel block. Unfortunately it is not for sale outside the Retul dealer market (apparently) but you could use the same principle?
Anyway, I’m just a non-programmer with a smattering of knowledge… don’t take anything I said as gospel,…do the research and check with experts. :)
Check out TinyLab, I ran across it yesterday and it seemed cool - could be useful here: http://www.tinylab.cc