Bad Zip

I have been contacted by several users who have had problems unzipping the nightly build. I seems that my ISP have some kind of problems with their FTP-server, so the upload fails and leaves the file corrupted on the site. I have now switched off automatic build and I will upload manually as soon as I make any changes, so I can check the file afterwards. The current file is now ok.


New Icons

So, as part for preparations to make NetHomeServer open source, I have now replaced all commercial icons with open source icons from the "Tango Desktop Project". The downside is of course that the icons look a bit less "professional", some of them I had to draw (or modify) myself. The good part is that I have the vector image source for all of them so it is possible to improve them in a controlled manner. So this is the new look of NetHome.


Protocol Analyzer 2.0

Protocol Analyzer 2.0 is now released. It can be downloaded from http://wiki.nethome.nu/doku.php/analyzer/start. The analyzer now supports decoder plugins. This means that it is easy to write your own decoder for a new protocol and plug it in to the Protocol Analyzer. The same decoder plugin can also be used in the NethomeServer.

The Protocol Analyzer now also has a real installer both for windows and for other platforms.

More details about the changes can be seen in the release notes.


Open Source

I have now finally started publishing the NetHome stuff as open source on GitHub. I have started with the Protocol Analyzer tool, and published the source for that. Unfortunately this is the oldest Java code I have written, so it is not the most beautiful...
The biggest blocker was actually the Icons. A long time ago I got tired of spending time finding nice icons for my projects, so I bought a commercial library (http://www.iconexperience.com) which is really good - but... I have tried to contact them on how to handle the icons in open source projects and never got any answer. So in the end I have had to spend the time replacing all icons in the program with public domain icons, which really felt like a big waste of time.
This is now done and I am preparing for releasing version 2.0 of the Protocol Analyzer with some really nice new features.



It has earlier been possible to see graphs in NetHomeServer via the separate Thermometer-GUI.

Now I have added the graphing feature to the main NetHomeServer GUI. Any HomeItem with a LogFile-attribute will automatically get a graph-link in the Room-page and in the Plan-page. When you press that link you will get to the graph page of that Item which will display a graph of the values in the log file. This feature is currently built in to all thermometer and humidity Items. On the Graph page you can view the data over a day, over a week and over a month and you can also move back and forth in the data. The graph is also interactive so you can zoom into the displayed graph by selecting an area with the mouse. This feature is currently available in the nightly build.


Need for Speed

I have not spent much time optimizing performance on the NetHomeServer before. I am running mine on a small Linux server which can present the WEB-GUI at a decent speed. I have however had comments from Raspberry Pi users who have thought that it is a bit sluggish. The limited processing power of the little Pi has raised the need for some optimizations. So now I have rewritten the Item model handling using some caching and the result was really good, especially on a Pi. Time to show the room-view went from 1.3 seconds to 55 milliseconds, and showing the details of a HomeItem went from 2.2 seconds to 35 milliseconds! The optimizations are available in the nightly build.


Tellstick Supported

So, support for TellstickDuo is now added to NetHomeServer. The new Home Item "Tellstick" is available in the nightly build. I have tested it on Windows 7, Ubuntu and Raspian (Raspberry Pi). I guess it will work for MAC as well, but I have not been able to test that yet. For transmission, all NetHome protocols are supported as the NetHome encoders are used. For reception only protocols supported by both Tellstick and NetHome works, as the Tellstick does the decoding of received signals in firmware and does not expose the raw pulses for the NetHome decoders to work with.

What took the most time was surprisingly to get good driver installations for Windows and Linux that works with Java, but I have compiled driver packages together with installation instructions for Windows and for Linux.


Tellstick Support

I keep getting questions about Tellstick support in NetHomeServer, so I finally started looking into it. It seems that the low level interfaces of the TellstickDuo matches NetHome quite well, so it should be possible to write a Tellstick HomeItem that still uses the NetHome protocol encoders (so it is possible to plug in your own encoder implementations). One snag was that it was a bit messy to access the interface from Java on Windows, but I finally managed to convince the FTDI virtual com port drivers that the Tellstick really is a COM-port, and after that it was possible to use RXTX as usual.


Low battery...

NetHomeServer always keep a rolling log on disk about events in the system. Now the last 50 rows of this log (since last restart) is also available in the GUI via the settings page and via a link on the top right of the screen. The log contains information messages but also warnings about configuration issues or low battery warning for sensors, for example the UPM temperature sensors. If a warning message is present in the last 50 log rows a small warning triangle is presented next to the log link on the screen, as shown in the picture above. This is now available in the nightly build. 



I have been working a bit with T Andersson, who has written rf-bitbanger. Rf-bitbanger is a device driver for Raspberry Pi that allows writing of pulse sequences to the GPIO-pins. This makes it possible to connect for example a 9€ 433MHz transmitter directly to the RPi and control remote switches without any additional interface components (see picture above).
I have now made a first version of a rf-bitbanger-HomeItem which can transmit all protocols supported by NetHome via a rf-bitbanger port. This means that for only 9€ you can turn RPi into a complete home control system!


Plan view

So I have finally finished the plan-view page on NetHomeServer. It has been half done for a long time, but the editing part has been missing. But now this is also there! The idea is that you can load any background image that represents your home (I used the excellent SweetHome3d to create mine), and then you can add and drag and drop your Home Items on the image.

When you click an Item, you get a popup with all available actions for that Item, as is shown in the example below:

The main attribute of the Items is presented below the icon, for example temperature if it is a thermometer. The values are constantly updated on the page, so it always shows the current status.

It is also possible to add multiple plan views (they are Home Items of course), and when you add another Plan Item to a plan, it becomes a link to that plan. The green arrow in the top center of the image above is such a link and when it is selected you are directed to that Plan Item, as is shown below:
In this way you can for example zoom in on an area with many lamps or controls or have multiple plans for different floors, rooms or buildings.

The plan view is now available in the nightly build and will be part of next release.



Added support for a new remote switch. In Sweden it is sold by Kjell & Company, but it is probably OEM:ed by many others. The manufacturer is Zhejiang Fuhaote Electronic, so I called the corresponding lamp Item "ZhejiangLamp". It uses the same chipset as most low end remote controls, but with quite short pulse times so it pushes the limit a bit for the audio signal based driver.
It is now available in the nightly build.


Oracle Java on Raspberry

So, now there is a version of the Oracle Java that works on RaspberryPi! I tried the NetHomeServer on the Pi with the new JVM and I get page loading times under a second in the WEB GUI. The real time analysis of audio input for signal reception takes around 10% of the CPU time, which is acceptable. This means that RaspberryPi is now a practical alternative as platform for NetHomeServer!

There is an excellent description on how to install the Oracle Java version on SavageHomeAutomation.


Second System Syndrome

I think I have hit a light version of second system syndrome.

I wanted to clean up the architecture of the NetHomeServer, prepare for plugins and convert to Maven. So I created a clean branch where the structure and main interfaces are cleaned up and I started to (slowly) adapt and move over Items to this new branch. 

Mean while I really wanted some features in the system I have running at my home, which I then had to add to the old branch, since the new one is not working yet… So the result is that the work on the new branch has stagnated and is falling more and more behind.

I really should have known better. Trying to do a new second version where you clean up all the bad parts and rewrite it like it should have been done – all in one big go, is a well known trap in software development and has lead to many spectacular project failures. I have seen a few of them first hand in my career.

I somehow thought I would escape just because it is a small one man project. But some constants remain…