Jarvis will be Open Source

In one of my last posts I’ve talked about the project reboot of JARVIS - my smart home automation system. After some coding for the last weeks, I’m quite happy to see that this evolves in the right direction: A high modular system. There’s still a lot of work to do, but I already feel confirmed that it was the right decision to start over again from scratch and take everything I’ve learned so far to create a new modular system.

As soon as the prototype works and the basic functionality has landed, I gonna publish it on GitHub. Right now I’m still experimenting with some concepts and want to create the fundamentals in order to define the direction and philosophy behind that project. If that’s done and I feel good about that, I gonna share it with you and hope the community may take this project to the next level by developing plugins and contribute new features to the core.

Jarvis 2.0

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 individual flavours.