• You've been granted Beta access to this site, allowing you to explore some of the new features while they're still under construction. More information can be found in the Beta forum.

Open Source Home Automation Software

ericvic

Active Member
There was a discussion going on before the crash (I can't find it now) about starting a new open source project for HA. Anyway I don't like the direction that any of the HA software is going so again I'm thinking of writing my own.

What I would like is any ideas of what you would like to see in HA software. Give me anything even if other software already does it. I have my ideas but if I get going on this I would like it to end up as a real open source project that others might like to use.

Eric
 

Squintz

Senior Member
There was a discussion and it was to write it in .net so that more than one type of programmer could help write it. After doing alot of research i cam to realize that i would not be able to lead such a large project. Another reason i desided to stray away from that idea was the announcement of homeseer being converted to .net Since i already own Homeseer i would not be loosing anything by continuing to use it. I would be more than happy to help with an open source project(not that i would be much help programatically) but i can to some stuff.

If you look at sourceforge.net you can find a few projects that have made very good progress. The only problem is they are all written in C or C++. I am a VB.net programmer and dont have the interest in learning C++ at this point in time.

If you can program in C++ i would suggest joing one of the open source projects that are already available to save yourself a ton of time. If you are not a C++ programmer or agree with me that .net would make for a much better program then maybe you could get started my porting some of the exisiting c++ code of the other project to .net

Eric what is your programming background?
Do you have any experience in running an open source project?

You might want to post in some of the major programming forums such as the dev forums and see if anyone is interested in helping with an open source project.

You are going to need more than just programmers also. You are going to need a few good artist also.Go ahead and start a project and make an official announcement. Maybe people will take you more seriously then they took me and offer their assistance.

Here is what i want in a program.

I want a very nice LOOKING front end. With more than one option to choose from. I would like to be able to choose from a more professional look, modern look, classic look, Futuristic, Holiday, and many more styles. I would like to have a calendar included that would automatically adjust the look of the front end from the default to another style based on the holidays and seasons. I want the program to be muti threaded. I want it to offer a full collection of tools to help me create and organize my digital media library(including riping DVD's and CD's) a secure p2p search program would be awesome. That way if someone had a movie i wanted to watch on their system and they are using the same application i could download it to my PC and have all their information such as Album cover and titles and everything tranfered with it so that i would not have to search for that stuff myself.

I could keep going on and on with features that i want in an all in one package but im probably just boring everyone.

Get it started and start working on a detailed outline of all the features and the way you are going to implement them. The program has to be fully thought out before you can start creating it other wise you are going to run into many issues in the future.
 

smee

Senior Member
I think you need to decide whether you are going to emphasize traditional home automation (HA), audio-visual/home theater (AV/HT), or both.

Personally, I tend to keep HA and HT separate (although web-based front ends to both have links to each other and there is capability for some communication back and forth).

For any approach, you probably need to design it from the very beginning taking into account communications between processes/modules and a plugin framework. A clean plugin framework will allow easier expansion later.

Also, no matter what language(s) you write the application in, please consider including scripting capabilities. This is one of the strong points of HomeSeer. It is relatively easy for anyone to add capabilities through scripting without needing to own a compiler and figure out how to use it.

Scripting can be picked up more easily by example than most compiled languages. And this will encourage people to share more openly. While individual modules may work best as plugins, scripts can be the glue that ties them together into useful, personalized systems.

The majority of what I use HA for is done through scripting in HomeSeer. Plugins are used as interfaces to hardware, not to provide higher-level functionality.

If HA and AV/HT modules can be linked through scripts (e.g., with references to an HA object and a media player object), then this opens up a lot of potential that individuals can set up and share without depending on plugin or module programmers.
 

ericvic

Active Member
Guys,

Thanks for the replies so far.

I was planning on using Java. For a few reasons but mainly because that is what I program in now and I really like it. Also it helps that it can be cross platform but I see Windows being the main platform anyway so that is not much benefit. Java also allows easier "plug-in" integration over straight C++. .net would probably add similar abilities but I'm not intereted in learning a new framework right now.

I have no experience in managing an open source project. But I do have experience in managing large software project. I know open source is a whole different beast. I would probably start the project off myself and then open source it at some point down the road, unless I get a bunch of people wanting to help out right off the bat.

I was thinking of sticking mainly to traditional HA and not becoming a media server.

Scripting is a good idea. I haven't thought through all the peices yet but I had forgotten about scripting because I tend to go straight to "plug-in" type coding over scripting.

A few of the major peices would be:
- The management GUI and the server would be seperate apps
- There would be multiple ways of presenting the user GUI. Web interface and discrete clients. I prefer having an actual client app with a 2 way interface but I know that many people prefer browsers.
- More generic devices (like HouseBot) than what HomeSeer has
- A robust plug-in interface
- Strong event handling

What type of event triggers would everyone like to see. Also how granular (timewise) should the system check for events.

Thanks,
Eric
 

Dean Roddey

Senior Member
It's an enormous undertaking. CQC has over 600,000 lines of code now, and it's still got a long ways to go before it includes everything it needs to. I've got probably almost two man-decades in this code base at this point, and that was without all of the overhead of a multi-person development project.

If you want to create something that has a chance of being of use any time soon (meaning far enough along that it would be remotely more desirable than one of the existing alternatives), you'd be better off (in my opinion of course) adding some value to one of those existing alternatives. And the thing is, 2 years from now when you do get enough done to start being useful, those other alternatives will also be two years further along.

I'm not trying to particularly talk you out of it, since we'll be dead soon enough and you should do whatever turns you on (as long as it doesn't involve me and any battery powered toys.) I'm just trying to provide some perspective on what's involved in doing a serious product. If you are going be heavy on the traditional automation side, then it's even harder because robustness and stability and high flexibility are very important in that world, and you have to have a very flexible driver architecture.
 

huggy59

Active Member
My only concern with Java is that it is somewhat slow, although pseudo-code and compilers might help there. You might have to drop into C or other assembly-type languages to get the speed-sensitive parts to work properly. If you do go with Java, have a look at the Eclipse extensible IDE - it's open source as well and could be used on multiple platforms. Watch the clock resolutions, as well. With HS being down to the minute, there's a lot of room left for more precise technologies for more control applications.

Also, I would recommend a good extensible database backend (or multiple database configurations such as Access and SQL versions on Windows, MySQL and others on Linux/Unix) that will provide capability and compatibility for future expansion. Also, keep the design generic instead of coding it to support one or two particular tehcnologies. One of HS' problems is its original design based on X10.

Those are pretty much my concerns at this time.
 

Dean Roddey

Senior Member
Believe me, when you are working on something of this size, Java would be questionable. All my code is high level C++ (all my own stuff, none of the crappy standard libraries or anything), and even then there are places where it strains a little because so much is going on at once. But for me it's an easy decision because I have a huge C++ development system of my own that makes working in C++ like working in Java but a lot more efficient.

For someone else, they are looking at a much harder decision to choose C++ because they don't have that available to them and will have to hack together various third party tools, and it'll never be as elegant and maintainable and robust as one based on a comprehensive class framework (and one that you control. )

So it's a bit of a Catch-22. The languages you have available to you that come with the comprehensive libraries are probably going to be a bit piggy for something this large, but the ones that are fast enough don't have the comprehensive libraries. I guess you can get a lot of the improtant bits by looking at something like ACE or some such thing.
 

ericvic

Active Member
Dean,

I have been in software development for 14+ years working on all kinds of systems, large and small so I completely understand what an undertaking it is that is why I haven't created anything up to this point.

I would not be doing this to directly compete with any existing product so if I'm way behind it doesn't matter. There just isn't a product out there that has the features that I need/want the way I want them. This would be an open source project so I would not be making any money on it so if no one else wanted to use if that is fine if it meets my needs.

Huggy,

Many people think Java is slow and in the past that was true but the latest version of Java runs pretty fast especially for server side code and if you use a GUI library like SWT then the GUI can be pretty fast as well. I can't think of any speed sensitive part of the system where Java would not work. We're not talking about a completely real-time system or it wouldn't be run on Windows.

I use eclipse all day at work and whenever I'm programming at home. I really like it over JBuilder that I also have to use at work.

I would probably use Hibernate or at least JDBC for the persistence layer so the user could pick whatever database they wanted to.

I agree that one of HS' biggest problems is that it was designed around X10 so they are having to shoehorn new functionality in to make it work. One of my biggest design goals would be to make it technology neutral. I'm sure there would be compromises though.

Thanks for the comments.

Eric
 

Squintz

Senior Member
eric,
How about writing it in J#. From what i hear it would be easy for you to adapt to the language since you are so familiar with java. That would allow the people who do not prefer to write in jave to help out with the project.
 

DavidL

Senior Member
ericvic,
what features of a HA system were you looking for that don't exist either within Dean's CQC or Homeseer's 1.x or very soon in coming 2.0 platform?

I assume that both groups would be interested in evaluating the usefullness of adding additional features that would be popular and make their HA systems more robust.
 

ericvic

Active Member
Squintz,

I don't really want to go with J#, C# or any of the .net languages because I don't want to learn about .net right now.

DavidL,

Last time I looked at CQC it was lacking in many areas but that has been a while. With HS (which I am a registered user of) to get all the functionality you have to purchase 3rd party plug-ins which adds to the cost. There is no real client app only web. Plus because of its X-10 roots the newer functionality seems to be shoehorned into the app.

What I was looking for is what other users would like to see in an HA app not what I find lacking in other HA apps.

Thanks,
Eric
 

smee

Senior Member
ericvic said:
With HS (which I am a registered user of) to get all the functionality you have to purchase 3rd party plug-ins which adds to the cost. There is no real client app only web. Plus because of its X-10 roots the newer functionality seems to be shoehorned into the app.
You can always just write your own plugins (if necessary) for HS. Nobody says you can't develop your own and distribute them for free - even if someone is already selling one that does something similar. In fact, this gives you an audience that already exists to help with feature recommendations, etc. I wouldn't go around trying to "run people out of business." But, I'm not sure where people get the idea that you need to PAY for plugins to do anything useful. I've only paid for one plugin - and it's not working correctly right now, anyway. Since I don't really need what it does (although I like its capabilities), I haven't bothered to fix it.

Most of the plugins for HS (that need to be plugins) are dealing with hardware interfaces, not functionality. You would need these (or something similar) for any HA program.

HS 2.0 is moving toward a server-based approach - although HST still prefers the web for clients. There are plugins that work now with client applications, however.

The X10 limitation is kind of a stumbling block sometimes. However, the way it's set up also means that it's very easy to interface to certain devices (digital input and output, for example) without needing to change the way scripts work. On/off is on/off no matter what else is going on.
 

Dean Roddey

Senior Member
Last time I looked at CQC it was lacking in many areas but that has been a while.

What did you find it missing at the time? It's moving forward quickly, so if those holes haven't already been closed, they probably will pretty soon.

CQC uses drivers for each device also, but they are not charged for separately, they are part of the base package which costs $200 no matter how many of them there are. There are optional features (such as application control or scheduled events) which are sold separately, so that we can keep the core functionality cost low for those folks who only need that part of it.
 
Top