About 1 year ago I have published on github.com, the MetalIO project. It’s a project for enthusiasts who are passionated about home automation – you can write this project on a simple ESP8266 micro controller, do all the configuration from your mobile phone without need to install any special application. Also a very important aspect is that MetalIO uses MQTT protocol, so you can use a lot of available dashboards and mobile applications to control devices from your home. MetalIO it’s like a small thing that connects your devices to a bunch of available projects, you can use it with MyMQTT or IoT MQTT, also you can get any MQTT library available for your favorite programming language and just control your devices.
Also, an important thing is that you can extend MetalIO, if you feel like is not enought for your application default methods that are available in MetalIO, you can just write your function at it will become callable over MQTT protocol. The main idea is that you write your function in ./functions folder, then you register it in main.cpp like this:
#include "functions/DigitalWriteFunction.h" Metal* metal = new Metal(<number of function that you will register>); //metal supported functions initialization auto digitalWriteFunction = new DigitalWriteFunction("digitalWrite"); void setup() { ... metal->put(digitalWriteFunction); ... }
Note that our method body is:
int DigitalWriteFunction::execute(int argc, string* argv) { int pin = argv[1].toInt(); int value = argv[2].toInt(); pinMode(pin, OUTPUT); digitalWrite(pin, value); }
And now you can call it over MQTT, you have to publish a message to topic that your device is listening on ( suppose it will be „/home/light”):
digitalWrite:12,1
Where : is used as separator for parameters calling, 12 is the first parameter and 1 is the second one, comma is used as parameters separator.
At my parents home I have installed two led projectors and they can be controlled from classic switches and from mobile application also – it took like 10 minutes to setup the controller and do the configuration.
Here is how it looks after I have installed it ( also contains a temperature and humidity sensor ) (click to enlarge ):
Unfortunately video recorded in english about MetalIO is corrupt and I can’t publish it right now, I gonna record some tutorials about how to use MetalIO and I will do this soon. There is a video in Romanian, maybe you can find it interesting: