:: Updates ::

January 17, 2008: New hardware has been added

I recently added support for the 1-Wire humidity and barometric pressure sensors as well as the 1-Wire hub (at the moment only a single hub is supported). You can checkout the latest updates from Subversion or wait for the next release.


January 11, 2008: A lot of new features coming soon

It's bee a while since I last posted an update, partially because of the busy holiday season but also because I've been busy adding quite a few new features. In particular the next release will contain:

  • Added support for both 1-Wire based barometric and humidity sensors.

  • Added feature that will allow one to use a TINI and a GPS receiver to log GPS data and then store the GPS data in the jHomeNet database. This will also include the necessary TINI application. In the current setup I'm going to use a TINI in my car and use it to track my location and when the TINI comes within range of my home's wireless network it will dump the latest GPS data into the jHomeNet database.

  • In addition to adding the new TINI/GPS logger, I'm also working on the ability to use the TINI as a 1-Wire gateway. Essentially you'll be able to send and retrieve 1-Wire commands over an Ethernet network to a TINI which will then send/receive the commands onto the attached 1-Wire sensors/devices.

  • Adding support for the 1-Wire hub.

  • Adding support for tracking orphaned hardware. In particular the system will both indicate visually and log when a currently registered hardware sensor/device can no longer be found on the communications network. This is in response to some problems I was having communicating with some of my 1-Wire network.

As you can see there are quite a few new features being added. I'm hoping to get this release out in the next month or so.


November 28, 2007: Newest release coming shortly!

I'm currently wrapping up work on the latest 0.5.3 release of the jHomeNet suite. A lot of work has been done on the sensor responsive system including adding some new response types (i.e. email response) and some new condition types (time of day/sunrise and sunset). Other improvements include minor updates to the UI. Look for the new release in the next week or so.


November 3, 2007: Updated user manual (again)

I've further updated the jHomeNet user manual with information on setting up and using the jHomeNet sensor responsive programming (SRP).


Check out the updated User Guide in PDF.


October 25, 2007: Updated user manual

I just updated the jHomeNet user manual. There are still some sections that are quite out of date and need updating but I have now included a new section called "Development Environment" that provides a step by step guide to setting up a development environment to compile and build the jHomeNet application. I hope that this might get a few more people involved and contributing to the project.


Check out the updated User Guide in PDF.


October 24, 2007: Updated Sensor Responsive Plan scheduler

I've been working on updating the Sensor Responsive Plan scheduler UI to make it more intuitive. See the screen shot below:



On the left is the standard tree with the jHomeNet objects including the already built Sensor Responsive objects (i.e. conditions, triggers, responses, and plans). Remember that a plan consists of an expression (i.e. a boolean collection of conditions), a trigger that tells the plan how often to check the expression, and a list of responses (both on-true and on-false responses).


The new responsive control panel lists the currently available and scheduled plans on the left along with the plan's current status (either active or not active). It also lists the plan's responses (green for on-true responses, red for on-false responses). The operator may activate the plan (which simply enables the plan), execute the plan, or schedule the plan with the selected trigger. Once a plan is scheduled it is moved to the scheduled list.


It's still a work in progress but let me know what you think.


October 13, 2007: Bug in the jHomeNet UI AbstractDataPanel class

I found a bug in the jHomeNet UI package's AbstractDataPanel.java file. In particular, when the class attempts to create a data panel for a hardware object that has more than a single channel it was causing an exception when building the panel. I'm attaching a patch to fix the bug. I've also committed the change to the Subversion repository. You can download the patch from here.


October 11, 2007: New release

I just released jHomeNet version 0.5.2. This release contains a couple of minor bug fixes along with added support for the 1-Wire DS2405 switch. However, this release does not contain a working version of the client/server support. While the release does contain partial code implementations for the client/server support it has not been enabled in this release. Look for the next release to contain these features.


September 29, 2007: Adding client/server support

