HomeIO Articles about real life tech solution and HomeIO - an universal system for remote monitor and control

Why you should use HomeIO?

Tags : HomeIO, Software, News

Low hardware requirements

You can easily deploy it on Raspberry Pi or any low-end computer. One of it instances works on Raspberry Pi B with only 512MB of RAM.

There are some requirements your computer need to meet:

  • it has run on GNU/Linux or *Nix
  • it has to be connected to HomeIO hardware, for example: Arduino

Wind turbine instance utilizes only 15% of Raspberry Pi CPU when not performing store/restore of a whole measreuments buffer.

Imagine that it gets 10 types of measurements, all every about 150ms and do lot of processing.

Top on Raspberry Pi B

Fast access to measurements

There is measurement buffer which store every fetched raw value of measurement. Every one raw value is only unsigned int in already allocated std::vector. There is no time information per value, rather it use interval. Small time inaccuracy is acceptable.

The memory usage is the most efficient as possible. Just plain raw values in RAM.

That means if you want to see a graph there is no IO operation.

Measurements are archivized in CSV file in format:

name; time_from_miliseconds; time_to_miliseconds; value_as_float

It will be easily processable in future, but in my experience you will rarely want to do it.

“Everything in backend” philosophy

Everything what you need to set up is in the main file.

Just one file! Run it and frontend will fetch everything needed.

The only exceptions are:

  • addons - which you can write own from scratch
  • frontend password to execute actions - double hashed string using md5

Web frontend - just run it

Just run frontend application, setup your router and you can see what your system is doing.

Just like backend, the frontend was also designed to be resource friendly. Frontend acts like a proxy between web browser and backend. Everything is generated in backend, and send as a JSON to web browser.

All processing to render graph is performed in client space. Graphs are rendered using flot.

Frontend request times on Raspberry Pi B

As you can see above theese requests needed to render graph were served in less than 50ms on Raspberry Pi B!

Keep in mind if our frontend is not what you need feel free to write your own.

NCurses console interface

If you not want to run frontend backend allow you to see what backend is doing, you can use simple console interface.

HomeIO measurements ncurses console

It’s free - GPL licence

If you want and know how to feel free to use HomeIO for free.