iprak / sensi Goto Github PK
View Code? Open in Web Editor NEWHomeAssistant integration for Sensi thermostat
License: MIT License
HomeAssistant integration for Sensi thermostat
License: MIT License
Updated my install and now I'm getting this error. I'm not sure what I need to install.
Setup failed for custom integration 'sensi': Requirements for sensi not found: ['websockets=12.0'].
I've unsuccessfully tried using your updated instructions, which are not entirely clear.
When trying to re-install the Home Assistant integration, I get the following prompt:
"Set up Sensi integration. Login with yout (sic) mobile app credentials."
Username: _______________________
Password: ________________________
Can you please be more specific about what goes where? I've tried using my email address in the username field with the "refresh_token" value in the password field. Alternately, if tried the "user_id" value listed in the developer tools window further down from where the refresh_token is. Neither option works.
Thanks!
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 354, in _async_refresh
self.data = await self._async_update_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/sensi/coordinator.py", line 643, in _async_update_data
self._setup_headers(await refresh_access_token(self.hass))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/sensi/auth.py", line 161, in refresh_access_token
result = await _get_new_tokens(hass, refresh_token)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/sensi/auth.py", line 81, in _get_new_tokens
raise SensiConnectionError from err
TypeError: SensiConnectionError.init() missing 1 required positional argument: 'message'
Hey this looks like a really cool project and excited to see HA integration for sensi which is strangely lacking. I've seen reports of ppl connecting the sensi to HA using HomeKit protocol. I was going to give it a shot when I found this project and now I'm curious if y'all have tried that path vs having to reverse engineer the App? Does HomeKit option no longer work or have limited features etc
PS I'll def try installing this on my HA. Thanks for you work!
Hi, thank you for this integration! Is there anyway to get the current status of the thermostat (heating/cooling/idle)? I want to use the status in automations, but I didn't see any entities related to status, only the mode.
The control for temperature appears to be all the way to the end of the range when it’s set for 77 degrees F. I can easily set it colder to 70F but then when I move it the other way 75F is the warmest it will go. I can’t get back to 77F where I started. It’s like it doesn’t know what the full range should be. It’s artificially limiting the range. This is in cooling mode on a Sensi classic, not the touch screen model.
After installation of the integration using HACS and then adding the integration on home assistant, I receive the error :
Config flow could not be loaded: {"message":"Invalid handler specified"}
Is it possible to add an auxiliary heat mode option.?
Hi,
I use this addon:
https://github.com/nielsfaber/scheduler-card
I noticed that with sensi 1.2.3, schedules would initially start, then 30 seconds later the unit would turn off. I downgraded to 1.2.2 and now the unit doesn't turn off after 30 seconds, which is good.
I am seeing that the set point from scheduler doesn't always make it to the thermostat.
Do you know if the scheduler card is compatible with the sensi addon?
Thanks.
Hi,
With some problems I'm seeing, I just tried re-installing the addon. I can't login anymore. It says invalid credentials. I am using the credentials to log into the mobile app. I'm stuck.
The purpose of the heating max setpoint is to prevent wasting money by not allowing heating to a higher temperature than appropriate. This limit should not be applied to the cooling mode. There is nothing wrong with (and no energy is wasted) setting the thermostat warmer when in cooling mode. But this integration incorrectly prevents the cooling mode from being set warmer than this limit.
The reverse is also the same: The purpose of the cooling min setpoint is to prevent wasting energy by not allowing the operator to set the air conditioning to an unreasonable cold temperature. But this limit should not be enforced in heating mode. The operator should be allowed to heat to a colder temperature- the low limit for heating should be 45 degrees F. But this integration is preventing the operator from setting the heating temperature to below this higher limit. Meaning you can’t heat to 50 degrees F. But this should be allowed. The cooling min setpoint should have no impact on heating.
The heating max setpoint should have no impact on cooling.
Please test this inside the Sensi app and you will see what I’m describing is accurate.
Changing settings in home assistant doesn't stick... it reverts back to what it was, most of the time. Do I need to do anything else to fix this?
Awesome project, by the way.
Thanks.
Is there any chance you could make it so we can link multiple Sensi thermostats. So if i change the temp on one, the other one changes as well to match it? I have a spare sensi classic, and would like to have it on the wall downstairs and just run it off batteries and not wired to the HVAC. And spending $ each month on Sensi plan isn't something I want or anyone should do.
Suddenly, the sensi integration is unable to authenticate. I tried to setup a new instance and still get an "invalid credentials" error. I am able to login to the sensi app with those same credentials. Maybe a auth token issue?
I have 4 Sensi in my house. 3 are for heating, 1 for cooling.
The cooling supports:
_attr_hvac_modes = [
HVACMode.COOL,
HVACMode.OFF,
]
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.FAN_MODE
)
_attr_fan_modes = [SENSI_FAN_AUTO, SENSI_FAN_ON]
Heating however only supports (it's baseboard heating with hot water boiler):
_attr_hvac_modes = [
HVACMode.HEAT,
HVACMode.OFF
]
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE
)
I manually patched your code to support that.
I remember there is a way to detect if heating and/or cooling is supported, I just don't remember how.
So my current patch is to switch between those 2 sets by checking the name of my thermostat.
Obviously that is not a generic solution. And I have to patch your code every time.
But it is rather annoying to see modes that are not supported.
Happy to help implement if needed.
Gettting this added would be AMAZING!
Used update button, then restarted home assistant with Developer tools. After seeing the error, also restarted HA with system menu with same result.
Logger: homeassistant.setup
Source: setup.py:213
First occurred: 9:56:19 PM (1 occurrences)
Last logged: 9:56:19 PM
Setup failed for custom integration sensi: Unable to import component: cannot import name 'StrEnum' from 'enum' (/usr/local/lib/python3.10/enum.py)
I have been using this Sensi integration for a few weeks. Today I had a notification that the authorization for the Sensi integration was expired. I went to the Integrations page in Home Assistant and clicked "Re-configure" for the Sensi integeration.
A modal box with no text and just a "sleepy eyeball" appeared. I entered my Sensi account password. Authentication failed. I went to the mobile app on my phone and changed the password. I was able to log into the mobile app with the new password. I used the new password in the Sensi integration and again, authentication failed.
The following line updates the actual temperature instead of the heat or cool target temperature!
# Assume the operation to succeed, update attribute immediately
self.temperature = value
Correct code
# Assume the operation to succeed, update attribute immediately
if self.hvac_mode == HVACMode.HEAT:
self.heat_target = value
else:
self.cool_target = value
2024-09-04 18:11:10.953 WARNING (MainThread) [homeassistant.util.loop] Detected blocking call to load_default_certs with args (<ssl.SSLContext object at 0x7f1f6e1886d0>, <Purpose.SERVER_AUTH: _ASN1Object(nid=129, shortname='serverAuth', longname='TLS Web Server Authentication', oid='1.3.6.1.5.5.7.3.1')>) inside the event loop by custom integration 'sensi' at custom_components/sensi/coordinator.py, line 652: async with websockets.client.connect( (offender: /usr/local/lib/python3.12/ssl.py, line 713: context.load_default_certs(purpose)), please create a bug report at https://github.com/iprak/sensi/issues
For developers, please see https://developers.home-assistant.io/docs/asyncio_blocking_operations/#load_default_certs
Traceback (most recent call last):
File "", line 198, in _run_module_as_main
File "", line 88, in _run_code
File "/usr/src/homeassistant/homeassistant/main.py", line 223, in
sys.exit(main())
File "/usr/src/homeassistant/homeassistant/main.py", line 209, in main
exit_code = runner.run(runtime_conf)
File "/usr/src/homeassistant/homeassistant/runner.py", line 189, in run
return loop.run_until_complete(setup_and_run_hass(runtime_config))
File "/usr/local/lib/python3.12/asyncio/base_events.py", line 674, in run_until_complete
self.run_forever()
File "/usr/local/lib/python3.12/asyncio/base_events.py", line 641, in run_forever
self._run_once()
File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1990, in _run_once
handle._run()
File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run
self._context.run(self._callback, *self._args)
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 752, in async_setup_locked
await self.async_setup(hass, integration=integration)
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 604, in async_setup
result = await component.async_setup_entry(hass, self)
File "/config/custom_components/sensi/init.py", line 55, in async_setup_entry
await coordinator.async_config_entry_first_refresh()
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 281, in async_config_entry_first_refresh
await self._async_refresh(
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 354, in _async_refresh
self.data = await self._async_update_data()
File "/config/custom_components/sensi/coordinator.py", line 621, in _async_update_data
return await self._fetch_device_data()
File "/config/custom_components/sensi/coordinator.py", line 652, in _fetch_device_data
async with websockets.client.connect(
So, yes, I am new to HA and all setup. I began by going to the URL provided and tried to sign in. I KINDA think I can sign in, but when i browse around, I only see the part where the site is asking me to pay for a membership. Is this a requirement? I have the app, and it works great, but not this URL.
I have successfully setup the new sensi integration with the token (at least I think) but I do not appear to have the option to add thermostat controls to my dashboard. Any suggestions? I have the following,
Sensors
Configuration
Diagnostic
HVAC modes are not showing in states. As a result, mode cannot be selected from the thermostat card.
A recent update requires me to reconfigure my sensi integration. What are you supposed to enter in the configuration? Only one entry needed but it takes nothing entered.
Thanks Cal
Is there a way to change the thermostat in settings or otherwise to report as "Idle" instead of "Off" when thermostat is in Auto Mode and neither heating nor cooling? When neither heating or cooling, the device isn't really off, it's just waiting for a temperature to trigger either heating or cooling.
I appear to have lost the readouts on the integration for my two thermostats. I have deleted and reloaded the integration, but login is not working. I changed my Sensi password and still the integration tells me I have invalid credentials. Any changes to login after this recent update?
The custom integration sensi implements the is_aux_heat property or uses the auxiliary heater methods in a subclass of ClimateEntity.
Please create a bug report at https://github.com/iprak/sensi/issues.
Once an updated version of sensi is available, install it and restart Home Assistant to fix this issue.
hello,
i see that your integration was updated. i followed the breaking change and removed the integration after i updated it and then added it back. the Batter i could have sworn used to show a percentage showing how much life was left in the battery. now it shows as 3.189V. is that correct now? could we maybe get the percentage back?
thanks
Mike
NSPanel uses that attribute for the step size.
Currently the attribute is not present. It would be nice to get this added with either a fixed value of 1, or using a config value.
That way, all HA cards would behave the same way.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.