It's been my desire from the beginning to include client/server support over a TCP/IP network. In other words, having the ability to remotely connect to the server using a standalone client (either webstartable or from the command line). To date, the GUI has been directly connected to the server however I've started the task of shifting to a network client for the GUI. I debated what network tool to use and I've decided on the Cajo network library. The work has required some major refactorings of the code and a resulting change in the overall API. A new client package will also be made available. All in all it's a major change that I've needed to do. Check back often for updates on the progress. I'm hoping to get the next release out in a month or so that will include the new remote client.


August 31, 2007: Updated Weather Channel data - part II

I've continued to update the Weather Channel data window that displays the current weather conditions given a zip code. I've tried to match the look and layout of the Weather Channel's current condition website. See for yourself:



And here's the Weather Channel's current weather data on their website:



August 30, 2007: Updated Weather Channel connection window - part II

I've continued to update the new Weather Channel connection window. In particular I've added a hyper-link to the Weather Channel's sign up page since using this services requires the user to have a valid partner ID and license key. Check out the updated sign up window below:



Clicking on the hyper-link opens (hopefully) your default web browser and the appropriate webpage. You might be wondering how do I implement the hyper-link and how do I actually open the webpage. I'm using the SwingX JXHyperlink class and some additional action event code as seen below:

LinkAction linkAction = new LinkAction(weatherChannelWebpage)
	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
	public void actionPerformed(ActionEvent event)
		String operatingSystem = System.getProperty("os.name");

			if (operatingSystem.toLowerCase().indexOf("windows") > -1)
				Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + event.getActionCommand());
				// Try with htmlview...
				Runtime.getRuntime().exec("htmlview " + event.getActionCommand() + " &");
		catch (Exception e)
			logger.error("Error: " + e.getMessage(), e);
this.weatherChannelSignupLink = new JXHyperlink(linkAction);


August 28, 2007: Updated Weather Channel connection window

I've updated the current Weather Channel data window to match more closely the Weather Channel's current conditions layout. Check out the current window below.



As you can see the red text fields indicates that the current input values are illegal and need to be fixed. The "Save" button is disabled until there are no input errors.


August 27, 2007: My jHomeNet controlled attic - part II

I've been working on my jHomeNet controlled attic, in particular designing the electric fan mount and running power to the fan. Unfortunately, I found out that the X10 LM465 light switch that I was going to use to control the fan won't actually work. It uses a triac to turn the power on and off and it won't control devices that have electric motors. So I had to order a different X10 switch that actually has a relay. Hopefully that should arrive sometime this week. Check out the current setup on this page.


I'm about ready to release version 0.5.1 of the jHomeNet suite but I would like to wait until I finish my attic work. That way it will give me an opportunity to test the new sensor responsive DifferenceSensorCondition class and UI editor. Once I'm convinced these work the release should be ready. Stay tuned!


August 23, 2007: My jHomeNet controlled attic

I've started to work on creating an environmentally controlled attic using the jHomeNet suite. In particular, I have a temperature sensor installed on my roof and a temperature sensor installed in my attic. When the temperature difference between the two sensors is greater than some value (say 25F) then it triggers a response to turn on a set of fans. The fans are installed on my existing roof vents and will be used to blow (in this case hot) air out of the attic with the goal of equalizing the temperatures. I've chosen to use a single relatively small 120VAC electric fan (blows about 220 CF/M of air) but I could easily add a second fan if it doesn't prove strong enough to blow out enough air. I recently ran electric power to my attic as part of another project so I'll have power to run the fan. I'm going to be using a X10 switch to swith the power to the fan(s) on and off. Check back soon as I'll post pictures of the install.


August 22, 2007: New Weather Channel data

I recently got a somewhat crude implementation of the Weather Channel data working. There's currently a few bugs and the overall UI isn't all that impressive but at least you get an idea of where I'm going with this. Check out the screen shot below.



August 15, 2007: What's in store for the next release?

I've been working on adding two components to the next release. They include: 1) a new database versioning tool and 2) a Weather Channel (R) current weather and forecast tool.


