Heaty - a flexible heating control, facilitating schedules and manual intervention

There are several things that have to be right in order for Heaty to work as intended, last but not least the schedule. Without a log with debug: true in the Heaty config I can’t say anything. Maybe you want to check the log yourself first? It’s likely there are warnings and hints generated by Heaty that tell you what to look at.

hass@home-assistant:~/appdaemon/logs$ tail -f error.log
return schema(data)
File “/home/hass/appdaemon/lib/python3.6/site-packages/voluptuous/schema_builder.py”, line 267, in call
return self._compiled([], data)
File “/home/hass/appdaemon/lib/python3.6/site-packages/voluptuous/schema_builder.py”, line 589, in validate_dict
return base_validate(path, iteritems(data), out)
File “/home/hass/appdaemon/lib/python3.6/site-packages/voluptuous/schema_builder.py”, line 427, in validate_mapping
raise er.MultipleInvalid(errors)
voluptuous.error.MultipleInvalid: expected a dictionary for dictionary value @ data[‘temp_expression_modules’]

control. evan: hass@home-assistant:~/appdaemon$ tail -f logs/error.log
return schema(data)
File “/home/hass/appdaemon/lib/python3.6/site-packages/voluptuous/schema_builder.py”, line 267, in call
return self._compiled([], data)
File “/home/hass/appdaemon/lib/python3.6/site-packages/voluptuous/schema_builder.py”, line 589, in validate_dict
return base_validate(path, iteritems(data), out)
File “/home/hass/appdaemon/lib/python3.6/site-packages/voluptuous/schema_builder.py”, line 427, in validate_mapping
raise er.MultipleInvalid(errors)
voluptuous.error.MultipleInvalid: extra keys not allowed @ data[‘rooms’][‘rose’][‘schedule’][3][‘5 start’]

2018-09-24 12:17:05.656777 WARNING AppDaemon:

There’s something wrong with the schedule… I copy pasted it from wiki but it throws error above

In schedule of room rose, 4th rule, there’s something wrong with the formatting of the parameters… probably forgot a comma, please check it.

And, without the config - no chance.

Yeah, the first one is a bug. Remove the empty

temp_expression_modules:

stanza from the config for now or comment it out. I fixed this in master.

Could you share a schedule part ? Seems like I do something wrong or documentation is wrong

Do you have posted the questionable schedule, or maybe I just missed it?

Seems like it works now …made a lot of mistakes in the config…I’ll have to test it 24 hours now to see if it works thanks so far

Hm… Good luck.

shit… I just got this error:

2018-09-24 13:24:21.329309 INFO heaty_full: --> [R:Room Rose] [T:climate.air_conditioner_rose] Attribute ‘operation_mode’ is
None.
2018-09-24 13:24:21.330685 ERROR heaty_full: !!! [R:Room Rose] [T:climate.air_conditioner_rose] Unknown operation mode, igno
ring thermostat.

I have such attribute… could it be caused by custom component?

Ok, cleartext. I won’t answer anymore without you providing what I asked for multiple times.

I’m sorry if I misunderstand here the need of config details. I let everything standard. I did not change anything to adapt operation mode. please find below the config:

    # You might want to use an alternative service that receives
    # the operation mode name.
    # (default: climate/set_operation_mode)
    #opmode_heat_service: climate/set_operation_mode
    #opmode_off_service: climate/set_operation_mode
    # Set to null in order to omit the operation mode from the service call.
    # (default: operation_mode)
    #opmode_heat_service_attr: operation_mode
    #opmode_off_service_attr: operation_mode
    # Entity attribute that holds the name of the current operation mode.
    # This is used to detect manual temperature adjustments, provide
    # correct temperature values on startup and notice that a
    # thermostat picked up temperature changes.
    # (default: operation_mode)
    #opmode_state_attr: operation_mode

I’m Using this component:

https://gitea.ddns.net/thundergreen/Xiaomi-remote-climate

I can see operation mode. but still get those errors:

Watching the python scripts I also see attributes operation_mode

https://gitea.ddns.net/thundergreen/Xiaomi-remote-climate/src/branch/master/custom_components/climate/xiaomi_remote.py

this is in the logs:

