Git Product home page Git Product logo

lennoxs30's People

Contributors

anthonyfk avatar deviantintegral avatar hufman avatar hyperactivej avatar jrhubott avatar peterager avatar poldim avatar tnorman42 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

lennoxs30's Issues

Update configuration parameter "ip_address" to hosts

I was reading the last few PRs on local polling support (nice!), and it looks like the setting is validated to IP addresses only. Could it support hostnames too? For devices with integrations like this, I usually would set a static IP and hostname in my router.

I did check, and the thermostat isn't setting a hostname for itself in its DHCP request, unlike other devices like cameras that will often advertise a unique hostname.

Negotiate failed response code [502]

Logged these errors:

2021-06-09 13:29:14 ERROR (MainThread) [custom_components.lennoxs30.s30api_async] Retrieve Failed - Exception 
2021-06-10 04:36:07 ERROR (MainThread) [custom_components.lennoxs30.s30api_async] Negotiate failed response code [502] text [<!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>502 - Web server received an invalid response while acting as a gateway or proxy server.</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
 <div class="content-container"><fieldset>
  <h2>502 - Web server received an invalid response while acting as a gateway or proxy server.</h2>
  <h3>There is a problem with the page you are looking for, and it cannot be displayed. When the Web server (while acting as a gateway or proxy) contacted the upstream content server, it received an invalid response from the content server.</h3>
 </fieldset></div>
</div>
</body>
</html>
]
2021-06-10 04:36:18 ERROR (MainThread) [custom_components.lennoxs30.s30api_async] Negotiate failed response code [502] text [<html>
    <head>
        <title> Server Error </title>
    </head>
    <body>
        <font color =\"#aa0000\">
            <h2>Server Error.</h2>
        </font>

        There was an unexpected error in the request processing.
    </body>
</html>]
2021-06-10 04:41:28 ERROR (MainThread) [custom_components.lennoxs30.s30api_async] Negotiate failed response code [504] text [<html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
<hr><center>nginx</center>
</body>
</html>
]

I am using the NGINX SSL Proxy add-on.

Http 502 Cloud misses changes

When a local connection is established and a cloud connection is established. The cloud connection may not receive all messages and can become out of sync.

invalid password error

my password to login to https://www.lennoxicomfort.com/account/login contained an '&' and a '^' and I got errors stating my password was invalid. I moved the password from my secrets file to my config file and that did not fix anything. (tried restarting HA several times)

After verifying that I could login via a browser on my pc I changed my password (no special characters this time) and the custom component no longer had login issues

LennoxS30.state time attributes are UTC

Items like last reconnect time, last message time are in UTC and hence display in Lovelace as UTC times. These times should display in the TZ configured in HA

Integration Not Found

Latest HAOS (2021.6.1) with lennoxs30: and cloud credentials in configuration.yaml and the directory lennoxs30 in custom_components.
lennoxs30
s.

Range selection for cool only

I have my Lennox app set to cool only, but I’m HA I see 3 temperatures. Looks like a range selection and something else? Not sure how to fully explain it, but see pictures below.

In my case, I have 2 zones.

457FB10C-6554-44F3-9A99-92032DC3DEE3
778957CA-E9C8-43B5-B79E-E1419055137C
6D827CEA-E5AD-4269-863E-AB7183975BBA

Dehumidify Mode

  1. Turn on / off dehumidify via a switch
  2. Set the value of the parameters used to control the dehumidification.
  3. View the current value of the parameters as attributes of the switch.

Can't find app within Integrations

Hello,

I installed the repository through HACS and did a full reset of the server.

When go to Configuration -> Integrations I don't have a "Big orange + button" like the documentation mentions, but I do have a blue button for "+ Add Integration". When I click on that and search for Lennox nothing comes up.

Repository is showing as installed within HACS though.

API Metrics in Object

Purpose of API metrics is to track the statistics similar to what is done on Zwave. Metrics include:

  • Send Message Count
  • Receive Message Count
  • Send Error Count
  • Receive Error Count
  • HTTP_2xx
  • HTTP_4xx
  • HTTP_5xx
  • Reconnects
  • Disconnects
  • Last Receive Time
  • Last Send Time
  • Bytes In
  • Bytes Out

The API will have counters for these. Exposed in HA and could configured on a poll

Provide a unique id so the entity can be named.

