After 2 years of developing my smart home automation system and personal assistant I’m not that far as I actually
want to be, but that’s ok due the fact that this is just a hobby project for relaxing, learning stuff and doing things
in my spare time with the technology I love.
Jarvis got a lot of nice features: It has a nice full responsive, mobile ready web interface, it’s fully configurable,
it can switch 433 MHz remote controlled sockets in my flat, it displays RSS feeds, it can send what’s app message,
knows about weather forecasts, fuel prices, it got a master/slave system in order to cover all rooms with 433 MHz
signal, complete deployment automation, good test coverage, it supports a text/json based protocol for sending messages
between the master, slaves, apps, the web interface or whatever, a VLC backend for playing music, basic chat functions
to give commands, it knows weather someone is at home or not, it has a abstract sensor_logger which keeps track of a
huge pile of sensor params beginning from cpu usage to room temperature.
More features are planned and in development: NAS backed music playing, alarm clocks, voice commands, chromecast
integration and more.
The architecture of the system is well maintained, but in my eyes it lacks of flexibility: All features are coupled
together to a monolithic piece of software. Of course it’s not hard to remove non-essential features since everything is
developed under the aspect of loose coupling but what I want is kind of a plugin system which let’s me add features
in a defined way and especially add interface functions without much programming.
I think that’s a better approach for a system like jarvis: A core with some essential features like the web server,
master/slave system, communication protocol, sensor logging, configuration, cron and a plugin system. And a bunch of
plugins providing specific functionallity.
That core - and some of the plugins - could be published on GitHub and could be used be others. Plugins could be
developed by the community. That way, the system could grow much faster and could be configured individually to meet