Create a virtual device to interact with real system?

I’ve having a look around the online graph.api site, however I am wondering if its possible to create a new device and to use for testing.

For example, what I would like to do is to create my own door bell. When the button is pressed, notify my phone and play a sound over my speakers.

What I don’t want to do is to buy the hardware, only to figure out I’m struggling and can’t make it happen. In practice, I would use a Z-Wave button like the one below, a Sonus speaker to play the sound, and my Wemo Switch to flash a light. I only own the WeMo Switch, but would like to see if I can get a button and speaker working with them virtual (I dont own the button below or a Sonus at the moment)

Is this possible?

That button is a supported device, no reason it shouldn’t work. You should also check out the button controller app under “more”