Giter Site home page Giter Site logo

org.openhab.binding.icomforts30's Introduction

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:

  1. Thermostat system (currently under development, only System Away Channels currently supported for the thing)
  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.

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)
OutsideTemperature - Current outside temperature (From sensor or internet, Read Only)

Zone thing:

Temperature - Current zone temperature (Read Only)
Humidity - Current zone humidity (Read Only)
SystemStatus - Current system status (Read Only)
HumidityStatus - Current humidity status (Read Only)
OperationMode - Current operation mode (Read / Write)
HumidityMode - Current humidity mode (Read / Write)
FanStatus - Current fan status (Read Only)
FanMode - Current fan mode (Read / Write)
CoolSetPoint - Cool set point for the zone (Read / Write)
HeatSetPoint - Heat set point for the zone (Read / Write)
SetPoint - Heat or Cool set point for the zone in single set point mode (Read / Write)
HumiditySetPoint - Humidity set point for the zone (Read / Write)
DehumidificationSetPoint - Dehumidification set point for the zone (Read / Write)

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_HumidityStatus "Humidity Status [%s]" <heating> (gWholeHouse) {channel="icomforts30:zone:knplennoxs30:s30_zone_0:HumidityStatus"}
String iComfortS30HeatingZone_0_HumididtyMode "Humidity Mode [%s]" <heating> (gWholeHouse) {channel="icomforts30:zone:knplennoxs30:s30_zone_0:HumidityMode"}
Switch iComfortS30HeatingZone_0_FanStatus "Fan Status [%s]" <fan> (gWholeHouse) {channel="icomforts30:zone:knplennoxs30:s30_zone_0:FanStatus"}
String iComfortS30HeatingZone_0_FanMode "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"}
Number:Dimensionless iComfortS30HeatingZone_0_HumiditySetPoint "Humidity Set Point [%.1f %unit%]" <humidity> (gWholeHouse) {channel="icomforts30:zone:knplennoxs30:s30_zone_0:HumiditySetPoint"}
Number:Dimensionless iComfortS30HeatingZone_0_DehumidificationSetPoint "Dehumidification Set Point [%.1f %unit%]" <humidity> (gWholeHouse) {channel="icomforts30:zone:knplennoxs30:s30_zone_0:DehumidificationSetPoint"}
//System items:
String iComfortS30System_AwayMode "Away Mode [%s]" <heating> (gWholeHouse) {channel="icomforts30:system:knplennoxs30:s30_system:AwayMode"}
Number:Temperature iComfortS30System_Outside_Temperature "Outside Temperature [%.1f %unit%]" <temperature> (gWholeHouse, gTemperatureSensors) {channel="icomforts30:system:knplennoxs30:s30_system:OutsideTemperature"}

Sitemap example:

Text item=iComfortS30HeatingZone_0_Temperature
Text item=iComfortS30HeatingZone_0_Humidity
Text item=iComfortS30HeatingZone_0_SystemStatus
Text item=iComfortS30HeatingZone_0_HumidityStatus
Text item=iComfortS30HeatingZone_0_FanStatus
Selection  item=iComfortS30HeatingZone_0_OperationMode mappings=[HVAC_OFF=System is idle", HVAC_HEAT="System is heating", HVAC_COOL="System is cooling", HVAC_EMERGENCY_HEAT="System is emergency heating", HVAC_HEAT_COOL="System is heating or cooling"]
Selection  item=iComfortS30HeatingZone_0_HumididtyMode
Switch item=iComfortS30System_AwayMode mappings=[AWAY="Away", HOME="Home"]
Selection  item=iComfortS30HeatingZone_0_FanMode mappings=[FAN_AUTO="Auto", FAN_ON="On", FAN_CIRCULATE="Circulate"]
Setpoint item=iComfortS30HeatingZone_0_CoolSetPoint
Setpoint item=iComfortS30HeatingZone_0_HeatSetPoint
Setpoint item=iComfortS30HeatingZone_0_HumiditySetPoint
Setpoint item=iComfortS30HeatingZone_0_DehumidificationSetPoint

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

org.openhab.binding.icomforts30's People

Contributors

kpanchen avatar

Stargazers

David Giller avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

org.openhab.binding.icomforts30's Issues

Feature Request - ZoneHoldExists and CancelZoneHold

Future feature request ...

When the Lennox system uses schedules, a change to the setpoint causes a temporary hold until the hold is cleared or the next scheduled event occurs. I'd like an OH Channel for ZoneHoldExists and a mechanism to cancel the zone hold. This keeps things simple and allows the use of built-in Lennox features.

Another approach that makes this a bit more complicated is to stop using Lennox schedules. Use openhab rules and calendar to manage the schedule to change the OperationMode, SetPoint, and FanMode directly. When the schedules are not used, there is no hold placed on setpoint changes.

Items Not Updating

I've recently implemented this binding and when I change the setpoint Item in the sitemap, I can see the thermostat change but the Item reverts back and is out of sync. Sometimes when the zone heat cycle is active, the status Item says idle. I'm wondering if there's some update timing issue.

Ver 4.0.0 Missing

I am excited to try the new version. Thanks for making the changes. Much appreciated.
It looks like the jar asset listed under your release of version 4.0.0 actually points to version 30-3.4.0.

New Channels Not Appearing

I updated the jar file, but the new channels did not appear. I restarted the binding, and still no new channels.
So far, the binding seems to stay connected and capture events from the thermostat. I will do further testing.

Thanks again for the update. I am excited to get this interface working reliably. It's a great improvement.

3.4.3 Feedback

Thank you so much for all your work on this. I really appreciate the progress and effort you have put into this.

Here's my experience with this so far:
I uninstalled the previous version, installed 3.4.3 in the addon directory, restarted openhab, and checked habopen to ensure all is ok.
Habopen

All seems to be working.

I looked at the channel list but did not see the new channels (Humidity mode, Humidity Status, Outside temperature).
Upstairs channels
Downstairs channels
System channels

I will test connectivity and responsiveness and report finding.

Feature Request - Dehumidify/Circulate State

I've been using this binding for a few months. Seems to work well and although I don't adjust the system very often, I'm happy to see the system's state in OH3.

One thing I've noticed is when the system is in "dehumidify" or "fan circulation" mode, the system status is still showing as "system is idle". I was hoping that since I can see these in the app, they would somehow be available via the API. Would it be possible to expand on the system status to add these states?

Thanks for all the work on this!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.