How cool would it be to use Minecraft as an interface to control your house?
Well, it turned out you can :)
Minecraft is a very popular game that uses a distributed clients-server architecture.
The players use their Minecraft client application to connect to a centralized server that runs an instance of the Minecraft server.
In this case I'm actually running both the server and the client on the same machine (my laptop) and my Iono Ethernet is connected to the same network.
The used lights are simple light bulbs plugged into three sockets controlled by Iono's relays.
One of the interesting aspects about Minecraft is that it has a very active community of modders, that is developers who create mods (i.e. modifications) to add new features and capabilities to the vanilla version of the game.
One way of creating mods is to create plugins for versions of the Minecraft server supporting the Bukkit API.
For this project I used Glowstone, which is an open source Minecraft server that supports plugins written for the Bukkit API. I like it because, even though it is still in an early stage and it is lacking many features, it has been completely rewritten from scratch, without using any of the original proprietary code.How it Works
As you can see from the video, I'm controlling some lights by placing torches in my Minecraft home. The controlled light depends on the color of the block you place the torch on.
I created a Minecraft server plugin that reacts to torches being placed on top of wool blocks (I know it's weird, but I wanted some colors :)).
When a torch is placed, the plugin checks the material of the block underneath it, if it is made of wool it checks its color to determine which one is the corresponding light.
At this point it performs an HTTP request to the Iono Ethernet module using its HTTP API to activate the corresponding relay.
When the torch is broken the same logic applies except for the fact that the relay is switched off.
Check out the code for more details, it's pretty straightforward...
Hope you enjoy it!