Skip to content

Commit

Permalink
Initial contribution of evohome binding
Browse files Browse the repository at this point in the history
Signed-off-by: Jasper van Zuijlen <jvanzuijlen@gmail.com>
Also-by: Neil Renaud <neil.renaud@gmail.com>
  • Loading branch information
Nebula83 committed May 7, 2018
1 parent b2878d6 commit 35e9e57
Show file tree
Hide file tree
Showing 60 changed files with 3,112 additions and 0 deletions.
7 changes: 7 additions & 0 deletions addons/binding/org.openhab.binding.evohome/.classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
33 changes: 33 additions & 0 deletions addons/binding/org.openhab.binding.evohome/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.openhab.binding.evohome</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ds.core.builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<binding:binding id="evohome" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:binding="http://eclipse.org/smarthome/schemas/binding/v1.0.0" xsi:schemaLocation="http://eclipse.org/smarthome/schemas/binding/v1.0.0 http://eclipse.org/smarthome/schemas/binding-1.0.0.xsd">
<name>evohome Binding</name>
<description>The evohome binding controls the Honeywell evohome system.</description>
<author>Jasper van Zuijlen</author>
</binding:binding>
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# binding
binding.evohome.name = Evohome binding
binding.evohome.description = De evohome binding maakt het mogelijk om het Honeywell evohome systeem te besturen.

# thing types
thing-type.evohome.display.label = Scherm
thing-type.evohome.display.description = Dit Thing representeert het evohome bedieningsscherm

# channel types
channel-type.evohome.systemMode.label = Systeemmodus
channel-type.evohome.systemMode.description = Huidige systeemmodus
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="evohome" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:thing="http://eclipse.org/smarthome/schemas/thing-description/v1.0.0" xsi:schemaLocation="http://eclipse.org/smarthome/schemas/thing-description/v1.0.0 http://eclipse.org/smarthome/schemas/thing-description-1.0.0.xsd">
<!-- evohome Gateway Bridge -->
<bridge-type id="account">
<label>evohome Account</label>
<description>The evohome account is used to connect to your Total Connect Comfort (TCC) using your TCC username and password.</description>
<config-description>
<parameter-group name="auth">
<label>Authentication</label>
<description>Contains the settings needed to authenticate against the TCC service.</description>
</parameter-group>
<parameter name="username" type="text" required="true" groupName="auth">
<label>Username</label>
<description>Your TCC Username</description>
</parameter>
<parameter name="password" type="text" required="true" groupName="auth">
<label>Password</label>
<description>Your TCC Password</description>
<context>password</context>
</parameter>
<parameter name="refreshInterval" type="integer" required="false" min="15" max="3000">
<label>Refresh Interval</label>
<description>The refresh interval to poll TCC (in seconds).</description>
<default>15</default>
<advanced>true</advanced>
</parameter>
</config-description>
</bridge-type>
</thing:thing-descriptions>
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="evohome" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:thing="http://eclipse.org/smarthome/schemas/thing-description/v1.0.0" xsi:schemaLocation="http://eclipse.org/smarthome/schemas/thing-description/v1.0.0 http://eclipse.org/smarthome/schemas/thing-description-1.0.0.xsd">
<channel-type id="systemMode">
<item-type>String</item-type>
<label>Mode</label>
<description>Current system mode</description>
<category>temperature</category>
<state pattern="%s">
<options>
<option value="Auto">Normal</option>
<option value="AutoWithEco">Eco</option>
<option value="Away">Away</option>
<option value="DayOff">Day off</option>
<option value="HeatingOff">Off</option>
<option value="Custom">Custom</option>
</options>
</state>
</channel-type>
<channel-type id="temperature">
<item-type>Number</item-type>
<label>Temperature</label>
<description>Current room temperature</description>
<category>temperature</category>
<state readOnly="true" pattern="%.1f °C">
</state>
</channel-type>
<channel-type id="currentsetpoint">
<item-type>Number</item-type>
<label>Current set point</label>
<description>Current zone set point</description>
<category>heating</category>
<state readOnly="true" min="5.0" max="35" step="0.5" pattern="%.1f °C" />
</channel-type>
<channel-type id="permanentsetpoint">
<item-type>Number</item-type>
<label>Permanent set point override</label>
<description>Permanently overrides the set point of this zone</description>
<category>heating</category>
<state min="5.0" max="35" step="0.5" pattern="%.1f °C" />
</channel-type>
<channel-type id="cancelsetpoint">
<item-type>Switch</item-type>
<label>Cancel a set point override</label>
<description>Cancels any set point overrides of this zone, letting the zone follow schedule.</description>
<category>heating</category>
</channel-type>
<channel-type id="setpointstatus">
<item-type>String</item-type>
<label>Set point status</label>
<description>Current set point status</description>
<category>heating</category>
<state pattern="%s" readOnly="true">
<options>
<option value="PermanentOverride">Permanent override</option>
<option value="FollowSchedule">Follow schedule</option>
<option value="TemporaryOverride">Temporary override</option>
</options>
</state>
</channel-type>
</thing:thing-descriptions>
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<thing:thing-descriptions bindingId="evohome" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:thing="http://eclipse.org/smarthome/schemas/thing-description/v1.0.0" xsi:schemaLocation="http://eclipse.org/smarthome/schemas/thing-description/v1.0.0 http://eclipse.org/smarthome/schemas/thing-description-1.0.0.xsd">
<thing-type id="display" listed="false">
<supported-bridge-type-refs>
<bridge-type-ref id="account" />
</supported-bridge-type-refs>
<label>evohome Display</label>
<description>This represents the evohome control display.</description>
<channels>
<channel id="SystemMode" typeId="systemMode" />
</channels>
<config-description>
<parameter name="id" type="text" required="true" readOnly="true">
<label>ID</label>
<description>ID of the display</description>
</parameter>
<parameter name="name" type="text" required="false" readOnly="true">
<label>Name</label>
<description>Name of the display</description>
</parameter>
</config-description>
</thing-type>
<thing-type id="heatingzone" listed="false">
<supported-bridge-type-refs>
<bridge-type-ref id="account" />
</supported-bridge-type-refs>
<label>evohome Heating Zone</label>
<description>This represents the Evohome Heating Zone.</description>
<channels>
<channel id="Temperature" typeId="temperature" />
<channel id="CurrentSetPoint" typeId="currentsetpoint" />
<channel id="SetPointStatus" typeId="setpointstatus" />
<channel id="PermanentSetPoint" typeId="permanentsetpoint" />
<channel id="CancelSetPoint" typeId="cancelsetpoint" />
</channels>
<config-description>
<parameter name="id" type="text" required="true" readOnly="true">
<label>ID</label>
<description>ID of the zone</description>
</parameter>
<parameter name="name" type="text" required="false" readOnly="true">
<label>Name</label>
<description>Name of the zone</description>
</parameter>
</config-description>
</thing-type>
</thing:thing-descriptions>
36 changes: 36 additions & 0 deletions addons/binding/org.openhab.binding.evohome/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Evohome Binding
Bundle-SymbolicName: org.openhab.binding.evohome;singleton:=true
Bundle-Vendor: openHAB
Bundle-Version: 2.3.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ClassPath: .
Export-Package:
org.openhab.binding.evohome,
org.openhab.binding.evohome.handler
Import-Package:
com.google.common.collect,
com.google.gson,
com.google.gson.annotations,
org.apache.commons.lang,
org.eclipse.jdt.annotation;resolution:=optional,
org.eclipse.jetty.client,
org.eclipse.jetty.client.api,
org.eclipse.jetty.client.util,
org.eclipse.jetty.http,
org.eclipse.jetty.util.component,
org.eclipse.jetty.util.ssl,
org.eclipse.smarthome.config.core,
org.eclipse.smarthome.config.discovery,
org.eclipse.smarthome.core.library.types,
org.eclipse.smarthome.core.thing,
org.eclipse.smarthome.core.thing.binding,
org.eclipse.smarthome.core.thing.binding.builder,
org.eclipse.smarthome.core.thing.type,
org.eclipse.smarthome.core.types,
org.openhab.binding.evohome,
org.openhab.binding.evohome.handler,
org.osgi.framework,
org.slf4j
Service-Component: OSGI-INF/*.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="binding.evohome">
<implementation class="org.openhab.binding.evohome.internal.EvohomeHandlerFactory"/>
<service>
<provide interface="org.eclipse.smarthome.core.thing.binding.ThingHandlerFactory"/>
</service>
</scr:component>
119 changes: 119 additions & 0 deletions addons/binding/org.openhab.binding.evohome/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# evohome Binding

This binding integrates the Honeywell evohome system. It uses your Honeywell Total Connect Comfort account to access your locations and heating zones.

## Supported Things

The binding supports the following things:

* evohome Account
* evotouch control display
* Heating zones

### evohome Account

This thing functions as the bridge between all the other things. It contains your credentials and connects to the Honeywell web API.

### evotouch

This thing represents the central display controller. It is used to view and change the current system mode.

### Heating zone

The heating zone thing represents the evohome heating zone. It displays the current temperature, the temperature set point and the status of the set point. It also allows you to permanently override the current temperature set point as well as canceling any active overrides.

## Discovery

After setting up the evohome account, the evotouch and heating zones available to your account will be discovered after a manual scan.

## Binding Configuration

The evohome account needs to be configured with your username and password. This can be done via PaperUI or things file.

## Thing Configuration

Thing configuration is optional, it is easier to use discovery which will automatically add all your zones and displays to the inbox, once the account Thing is online.

To manually configure the account Thing in a things file you can use:

Bridge evohome:account:your_account_alias [ username="your_user_name", password="your_password" ]

Adding displays or zones can be done using this:

Bridge evohome:account:your_account_alias [ username="your_user_name", password="your_password" ]
{
display your_display_alias [ id="your_display_id_here" ]
heatingzone your_zone_alias [ id="your_zone_id_here" ]
}

You can define multiple displays and zones this way

## Channels

### account

None

### Display

| Channel Type ID | Item Type | Description |
|-----------------|-----------|--------------------------------------------------------------------------------------------------------------------|
| Mode | String | Allows to view or set the system mode. Supported values are: Auto, Auto, WithEco, Away, DayOff, HeatingOff, Custom |

### Zone

| Channel Type ID | Item Type | Description |
|-------------------|-----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Temperature | Number | Allows for viewing the current actual temperature of the zone. |
| CurrentSetPoint | Number | Allows for viewing the current temperature set point of the zone. |
| SetPointStatus | String | Allows for viewing the current set point mode of the zone. |
| PermanentSetPoint | Number | Allows for permanently overriding the temperature set point of the zone. |
| CancelSetPoint | Switch | Allowing for cancelling any active temperature overrides on the zone and allowing it to follow the active schedule. Activate by sending `ON` to the channel; it will auto-reset to `OFF`. Sending `OFF` has no effect. |

## Full Example

### demo.things

Bridge evohome:account:your_account_alias [ username="your_user_name", password="your_password" ]
{
display your_display_alias [ id="1234" ]
heatingzone your_zone_alias [ id="5678" ]
}


### demo.items

// evohome Display
String DemoMode { channel="evohome:display:your_account_alias:your_display_alias:SystemMode" }

// evohome Heatingzone
Number DemoZoneTemperature { channel="evohome:heatingzone:your_account_alias:your_zone_alias:Temperature" }
Number DemoZoneSetPointValue { channel="evohome:heatingzone:your_account_alias:your_zone_alias:CurrentSetPoint" }
String DemoZoneSetPointStatus { channel="evohome:heatingzone:your_account_alias:your_zone_alias:SetPointStatus" }
Number DemoZoneSetPointOverride { channel="evohome:heatingzone:your_account_alias:your_zone_alias:PermanentSetPoint" }
Switch DemoZoneSetPointCancel { channel="evohome:heatingzone:your_account_alias:your_zone_alias:CancelSetPoint" }

### demo.sitemap

sitemap evohome label="evohome Menu"
{
Frame label="evohome display" {
Selection label="[%s]" item=DemoMode mappings=[
"Auto"="Normal",
"AutoWithEco"="Eco",
"Away"="Away",
"DayOff"="Day Off",
"HeatingOff"="Off",
"Custom"="Custom"
]
}
Frame label="evohome heating zone" {
Text label="Temperature" item=DemoZoneTemperature
Text label="Set point" item=DemoZoneSetPointValue
Text label="Status" item=DemoZoneSetPointStatus
Setpoint label="Permanent override" item=DemoZoneSetPointOverride minValue=5 maxValue=35 step=0.5
Switch label="Cancel override" item=DemoZoneSetPointCancel
}
}

32 changes: 32 additions & 0 deletions addons/binding/org.openhab.binding.evohome/about.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>About</title>
</head>
<body lang="EN-US">
<h2>About This Content</h2>

<p>March 30, 2017</p>
<h3>License</h3>

<p>
The openHAB community makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
indicated below, the Content is provided to you under the terms and conditions of the
Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
For purposes of the EPL, &quot;Program&quot; will mean the Content.
</p>

<p>
If you did not receive this Content directly from the openHAB community, the Content is
being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
apply to your use of any object code in the Content. Check the Redistributor's license that was
provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
indicated below, the terms and conditions of the EPL still apply to any source code in the Content
and such source code may be obtained at <a href="http://www.openhab.org/">openhab.org</a>.
</p>

</body>
</html>
Loading

0 comments on commit 35e9e57

Please sign in to comment.