Sensor object to track outdoor temperature

Outdoor temperature is reported when the compressor has the sensor. This data is captured by the API. Proposal:

Create a sensor called: sensor.{systemname}.outdoor_temperature
Unit of Measure: F
Unique ID: {systemguid}_ot

Zone Sensor Duplicates

The screenshot shows duplicate instances of the North zones. I've captured a log file as requested. The file is not sanitized, so would prefer to send to you directly.
02f6a2 is Master/North_Master. Inconsistent naming of the Thermostat and Zones itself may be the cause of your code generating two sensors.

lennoxdup

Showing heat/cool setpoints when in heat or cool only.

Found that in all 3 modes, heat, cool and heat/cool, the thermostat card will display 2 setpoints despite being in only a single mode. As well as showing 3 adjustable setpoints on the thermostat card settings page.

Settings card

Problems with v0.0.8 - climate.turn_on

Recently upgraded to v0.0.8 to implement and test the "away" and "cancel away mode" presets. Have found that
sending the command climate.set_preset_mode now results in unpredictable behaviour - either the S20 doesn't respond at all, or goes into preset modes not commanded. For example, sending the "away" preset mode might result in a "climate.turn_off", or sometimes takes the S20 out of preset mode and into basic heat/cool mode.
Once this has happened, other commands such as climate.turn_off fail to work or also result in unpredictable behaviour.
A restart of HA doesn't fix this.

Temperature Set Error

Moving set point causes the following error:

2021-06-07 17:04:53 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [140289994317200] setCoolSPF() missing 2 required positional arguments: 'scheduleId' and 'tempF'
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 185, in handle_call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1491, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1526, in _execute_service
    await handler.job.target(service_call)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 213, in handle_service
    await self.hass.helpers.service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 658, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 760, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 695, in _handle_entity_call
    await result
  File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 548, in async_service_temperature_set
    await entity.async_set_temperature(**kwargs)
  File "/config/custom_components/lennoxs30/climate.py", line 289, in async_set_temperature
    await self._system.setCoolSPF(sp)
TypeError: setCoolSPF() missing 2 required positional arguments: 'scheduleId' and 'tempF'

This is repeatable by moving temp set point up or down several degrees.

No data on startup - v0.0.8

Saw this today on start-up following an HA Core update:

2021-08-10 04:01:36 ERROR (MainThread) [custom_components.lennoxs30] configuration_initalization failed - no initial data received
2021-08-10 04:01:36 ERROR (MainThread) [custom_components.lennoxs30] async_setup: (S30Exception(...), 'configuration_initalization failed - no initial data received')

Sensor statistical issues in recorder

Seeing these database isues under Developer Tools -> Statistics. I'm running the MariaDB.

North_outdoor_temperature	sensor.north_outdoor_temperature	°F	recorder	The state class '' of this entity is not supported.
South_outdoor_temperature	sensor.south_outdoor_temperature	°F	recorder	The state class '' of this entity is not supported.
sensor.icomfort_s30_22eed8_current_temperature_2	sensor.icomfort_s30_22eed8_current_temperature_2	°F	recorder	There is no state available for this entity.
sensor.icomfort_s30_22eed8_current_humidity	sensor.icomfort_s30_22eed8_current_humidity	%	recorder	There is no state available for this entity.
sensor.icomfort_s30_02f6a2_current_temperature_2	sensor.icomfort_s30_02f6a2_current_temperature_2	°F	recorder	There is no state available for this entity.
sensor.icomfort_s30_02f6a2_current_humidity	sensor.icomfort_s30_02f6a2_current_humidity	%	recorder	There is no state available for this entity.

Create an energy sensor to represent HVAC power usage

As part of the local API, clients can request advanced diagnostic data from the HVAC controller, and one of the data points includes energy usage of the compressor. With the new Energy dashboard in recent Home Assistant versions, it would be nifty to enable the HVAC system to show up in the energy usage dashboard.

I believe it will involve the following work:

  • Adding a config option to configure lennoxs30api to enable diagnostic mode
  • Parsing the diagnostics data to save the current power information
  • Building a new DEVICE_CLASS_POWER entity to provide that information to Home Assistant
  • Documenting the integration configuration to convert this power information to the Total KWh Used, which can then be added to the Energy Dashboard

Support Local LAN connection

