-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
60 changed files
with
6,596 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
This content is produced and maintained by the openHAB project. | ||
|
||
* Project home: https://www.openhab.org | ||
|
||
== Declared Project Licenses | ||
|
||
This program and the accompanying materials are made available under the terms | ||
of the Eclipse Public License 2.0 which is available at | ||
https://www.eclipse.org/legal/epl-2.0/. | ||
|
||
== Source Code | ||
|
||
https://github.com/openhab/openhab-addons |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
# iComfort S30 Binding | ||
|
||
_This is an OpenHAB 3 Binding for Lennox iComfort S30/E30/M30 system / thermostat (Note this will not work with older system WiFi)._ | ||
|
||
## Supported Things | ||
|
||
This binding supports two things:<br /> | ||
1. Thermostat system (currently under development, only System Away Channels currently supported for the thing)<br /> | ||
2. Heating / Cooling Zone (4 zones supported). | ||
|
||
|
||
## Discovery | ||
|
||
(Not available yet, on ToDo list). | ||
|
||
## Binding Configuration | ||
|
||
No binding configuration is required. | ||
|
||
## Thing Configuration | ||
|
||
Configuration of the Bridge thing is required: | ||
|
||
hostname - IP address or hostname of the thermostate controller on the local network.<br /> | ||
|
||
Optional parameters: | ||
port - must be set to default 443 | ||
protocol - must be set to default https | ||
useSelfSignedCertificate - must be set to default true | ||
refreshInterval - default set to 30 seconds. | ||
initialRefreshDelay - default set to 30 seconds, delay to allow binding to get required data from the system (this is only to avoid errors in the log, possible will be changed in the future) | ||
pumpInterval - default set to 5 seconds, how often to request data from the system. | ||
appID - application connection identifier, if not provided this parameter will be generated on the first execution and will be the same per running binding (Note it is prefereble to keep this ID, in case of reinstall re-use it and provide in textual configuration or GUI. Important: do not include it on the first run, if you do textual configuration copy this from GUI and provide in the .thing file) | ||
|
||
``` | ||
Bridge icomforts30:thermostat:demothermostat "Demo name" @ "Demo location" [ hostname="192.168.xxx.xxx", appID="mappxxxxxxxxxxxxxxxxxxxxxxxx" ] {} | ||
``` | ||
|
||
No configuration required for System thing: | ||
|
||
``` | ||
Thing system s30_system "iComfort S30 System" @ "Demo location" | ||
``` | ||
|
||
Configuration of Zone thing is required: | ||
|
||
id = zone id, number from 0 to 3 (Note: for a single zone system id must be set to 0) | ||
|
||
Optional parameter: | ||
name = "Name of the zone" - (Only to identify zone in the GUI) | ||
|
||
``` | ||
Thing zone s30_zone_0 "iComfort S30 Heating Zone 0" @ "Demo location" [ id = 0, name = "Main Zone" ] | ||
``` | ||
|
||
## Channels | ||
|
||
System thing: | ||
|
||
AwayMode - Current away status (Read / Write)<br /> | ||
|
||
Zone thing: | ||
|
||
Temperature - Current zone temperature (Read Only)<br /> | ||
Humidity - Current zone humidity (Read Only)<br /> | ||
SystemStatus - Current system status (Read Only)<br /> | ||
OperationMode - Current operation mode (Read / Write)<br /> | ||
FanMode - Current fan mode (Read / Write)<br /> | ||
CoolSetPoint - Cool set point for the zone (Read / Write)<br /> | ||
HeatSetPoint - Heat set point for the zone (Read / Write)<br /> | ||
SetPoint - Heat or Cool set point for the zone in single set point mode (Read / Write)<br /> | ||
|
||
|
||
## Full Example | ||
|
||
Thing example: | ||
|
||
``` | ||
Bridge icomforts30:thermostat:demothermostat "Demo name" @ "Demo location" [ hostname="192.168.xxx.xxx" ] { | ||
Thing system s30_system "iComfort S30 System" @ "Demo location" | ||
Thing zone s30_zone_0 "iComfort S30 Heating Zone 0" @ "Demo location" [ id = 0, name = "Main Zone" ] | ||
} | ||
``` | ||
|
||
Items example: | ||
|
||
``` | ||
//Zone items | ||
Number:Temperature iComfortS30HeatingZone_0_Temperature "Temperature [%.1f %unit%]" <temperature> (gWholeHouse, gTemperatureSensors) {channel="icomforts30:zone:knplennoxs30:s30_zone_0:Temperature"} | ||
Number:Dimensionless iComfortS30HeatingZone_0_Humidity "Humidity [%d %unit%]" <humidity> (gWholeHouse, gHumiditySensors) {channel="icomforts30:zone:knplennoxs30:s30_zone_0:Humidity"} | ||
String iComfortS30HeatingZone_0_SystemStatus "System Status [%s]" <heating> (gWholeHouse) {channel="icomforts30:zone:knplennoxs30:s30_zone_0:SystemStatus"} | ||
String iComfortS30HeatingZone_0_OperationMode "Operation Mode [%s]" <heating> (gWholeHouse) {channel="icomforts30:zone:knplennoxs30:s30_zone_0:OperationMode"} | ||
String iComfortS30HeatingZone_0_FanModeStatus "Fan Mode [%s]" <fan> (gWholeHouse) {channel="icomforts30:zone:knplennoxs30:s30_zone_0:FanMode"} | ||
Number:Temperature iComfortS30HeatingZone_0_CoolSetPoint "Cool Set Point [%.1f %unit%]" <temperature> (gWholeHouse) {channel="icomforts30:zone:knplennoxs30:s30_zone_0:CoolSetPoint"} | ||
Number:Temperature iComfortS30HeatingZone_0_HeatSetPoint "Heat Set Point [%.1f %unit%]" <temperature> (gWholeHouse) {channel="icomforts30:zone:knplennoxs30:s30_zone_0:HeatSetPoint"} | ||
``` | ||
|
||
``` | ||
//System items: | ||
String iComfortS30System_AwayModeStatus "Away Mode [%s]" <heating> (gWholeHouse) {channel="icomforts30:system:knplennoxs30:s30_system:AwayMode"} | ||
``` | ||
|
||
Sitemap example: | ||
|
||
``` | ||
Text item=iComfortS30HeatingZone_0_Temperature | ||
Text item=iComfortS30HeatingZone_0_Humidity | ||
Text item=iComfortS30HeatingZone_0_SystemStatus | ||
Selection item=iComfortS30HeatingZone_0_OperationMode mappings=[HVAC_OFF=System is idle", HVAC_HEAT="System is heating", HVAC_COOL="System is cooling", WAITING="System is waiting", HVAC_EMERGENCY_HEAT="System is emergency heating", HVAC_HEAT_COOL="System is heating or cooling"] | ||
Switch item=Thermostat_Away_Mode mappings=[AWAY_ON="Away", AWAY_OFF="Not Away"] | ||
Selection item=Thermostat_Fan_Mode mappings=[FAN_AUTO="Auto", FAN_ON="On", FAN_CIRCULATE="Circulate"] | ||
Setpoint item=Thermostat_Cool_Point | ||
Setpoint item=Thermostat_Heat_Point | ||
``` | ||
|
||
## Foot note! | ||
|
||
This binding is based on my previous binding for iComfortWiFi thermostat wich in turn was based on Nest binding and EVO Home binding, all the credits for original code goes to the original authors.<br /> | ||
I also used a lot of reversed engineering done by other programmers on Internet and I have to Thank them here! | ||
In particularly Python code created by PeterRager, without his work this wouldn't be possible, all the credits goes to him, his original code available here: | ||
https://github.com/PeteRager/lennoxs30api |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
|
||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<parent> | ||
<groupId>org.openhab.addons.bundles</groupId> | ||
<artifactId>org.openhab.addons.reactor.bundles</artifactId> | ||
<version>3.4.0-SNAPSHOT</version> | ||
</parent> | ||
|
||
<artifactId>org.openhab.binding.icomforts30</artifactId> | ||
|
||
<name>openHAB Add-ons :: Bundles :: icomforts30 Binding</name> | ||
|
||
</project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<features name="org.openhab.binding.icomforts30-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0"> | ||
<repository>mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features</repository> | ||
|
||
<feature name="openhab-binding-icomforts30" description="icomforts30 Binding" version="${project.version}"> | ||
<feature>openhab-runtime-base</feature> | ||
<bundle start-level="80">mvn:org.openhab.addons.bundles/org.openhab.binding.icomforts30/${project.version}</bundle> | ||
</feature> | ||
</features> |
27 changes: 27 additions & 0 deletions
27
src/main/java/org/openhab/binding/icomforts30/internal/RunnableWithTimeout.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
/** | ||
* Copyright (c) 2010-2022 Contributors to the openHAB project | ||
* | ||
* See the NOTICE file(s) distributed with this work for additional | ||
* information. | ||
* | ||
* This program and the accompanying materials are made available under the | ||
* terms of the Eclipse Public License 2.0 which is available at | ||
* http://www.eclipse.org/legal/epl-2.0 | ||
* | ||
* SPDX-License-Identifier: EPL-2.0 | ||
*/ | ||
|
||
package org.openhab.binding.icomforts30.internal; | ||
|
||
import java.util.concurrent.TimeoutException; | ||
|
||
/** | ||
* Provides an interface for a delegate that can throw a timeout | ||
* | ||
* @author Konstantin Panchenko - Initial contribution | ||
* | ||
*/ | ||
public interface RunnableWithTimeout { | ||
|
||
public abstract void run() throws TimeoutException; | ||
} |
Oops, something went wrong.