Preparing for use of HouseControl

This post is aimed at people who are planning to use my open source HouseControl Java server.

If you plan to use it with LightwaveRF devices, you should first be successfully using my LightwaveRF Arduino library. This requires an Arduino based RF 434Mhz transceiver. To use your transeiver with HouseControl, you need to run the lwrelay example.

If you plan to use it with EDF or Current Cost Individual Appliance Monitors, you should be successfully running Jack Kelly’s software using an Nanode or other Arduino based device.

If you plan to use it with Jeelabs or HomeAutomationHub room nodes, you should be successfully running the room node Jeelib example.

If you plan to use it with the OpenEnergyMonitor emonTX energy monitor, you should successfully be running a version of the emonTx firmware.

If you are not using any of these devices, you can still use HouseControl to control some things such as IP cameras, and Spotify music servers over Wifi, but its usefulness will be much reduced.

You should be able to run HouseControl or a wide variety of machines such as a Windows PC, a Mac, a Linux box or a Raspberry Pi. Basically, anything that can run a Java server.

Advertisements
This entry was posted in Home automation and tagged , , , , , , . Bookmark the permalink.

9 Responses to Preparing for use of HouseControl

  1. Kevin says:

    Am interested in this, mainly because we’re walking parallel paths 🙂

    If you want to bootstrap your Google Calendar plugin, this might be of interest https://github.com/bigkevmcd/homeautomation-services/blob/master/googlecalendar-relay/googlecalendar-relay.coffee

    • Geek Grandad says:

      Hi Kevin,

      I have written some Java code that reads Calendar entries, but have not turned it into a plugin and checked it in yet, mainly because I have not got my head around how I want it to work yet. I did write a previous post about what I may do with the Calendar. I want to both react to existing Calendar entries and create new ones.

      Your Coffee code looks very clean. I have looked into into node.js, Coffee, etc., but currently I am more comfortable programming in Java.

      Do you have more information about the frameworks you are using, and what features your home automation system has? I had a quick look a your repository. I looked into xAP a bit recently but was not convinced that it was something I wanted to use.

      Lawrie

      • Kevin says:

        Hi Lawrie,

        Sure…like you, I’m using LightwaveRF (I like their sockets and light switches), and Jeenodes, currently I have an rfxcom controlling the LightwaveRF devices, but I’m interested in offloading that to a Jeenode.

        I’m using Stian Eikeland’s core ZeroMQ “bus”, which is really simply a CoffeeScript app that listens using ZeroMQ for messages, and then relays them on to subscribers, I’d probably use RabbitMQ for this, but, I don’t need everything that RabbitMQ gives, and…it cuts down on the memory (services run on a couple of Raspberry Pis), but it wouldn’t be that hard to migrate, if I wanted to.

        I have a couple of Arduinos picking up data from the house, but those will likely be replaced by Jeenodes doing the same (they’re easier to power from a single AA battery).

        The calendar service pulls from a couple of Google Calendars, and regularly pushes the events onto the “bus”, where they are picked up by a couple of services, and am looking to hook the calendar to lighting when I’m away on holiday.

        I’m about to put an RGB LED strip under wall-mounted kitchen units to light the work-surface area, these are controlled with a Jeenode LED v2 and a PIR, and I have a master sketch running on a Jeelink, that sends messages to this, as well as receiving data from Jeenodes, thus my interest in amalgamating all the radio requirements.

        Ultimately, everything is pushed through CoffeeScript, which is really my first JavaScript project…I like the asynchronous nature of JS, and the UI is currently an Express application, using jQuery mobile (which looks nice on a Joggler).

        I’ve looked at OpenRemote (and I like the idea of it) but am not the world’s greatest UI designer, and I struggled with the UI designer 🙂

        I’ll make all my code available like you, on Github.

        Kevin

  2. Hi Lawrie,

    Did you ever try controlling Lightwave with the Nanode RF? Spent a few hours last night trying a couple of different libs but I can even get my Lightwave dimmer to ‘pair’. Don’t suppose you’d happen to have a very basic ‘pair’ sketch knocking about so I can rule out a HW issue?

    I’m very new to all this and just assumed that setting the correct tx pin (Digital 10) should be all that’s required to make your lib work on the Nanode?

    Cheers,

    Alex.

    • Geek Grandad says:

      No, I am afraid I have never tried to make it work with the Nanode RF. The RFM12B radio on the Nanode and on Jeenodes is much more sophisticated than the simple ones I have used for LightwaveRF. There is information on using On-off keying (OOK) with these radios on the Jeelabs web site. I use Jack Kelly’s library (see Blogs and Suppliers links) on the Nanode RF with my EDF Individual Appliance monitors, but I have never looked at the code to see what that library does.

      I don’t pair my LightwaveRF devices with my library. I pair using a LightwaveRF remote, then capture its ID and emulate commands coming from that remote.

      • Cracked it! 😀

        Excuse my exuberance but as I said, very new to this and am quite chuffed to get it working 😀

        Anyway, starting looking around for RFM12B OOK examples, was going to try Jeelib until I found this post…

        http://openenergymonitor.org/emon/node/3369#comment-16915

        This, for me was perfect as it strips out all the padding of libs and just gets down to brass tacks. Then, using the payload example for ‘on’ here:

        https://wiki.somakeit.org.uk/wiki/LightwaveRF_RF_Protocol

        …I modified the code by purley plugging in the ‘on’ payload raw data into the POSA_Plug function and changing the loop delay to 100ms…

        void POSA_Plug(byte plugNo)
        {
        if (plugNo==1)
        {
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,1250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        ookPulse(250,250);
        }
        delay(11); // approximate
        }

        …hey presto, it paired first time! It’s not pretty but as a POC, it works. Now to make it nicer…

    • Geek Grandad says:

      Good to see you now have it working with the Nanode. I will probably try this some time, as I would like to consolidate my various radio devices, and drive LightWaveRF, EDF IAMs, and Jeenode based sensors with one device. Ideally the same device should also work for my X10 remote control any my wireless heating system as well, but I have not managed to hack into the heating system yet, even though I know the protocol.

      Simultaneously handling messages from all these different protocols could be a challenge.

      It is very satisfying when you get this stuff going.

  3. Yeah that’s the plan for me also. Always wanted to venture into home automation but there was no one platform that did it all. Was going to buy an RFXCOM for Lightwave and X10 but came across the Nanode and have always wanted to learn C++ so figured it was the perfect way to get started. Will update when I get a bit further. Hoping to eventually have it so the Nanode can learn new protocols on the fly and control everything from a nice mobile webui etc.

  4. Here we go, you can clone this and flash straight to your Nanode 🙂

    https://codebender.cc/sketch:27612

    I’ll be continually updating that as thing progress.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s