HomeGenie - A Look at My Home Setup

HomeGenie is what I have been running for my Home Automation needs. It does a lot, but I mainly chose it for these features:

  • Z-wave support.
  • Multi-platform. It's an app coded in C# and packages are built for all flavors of servers/arches including Windows/Linux and x86/arm (running with mono).
  • Support for generic IP cameras.
  • API to interact with devices.
  • A great Android interface app

The developer Gene is also pretty responsive to bug reports and feature requests.

With all of that said, I am in the middle of a transition to another home automation called Home Assistant I'll talk about this more in a minute, but let's take a look at HomeGenie first.

Since the server can run in mono, I run it on a Raspberry Pi. To control Z-Wave devices, I use a simple USB Z-wave stick like this. And with just those 2 pieces, this thing is already pretty powerful.

IMAG0837
This is how the Raspberry Pi 3 looks with the Z-wave USB stick. The dust is not necessary.

Screenshot_2018-02-11-02-08-32A screenshot of the Android interface customized for a room in my house.

Once you get it going, it's a simple matter of configuring it via the web GUI. You can add new modules (switches, cameras, sensors, etc.) all via the GUI.

2018-02-11-02_14_01-HomeGenieScreenshot of HomeGenie switches.

To get things to work with Alexa, I use the ha-bridge I mentioned in a previous post. HomeGenie provides a simple API to get the status of switches, turn them off/on, or even dim (if the device supports dimming). For example, I can turn a switch with Z-wave identifier 24 by doing an HTTP GET on this endpoint:

http://host:8080/api/HomeAutomation.ZWave/24/Control.On

You would simply plug that into ha-bridge under the "On Items" section. To dim, the endpoint would look like this:

http://host:8080/api/HomeAutomation.ZWave/24/Control.Level/${intensity.percent}

You would plug that in the "Dim Items" section of ha-bridge. "intensity.percent" is a variable that is determined by the number you tell Alexa. So, for example, you can say "Alexa, dim the lights to 30%" and the number 30 will be used by ha-bridge making the final endpoint:

http://host:8080/api/HomeAutomation.ZWave/24/Control.Level/30

Since you can control it via HTTP, you can also use curl to script some actions. Here is a simple script I use to toggle the state of any light:

#!/bin/bash

get_status() {
curl --silent http://host:8080/api/HomeAutomation.HomeGenie/Config/Modules.Get/HomeAutomation.ZWave/"$1" | jq '.Properties[] | select(.Name == "Status.Level") | .Value'
}

turn_off() {
curl --silent http://host:8080/api/HomeAutomation.ZWave/"$1"/Control.Off
}

turn_on() {
curl --silent http://host:8080/api/HomeAutomation.ZWave/"$1"/Control.On
}


get_status "$1" | grep 0 && turn_on "$1" || turn_off "$1"

Just use the Z-wave switch identity number as an input parameter. BTW, the script above uses jq to help me take the JSON output of the API and mangle it for my needs. I could probably post something later about how much I love to use jq. If you haven't used jq before, I encourage you to try it. It's neato burrito.

A New Challenger Has Entered the Ring

While I do love HomeGenie, I do plan on switching to something new and exciting called Home Assistant. Development is hot and heavy at Home Assistant and they support A TON OF devices. It seems like they have a release every week with more and more support for new and neat things. I had looked into Home Assistant some time back, but the end-user interface didn't seem as "nice" as HomeGenie's. That is quickly changing. I am able to run Home Assistant now in a docker container to test things out. One of the neat things that Home Assistant supports is the idea of a "Command Line Switch." This lets you control practically anything that is accessible from a command line. This allows me to control my existing HomeGenie setup from Home Assistant.

2018-02-11-02_36_16-Home-Assistant
A screenshot of the Home Assistant user interface. This is probably old by now and they do have themes and a newer UI in the pipeline.

Home Assistant also has an Alexa/Hue Phillips emulator built-in so it negates the need for ha-bridge. If I had to pick a winner, I would say Home Assistant is starting to pull away.

One Last Thing - HomeKit Support

We have some Apple users in my household. There is no iOS app for the HomeGenie interface and the web interface is too slow to run on mobile well. I found this neat NodeJS server app that emulates the iOS HomeKit API called homebridge. Homebridge has a ton of plugins to integrate devices with HomeKit. A simple search on npmjs.com can list these plugins. There is one particular plugin that takes your configuration from home assistant and puts it nicely in homebridge. It's called homebridge-homeassistant.

IMG_0026A screenshot of HomeKit support for iOS users in my household.

It works well for my needs. Even voice control with Siri works. But, things are a bit "rube goldbergy" - I have 3 servers running just to do all of this:

HomeGenie <--> Home Assistant <--> Homebridge

Once I switch over to Home Assistant, that should make things a lot simpler. I hope. :p