Insteon

evasmolders edited this page Dec 29, 2016 · 1 revision
Clone this wiki locally

Introduction

This page describes the integration with via the ISY-99. In addition OpenRemote will also work with Insteon via the Hub 2, see 'useful links' at the bottom of this page. We are looking for somebody to write a separate 'How To - Insteon Hub 2 page'.

Insteon working The ISY-99 device can control both Insteon and X-10 light switches, thermostats, etc. It provides a very convenient REST-style interface, so that regular HTTP commands can be used to query device status and issue commands to devices. Both OpenRemote itself and the ISY-99 have facilities for writing scripts, which can be used for energy savings, among other things.

Insteon is a very good up-and-coming technology for home and building automation. It is more reliable than X-10 and has a far lower price point than more traditional approaches. There are Insteon light switches, dimmers, and thermostats available on the market.

Use it for controlling your light switches with your phone. Maybe you want to turn off all of the lights at once. Thermostat integration has not yet been tested, but would be a boon.

Insteon - OpenRemote ISY-99 High-Level Diagram

Hardware

Insteon switches and dimmers are relatively inexpensive and can usually be purchased through SmartHome. Insteon is generally used on 110/120V AC circuits.

You will need neutral wires in the junction boxes for your existing light switches. If you don't have them (which means you are probably in an old building), it's very easy for an electrician to bring them down from the light fixtures.

The capabilities of the following products are supported by OpenRemote. Certified products are extensively tested in combination with the Professional Designer and supported by OpenRemote certified Integrators.

Insteon - table1

Configuration of System

You need to specify the hostname (or IP address), username, and password for the ISY-99's REST interface. The username and password are both "admin" by default, and ISY-99's will use DHCP to get IP addresses by default as well. These can be specified as follows in webapps/controller/WEB-INF/config.properties:

isy99.hostname = 192.168.41.12
isy99.username = admin
isy99.password = admin

Code

The ISY-99 implementation is in the latest version of the OpenRemote controller in the org.openremote.protocol.isy99 package.

TODO point out relevant class files, salient points about the implementation, etc.

Sample controller.xml

The Designer can generally be used nowadays, instead of directly editing XML files.