The API version 0.1.0 now support local lan connections to the S30.

Initially this will support a single S30.

0.1.3 - Config Flow - exception when adding integration

Starting with an empty project with lennox custom component installed. Pick add integration, select Lennox S30, this exception occurs.

Exception has occurred: TypeError
list indices must be integers or slices, not str
File "/home/pete/core/homeassistant/helpers/data_entry_flow.py", line 44, in _prepare_result_json
data["data_schema"] = voluptuous_serialize.convert(
File "/home/pete/core/homeassistant/components/config/config_entries.py", line 104, in _prepare_config_flow_result_json
return prepare_result_json(result)
File "/home/pete/core/homeassistant/components/config/config_entries.py", line 134, in _prepare_result_json
return _prepare_config_flow_result_json(result, super()._prepare_result_json)
File "/home/pete/core/homeassistant/helpers/data_entry_flow.py", line 85, in post
result = self._prepare_result_json(result)
File "/home/pete/core/homeassistant/components/http/data_validator.py", line 62, in wrapper
result = await method(view, request, *args, **kwargs)
File "/home/pete/core/homeassistant/components/config/config_entries.py", line 130, in post
return await super().post(request)
File "/home/pete/core/homeassistant/components/http/view.py", line 133, in handle
result = await result
File "/home/pete/core/homeassistant/components/http/auth.py", line 138, in auth_middleware
return await handler(request)
File "/home/pete/core/homeassistant/components/http/ban.py", line 78, in ban_middleware
return await handler(request)
File "/home/pete/core/homeassistant/components/http/request_context.py", line 24, in request_context_middleware
return await handler(request)
File "/home/pete/core/homeassistant/components/http/forwarded.py", line 98, in forwarded_middleware
return await handler(request)
File "/home/pete/core/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware
return await handler(request)
File "/home/pete/core/venv/lib/python3.8/site-packages/aiohttp/web_middlewares.py", line 119, in impl
return await handler(request)
File "/home/pete/core/venv/lib/python3.8/site-packages/aiohttp/web_app.py", line 504, in _handle
resp = await handler(request)
File "/home/pete/core/venv/lib/python3.8/site-packages/aiohttp/web_protocol.py", line 430, in _handle_request
resp = await request_handler(request)
File "/home/pete/.pyenv/versions/3.8.6/lib/python3.8/asyncio/events.py", line 81, in _run
self._context.run(self._callback, *self._args)
File "/home/pete/.pyenv/versions/3.8.6/lib/python3.8/asyncio/base_events.py", line 1851, in _run_once
handle._run()
File "/home/pete/.pyenv/versions/3.8.6/lib/python3.8/asyncio/base_events.py", line 570, in run_forever
self._run_once()
File "/home/pete/.pyenv/versions/3.8.6/lib/python3.8/asyncio/base_events.py", line 603, in run_until_complete
self.run_forever()
File "/home/pete/core/homeassistant/runner.py", line 121, in run
return loop.run_until_complete(setup_and_run_hass(runtime_config))
File "/home/pete/core/homeassistant/main.py", line 318, in main
exit_code = runner.run(runtime_conf)
File "/home/pete/core/homeassistant/main.py", line 331, in
sys.exit(main())
File "/home/pete/.pyenv/versions/3.8.6/lib/python3.8/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/home/pete/.pyenv/versions/3.8.6/lib/python3.8/runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/home/pete/.pyenv/versions/3.8.6/lib/python3.8/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/home/pete/.pyenv/versions/3.8.6/lib/python3.8/runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,

PII in Log Files

There is PIA in the log files, that should be obfuscated. Includes:

  • email address
  • house address
  • tokens

Recovery after token expiration

When the authentication token expires, the integration needs to reinitialize. Right now it does not recover from this failure and requires an HA restart.

Local Access Alpha - S30 rebooting

When I set the ip_address to access the S30 locally, I've noticed the s30 spontaneously rebooting twice now.

I'm not sure how many times it's actually rebooted, since I'm usually not watching the s30 during the day, but twice the few times I've been looking at it seems high.

My s30 has v 03.81.0777 software.

Has anyone else seen this?

Schedule override with Time

When creating a schedule override in the Lennox App, you are presented with 3 options:

  • Until next schedule period’
  • For a duration (e.g. 1 hour, 2 hours)
  • Until cancelled

Currently the integration uses the first setting. The request is to support the second option also.

Provide support for Fresh Air Ventilation Damper

The Ventilation command opens a damper to bring in fresh outside air (assuming the outside air is "fresh" of course. :)) and turns on the fan high to circulate through the house. This is effectively like a "whole house fan" without having to open windows or doors.

