Hey there Chuck!
Sadly, all good things come to an end. Nevertheless, I feel fortunate that Premise allowed us to meet and exchange our ideas and handiwork. I hope we can stay in touch and continue to share our adventures in Home Automation.
FWIW, I have three home automation systems running concurrently.
- Premise (on a mini PC; Windows 10)
- openHAB (on a Raspberry Pi; Raspbian)
- Home Assistant (on an old netbook; Ubuntu)
All three communicate with one another via MQTT. I can control devices within Premise via the UIs supplied by:
- Home Assistant
- openHAB
- Home Remote (not an HA system, just a front-end app).
All this is possible through the use of MQTT. I used Node-Red and created SyseventBroker in order to provide Premise with the ability to communicate via MQTT.
Initially I used Home Remote, which supports MQTT, to create a UI. However, it involved a fair amount of work and you'd have to adapt it to the screen-size of the intended display device. I decided to investigate openHAB's ability to serve as a frontend for Premise. You still have to define the UI but it's easier and adapts to various screen-sizes. In addition, I wanted to learn if it could become a potential replacement for Premise.
openHAB's UI runs in a browser or in openHAB's iOS and Android apps. I liked the result and used it for a few months. During this time, I continued to learn about openHAB and, although there's a lot to like and it's very powerful, I ultimately decided it was not for me.
Whereas Premise defines a home with 'real world' objects (Garage Door, Window Sensor, Security System, Sconces, Thermostat, etc) openHAB uses simpler widgets like Contact, Dimmer, Switch, Number, etc. There's no concept of a thermostat, just a collection of Number and Switch "Items" that, taken together, form a thermostat. After using Premise for 10+ years, it's hard for me to take a step backwards and think like that. In addition , its "Rules DSL" (Design Specific Language), for creating Home Automation logic, is considerably less approachable (and legible) than Premise's VBScript. I really wanted to like openHAB but conceded that I would never enjoy translating all my existing HA logic into openHAB's (comparatively onerous) Rules DSL.
I moved on to Home Assistant, which has attracted a sizeable following. First, unlike openHAB biannual releases, its development cycle moves at breakneck speed; a new release appears every two weeks. That's great if you desire new functionality but it often means a slew of 'breaking changes' (some by design and others, not so much). You really have to read the release notes carefully before committing to an upgrade. Otherwise you might be looking at an evening or three of answering "Why does this no longer work?!?". Having said that, there's a lot to like about Home Assistant. It's not as sophisticated as Premise, some things are absurdly hard to do compared to Premise, but then in many others ways it just shines and makes HA life easy (plus its rapid development cycle continues to correct/improve/expand it).
Home Assistant provides a more sophisticated collection of home devices such as binary_sensor (on/off/open/closed devices), sensor (temperature, humidity, speed, etc), light (state/brightness/color), cover (a.k.a. blinds/retractable awnings/garage doors), climate (a.k.a. thermostat), lock, etc. What it lacks is the concept of areas (it's on the founder's to-do list). Like Premise's Automation Browser, Home Assistant's "Frontend" generates a UI automatically based on the devices you've defined. The result is a fairly clean and attractive web-based UI that adapts itself to screen-size. All state-changes are automatically logged in a database and the UI can display each device's operating history. They're currently developing an entirely new UI framework called Lovelace. It's faster than Frontend and provides for a more sophisticated and flexible UI (arguably more attractive as well). It can't be auto-generated (yet) based on the defined devices.
I should mention one thing that both openHAB and Home Assistant do that is alien to a Premise user. If you add a new device or create some new logic,
you have to restart the application (or portions of it). openHAB does this transparently because it monitors its configuration files and if it detects they've changed it will restart itself (nevertheless, it's still a complete 'start all over' cycle). Home Assistant must be manually restarted but you should first run a 'Config Check' so that it validates your changes before using them. If it contains an error and you restart the application it may fail and not return to life (then you go hunting through the log file looking for the offending entry). You can change most anything and everything in Premise without having to restart it so this 'must restart' behavior feels nothing short of awkward and primitive. In addition, Premise starts blazingly fast compared to these two.
Currently, I'm deeply immersed in Home Assistant. There are some things that are just jaw-droppingly easy to achieve (adding comprehensive HomeKit support was a matter of adding a few lines to the configuration file). Having said that, there's a preponderance of things that caused me 'face-palm moments' because I know how trivial it would be to do in Premise (date math in Home Assistant is fugly). In addition, most everything is defined using YAML including automation logic. I don't mind it for defining devices but it's, to put it politely, an 'acquired taste' for creating logic.
I have three important devices in my home that don't make it easy for me to shift from Premise to Home Assistant because it doesn't support them:
- HAI Omnistat/2 thermostat
- UPB lighting
- ELK M1
The lack of support for UPB is a major roadblock for me. The switches works well in my home and I have no desire to part with hundreds of dollars to replace them for another technology (just to use another HA software). An ELK M1 driver was recently released for Home Assistant (over a year of development time) so that's encouraging (still stamping out bugs). However, there's no sign any of the 'cool kids' today are using HAI thermostats so a driver for my Omnistat/2 will probably never materialize.
Overall, my desire to switch to another HA platform has diminished since the availability of MQTT. I now use Home Assistant as a 'Premise enhancer'. It provides a nice UI and a bajillion drivers for new devices and technologies that, through MQTT, I can continue to exploit via Premise. Here's what I mean. My wife uses an iPhone and she can now ask Siri to:
- Change the thermostat's target temperature.
- Set a light brighter.
- Close the garage door.
- Inquire about the status of the security system.
- etc
The responsiveness is excellent despite the lengthy chain involved in making this magic happen:
- Speak to iPhone: "Hey Siri, turn on the kitchen light."
- Voice is converted to a HomeKit command (probably via Apple's cloud servers).
- Command drives HomeKit app on the iPhone.
- HomeKit app knows the kitchen light is connected to 'Home Assistant Bridge'.
- HomeKit app tells the Bridge to activate the kitchen light.
- Siri responds "Okay!"
- Home Assistant turns on 'light.kitchen'.
- Home Assistant has 'light.kitchen' defined as an MQTT Light, so it publishes the 'turn on' command to the local MQTT Broker.
- MQTT Broker receives it and re-publishes it to all its subscribers, namely a 'flow' in Node-Red.
- The Node-Red flow passes the topics along to Premise's SyseventBroker.
- SyseventBroker converts it into a command to turn on the kitchen light.
- Kitchen light is a UPB dimmer so the command is transmitted to the light via the UPB transceiver.
- Kitchen light turns on.
All this happens in about one second (i.e. it feels instantaneous). Basically, I now have HomeKit functionality for all my devices in Premise, thanks to Home Assistant and MQTT (which glues them together).