An implementation of an export of device configuration from the ISY-99 to OpenRemote would be relatively easy to do and much appreciated. (As noted by Bob in the comments, most if not all of the necessary information is available at http:///rest/status .)

<?xml version="1.0" encoding="UTF-8"?>
<openremote xmlns="http://www.openremote.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openremote.org http://www.openremote.org/schemas/controller.xsd">
  <components>
    <switch id="99">
      <on>
        <include type="command" ref="128" />
      </on>
      <off>
        <include type="command" ref="127" />
      </off>
      <include type="sensor" ref="131" />
    </switch>
    <switch id="113">
      <on>
        <include type="command" ref="119" />
      </on>
      <off>
        <include type="command" ref="118" />
      </off>
      <include type="sensor" ref="132" />
    </switch>
    <switch id="97">
      <on>
        <include type="command" ref="124" />
      </on>
      <off>
        <include type="command" ref="125" />
      </off>
      <include type="sensor" ref="133" />
    </switch>
    <switch id="111">
      <on>
        <include type="command" ref="121" />
      </on>
      <off>
        <include type="command" ref="122" />
      </off>
      <include type="sensor" ref="130" />
    </switch>
    <button id="85" />
    <button id="117" />
    <button id="101" />
    <button id="115" />
    <label id="83" />
    <label id="93" />
    <label id="95" />
    <label id="109" />
    <label id="107" />
    <label id="91" />
    <label id="105" />
  </components>
  <sensors>
    <sensor id="130" name="Kitchen Table Sensor" type="switch">
      <include type="command" ref="123" />
      <state name="on" />
      <state name="off" />
    </sensor>
     <sensor id="131" name="Living Room TV Side Sensor" type="switch">
      <include type="command" ref="129" />
      <state name="on" />
      <state name="off" />
    </sensor>
    <sensor id="132" name="Kitchen Island Sensor" type="switch">
      <include type="command" ref="120" />
      <state name="on" />
      <state name="off" />
    </sensor>
    <sensor id="133" name="Living Room Couch Sensor" type="switch">
      <include type="command" ref="126" />
      <state name="on" />
      <state name="off" />
    </sensor>
  </sensors>
  <commands>
    <command id="118" protocol="x10">
      <property name="address" value="kitchen_island" />
      <property name="command" value="DOF" />
      <property name="name" value="Kitchen Island OFF" />
    </command>
    <command id="119" protocol="x10">
      <property name="address" value="kitchen_island" />
      <property name="command" value="DON" />
      <property name="name" value="Kitchen Island ON" />
    </command>
    <command id="120" protocol="x10">
      <property name="address" value="kitchen_island" />
      <property name="command" value="status" />
      <property name="name" value="Kitchen Island STATUS" />
    </command>
    <command id="121" protocol="x10">
      <property name="address" value="kitchen_table" />
      <property name="command" value="DON" />
      <property name="name" value="Kitchen Table ON" />
    </command>
    <command id="122" protocol="x10">
      <property name="address" value="kitchen_table" />
      <property name="command" value="DOF" />
      <property name="name" value="Kitchen Table OFF" />
    </command>
    <command id="123" protocol="x10">
      <property name="address" value="kitchen_table" />
      <property name="command" value="status" />
      <property name="name" value="Kitchen Table STATUS" />
    </command>
    <command id="124" protocol="x10">
      <property name="address" value="living_room_couch" />
      <property name="command" value="DON" />
      <property name="name" value="Living Room Couch ON" />
    </command>
    <command id="125" protocol="x10">
      <property name="address" value="living_room_couch" />
      <property name="command" value="DOF" />
      <property name="name" value="Living Room Couch OFF" />
    </command>
    <command id="126" protocol="x10">
      <property name="address" value="living_room_couch" />
      <property name="command" value="status" />
      <property name="name" value="Living Room Couch STATUS" />
    </command>
    <command id="127" protocol="x10">
      <property name="address" value="living_room_tv_side" />
      <property name="command" value="DOF" />
      <property name="name" value="Living Room TV Side OFF" />
    </command>
    <command id="128" protocol="x10">
      <property name="address" value="living_room_tv_side" />
      <property name="command" value="DON" />
      <property name="name" value="Living Room TV Side ON" />
    </command>
    <command id="129" protocol="x10">
      <property name="address" value="living_room_tv_side" />
      <property name="command" value="status" />
      <property name="name" value="Living Room TV Side STATUS" />
    </command>
  </commands>
  <config>
    <property name="controller.roundrobin.tcpserver.port" value="20000" />
    <property name="multicast.address" value="224.0.1.100" />
    <property name="controller.roundrobin.multicast.port" value="10000" />
    <property name="multicast.port" value="3333" />
    <property name="controller.groupname" value="floor20" />
    <property name="Macro.IR.Execution.Delay" value="500" />
    <property name="controller.roundrobin.multicast.address" value="224.0.1.200" />
    <property name="lutron_homeworks.password" value="openremote" />
    <property name="lircd.conf.path" value="/etc/lircd.conf" />
    <property name="controller.groupmember.autodetect.on" value="true" />
    <property name="lutron_homeworks.port" value="23" />
    <property name="lutron_homeworks.address" value="192.168.1.1" />
    <property name="lutron_homeworks.username" value="openremote" />
    <property name="webapp.port" value="8080" />
    <property name="copy.lircd.conf.on" value="true" />
    <property name="irsend.path" value="/usr/local/bin/irsend" />
    <property name="resource.upload.enable" value="true" />
    <property name="controller.applicationname" value="controller" />
    <property name="amx_ni.port" value="50000" />
    <property name="zwave.pad.host" value="localhost" />
    <property name="zwave.pad.port" value="7876" />
    <property name="zwave.comPort" value="" />
    <property name="zwave.commLayer" value="" />
    <property name="protocol.zwave.classname" value="org.openremote.controller.protocol.zwave.ZWaveCommandBuilder" />
    <property name="amx_ni.address" value="192.168.1.1" />
  </config>
</openremote>

Isy-99 Rest API

This is a simple rest interface we are using here is the documentation

http://www.universal-devices.com/mwiki/index.php?title=ISY-99i_Series_INSTEON:REST_Interface

Importing devices in the Designer - Building Modeler

Specific Designer Remarks - UI Designer

Reference Cases

see the video at http://openremote.com/references on Adam's case

Useful Links