The database versioning tool is necessary because the database format sometimes changes from release to release. Previously, if there was a change in the database format this would require the user to purge the database and set it back up with the new tables, etc. This would mean the loss of any data currently stored in the database. Especially during development, I didn't like this idea of having to constantly lose your data. So the new tool will include versioning information embedded within the database. At startup the server will check the version of the database against the acceptable compatibility. If an incompatible version of the database is being used the user will be prompted to backup the data before proceeding. I'm still working on the best strategy for actually performing the database back and restore.


The other component that I've been working on is providing a way to display current conditions and forecast weather information from the Weather Channel (R). The Weather Channel (R) makes available via an XML feed current condition and forecast data given a particular zip code. I'd like to be able to prompt the user for their zip code and then display the current conditions and forecast.


Look for both of these components in the next release!


August 13, 2007: Information restored

When I recently visited the jHomenet website I noticed that several changes to the site were missing. It turns out that I made some changes to the site to include a Javascript snippet for use with Google Analytics and in doing so I pulled old pages from the Subvesion respository that were not in sync with the actual pages on the website. As a result when I updated the pages to include the new Javascript I was actually updating a couple day old pages and not the most recent copies. Hence I lost some of the most recent updates. But I hope I've gotten most everything back to where it was before. Sorry for the mix up.


July 28, 2007: More improvements

As I mentioned previously, I've updated the library versioning framework. Now the framework will support comparison of versions in the form of major.minor.micro[-M (for milestones) or -RC (for release candidates). Example compatible versions include 0.5.1-RC1, or 0.6.0, or 1.0.7-M2. The framework is able to compare one version to another and tell which is greater. I've also worked on the X10 communication interface (the light switch device now actually can control a X10 light switch device) which you can now access through the GUI. I've added some much needed documentation as well.


July 19, 2007: Thoughts on the next release

I've already begun work on the next release of the jHomeNet suite. First off, I'm hoping to be able to release the jHomeNet suite a little more often in the future. Going four months between beta releases is too long. In my defense, however, this last release contained a lot of changes and updates. In any case, I'm hoping to distribute a release every month or so.


As far as what's going to be in the next release, I've already overhauled the jHomeNet library versioning and dependency framework. I'm hoping that the new framework is a little more flexible. Unrelated to the actual source, I'm also wanting to include some type of installation script or application, like Nullsoft's NSIS. Distributing a zip file with an Ant build.xml file and some batch files are fine for development, but if this is going to be installed by regular users I need to make the installation A LOT easier. I'm open to any other suggestions out there.


July 18, 2007: Updated SVN repository layout

I've been meaning to do this for a while, but I finally got around to updating the SVN repository layout. In particular, each sub-project (jHomeNet server, jHomeNet commons, jHomeNet UI, jHomeNet plugins) now has a separate /trunk, /branches, and /tags folder. Previously, there was just a single /branches and /tags folder for all the different sub-projects. This will hopefully make it easier to manage individual branches and tags. Note: this means that you'll need to update your SVN references if you had checked out any jHomeNet sub-projects from SVN. In particular, the new SVN URLs for the jHomeNet sub-projects are:


jhomenet-commons: https://jhomenet.svn.sourceforge.net/svnroot/jhomenet/jhomenet-main/jhomenet-commons/trunk
jhomenet-ui: https://jhomenet.svn.sourceforge.net/svnroot/jhomenet/jhomenet-main/jhomenet-ui/trunk
jhomenet-plugins: https://jhomenet.svn.sourceforge.net/svnroot/jhomenet/jhomenet-main/jhomenet-plugins/trunk
jhomenet-server: https://jhomenet.svn.sourceforge.net/svnroot/jhomenet/jhomenet-main/jhomenet-server/trunk


July 17, 2007: Getting started quickly

I've also updated the download project webpage to include a little more information on getting the jHomeNet server up and running quickly.


July 17, 2007: Uploaded the API Javadocs

I just uploaded the API javadocs for the jHomeNet server 0.4 release, jHomeNet commons 0.4 release, and the jHomeNet UI 0.3 release. See the Javadocs links for more information.


