Skip to content

Commit

Permalink
Merge pull request #158 from PeteRager/0.2.7-dev
Browse files Browse the repository at this point in the history
Add sibling support
  • Loading branch information
PeteRager authored May 22, 2022
2 parents 484dfd8 + 15c9563 commit 7c52bf1
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 4 deletions.
6 changes: 5 additions & 1 deletion README.MD
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ In addition the following extra attributes are provided, to allow for a more det
| fan | Indicates if the fan is currently running. Note: this is true only when the fan is running and there is no active HVAC action (cooling, heating, etc.) |
| heatCoast | This will only appear in non-zoning systems and it indicates the system is set to a single setpoint mode, the system was in heating mode and has turned off to coast to the desired temperature |
| humidityMode | The humidity mode that is active - **Humidify**, **Dehumidify**, or **Off** |
| humidityOperation | Current active humidity operation - **Humidifying**, **Drying** or **Off** |
| humidityOperation | Current active humidity operation - **Humidifying**, **Drying** or **Off** |
| ssr | Not known what this attribute indicates. If you know let us know! |
| tempOperation | Current active temperature operation heating or cooling |
| ventilation | Indicates if external ventilation is currently active on this zone |
Expand Down Expand Up @@ -257,10 +257,14 @@ The entity also has a set of attributes to provide diagnostic data:
| last_error_time | DateTime | Time of the last error response |
| last_reconnect_time | DateTime | Time of the last reconnect or the time of the initial connect |
| last_message_time | DateTime | Time of the last message from Lennox Cloud. How often messages are received is based on how often data is changing in the thermostat. For example, a temperature change, a setpoint change will cause a message to be sent. If nothing is changing nothing will be sent |
| sender_message_drop | int | Number of messages dropped due to invalid sender. This should be zero. Please check error log. |
| sibling_message_drop | int | Number of messages dropped from a sibling S30. S30s can be chained together to create a larger system. When this occurs each S30 also sends messages from the other S30. The integration drops these messages are they are not needed. |
| sysUpTime | int | Number of seconds the S30 has been running since last reboot. Note: for cloud connections this is updated once at startup. For local connections this updates every minute. |
| diagLevel | int | Current Diagnostic Level of the S30. By default this is zero, if using the power diagnostics this should be 1 or 2 |
| softwareVersion | string | Current software version of the S30 |
| hostname | string | The hostname used by this connection or None if a cloud connection |
| sibling_id | string | The ID of the sibling or None if no sibling |
| sibling_ip | string | The IP address of the sibling or None if no sibling |

## sensor for Zone Temperature and Humidity

Expand Down
5 changes: 4 additions & 1 deletion custom_components/lennoxs30/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
EC_UNAUTHORIZED,
S30Exception,
s30api_async,
lennox_system,
)
import voluptuous as vol
from .const import (
Expand Down Expand Up @@ -421,12 +422,14 @@ def getMetricsList(self):
# TODO these are at the individual S30 level, when we have a device object we should move this there
systems = self._api.getSystems()
if len(systems) > 0:
system: s30api_async.lennox_system = self._api.getSystems()[0]
system: lennox_system = self._api.getSystems()[0]
if system != None:
list["sysUpTime"] = system.sysUpTime
list["diagLevel"] = system.diagLevel
list["softwareVersion"] = system.softwareVersion
list["hostname"] = self._ip_address
list["sibling_id"] = system.sibling_identifier
list["sibling_ip"] = system.sibling_ipAddress
return list

async def s30_initialize(self):
Expand Down
4 changes: 2 additions & 2 deletions custom_components/lennoxs30/manifest.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"domain": "lennoxs30",
"name": "Lennox S30/E30",
"version": "0.2.6",
"version": "0.2.7",
"documentation": "https://github.com/PeteRager/lennoxs30/blob/master/README.MD",
"issue_tracker" : "https://github.com/PeteRager/lennoxs30/issues",
"dependencies": [],
"requirements": ["lennoxs30api==0.1.8"],
"requirements": ["lennoxs30api==0.1.9"],
"codeowners": ["@PeteRager"],
"iot_class": "local_polling",
"config_flow": true
Expand Down
14 changes: 14 additions & 0 deletions docs/sibling.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Lennox S30 Sibling Configuration

Sibling Configuration occurs when there is more than one S30 controller on your network. Typically, each S30 is running it's own furnace / heatpump. And, the thermostat panels allow you to control the zones on either S30.

When in this mode messages are routed between the S30s. If you have received the warning message "processMessage dropping message from sibling [{sysId}] for system [{system.sysId}]", this means the integration has received a message the propogated from one S30 to the other and then to the integration and has dropped the message. There is no harm in the message being dropped. However, this does mean increased network load and increased load on the S30 and your connection to Lennox Cloud.

This condition does not alway occur and we are still trying to determine when / why this happens, so if it does please open an issue. Possible causes of this condition:

- Using the same application_id on both integrations. You may want to change one of the integrations configuration from the default **homeassistant** to **ha_1** or some other unique string.
- Having diagnostics enabled

Or perhaps, using the thermostats to control the other zones.

As we find more information we will keep this topic up to date.

0 comments on commit 7c52bf1

Please sign in to comment.