Meet this little project I've been working on ...

By on

I actually did not want to make this announcement just yet, I felt like I needed to wait for a proper, working version of what I was building. But 3 months have passed, and my colleague's thought what I created was pretty cool already and that it would be interesting if I shared my progress with the world.

So that's what I'm going to do. But first, what am I creating?

For a very long time I've wanted to make my house smart. I've only ever really tried LinuxMCE, after which I got sidetracked for years trying to get MythTV to work properly. Which never happened, so I finally switched to tvheadend & XBMC. And suddenly I got all this free time on my hands.

Yes, I'm creating an open source home automation system built using Node.js called "elric"

There are already a few similar projects out there, but they didn't appeal to me. Because of what language they were written in (Ew, java), or how specific the code was, ...

So, here's a simple explanation of the system. There are a few screenshots down below, btw.

Elric: what can you do with it?

Here are some features that are implemented, or are on my to-do list:

  • Control devices through the web interface
  • Monitor your house through security camera's
  • Get audio (text-to-speech) response from Elric
  • Use speech recognition
  • Detect where people are (using camera's, motion detectors, bluetooth, ...)
  • Create extensive scenarios by acting upon emitted events (movement, voice commands, time of day, ...)

Server-client architecture

Elric is composed of a single server, and many "clients", which can perform many capabilities.

You can run everything on only 1 computer, but you can also easily add a client in every room of the house in order to install audio input & output, bluetooth beacons (for positioning), Motion instances, Home Automation interfaces (I'll be using about 3 RFXCOM interfaces spread around the house), ...

Screenshots

The Motion Plugin

[object Object]

What really triggered my "quest" was the urge to install security camera's inside and outside my house. (My neighbours were held at gunpoint last year, at 16:00 hours no less.) I tried Zoneminder for a very long time, but that codebase belongs in a museum. Then I discovered Motion, which works great. The only downside: there's no real interface.

So I created the Motion plugin. It's very basic for now.

Devices

[object Object]

Here's a list of all the devices I've registered in my (development) installation. These devices are all "Elro Home Comfort" devices (Using the ARC protocol), which are controlled by the rfxcom interface.

The first button group are commands specific to that device module type. The second group are protocol commands.

Certain devices (like Elro light module AB600L) don't respond to the "on" and "off" signal as you would expect. The "off" button actually toggles the state of the light. Since device states are stored in the database, this can perfectly be remedied with these custom commands.

The house blueprint

[object Object]

Every home automation software lets you build a blueprint of the house, Elric is no different. Instead of using spiffy clipart I wanted to go with a very minimalistic approach. Everything is represented by lines & blocks.

Scenarios

[object Object]

This is how you create scenarios. These are easy blocks you can move around & check for certain conditions. You can check for any activity event.

For example: the Motion plugin emits a "movement" activity whenever it detects movement on a camera. Then you can check for where this movement occured, and act upon it accordingly.

Clients

[object Object]

Here's where you handle the client workers. You can enable or disable certain capabilities and configure them.

Get the code on github

As I said before, Elric is not ready. I wouldn't even consider it alpha software. Just a few weeks ago I was able to turn my first device on and off. Just yesterday I got my first scenario up and running.

https://github.com/skerit/elric

Comments

Thomas

Very neat project! It would be great if others would help develop it to add additional features.

skerit

That would be awesome, indeed! I haven't worked on this project for quite some time, but with good reasons: I'm working on a node.js framework first.

It's finally nearing completion though, and I can't wait to get back to developing Elric.

Thomas

Great, I will check back in a few months. Yes, you've got yourself a stalker ;)

bekir munir

hi. I get an error message like the following. I could not solved. can you help

. . . Copying files from /home/pi/node_modules/elric/plugins/motion/hawkejs//motion (subdir: /motion) Copying files from /home/pi/node_modules/elric/plugins/elro/hawkejs/ (subdir: undefined) Update requested, but did not find place to put template "page/index" Getting "elements/menulinks" SYNCHRONOUSLY ... ... SYNCHRONOUS calls are done. Update requested, but did not find place to put template "layout/body-main" Update requested, but did not find place to put template "layout/body-all" We probably need a complete new document for template "layout/base" . . .

MattGyver

Spent a whole weekend trying to install this for my ubuntu server and there was so many problems that I gave up after 5 attempts when the layout templates failed to render. Unfortunate because the UI looks great! I would have loved to contribute to the repo.

skerit

The UI templates are probably failing to render because the template engine (hawkejs) has been modified significantly (it's on version 0.0.13 now, and I think Elric needs 0.0.1 or 0.0.2), and unfortunately I didn't specify a specific version when I created this, so it's just using the last version.

But anyway: I "paused" Elric development because I noticed I had to create too much framework-like functionality. Which is why I started work on my own framework called "Alchemy", you can find it here https://github.com/skerit/alchemy

It's almost stable enough to rewrite elric on.

bojyetaa

01/01/1967

RillNot

That's it! I’m coming down with a cold.

MuillNot

Don't worry about it. I’m staying at Tom’s house. Write to me in care of Tom Gray, Chicago, Illinois.

MuillNot

Damn! She keeps me company quite often.

easy movers

To find out such forms of packers and movers companies you will get assistance with your friends, relatives, colleagues, co-workers or neighbors who have made their move with the help of professional removal companies. Industry re-location often comes while using baggage of transporting explosives, gases, poisonous substances and fragile stuff. The best deal is getting a fair moving estimate then having the ability to stay with it as closely as possible.

test

constantly i used to read smaller content that also clear their motive, and that is also happening with this article which I am reading at this time.

https://2pay.pro

Titan Gel опробован в 8 вирусологиях
континента , удостоен сертификатов качества и
защиты , производится только из искусственных техногенных светлых природных компонентов . Подготовкой геля преуспевали росиийские , западногерманские
и датский терапевты , которые совместными
усердиями попытались за 4 месяца вывести безумно указанную величину для увеличения представителя . гель титан правда или ложь титан гель оригинал и подделка гель титан отзывы лаборатория эманси титан гель титан гель состав купить титан гель в москве кто пробовал титан гель заказать титан гель официальный сайт

Jelle De Loecker