July 12, 2007: New release very shortly!

I've been working lately wrapping up a few additional features, fixing some last bugs, and testing the overall jHomeNet system. I'm hoping to get a new release of the jHomeNet suite ready for download in the next week.


The biggest addition in this release will be the new sensor responsive system (SRS). The sensor responsive system allows a user to create a number of conditions and responses that will execute based on the result of evaluating the conditions. For example, say a user wants to monitor the temperature in their basement. The user could set up the system such that if the temperature is less than 50F, send an email and turn on a light. In this case, the "if the temperatue is less than 50F" is considered the condition, and the "send email" and "turn light on" are the two responses. One can create more complex condition cases using one or more conditions and boolean expression operators (such as AND, OR, or NOT). In the SRS, the set of conditions and boolean operators collectively are called an expression. The combination of an expression and one or more responses is called a plan. Plans may be scheduled to run using a scheduling system. In this case, the default SRS scheduler uses the Quartz scheduling library. This way a user may setup a plan to run once every minute, once every five minutes, once a day, every Monday at 4 PM, etc. I believe this provides a lot of flexibility to the user. The initial release only contains a small number of predefined responses but I hope to add functionality that will allow users to add additional responses as a plug-in.


As I said, look for the next release to happen in the next week or so. And please submit a bug report if you find any bugs or submit a feature request if there are additional features you would like to see added in future releases.


June 20, 2007: Updates to the event viewer

I made some modifications to the event logger and viewer last night. In particular, the event logger now persists all of the events in the database using Hibernate. This way a user has a complete history of the system events rather than just the list of events that occurred during the last application execution. Additionally, the event viewer now loads that complete list of events when it is opened. All the loading is done off the EDT and a nice progress window is displayed while the events are retrieved. Look for this in the next release coming up shortly!


June 19, 2007: New event viewer

I recently added functionality for viewing system events through an event viewer (much like the Windows Event Viewer). It's still a work in progress but below is a screen shot of the current event viewer:



June 18, 2007: Adding some icons

I've been working on adding some icons (among other things) to the main window for each of the tree nodes. Specifically, I've recently added functionality for setting the icon for the hardware based nodes (registered and unregistered hardware). Check out the updated main window below:



A user may define the filename for the registered hardware icon of choice in the hardware configuration file. If no icon filename is defined the system defaults to using a green circle for registered hardware (the system currently always uses a gray circle for unregistered hardware). I hope to add icons for other tree nodes in the near future.


June 13, 2007: Updated services control panel

I've updated the services control panel to display the status of a service using an icon in a table cell rather than strictly using text. Check out the updated services panel below:



June 2, 2007: Graphical authentication added

I've now added a graphical authentication window in addition to the text based console authentication. I borrowed the window background from Karsten Lentzsch because I thought it looked so nice (I hope that he doens't mind). Check out the new login screen below:



May 31, 2007: Hibernate provides some pretty cryptic error message