Config custom component:

  - platform: xiaomi_remote                                                                                                                                   
    operation_mode: off                                                                                                                                       
    name: Air Conditioner Rose                                                                                                                                
    remote: remote.remote_rose                                                                                                                                
    temp_sensor: sensor.temperature_6                                                                                                                         
    commands: !include Hitachi.yaml                                                                                                                           
    customize:                                                                                                                                                
      operation_list:                                                                                                                                         
        - cool                                                                                                                                                
        - heat                                                                                                                                                
        - dry                                                                                                                                                 
        - auto                                                                                                                                                
        - fan_only                                                                                                                                            
      fan_list:                                                                                                                                               
        - low                                                                                                                                                 
        - medium                                                                                                                                              
        - high                                                                                                                                                
        - auto

Error log:

2018-09-24 14:07:53.263566 INFO AppDaemon: HASS: Connected to Home Assistant 0.78.0                                                                           
2018-09-24 14:07:53.600702 INFO AppDaemon: Processing restart for HASS                                                                                        
2018-09-24 14:07:53.601036 INFO AppDaemon: Terminating heaty_full                                                                                             
2018-09-24 14:07:53.601644 INFO AppDaemon: Initializing app heaty_full using class HeatyApp from module hass_apps_loader                                      
2018-09-24 14:07:53.603299 INFO heaty_full: *** Welcome to heaty (version 0.16.0)!                                                                            
2018-09-24 14:07:53.604712 INFO heaty_full: ***                                                                                                               
2018-09-24 14:07:53.605938 INFO heaty_full: *** This is an app from the hass-apps package.                                                                    
2018-09-24 14:07:53.606792 INFO heaty_full: ***   DOCS: https://hass-apps.readthedocs.io/en/stable/                                                           
2018-09-24 14:07:53.607678 INFO heaty_full: ***                                                                                                               
2018-09-24 14:07:53.608465 INFO heaty_full: *** If you like this app and want to honor the effort put into it,                                                
2018-09-24 14:07:53.609335 INFO heaty_full: *** please consider a donation.                                                                                   
2018-09-24 14:07:53.610411 INFO heaty_full: ***   DONATE: https://hass-apps.readthedocs.io/en/stable/#donations                                               
2018-09-24 14:07:53.611359 INFO heaty_full: *** Thank you very much and enjoy heaty!                                                                          
2018-09-24 14:07:53.612114 INFO heaty_full: ***                                                                                                               
2018-09-24 14:07:53.612776 INFO heaty_full: --- Validating the app's configuration.                                                                           
2018-09-24 14:07:53.617497 INFO heaty_full: --- Heaty id is: 'default'                                                                                        
2018-09-24 14:07:53.618783 INFO heaty_full: --- Importing modules for use in temperature expressions.                                                         
2018-09-24 14:07:53.619804 INFO heaty_full: --- [R:Room Rose] Initializing room (name='rose').                                                                
2018-09-24 14:07:53.621151 INFO heaty_full: <-- [R:Room Rose] Querying state of 'sensor.heaty_default_room_rose_scheduled_temp'.                              
2018-09-24 14:07:53.622921 INFO heaty_full: --> [R:Room Rose] = None                                                                                          
2018-09-24 14:07:53.624604 INFO heaty_full: --- [R:Room Rose] Last scheduled temperature is unknown.                                                          
2018-09-24 14:07:53.626478 INFO heaty_full: --- [R:Room Rose] [T:climate.air_conditioner_rose] Initializing thermostat (entity_id='climate.air_conditioner_ros
e').                                                                                                                                                          
2018-09-24 14:07:53.629256 WARNING heaty_full: !!! [R:Room Rose] [T:climate.air_conditioner_rose] Thermostat has no attribute named 'operation_mode'. Availabl
e attributes are ['current_temperature', 'friendly_name', 'max_temp', 'min_temp', 'power', 'supported_features', 'target_temp_step', 'temperature', 'attribute
s', 'context', 'entity_id', 'last_changed', 'last_updated', 'state']. Please check your config!                                                               
2018-09-24 14:07:53.630836 WARNING heaty_full: !!! [R:Room Rose] [T:climate.air_conditioner_rose] The value None for attribute 'current_temperature' is no val
id temperature value. Please check your config!                                                                                                               
2018-09-24 14:07:53.632436 WARNING heaty_full: !!! [R:Room Rose] [T:climate.air_conditioner_rose] Attributes for thermostat contain no 'operation_list', Consi
der disabling operation mode support.                                                                                                                         
2018-09-24 14:07:53.634191 INFO heaty_full: --- [R:Room Rose] [T:climate.air_conditioner_rose] Fetching initial state.                                        
2018-09-24 14:07:53.635458 INFO heaty_full: --> [R:Room Rose] [T:climate.air_conditioner_rose] Attribute 'operation_mode' is None.                            
2018-09-24 14:07:53.636873 ERROR heaty_full: !!! [R:Room Rose] [T:climate.air_conditioner_rose] Unknown operation mode, ignoring thermostat.                  
2018-09-24 14:07:53.638242 INFO heaty_full: --- [R:Room Rose] [T:climate.air_conditioner_rose] Listening for state changes.                                   
2018-09-24 14:07:53.640256 INFO heaty_full: --- [R:Room Rose] [W:binary_sensor.door_window_sensor_158d00019daf13] Initializing window sensor (entity_id='binar
y_sensor.door_window_sensor_158d00019daf13').                                                                                                                 
2018-09-24 14:07:53.642045 INFO heaty_full: --- [R:Room Rose] [W:binary_sensor.door_window_sensor_158d00019daf13] Listening for state changes (delay=10).     
2018-09-24 14:07:53.643622 INFO heaty_full: --- [R:Room Rose] Registering scheduling timers at: {08:00:00, 07:45:00, 17:30:00, 07:15:00}                      
2018-09-24 14:07:53.645664 INFO heaty_full: --- [R:Room Evan] Initializing room (name='evan').                                                                
2018-09-24 14:07:53.648023 INFO heaty_full: <-- [R:Room Evan] Querying state of 'sensor.heaty_default_room_evan_scheduled_temp'.                              
2018-09-24 14:07:53.650246 INFO heaty_full: --> [R:Room Evan] = None                                                                                          
2018-09-24 14:07:53.651993 INFO heaty_full: --- [R:Room Evan] Last scheduled temperature is unknown.                                                          
2018-09-24 14:07:53.653683 INFO heaty_full: --- [R:Room Evan] [T:climate.air_conditioner_evan] Initializing thermostat (entity_id='climate.air_conditioner_eva
n').                                                                                                                                                          
2018-09-24 14:07:53.656186 WARNING heaty_full: !!! [R:Room Evan] [T:climate.air_conditioner_evan] Thermostat has no attribute named 'operation_mode'. Availabl
e attributes are ['current_temperature', 'friendly_name', 'max_temp', 'min_temp', 'power', 'supported_features', 'target_temp_step', 'temperature', 'attribute
s', 'context', 'entity_id', 'last_changed', 'last_updated', 'state']. Please check your config!                                                               
2018-09-24 14:07:53.658291 WARNING heaty_full: !!! [R:Room Evan] [T:climate.air_conditioner_evan] The value None for attribute 'current_temperature' is no val
id temperature value. Please check your config!                                                                                                               
2018-09-24 14:07:53.660124 WARNING heaty_full: !!! [R:Room Evan] [T:climate.air_conditioner_evan] Attributes for thermostat contain no 'operation_list', Consi
der disabling operation mode support.                                                                                                                         
2018-09-24 14:07:53.665232 INFO heaty_full: --- [R:Room Evan] [T:climate.air_conditioner_evan] Fetching initial state.                                        
2018-09-24 14:07:53.667537 INFO heaty_full: --> [R:Room Evan] [T:climate.air_conditioner_evan] Attribute 'operation_mode' is None.                            
2018-09-24 14:07:53.669460 ERROR heaty_full: !!! [R:Room Evan] [T:climate.air_conditioner_evan] Unknown operation mode, ignoring thermostat.                  
2018-09-24 14:07:53.671258 INFO heaty_full: --- [R:Room Evan] [T:climate.air_conditioner_evan] Listening for state changes.                                   
2018-09-24 14:07:53.673222 INFO heaty_full: --- [R:Room Evan] [W:binary_sensor.door_window_sensor_158d00019dae38] Initializing window sensor (entity_id='binar
y_sensor.door_window_sensor_158d00019dae38').                                                                                                                 
2018-09-24 14:07:53.675212 INFO heaty_full: --- [R:Room Evan] [W:binary_sensor.door_window_sensor_158d00019dae38] Listening for state changes (delay=10).     
2018-09-24 14:07:53.677109 INFO heaty_full: --- [R:Room Evan] Registering scheduling timers at: {22:00:00, 07:45:00, 07:15:00, 21:00:00}                      
2018-09-24 14:07:53.679374 INFO heaty_full: --- [R:Bedroom] Initializing room (name='bedroom').                                                               
2018-09-24 14:07:53.680990 INFO heaty_full: <-- [R:Bedroom] Querying state of 'sensor.heaty_default_room_bedroom_scheduled_temp'.                             
2018-09-24 14:07:53.683024 INFO heaty_full: --> [R:Bedroom] = None                                                                                            
2018-09-24 14:07:53.684752 INFO heaty_full: --- [R:Bedroom] Last scheduled temperature is unknown.                                                            
2018-09-24 14:07:53.686730 INFO heaty_full: --- [R:Bedroom] [T:climate.air_conditioner_bedroom] Initializing thermostat (entity_id='climate.air_conditioner_be
droom').                                                                                                                                                      
2018-09-24 14:07:53.689280 WARNING heaty_full: !!! [R:Bedroom] [T:climate.air_conditioner_bedroom] Thermostat has no attribute named 'operation_mode'. Availab
le attributes are ['current_temperature', 'friendly_name', 'max_temp', 'min_temp', 'power', 'supported_features', 'target_temp_step', 'temperature', 'attribut
es', 'context', 'entity_id', 'last_changed', 'last_updated', 'state']. Please check your config!                                                              
2018-09-24 14:07:53.691513 WARNING heaty_full: !!! [R:Bedroom] [T:climate.air_conditioner_bedroom] The value None for attribute 'current_temperature' is no va
lid temperature value. Please check your config!                                                                                                              
2018-09-24 14:07:53.693588 WARNING heaty_full: !!! [R:Bedroom] [T:climate.air_conditioner_bedroom] Attributes for thermostat contain no 'operation_list', Cons
ider disabling operation mode support.                                                                                                                        
2018-09-24 14:07:53.695422 INFO heaty_full: --- [R:Bedroom] [T:climate.air_conditioner_bedroom] Fetching initial state.                                       
2018-09-24 14:07:53.697115 INFO heaty_full: --> [R:Bedroom] [T:climate.air_conditioner_bedroom] Attribute 'operation_mode' is None.                           
2018-09-24 14:07:53.698412 ERROR heaty_full: !!! [R:Bedroom] [T:climate.air_conditioner_bedroom] Unknown operation mode, ignoring thermostat.                 
2018-09-24 14:07:53.699425 INFO heaty_full: --- [R:Bedroom] [T:climate.air_conditioner_bedroom] Listening for state changes.                                  
2018-09-24 14:07:53.705277 INFO heaty_full: --- [R:Bedroom] [W:binary_sensor.door_window_sensor_158d00019f308a] Initializing window sensor (entity_id='binary_
sensor.door_window_sensor_158d00019f308a').                                                                                                                   
2018-09-24 14:07:53.706894 INFO heaty_full: --- [R:Bedroom] [W:binary_sensor.door_window_sensor_158d00019f308a] Listening for state changes (delay=10).       
2018-09-24 14:07:53.708419 INFO heaty_full: --- [R:Bedroom] Registering scheduling timers at: {23:30:00, 22:30:00}                                            
2018-09-24 14:07:53.709948 INFO heaty_full: --- Listening for heaty_reschedule event.                                                                         
2018-09-24 14:07:53.711092 INFO heaty_full: --- Listening for heaty_set_temp event.                                                                           
2018-09-24 14:07:53.711942 INFO heaty_full: --- Listening for state changes of master switch (entity_id='input_boolean.heating_master').                      
2018-09-24 14:07:53.712103 WARNING AppDaemon: heaty_full: Entity input_boolean.heating_master not found in AppDaemon                                          
2018-09-24 14:07:53.713595 INFO heaty_full: --- Master switch is off, not setting temperatures initially.                                                     
2018-09-24 14:07:53.715253 INFO heaty_full: --- [SZ:upstairs] Initializing statistics zone (name='upstairs').                                                 
2018-09-24 14:07:53.716820 WARNING heaty_full: !!! [SZ:upstairs] No parameters configured.                                                                    
2018-09-24 14:07:53.718898 INFO heaty_full: --- [SZ:upstairs] Listening for temperature changes of T:climate.air_conditioner_rose in R:Room Rose.             
2018-09-24 14:07:53.720453 INFO heaty_full: --- [SZ:upstairs] Listening for temperature changes of T:climate.air_conditioner_evan in R:Room Evan.             
2018-09-24 14:07:53.722237 INFO heaty_full: --- [SZ:upstairs] Listening for temperature changes of T:climate.air_conditioner_bedroom in R:Bedroom.            
2018-09-24 14:07:53.723969 INFO heaty_full: --- [SZ:upstairs] Going to update statistics in 3 seconds.                                                        
2018-09-24 14:07:53.724920 INFO heaty_full: *** Initialization done.                                                                                          
2018-09-24 14:07:56.005110 INFO heaty_full: --- [SZ:upstairs] No parameters configured, nothing to update. 

these warnings aren’t there for fun.

2018-09-24 14:07:53.629256 WARNING heaty_full: !!! [R:Room Rose] [T:climate.air_conditioner_rose] Thermostat has no attribute named 'operation_mode'. Available attributes are ['current_temperature', 'friendly_name', 'max_temp', 'min_temp', 'power', 'supported_features', 'target_temp_step', 'temperature', 'attributes', 'context', 'entity_id', 'last_changed', 'last_updated', 'state']. Please check your config!                                                               
2018-09-24 14:07:53.630836 WARNING heaty_full: !!! [R:Room Rose] [T:climate.air_conditioner_rose] The value None for attribute 'current_temperature' is no valid temperature value. Please check your config!                                                                                                               
2018-09-24 14:07:53.632436 WARNING heaty_full: !!! [R:Room Rose] [T:climate.air_conditioner_rose] Attributes for thermostat contain no 'operation_list', Consider disabling operation mode support.

Your climate entity definitely has neither a operation_mode nor a operation_list attribute. BTW, I don’t know what the customize.yaml entries you posted should tell me. You need to configure your thermostats first so that they work and have all needed attributes, then set up Heaty.

Hang on, what version of AppDaemon is that?

(appdaemon) hass@home-assistant:~/appdaemon$ appdaemon -v
appdaemon 3.0.1

I am wondering why operation_mode is an attribute… ?

I can use this component like generic ac component. So operation mode set temperature etc is there.

I use it with my automations for the moment.

operation_mode has to be an attribute reflecting the operation mode currently in use. You should use the developer area in HA to check the climate entity’s attributes and verify all are there.

That’s weird. how can I check an attribute which is not there? Could you read the python script from this custom component? I have a snippet here:

import asyncio
import logging
import voluptuous as vol
import homeassistant.helpers.config_validation as cv
import homeassistant.components.remote as remote

from homeassistant.components.climate import (ClimateDevice, PLATFORM_SCHEMA,
                                              STATE_ON, STATE_OFF, STATE_IDLE, STATE_HEAT, STATE_COOL, STATE_AUTO,
                                              ATTR_OPERATION_MODE, ATTR_OPERATION_LIST, ATTR_MAX_TEMP, ATTR_MIN_TEMP,
                                              ATTR_CURRENT_TEMPERATURE, ATTR_TARGET_TEMP_STEP, ATTR_FAN_MODE,
                                              ATTR_FAN_LIST, ATTR_AWAY_MODE,
                                              SUPPORT_OPERATION_MODE, SUPPORT_TARGET_TEMPERATURE, SUPPORT_FAN_MODE,
                                              SUPPORT_ON_OFF, SUPPORT_AWAY_MODE)
from homeassistant.const import (ATTR_UNIT_OF_MEASUREMENT, ATTR_TEMPERATURE, CONF_NAME, CONF_CUSTOMIZE)
from homeassistant.helpers.event import async_track_state_change
from homeassistant.helpers.restore_state import async_get_last_state
from homeassistant.core import callback
from voluptuous import ALLOW_EXTRA

_LOGGER = logging.getLogger(__name__)

The strange thing is that I see ATTR_OPERATION_MODE in from homeassistant.components.climate import

I don’t know. Just importing something doesn’t mean actually using it. Head over to the developer area in HA and check the attributes of your climate entity. As long as there is no proper operation_mode and temperature, there is nothing Heaty can do. Ask the developers of the climate platform you’re using if unsure.

ok then I dunno how he impleneted this component :slight_smile: service call operation_mode works well so far in automations but indeed they are not expsed in attributes… I’ll ask the dev to adapt this.

temperature is well there. thanks so far… and sorry to keep you busy with this :slight_smile:

I just found also another snipped which clearly shows me that operation_mode is used in attributes:

if state is not None:
            self._current_operation = state.attributes.get(ATTR_OPERATION_MODE, self._current_operation)
            self._target_temperature = state.attributes.get(ATTR_TEMPERATURE, self._target_temperature)
            self._enabled_flags = state.attributes.get(ATTR_SUPPORTED_FEATURES, self._enabled_flags)
            self._current_fan_mode = state.attributes.get(ATTR_FAN_MODE, self._current_fan_mode)
            self._on = state.attributes.get(ATTR_POWER, STATE_OFF) == STATE_ON
            self._away = state.attributes.get(ATTR_AWAY_MODE, STATE_OFF) == STATE_ON

I will have to check when i am at home.