Celsius has Different precision or calculation of climate temperatures

I have my themostat configured via HomeKit, but unfortunately that doesn't allow changing the themostat presets. This does! 🙌

I noticed different renderings of the temperature:

IMG_4090

Display Current Temperature Low Point High Point
Thermostat 23.0 16.5 23.0
HomeKit Card 23 16.5 23.0
lennoxs30 Card 23 17 23
lennoxs30 Detail 23 16.7 22.8

The detail card makes me think there's some sort of rounding error and that somewhere along the way there's a Fahrenheit to Celsius conversion? Either way, I'd expect the card and detail view to be consistent, and given that the themostat indicates one tenth of a degree of precision I'd expect that to flow all the way through.

Perfect Mode Support

Lennox has a Perfect Mode which allows a single setpoint to be used to control both heating and cooling.

When the S30 is in this mode, the integration is unable to report or control the setpoint.

Local Lan - Filter unneeded updates to HA

With a local connection, the S30 send zone status and outdoor temp frequently regardless of whether it changes or not. With the cloud connection only changes were sent. So to avoid lots of entity updates in HA, the integration / api will check for changes and only trigger updates when state has changed.

Add support for auxiliary heat.

Some Lennox HVAC systems have auxiliary heat as a backup / augmentation for the heat pump, hence it would be helpful to know when the aux system is running. The request is to make this data available.

Running multiple integration causes lost data

If the integration is run in two separate HA systems, using the same login, then data changes may be missed.

Root cause is Lennox has a single queue for application_id and email. Right now the application ID is hard coded.

Error while setting up lennoxs30 platform for sensor

Following update and restart to HA Core 2021.7.3:

2021-07-16 06:42:54 ERROR (MainThread) [homeassistant.components.sensor] Error while setting up lennoxs30 platform for sensor
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 250, in _async_setup_platform
    await asyncio.shield(task)
  File "/config/custom_components/lennoxs30/sensor.py", line 42, in async_setup_platform
    sensor = S30OutdoorTempSensor(hass, manager, system)
  File "/config/custom_components/lennoxs30/sensor.py", line 65, in __init__
    self._myname = self._system.name + "_outdoor_temperature"
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
2021-07-16 06:43:25 ERROR (MainThread) [lennoxs30api.s30api_async] executeOnUpdateCallback - failed 'S30OutdoorTempSensor' object has no attribute '_myname'
2021-07-16 06:43:25 ERROR (MainThread) [lennoxs30api.s30api_async] executeOnUpdateCallback - failed 'S30OutdoorTempSensor' object has no attribute '_myname'
2021-07-16 06:43:25 ERROR (MainThread) [lennoxs30api.s30api_async] executeOnUpdateCallback - failed 'S30OutdoorTempSensor' object has no attribute '_myname'
2021-07-16 06:43:25 ERROR (MainThread) [lennoxs30api.s30api_async] executeOnUpdateCallback - failed 'S30OutdoorTempSensor' object has no attribute '_myname'

Errors are continuous and varied:

2021-07-16 06:47:40 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 395, in async_update_ha_state
    f"No entity id specified for entity {self.name}"
  File "/config/custom_components/lennoxs30/climate.py", line 152, in name
    return self._myname
AttributeError: 'S30Climate' object has no attribute '_myname'

Subsequent restart produced no errors. I have to learn to restart several times before reporting errors I guess :-)

Damper Position Reporting Error

lennoxs30 reports all zone dampers at 100 on multi-zone system when dampers should report as zero for zones that are Off. For the single zone system, damper reports as zero as no dampers are installed.

Configurable message interval

By default the integration checks for messages from Lennox every 10 seconds during normal operation and every 1 second during fast operation.

fast operation is used after commands are sent to get the result back faster. For example, changing the state to Cool from thermostat card.

Provide configuration.yaml parameters to adjust these. Change defaults to 60 seconds for normal poll.

Internally determine the best way to manage the switch from normal to fast and back to normal poll modes.

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.