I've been wrestling with Hibernate recently trying to get the system to persist both value based and state based hardware data, however I was getting errors whenever the jHomeNet server tried to save state data to the database (value based data was working fine). In particular, I was getting a org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1 exception which really didn't tell all that much (other than the database wasn't being updated). In looking through some of debugging output from Hibernate, it appeared the Hibernate was trying to perform a SQL update call rather than an insert even though there wasn't any data in the database.


As it turns out, I was making some other changes to some other persistence classes (that I didn't think were apart of this problem) and low and behold I was now getting a different error from Hibernate, stating that the State class didn't have a default no-argument constructor. Sure enough, I added this new constructor to the State class and now everything works fine. Would have saved me an hour or so if the exception was a bit clearer. Oh well, now I know.


May 27, 2007: User authentication added

I've recently implemented user authentication for the jHomeNet server. To use the system a user must now provide a valid username and password. This was created using a combination of the SwingLabs LoginService class along with some custom development using Hibernate. The username's password is stored as a hash in the database and then compared against the hashed password supplied by the user. Check out the local console session below:



I hope to add a graphical based login screen in the near future.


May 24, 2007: Services control panel

I've been re-working the UI framework a bit and have added the ability to have a header panel, main panel, and button panel for each window that is created (the header panel is optional, the button panel defaults to a "Closed" button if none are supplied). Check out the updated services panel below:



May 23, 2007: An updated splash screen

I've updated the splash screen color scheme lately, in addition to adding some version information and more descriptive boot task text. You can see a sample of the boot screen below:



May 12, 2007: I've taken a little break

I've taken a little break from the jHomeNet development due to the birth of my first son and a busy work schedule. But I'm hoping to get back into it shortly. Look for a new release in the next few weeks.


March 14, 2007: Preparing for the next release

Iíve been making a fair number of changes to core APIs in all of the jHomeNet packages (commons, UI, and server) along with a number of other enhancements. I would like to have a release in the next week or so. Check back soon.


As far as the continuous build server, itís still down. It should be back up again shortly.


March 6, 2007: Continuous build server is up again

The jHomeNet continuous build server is back up again but it's not currently configured correctly. As such, none of the builds are currently working. I should have it configured by this evening.

FYI, it's still running on a Windows 2000 platform using Apache Tomcat version 6. I'd like to transition over to a Fedora Core 6 platform shortly. You can expect some down times in the near future.


March 2, 2007: Continuous build server is down

The continuous build server is currently down due to a hardware failure. In particular, I was trying to move the Hudson server over to a Fedora Core 6 platform from a Windows 2000 platform when the hard drive failed. I've ordered a new one that should arrive shortly. I'll post when it's back up.


February 25, 2007: A new UI framework

I've been working on developing a new UI framework for the jHomeNet suite. Previously any new windows were opened as either JFrames or JDialogs. Opening several windows caused a lot of clutter in the task bar. I've now have a first cut at a new UI framework that will be used to better manage the jHomeNet server. Below is a first screen shot of the new framework:



The left side is tree-based and has a section for all of the hardware, eventually the sensor responsive, and the server service control panel. The right side is desktop based and allows any number of windows to be opened all contained within the greater jHomeNet UI framework. It's a first cut so it's a little rough but it gets the point across. Look for more updates before the next major release.


February 24, 2007: Updated plots

Here are some plots from my roof and attic temperature sensors that have been running for the last week:




As you may notice I've been working on the hardware editor and creating a tabbed-layout with the hardware information on one tab, the hardware data in a tabular form on another tab, and a plot of the data on the third. Look for more information on this shortly!


February 9, 2007: Updated HVAC plotting

I got the HVAC plotting working using my test (or mock) HVAC sensor. See the plot below:



I'll try it using my actual HVAC sensor at home soon.


PS: I'm using JFreeChart for all of the plotting.


February 7, 2007: Updated sensor plotting

I've continued to work on the sensor plotting. Here is a shot from a recent cold-snap here in Chicago:



I'm still working on the HVAC monitor. I will post an update once I get it working.


January 27, 2007: Sensor data plotting

I recently added support for sensor data plotting. If the sensor polling service is turned on then the plots will update automatically when the sensor is polled and new data collected. A sample sensor data plot is found below:



I would like to add support for adding moving averages, being able to pull data from the persistence layer by specifying a start and end time among other features.


January 26, 2007: A new UI library

In order to better keep server code, UI code, and common code separate, I've created a new UI library. This UI library will contain all of the required UI classes. This will enable a remote client or the local server to instantiate UI windows and panels for configuring or viewing jHomenet data.


January 22, 2007: Adding persistence features to version 0.2

Back on January 15th, version 0.1 of the jHomenet commons library and server were released. As I mentioned this release was intended to provide users with an overview of the current and planned features. It was by no means a finished or polished product. One of the key features that it was lacking was support for database based persistence. The 0.1 version only supported persisting data in a flat text file, nice for verifying that data is being written but not a very easy format for performing any kind of querying on.


As such, version 0.2 of the commons library and server will support database based persistence, in particular using Hibernate. As of this writing, the checked-in code supports persisting the hardware data to a MySQL database using Hibernate. When released shortly version 0.2 will add support for persisting the hardware registration information, sensor responsive definitions, among other things. Check back soon to download version 0.2 of the software.


December 16, 2006: jHomenet system redesign almost complete

I'm just about ready to release the redesigned jHomenet server and commons library. The client side front-end is going to have to wait as I want to get the server and commons library released for comment. You'll still be able to manage the server through a command line interface (CLI). Through the CLI a user can manage the hardware connected to the server among other things. Some of the major changes that will be included in this new release include:

  • New CLI for managing server and hardware objects

  • A plug-in framework for adding additional commands to the CLI

  • A new work queue design where all time-consuming tasks are placed in a work queue for processing.

  • Updated server and hardware configuration files (transitioned from txt files to XML)

  • At first, the server will only support a file based persistence layer for both the hardware and sensor data. Future revisions will include options for using Hibernate to persist data in a database.

  • A new boot manager to manage the server boot process.

  • A new service manager to manage the many concurrent services.

  • Built-in support for sensor responsive plans. This feature won't be available for use at first but the code is already included in the server.

Eventually, I would like to include such things as:

  • Remote client management through a Swing front-end.

  • User authentication and authorization.

Please let me know if there are other features that you would like to see included in future revisions.


August 11, 2006: jHomenet system redesign continues

As I mentioned in my previous post, I'm continuing to work on the jHomenet system redesign. The first major change is actually in the codebase. There now will be a server and client codebase along with a commons library codebase with files common to both the client and server. I'm now working on the client side. In particular, I've been most recently working on the remote client authentication using RMI and Cajo. Cajo is a neat RMI library that provides tools for operating in a distributed environment. The jHomenet system is still a client/server design but it makes use of many tools available in Cajo. The previous design only supported a local client connection so connecting to the server from a remote location was impossible. That, along with what I believe was a pretty fragile design, was the major reason for the redesign.


I would like to release a Beta version of the revised jHomenet system by this fall or winter. If you're really interested, you can check out the source code from the Subversion respository.


June 15, 2006: jHomenet server redesign

It's been several months since my last posting but don't fret, the project is far from dead! I've been busy redesigning the original jHomenet server application. I wasn't happy with the interdepencies that had developed in the original jHomenet server. Too many uses of the singleton design pattern among other things led to what I believe was a pretty fragile system. In response, I have started from scratch and am in the process of redesigning both the jHomenet server and client. One of the first things I did was break out the server, client, and hardware codebases and created separate Subversion modules. Each are now maintained separately but not are completely independent of each other. Making this work has required a major change in the hardware API. I believe this will lead to better maintained code.


Other areas that have seen major redesign include the hardware driver/hardware container/hardware manager classes. This new design splits up the responsibilities better and removes some interdependencies that were making for some pretty ugly code. I've also removed the GUI code from the server and have made it another separate module. The new GUI will be able to connect either to a locally running server or to a remote server using RMI. I'm also planning on making the GUI web-startable.


I hope to have the new server and commons libraries ready for distribution within the next few weeks followed by the GUI a few weeks later. Stay tuned for more updates.


January 27, 2006: New features for Beta1 release

The following is a short list of features I would like to be able to add to the next release of the jHomenet server:

  • Updated plotting: Provide the user with a couple of options for displaying the plotted sensor data. In particular, a selection option for the time frame (1 day, 2 days, 1 week, 2 weeks, 1 month, etc.)

  • Updated hardware support: Add or finalize hardware support for a number of different devices.

  • New current data window: Add a new window for displaying the current sensor data for all the currently registered sensors in table that will update in real time.

In addition, the next release will be a Beta version in an effort to narrow in on all the features to be included before a push for 1.0 release.


January 22, 2006: New jHomenet GPS server and client projects

In conjunction with the jHomenet server application, I've also been exploring a GPS client/server application. In particular, the GPS client collects GPS data from a GPS unit, stores the data, and then transmits the data to the server when the server becomes available. I would like to make use of my existing TINI embedded computer installed in one of our cars along with a Garmin GPS unit and wireless bridge. This way, as we drive around town the GPS data is stored until the car comes within range of my home wireless network. On the server side, it receives the GPS data, decodes it, and then makes the information available to an end user through some type of graphical display. I would like to setup a application server (Tomcat) and a public website that would then publish the GPS data using a mapping service such as Google Maps. Stay tuned!


January 16, 2006: Alpha4 released

jHomeNet Alpha4 has been officially released. See the changelog for major features added in this release.


January 3, 2006: New incubator CVS module

A new incubator CVS module has been created to allow new features and concepts to be developed, experimented with, and tested prior to being incorporated into the jHomenet server CVS module. This could have been easily accomplished using a new CVS branch but keeping the code development completely separated seems to be the best approach, for the time being.


For example, I've been experimenting with the JScience library recently for use in representing hardware data units and possibly data quantities. The library provides a lot of great tools for converting from one compatible data unit to another. Keep an eye for this and other features developed in the incubator as they are moved to the main jHomenet CVS module.


December 30, 2005: Hardware data plotting

The hardware data plotting, using the free JFreeChart plotting library, has been updated to plot data in real-time. In previous releases, the user was required to select a desired date range and click on a "Build" button to build a chart. Now when the sensor window is open the chart is updated automatically when new sensor data is retrieved. The downside is that it no longer supports plotting based on user selected date ranges. Later releases will support both features.


December 28, 2005: Remote client logging in C#

In my desire to learn more about C#, some of the jhomenet-util tools will be developed in both Java and C#. In particular, the remote client logging tool, developed to enable remote viewing of the server console output, has been ported to C#.


December 21, 2005: Hardware-type compatibility implemented

I have been meaning to do this for a while but was finally forced to implement hardware-type compatibility because of other required changes. In a nutshell, the updated code will only allow certain types of application hardware to be registered given a particular driver hardware type. For example, a 1-Wire DS1822 sensor can only be registered as a temperature sensor. Likewise, a 1-Wire DS2450 sensor can only be registered as a wind direction sensor or a HVAC monitor sensor. Previously, when registering hardware, the operator was required to have knowledge of the hardware-type compatibility and the system didn't provide any hardware-type cast protection.


December 15, 2005: User login

Beginning with the Alpha4 release, the server will require a user login to access and control any of the services available through the server. Below is a sample login screen.



Initially, the login service will support authentication using JAAS, a JDBC database, or a simple built-in authentication service (to be used for testing only).


December 13, 2005: Remote client logging & jhomenet-util CVS module

The next release of the jHomeNet server software (Alpha4) will coincide with the initial release of a jHomeNet utilities package (jhomenet-util CVS module). The utilities package will contain a number of tools that will aid in the maintenance and operation of the jHomeNet server. In particular, the utilities package will contain a remote client logging tool that makes remote logging over a TCP/IP network possible. This tool will allow users to remotely connect to the server and view the logging messages as they appear on the local server console. Other tools will be added to the utilities package as they become available.


December 12, 2005: More hardware support

Work is continuing in an effort to add more hardware support to the jHomenet software. In particular, the HVAC monitor sensor (available from Hobby Boards) is being added to the next Alpha4 release. In addition, a dry-contact sensor and relay control device hardware support will also be added (similar to the ones found on Hobby Boards and AAG Electronica).


December 5, 2005: Easy test server startup

I've added a Windows batch startup script to start the server using a test hardware driver. This makes it possible to test the server without having to actually have a 1-Wire or X10 network. The script will be included in the next Alpha4 release. The script contents are found below:


Save this as server_test.bat and put it in the root directory. Run this after building the server using the Ant build.xml script.


November 22, 2005: Updates to hardware data and state objects

A major rework of the hardware data objects and the hardware state objects is nearing completion. In particular, the original HardwareData object has been broken into either a value based or state based data object. All sensor data fits nicely into either one of these two categories. For example, value based data can be represented by a floating point number (such as a temperature or percent humidity). State based data can be represented by a collection of states (such as a on state or off state). This work affects many of the Hibernate O/R mappings and as such the database tables will need updating.


This separation will help in some of the GUI presentation development. For example, under the old design the sensor information tab contains data information including the current data, max data, and minimum data. For state based sensors it makes no sense to have max or min values. This allows me to develop custom windows based on the sensor and data type without requiring a lot of instanceof or other checks in the GUI presentation layer.


November 20, 2005: Known bug in the build.xml file

There's a known bug in the build.xml file included in the Alpha3 release. In particular, when trying to build the database using the Ant init-db task, no tables are created. It turns out that the task requires that the output SQL directory exist prior to working. The solution is to add <mkdir dir="${sql.dir}" /> before the schema export task call. For example:


<!-- =================================================================== -->
<!-- Creates the application database from the Hibernate configuration   -->
<!-- file.                                                               -->
<!-- =================================================================== -->
<target name="init-db" depends="build">
  <echo message="Initialing server database tables and relations" />
  <echo message="-----------------------------------------------" />
  <echo message="" />

  <taskdef name="schemaexport" classpathref="hibernate.schemaexport.classpath" classname="org.hibernate.tool.hbm2ddl.SchemaExportTask" />

  <mkdir dir="${sql.dir}" />
  <schemaexport config="${build.conf.dir}/hibernate.cfg.xml" output="${sql.dir}/hibernate.sql">


There were a couple of other minor naming errors in the build.xml file. A bug report has been filed. I attached a copy of the latest build.xml file from the CVS tree for reference.


November 13, 2005: Manually control a device

The ability to manually control a hardware device (for example a light switch) has been added to the device information tab.



The state of the device is automatically updated every time one of the control buttons is pushed. The current state display, however, is not based on direct feedback from the device. The current list of X10 hardware used in the jHomenet server doesn't information retrieval. Rather, the On/Off command is sent to the device and it's assumed that the device responds to the appropriate command. So the current state value is only what the software believes should be the current state, not necessarily the actual state of the device.


November 9, 2005: Hardware polling type selection now available

Previously, the hardware polling type for a sensor was not editable. In other words, once a sensor became registered, you couldn't change the polling type for that sensor other than un-registering the hardware and then re-registering it with a different polling type. That feature is now available.



I should note, however, that the new selection isn't yet persisted into the database. So when the application is closed the new selection is lost and reverts back to the original selection. The selection also isn't buffered like the hardware description and configuration. Future revisions will update this feature.


[Update on 11/9/2005: The new polling type selection is now properly buffered (only changes the actual hardware bean) when the "Apply" button is pressed. Also, the change is now persisted into the database.]


November 5, 2005: Hardware polling services status window

A basic status and control window is now available for managing hardware polling under the "Status" menu.



This allows a user to currently pause or resume any of the hardware polling jobs (ten second polling job, one minute polling job, five minute polling job, one hour polling job, and twelve hour polling job). Future updates will include updating the popup menu to disable appropriate selections.


November 3, 2005: Sensor responsive editing GUI update

I'm in the process of updating the sensor responsive editors. In particular, I'm trying to make them more user friendly. For one, I'm replacing all the JLists with JXTables (from the SwingX project). The JXTable supports many more built-in features than the standard Swing JTable such as sorting. Below is an example of the updated responsive editor:



A user can create/update/delete plans or triggers by right-clicking on either table. Future revisions might include additional information about either a plan or trigger.


November 1, 2005: Sensor data plotting now available

Sensor data plotting has now been added to the current CVS snapshot. It supports plot filtering by date and time.  The plotting feature uses the JFreeChart graphing library available for free download here.



I'm using the built-in JGoodies debug panel for helping layout the GUI elements (as you can see, I still have some work to do). This is a plot of a test temperature sensor with just a few minutes worth of data. As you can see, you can plot all the data (select no start or end time) or filter by date and time.