dolezsa / thermal_comfort Goto Github PK
View Code? Open in Web Editor NEWThermal Comfort sensor for HA (absolute humidity, heat index, dew point, thermal perception)
License: Other
Thermal Comfort sensor for HA (absolute humidity, heat index, dew point, thermal perception)
License: Other
SInce last update i'm getting lots of errors on HA Start.
ValueError: could not convert string to float: 'unavailable'
2021-12-13 09:25:05 ERROR (MainThread) [homeassistant] Error doing job: Future exception was never retrieved
Traceback (most recent call last):
File "/usr/lib/python3.9/concurrent/futures/thread.py", line 52, in run
result = self.fn(*self.args, **self.kwargs)
File "/home/homeassi/.homeassistant/custom_components/thermal_comfort/sensor.py", line 152, in humidity_state_listener
if _is_valid_state(new_state):
File "/home/homeassi/.homeassistant/custom_components/thermal_comfort/sensor.py", line 282, in _is_valid_state
return state and state.state not in (STATE_UNKNOWN, STATE_UNAVAILABLE, math.isnan(float(state.state)))
ValueError: could not convert string to float: 'unknown'
2021-12-13 09:25:05 ERROR (MainThread) [homeassistant] Error doing job: Future exception was never retrieved
Traceback (most recent call last):
File "/usr/lib/python3.9/concurrent/futures/thread.py", line 52, in run
result = self.fn(*self.args, **self.kwargs)
File "/home/homeassi/.homeassistant/custom_components/thermal_comfort/sensor.py", line 152, in humidity_state_listener
if _is_valid_state(new_state):
File "/home/homeassi/.homeassistant/custom_components/thermal_comfort/sensor.py", line 282, in _is_valid_state
return state and state.state not in (STATE_UNKNOWN, STATE_UNAVAILABLE, math.isnan(float(state.state)))
Split configuration into separate files and link from README.md
This way we can keep a stable version and a up to date dev version of the configuration instructions.
Hello, i always have this error on start :
2022-01-19 22:22:22 ERROR (MainThread) [homeassistant.helpers.entity] Update for sensor.entree_perception fails
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 487, in async_update_ha_state
await self.async_device_update()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 691, in async_device_update
raise exc
File "/config/custom_components/thermal_comfort/sensor.py", line 300, in async_update
setattr(self, property_name, template.async_render())
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 396, in async_render
if not parse_result or self.hass.config.legacy_templates:
AttributeError: 'NoneType' object has no attribute 'config'
2022-01-19 22:22:22 ERROR (MainThread) [homeassistant.helpers.entity] Update for sensor.entree_frostrisk fails
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 487, in async_update_ha_state
await self.async_device_update()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 691, in async_device_update
raise exc
File "/config/custom_components/thermal_comfort/sensor.py", line 300, in async_update
setattr(self, property_name, template.async_render())
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 396, in async_render
if not parse_result or self.hass.config.legacy_templates:
AttributeError: 'NoneType' object has no attribute 'config'
I've this configuration :
- platform: thermal_comfort
sensors:
entree:
friendly_name: Risque de gel
unique_id: 97a03fea-5983-44b1-a52b-bbbb12f7918a
temperature_sensor: sensor.temperature_lumi_158d0002f9702d
humidity_sensor: sensor.humidity_lumi_158d0002f9702d
icon_template: mdi:snowflake-alert
sensor_types:
- perception
- frostrisk
Super cool component! I love it :)
A pretty cool feature would be to config with yaml the friendly names of the NEW sensors
This means a foreign speaker (like me) is able to override a sensor like "Dew Point" with his own language: "Taupunkt"?!
Obviously it should be possible to overwrite the computePerception as well to have it perfect at least. But this is only perfectionism.
Firstly, installing using HACS is convenient. It will also allow other people to find this custom component faster and easier.
Hi there!
Today i have installed Home Assistant 2021.6.3, coming from 2021.5.x and noticed that thermal_comfort is not available anymore.
The Log says:
2021-06-09 09:24:56 ERROR (SyncWorker_0) [homeassistant.loader] The custom integration 'thermal_comfort' does not have a valid version key (None) in the manifest file and was blocked from loading. See https://developers.home-assistant.io/blog/2021/01/29/custom-integration-changes#versions for more details
Anyone else having this issue?
PS: Home Assistant Blog reads:
Versions
The second change is pretty cool! Versions!
The manifest.json file now has added support for a version key. The version should be a string with a major, minor and patch version. For example, "1.0.0".
This version will help users communicate with you the version they had issues with. And if you ever find a security issue with your custom integration, Home Assistant will be able to block insecure versions from being used.
The version key is required from Home Assistant version 2021.6
I have polling enabled using this new-style configuration, but it doesn't appear to do anything.
- name: Guest Bath
temperature_sensor: sensor.guest_bath_temperature
humidity_sensor: sensor.guest_bath_humidity
unique_id: guest_bath
poll: true
sensor_types:
- absolute_humidity
- dew_point
- simmer_index
The spikes happen when the first update is received. I have confirmed that the comfort sensors are updated at the same second as the underlying sensors are updated.
Hi everyone,
I just installed this integration, and I really love the simplicity of the setup and all the values that it provides!
It does seem like like it's currently incompatible with the Long-term Statistics feature of HA. It would seem that the solution is just to set the property state_class: measurement
.
I haven't dabbled with creating an integration yet, so I might just be naive. It would be great to able to use the statistic graphs of the Lovelace UI to keep track of absolute humidity over time.
Thank you for creating this integration!🙏
Sensor shows text, so it will be nice if it can be translated, then I think many people will provide translation for other languages.
Trying to set up the Thermal Comfort using the newly added GUI flow will produce the following table:
As you can see, the sensors for my Xiaomi Zigbee outside unit will pull RH value into the temperature sensor selection window, while it pulls temperature into the humidity variable.
It would be entirely OK if it doesn't differentiate between RH and temperature and the user must choose the appropriate sensor, but it's actually only allowing one of them in each, and the incorrect one at that.
Second, for most of my sensors it was able to correctly allocate the temperature and RH to the appropriate selection windows, so I am not sure what is wrong with this one.
I'm getting the following error after migrating to the new configuration format:
2022-01-31 12:08:51 ERROR (MainThread) [homeassistant.components.sensor] Error while setting up thermal_comfort platform for sensor
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 249, in _async_setup_platform
await asyncio.shield(task)
File "/config/custom_components/thermal_comfort/sensor.py", line 282, in async_setup_platform
sensors += [
File "/config/custom_components/thermal_comfort/sensor.py", line 283, in <listcomp>
SensorThermalComfort(
File "/config/custom_components/thermal_comfort/sensor.py", line 369, in __init__
f"{self._device.name} {self._sensor_type.to_title()}"
AttributeError: 'str' object has no attribute 'to_title'
Here's a subset of my configuration:
thermal_comfort:
- sensor:
- name: Garage
temperature_sensor: sensor.garage_temperature
humidity_sensor: sensor.garage_humidity
unique_id: garage
sensor_types:
- absolute_humidity
- dew_point
- simmer_index
To be accepted into hacs default repo this project needs a logo in https://github.com/home-assistant/brands for custom integration.
Attached is a suggestion for the logo. Since this is a pure homeassistant component i went with the integrations icon template and used a different color since it is a custom component. @dolezsa what do you think?
Hello,
I updated Thermal Comfort through HACS to 1.2.2.
I have also updated HA to 2021.12.9.
Now I get following when checking configuration:
Invalid config for [sensor.thermal_comfort]: [poll] is an invalid option for [sensor.thermal_comfort]. Check: sensor.thermal_comfort->poll. (See ?, line ?).
In config I have following:
- platform: thermal_comfort
poll: true
scan_interval: 300
sensors:
dnevni_boravak:
friendly_name: Dnevni boravak
temperature_sensor: sensor.temperatura_dnevni_boravak
humidity_sensor: sensor.vlaga_dnevni_boravak
This used to work previously.. :)
Thanks for your help.
Best regards,
Gordan
Seeing this in my logs:
Logger: homeassistant.loader
Source: loader.py:786
First occurred: 19:41:33 (1 occurrences)
Last logged: 19:41:33
No 'version' key in the manifest file for custom integration 'thermal_comfort'. As of Home Assistant 2021.6, this integration will no longer be loaded. Please report this to the maintainer of 'thermal_comfort'
It would be super awesome to be able to setup new sensors using the home assistant frontend, just as this is possible with other integrations.
I would expect to install this repo and then go to the integration page and click "new integration". There I would expect to select this integration and further choose a name, select a temperature sensor and a humidity sensor. After this the corresponding sensor would be created automatically.
This could be repeated for every sensor.
Pro: It would not be needed to configure them by yaml anymore. 👍🏻
Since there's Architecture Decision Record ADR0007 for home assistant this means the current configuration used in thermal comfort is considered legacy yaml configuration. So it would make sense to have a non configuration at some point. This can be done in a non breaking way supporting both configuration types. The old configuration will be supported as minimum till the next breaking version or even longer should maintenance stay at a minimum.
See home assistants template integration for a partial migration to the new yaml configuration style. Or this work in progress PR home-assistant/core#63840 for the command line integration.
sensor:
- platform: thermal_comfort
poll: true
scan_interval: 300
sensors:
livingroom:
friendly_name: Living Room
temperature_sensor: sensor.temperature_livingroom
humidity_sensor: sensor.humidity_livingroom
bathroom:
temperature_sensor: sensor.temperature_bathroom
humidity_sensor: sensor.humidity_bathroom
sensor_types:
- absolutehumidity
- heatindex
bedroom:
…
thermal_comfort:
- sensor:
poll: true
scan_interval: 300
- name: livingroom
friendly_name: Living Room
temperature_sensor: sensor.temperature_livingroom
humidity_sensor: sensor.humidity_livingroom
- name: bathroom
temperature_sensor: sensor.temperature_bathroom
humidity_sensor: sensor.humidity_bathroom
sensor_types:
- absolutehumidity
- heatindex
- sensor:
- name: bedroom
…
Biggest differences would be:
sensors:
element we can have multiple sensor
elements.name
instead of being an implicit parent key.Are there any suggestions, questions or objections?
If there's any idea/reason for a breaking change of the configuration this would be the best time since both old and new configuration can coexist so it would be possible to implement breaking changes just in the new configuration type.
For the Frost Risk, Thermal Perception and Simmer Zone sensors, their states are not being pulled from the translation files. Instead it just shows the string for the translation keys. I haven't seen anyone report this issue and I believe the translations were only added recently, so is this happening for me only or is it the same for everyone?
Currently thermal comfort uses the default icons provided for the corresponding device classes. For the user experience it isn't that helpful to stick to the default icons since its hard to distinguish values easily, especially if you have them in a list or in glances:
While its possible that each user customizes the sensors with their own icons I think it would be great to offer better default icons as default. This could be achieved by either selecting one from the existing material icons or if none is available, try to upstream one.
The percent symbol doesn't really make sense for a g/m³ value
. Personally I switched to the water drop symbol without the percent to easily distinguish between them both.
We could just add the fire symbol to represent heat.
I think the following could be a great candidate to be added to the thermostat as a dew symbol.
We could add the snowflake to the thermostat for frost.
Opposed to the heat index the simmer index is meant for the night and is probably mostly used for sleeping comfort.
We could add a moon symbol for night.
This one and simmer are the most difficult for me to suggest an alternate icon. Maye combine the eye icon with another one? But we don't really perceive this with our eyes do we?
Here's two attempts, one with the eye for perception and one with a hand since as humans we often use our hands to actively perceive the temperature of something.
A snowflake isn't the same as frost but I still think this icon should work.
Similar problem as Thermal Perception.
Same two attempts as for thermal perception but with a moon added.
When using config flow in non advanced mode to set up a config entry all entities are disabled by default.
All entities to be enabled by default
@IATkachenko could you take a look at this?
It would be good if the four generated sensor type would be able to select while configuring the sensor on per sensor basis. As for me I just need the absolute humidity values. So for now I just commented the other three sensors out of the sensor.py to save space in the database:
SENSOR_TYPES = {
'absolutehumidity': [DEVICE_CLASS_HUMIDITY, 'Absolute Humidity', 'g/m³']#,
#'heatindex': [DEVICE_CLASS_TEMPERATURE, 'Heat Index', '°C'],
#'dewpoint': [DEVICE_CLASS_TEMPERATURE, 'Dew Point', '°C'],
#'perception': [None, 'Thermal Perception', None],
}
This means it's globally deactivated. Would be good to select them for e.g. each room.
The next error appear after update to 1.4.2:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 249, in _async_setup_platform
await asyncio.shield(task)
File "/config/custom_components/thermal_comfort/sensor.py", line 324, in async_setup_entry
scan_interval=timedelta(seconds=data[CONF_SCAN_INTERVAL]),
TypeError: unsupported type for timedelta seconds component: NoneType
All sensors are in the Unavailable state.
Home Assistant version 2022.2.0b5
HACS version: 1.21.0
I have an issue with the calculated absolute humidity on my balcony:
As you can see there are many strange spikes in the graph. These are double values in the same minute:
I don't know why this just occurs there that often. For the indoor sensors it does'nt have these spikes. Maybe because there are not that much changes than outdoor?
The sensors are all Xiaomi Temperature and Humidty sensors without pressure (the round ones).
Any idea?
I have quite a few temperature and humidity sensors. It would be nice to have global YAML configuration with overrides for common settings:
thermal_comfort:
- sensor:
- name: Garage
temperature_sensor: sensor.garage_temperature
humidity_sensor: sensor.garage_humidity
unique_id: garage
poll: true
scan_interval: 60
sensor_types:
- absolute_humidity
- dew_point
- simmer_index
- name: Guest Bath
temperature_sensor: sensor.guest_bath_temperature
humidity_sensor: sensor.guest_bath_humidity
unique_id: guest_bath
poll: true
scan_interval: 60
sensor_types:
- absolute_humidity
- dew_point
- simmer_index
- name: Hall
temperature_sensor: sensor.hall_temperature
humidity_sensor: sensor.hall_humidity
unique_id: hall
poll: true
scan_interval: 60
sensor_types:
- absolute_humidity
- dew_point
- simmer_index
- name: Lanai
temperature_sensor: sensor.lanai_temperature
humidity_sensor: sensor.lanai_humidity
unique_id: lanai
poll: true
scan_interval: 60
sensor_types:
- absolute_humidity
- dew_point
- frost_point
- frost_risk
- simmer_index
- name: Laundry
temperature_sensor: sensor.laundry_temperature
humidity_sensor: sensor.laundry_humidity
unique_id: laundry
poll: true
scan_interval: 60
sensor_types:
- absolute_humidity
- dew_point
- simmer_index
- name: Master Bath
temperature_sensor: sensor.master_bath_temperature
humidity_sensor: sensor.master_bath_humidity
unique_id: master_bath
poll: true
scan_interval: 60
sensor_types:
- absolute_humidity
- dew_point
- simmer_index
- name: Master Bed
temperature_sensor: sensor.master_bed_temperature
humidity_sensor: sensor.master_bed_humidity
unique_id: master_bed
poll: true
scan_interval: 60
sensor_types:
- absolute_humidity
- dew_point
- simmer_index
- name: Office
temperature_sensor: sensor.office_temperature
humidity_sensor: sensor.office_humidity
unique_id: office
poll: true
scan_interval: 60
sensor_types:
- absolute_humidity
- dew_point
- simmer_index
- name: Porch
temperature_sensor: sensor.porch_temperature
humidity_sensor: sensor.porch_humidity
unique_id: porch
poll: true
scan_interval: 60
sensor_types:
- absolute_humidity
- dew_point
- frost_point
- frost_risk
- simmer_index
Add a config flag that lets you set a icon namespace that we will use to set the default icons.
{
"state": {
"_": {
"dry": "Un poco seco para algunos",
"very_comfortable": "Muy cómodo",
"comfortable": "Cómodo",
"ok_but_humid": "Bien para la mayoria, pero algo húmedo",
"somewhat_uncomfortable": "Algo incómodo",
"quite_uncomfortable": "Muy húmedo, bastante incómodo",
"extremely_uncomfortable": "Extremadamente incómodo, agobiante",
"severely_high": "Muy alto, incluso mortal para enfermedades relacionadas con el asma"
}
}
}
Hello,
I have the component up and running just fine but I'm getting these errors every now and then, has anyone experience them as well? Any solutions? Thanks..
Logger: homeassistant
Source: custom_components/thermal_comfort/sensor.py:118
Integration: thermal_comfort (documentation)
First occurred: May 20, 2021, 10:13:53 PM (44 occurrences)
Last logged: May 21, 2021, 11:59:35 AM
Error doing job: Future exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/thermal_comfort/sensor.py", line 118, in temperature_state_listener
self._temperature = float(new_state.state)
ValueError: could not convert string to float: 'unavailable'
Will the Readme be updated for the latest release? I believe this now includes an option for Fahrenheit, but I do not see any instructions on how to set the temperature unit. Thanks!
hello,
can you add freezing point and frost risk level at this nice component?
the freezing point function
def computeFreezingPoint(self, temperature, humidity):
""" https://pon.fr/dzvents-alerte-givre-et-calcul-humidite-absolue/ """
dewPoint = self.computeDewPoint(temperature, humidity)
T = temperature + 273.15
Td = dewPoint + 273.15
return round((Td + (2671.02 /((2954.61/T) + 2.193665 * math.log(T) - 13.3448))-T)-273.15,2)
the risk level function
def computeRiskLevel(self, temperature, humidity):
thresholdAbsHumidity = 2.8
dewPoint = self.computeDewPoint(temperature, humidity)
absoluteHumidity = self.computeAbsoluteHumidity(temperature, humidity)
freezePoint = self.computeFreezingPoint(temperature, humidity)
if temperature <= 1 and freezePoint <= 0 and absoluteHumidity < thresholdAbsHumidity:
return 1 # Frost unlikely despite the temperature Givre peu probable malgré la température
elif temperature <= 4 and freezePoint <= 0.5 and absoluteHumidity > thresholdAbsHumidity:
return 2 # Frost probable despite the temperature Givre probable malgré la température
elif temperature <= 1 and freezePoint <= 0 and absoluteHumidity > thresholdAbsHumidity:
return 3 # high probability of frost Présence de givre
return 0 # No risk of frost Aucun risque de givre
Hello,
at first thanks for this awesome integration.
Would be fantastic to have also the "mold risk" and "Days to mold" sensors (I am looking at http://www.dpcalc.org/ )
This should permit to automate the dehumidification loops.
Thx
Roberto
Hi!
Do you have any plans on porting the sensor upstream?
Hey
though I appreciate your work I'm only interested in using the absolute humidity feature.
I like having only the used sensors active to keep the lists smaller and the database too.
Since the created sensors don't set a unique id, it is not possible to deactivate the additonal sensors in the entity overview.
My workaround is to delete the sensor types in the code, but I'd say that's not a perfect way to go.
Thank you for your effort
Hi since 1.4.0 release has to be coordinated between one more person i created a 1.4.0 milestone.
@IATkachenko please add any issue/feature you would like to contribute before 1.4.0 especially in regard of config_flow.
Occasionally I get spurious temperature and humidity values from my sensors. I don't know if Z-Wave JS or the sensor is to blame. The values are several orders of magnitude higher than they should be, so my graphs are messed up until the bogus data ages off.
It makes sense (to me) to discard humidity values outside the range of 0-100 and temperatures outside the range of lowest and highest temperatures ever recorded on earth. Or something along those lines.
Thoughts?
Today after a restart, Lovelace became stuck on the "Loading data" screen and was totally unusable. Deleting the integration from the custom_components folder using smb fixed the issue.
The issue seems to be related to the value of the temperature_sensor
and humidity_sensor
being nan
.
This is the error found in home-assistant.log (repeating itself every 10 to 40 seconds):
2021-10-02 10:30:24 ERROR (MainThread) [homeassistant.components.websocket_api.messages] Unable to serialize to JSON. Bad data found at $.result[21](State: sensor.livingroom_absolutehumidity).attributes.temperature=nan(<class 'float'>, $.result[21](State: sensor.livingroom_absolutehumidity).attributes.humidity=nan(<class 'float'>, $.result[22](State: sensor.livingroom_heatindex).attributes.temperature=nan(<class 'float'>, $.result[22](State: sensor.livingroom_heatindex).attributes.humidity=nan(<class 'float'>, $.result[23](State: sensor.livingroom_dewpoint).attributes.temperature=nan(<class 'float'>, $.result[23](State: sensor.livingroom_dewpoint).attributes.humidity=nan(<class 'float'>, $.result[24](State: sensor.livingroom_perception).attributes.temperature=nan(<class 'float'>, $.result[24](State: sensor.livingroom_perception).attributes.humidity=nan(<class 'float'>
My config:
- platform: thermal_comfort
sensors:
livingroom:
friendly_name: Thermal Comfort Bad DG
temperature_sensor: sensor.dht_1_temp
humidity_sensor: sensor.dht_1_hum
The current sensor selection isn't ideal yet especially with a lot of valid entity entries. See #121
Find a better solution.
The absolute humidity presents units of g/m(cubed).
All of my other sensor units follow my system defaults of customary units.
Thanks Matt
Hello,
I am using your custom integration for a few months. But I am wondering if Thermal Perception is correct.
Almost whole winter it shows "A bit dry for some"
At 2.6C and 94% humidity it really does not feel "A bit dry"
Maybe calculation is only appropriate for common room temperature (~19-25C)?
When I feed in a temp in degF, the value is correct but the dew point units are reported in degC. For some reason I cannot override it in Custtomizations either.
WHO has guidelines for indoor air quality and states that there is a health risk if your indoor absolute humidity is greater than 3g/m3 of your outdoor absolute humidity. Therefore it would be an awesome feature to make it possible to compare your outdoor humidity with any indoor/room thermal comfort sensor.
You can read the report here https://apps.who.int/iris/handle/10665/164348
I found the info on the Swedish public health authority
I have copied your example from the "Usage" section of the readme. There doesn't seem to be a section in the readme for installation but with other custom components they say to download the project ZIP from github and copy the zip contents to the "config/custom_components/" folder, creating "custom_components" if necessary.
I have done this and still get the error
"Platform error sensor.thermal_comfort - Integration 'thermal_comfort' not found." after restarting home assistant. Is there something else I need to do?
(I am using Home Assistant 0.114.4 on a Raspberry Pi 3)
No 'version' key in the manifest file for custom integration 'thermal_comfort'. This will not be allowed in a future version of Home Assistant. Please report this to the maintainer of 'thermal_comfort'
HI, I have a MDT Smart Switch with temperature and humidity sensor. The Switch self calculates the Dew Point and exposes
the Temperature to the KNX bus.
To compare the Dew point of this extension, I have integrated both in a card to show the difference. The Calculation is using the same temperature and humidity sensors from the KNX switch.
Would be Great to know how big the difference might be and how t0o calibrate it?
This is not an issue at the moment but HA asks me kindly to report it to the author:
Logger: homeassistant.helpers.entity
Source: helpers/entity.py:583
First occurred: 08:05:11 (20 occurrences)
Last logged: 08:05:11
Entity sensor.terrace_perception (<class 'custom_components.thermal_comfort.sensor.SensorThermalComfort'>) implements device_state_attributes. Please report it to the custom component author.
Entity sensor.rear_absolutehumidity (<class 'custom_components.thermal_comfort.sensor.SensorThermalComfort'>) implements device_state_attributes. Please report it to the custom component author.
Entity sensor.rear_heatindex (<class 'custom_components.thermal_comfort.sensor.SensorThermalComfort'>) implements device_state_attributes. Please report it to the custom component author.
Entity sensor.rear_dewpoint (<class 'custom_components.thermal_comfort.sensor.SensorThermalComfort'>) implements device_state_attributes. Please report it to the custom component author.
Entity sensor.rear_perception (<class 'custom_components.thermal_comfort.sensor.SensorThermalComfort'>) implements device_state_attributes. Please report it to the custom component author.
Reading the code, I assume that a fixed value is used for pressure as an approximation. It might be nice to be able to pass in a pressure value from an atmospheric pressure sensor to make these values more accurate.
2021-12-08 08:46:31 WARNING (MainThread) [homeassistant.helpers.entity] Entity sensor.tc_aussen_absolutehumidity (<class 'custom_components.thermal_comfort.sensor.SensorThermalComfort'>) implements device_state_attributes. Please report it to the custom component author.
2021-12-08 08:46:31 WARNING (MainThread) [homeassistant.helpers.entity] Entity sensor.tc_aussen_heatindex (<class 'custom_components.thermal_comfort.sensor.SensorThermalComfort'>) implements device_state_attributes. Please report it to the custom component author.
2021-12-08 08:46:31 WARNING (MainThread) [homeassistant.helpers.entity] Entity sensor.tc_aussen_dewpoint (<class 'custom_components.thermal_comfort.sensor.SensorThermalComfort'>) implements device_state_attributes. Please report it to the custom component author.
2021-12-08 08:46:31 WARNING (MainThread) [homeassistant.helpers.entity] Entity sensor.tc_aussen_perception (<class 'custom_components.thermal_comfort.sensor.SensorThermalComfort'>) implements device_state_attributes. Please report it to the custom component author.
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.