Insteon

evasmolders edited this page Dec 29, 2016 · 1 revision

###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

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.