Ok thx I have just thermostat also, I use the BadNest App but I try tomorrow your code ! Thx
@dbrunt, What are the sensors returned via AppDaemon? For example, I want to call out the status of my two thermostats. I see them in climate.xxx for each thermostat. With all the playing around I have done with standalone API, integration, and now this I am getting confused with all the sensors that are showing in my entities.
UPDATE: I built a sensor with templates so I can see the HVAC status.
I was able to configure with success and see the thermostat on the dashboard. Even so, when I try to change the temp I get “failed to call service climate/set_temperature”. In the combo-box for each thermostat, the Operation options are empty? What do I missing?
What I have done until now:
(1) Copy inside appdaemon/apps/ the nest.py from https://github.com/dbecknel/appdaemon
(2) Configure appdaemon/apps/apps.yaml with nest information
nest:
module: nest
class: NESTAPI
nest_refresh: “’…”
nest_client_id: “’…”
nest_client_secret: “’…”
nest_project_id: “’…”
I am not following what you are saying. Maybe screenshot would help.
Do you have any errors in your AppDaemon Error Logs?
Hit the wrong reply, see my previous
Please find below:
2020-11-10 18:50:26.323741 WARNING nest: nest: Entity climate.alexia_nest_thermostat not found in namespace default
2020-11-10 18:50:26.326643 INFO AppDaemon: nest: Entity climate.alexia_nest_thermostat created in namespace: default
2020-11-10 18:50:26.398659 WARNING nest: nest: Entity sensor.alexia_nest_thermostat_temp not found in namespace default
2020-11-10 18:50:26.401661 INFO AppDaemon: nest: Entity sensor.alexia_nest_thermostat_temp created in namespace: default
2020-11-10 18:50:26.455919 WARNING nest: nest: Entity switch.alexia_nest_thermostat_switch not found in namespace default
2020-11-10 18:50:26.469684 INFO AppDaemon: nest: Entity switch.alexia_nest_thermostat_switch created in namespace: default
2020-11-10 18:50:26.542817 WARNING nest: nest: Entity climate.living_room_nest_thermostat not found in namespace default
2020-11-10 18:50:26.547383 INFO AppDaemon: nest: Entity climate.living_room_nest_thermostat created in namespace: default
2020-11-10 18:50:26.605292 WARNING nest: nest: Entity sensor.living_room_nest_thermostat_temp not found in namespace default
2020-11-10 18:50:26.618218 INFO AppDaemon: nest: Entity sensor.living_room_nest_thermostat_temp created in namespace: default
2020-11-10 18:50:26.710724 WARNING nest: nest: Entity switch.living_room_nest_thermostat_switch not found in namespace default
2020-11-10 18:50:26.713728 INFO AppDaemon: nest: Entity switch.living_room_nest_thermostat_switch created in namespace: default
2020-11-10 18:50:26.787146 WARNING nest: nest: Entity climate.victor_nest_thermostat not found in namespace default
2020-11-10 18:50:26.791662 INFO AppDaemon: nest: Entity climate.victor_nest_thermostat created in namespace: default
2020-11-10 18:50:26.857142 WARNING nest: nest: Entity sensor.victor_nest_thermostat_temp not found in namespace default
2020-11-10 18:50:26.860106 INFO AppDaemon: nest: Entity sensor.victor_nest_thermostat_temp created in namespace: default
2020-11-10 18:50:26.938667 WARNING nest: nest: Entity switch.victor_nest_thermostat_switch not found in namespace default
2020-11-10 18:50:26.941524 INFO AppDaemon: nest: Entity switch.victor_nest_thermostat_switch created in namespace: default
2020-11-10 18:50:27.010335 WARNING nest: nest: Entity climate.bedroom_nest_thermostat not found in namespace default
2020-11-10 18:50:27.013662 INFO AppDaemon: nest: Entity climate.bedroom_nest_thermostat created in namespace: default
2020-11-10 18:50:27.102453 WARNING nest: nest: Entity sensor.bedroom_nest_thermostat_temp not found in namespace default
2020-11-10 18:50:27.107297 INFO AppDaemon: nest: Entity sensor.bedroom_nest_thermostat_temp created in namespace: default
2020-11-10 18:50:27.166396 WARNING nest: nest: Entity switch.bedroom_nest_thermostat_switch not found in namespace default
2020-11-10 18:50:27.171233 INFO AppDaemon: nest: Entity switch.bedroom_nest_thermostat_switch created in namespace: default
Error logs, this is just the appdaemon application log. Look at the next tab.
The service is climate.set_temperature
, not climate/set_tempertature unless that is just how HA displays the error. Try setting the temperature from Dev Tools…
In the UI I am not able to see the operations. Also in the services tab I cannot find the services. The count of callback works.
@dbecknel Does he need nest: in configuration.yaml
to trigger HA climate? I’m at a loss as to why he doesn’t have climate
services…
On the second screen shot, the blank log is a bit concerning, minimally, you should see hello world and Nest API initializing. I really need to see the error tab though.
Could be throwing errors.
In the appdaemon log window you should see this, at a minimum:
2020-11-10 13:19:27.136174 INFO nest: Hello from NEST API
2020-11-10 13:19:27.120874 INFO AppDaemon: Initializing app nest using class NESTAPI from module nest
2020-11-10 13:19:27.098495 INFO AppDaemon: Loading App Module: nest
2020-11-10 13:19:27.097504 INFO AppDaemon: Reloading Module: /config/appdaemon/apps/nest.py
The error logs likely have something, and might look like:
2020-11-09 16:26:50.899242 WARNING nest: Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/appdaemon/app_management.py", line 150, in initialize_app
await utils.run_in_executor(self, init)
File "/usr/lib/python3.8/site-packages/appdaemon/utils.py", line 290, in run_in_executor
response = future.result()
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/appdaemon/apps/nest.py", line 23, in initialize
service_account_info = json.load(open("/config/appdaemon/apps/"))
IsADirectoryError: [Errno 21] Is a directory: '/config/appdaemon/apps/'
Although, this error is from my unsuccessful attempts to integrate the subscription service from google, the form will be roughly the same.
Failing all this, you can go to Supervisor, click on AppDaemon 4, and click the log tab, and you will see something like this:
Calling climate.set_temperature will yield this in the logs:
2020-11-10 18:00:00.212862 INFO nest: {
"command": "sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat",
"params": {
"heatCelsius": 18.3
}
}
2020-11-10 18:00:00.208798 INFO nest: climate.guest_bedroom_nest_thermostat
2020-11-10 18:00:00.203480 INFO nest: set_temperature
The AppDaemon Logs essentially starts a ‘tail’ of the log file.
After I select it, I have to wait for a new entry to be logged.
Yes, this is where he needs to look.
Restart AppDaemon 4 so it’s log is fresh from the beginning. Upon entering Log
what’s presented is is static. You’ll need to click Refresh in the lower left to get a new updated view of the log.
Google Doc with logs - https://docs.google.com/document/d/e/2PACX-1vRl8QBT54QMThqtNv9xbYXXeDpCJT3ZbJofZ20XRTIiKt4BuLoUdr6mtPF1o8rAQ17a5NKwTXtr6ua3/pub
I will try to add below the full configuration that I have done and the output that I have from logs and error screens. (remarks: I don’t have duckdns or nginx configured)
(1) In this morning I started again from a clean image
(2) I installed AppDaemon 4 from the supervisor screen
(3) Adding in the AppDaemon configuration the log_level
system_packages: []
python_packages: []
init_commands: []
log_level: debug
(4) Manual upload using File editor ‘‘nest.py’’ to the /config/appdaemon/apps
(5) Add nest information to apps.yaml of AppDaemon
hello_world:
module: hello
class: HelloWorld
nest:
module: nest
class: NESTAPI
nest_refresh: !secret nest_refresh
nest_client_id: !secret nest_client_id
nest_client_secret: !secret nest_client_secret
nest_project_id: !secret nest_project_id
(6) Adding the nest secrets to config/secrets.yaml
some_password: welcome
nest_refresh: 1//09...
nest_client_id: 10...
nest_client_secret: BP...
nest_project_id: 6d...
(7) Restart the AppDaemon
(8) What I see in the http://172.24.1.157:5050/ Logs of AppDaemon before accessing lovelace (Overview) is:
Logs tab of AppDaemon (http://172.24.1.157:5050/)
2020-11-11 08:55:45.469431 INFO AppDaemon: App initialization complete
2020-11-11 08:55:45.347605 INFO AppDaemon: Previous message repeated 7 times
2020-11-11 08:55:44.944837 INFO nest: Hello from NEST API
2020-11-11 08:55:44.888147 INFO hello_world: You are now ready to run Apps!
2020-11-11 08:55:44.883513 INFO hello_world: Hello from AppDaemon
2020-11-11 08:55:44.503133 INFO AppDaemon: Initializing app nest using class NESTAPI from module nest
2020-11-11 08:55:44.460329 INFO AppDaemon: Initializing app hello_world using class HelloWorld from module hello
2020-11-11 08:55:44.420812 INFO AppDaemon: Loading App Module: /config/appdaemon/apps/nest.py
2020-11-11 08:55:44.394427 INFO AppDaemon: Loading App Module: /config/appdaemon/apps/hello.py
2020-11-11 08:55:44.374681 INFO AppDaemon: Adding /config/appdaemon/apps to module import path
2020-11-11 08:55:43.615215 INFO AppDaemon: Scheduler running in realtime
Error tab of AppDaemon (http://172.24.1.157:5050/)
(9) AppDaemon Logs from Supervisor tab
See ''(9) AppDaemon Logs from Supervisor tab'' section of the Google doc document
(10) Checking the Apps tab of http://172.24.1.157:5050/
hello_wolrd - idle
nest - idle (10 callbacks (AD Lifetime)
(11) Navigate to http://172.24.1.157:8123/lovelace/default_view
I see the list of nest thermostats
(12) Try to change the temperature
I get the below message
(13) Checking logs of AppDaemon from supervisor tab
See ‘’(13) Checking logs of AppDaemon from supervisor tab’ from Google doc document.
(14) Checking logs from http://172.24.1.157:5050/ (note: Logs/Errors is empty)
(15) Checking callbacks from http://172.24.1.157:5050/
(16) Under Developer Tools/Services I don’t have any services listed related to NEST
(17) Under Developer Tools/States I have information for each thermostat
(18) Configuration of /config/appdaemon/appdaemon.yaml
---
secrets: /config/secrets.yaml
appdaemon:
latitude: 52.379189
longitude: 4.899431
elevation: 2
time_zone: Europe/Amsterdam
plugins:
HASS:
type: hass
ha_url: http://172.24.1.157:8123
token: eyJ...
http:
url: http://127.0.0.1:5050
admin:
api:
hadashboard:
(19) What I have in Appdaemon logs now
I was able to get some interesting logs in the Log tab of AppDaemon under Supervisor (full logs added to the Google doc under FULL LOGS OF APPDAEMON UNDER SUPERVISOR section ( https://docs.google.com/document/d/e/2PACX-1vRl8QBT54QMThqtNv9xbYXXeDpCJT3ZbJofZ20XRTIiKt4BuLoUdr6mtPF1o8rAQ17a5NKwTXtr6ua3/pub)
2020-11-11 09:32:23.364828 DEBUG AppDaemon: set_state(): sensor.appdaemon_uptime, {'state': '0:08:34'}
2020-11-11 09:32:23.366571 DEBUG AppDaemon: parse_state: sensor.appdaemon_uptime, {'state': '0:08:34'}
2020-11-11 09:32:23.368896 DEBUG AppDaemon: Old state: {'entity_id': 'sensor.appdaemon_uptime', 'state': '0:08:33', 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {}}
2020-11-11 09:32:23.369955 DEBUG AppDaemon: New state: {'entity_id': 'sensor.appdaemon_uptime', 'state': '0:08:34', 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {}}
2020-11-11 09:32:23.371048 DEBUG AppDaemon: sending event locally
2020-11-11 09:32:23.372068 DEBUG AppDaemon: Util loop compute time: 31.0ms, check_config()=18.0ms, other=13.0ms
2020-11-11 09:32:23.373404 DEBUG AppDaemon: Event type:state_changed:
2020-11-11 09:32:23.374174 DEBUG AppDaemon: {'entity_id': 'sensor.appdaemon_uptime', 'new_state': {'entity_id': 'sensor.appdaemon_uptime', 'state': '0:08:34', 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {}}, 'old_state': {'entity_id': 'sensor.appdaemon_uptime', 'state': '0:08:33', 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {}}}
2020-11-11 09:32:23.375434 DEBUG AppDaemon: process_event_callbacks() admin {'event_type': 'state_changed', 'data': {'entity_id': 'sensor.appdaemon_uptime', 'new_state': {'entity_id': 'sensor.appdaemon_uptime', 'state': '0:08:34', 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {}}, 'old_state': {'entity_id': 'sensor.appdaemon_uptime', 'state': '0:08:33', 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {}}}}
2020-11-11 09:32:23.377158 DEBUG AppDaemon: thread_async loop, args={'function': <bound method ADStream.process_event of <appdaemon.stream.adstream.ADStream object at 0x757a04c0>>, 'args': ({'event_type': 'state_changed', 'data': {'entity_id': 'sensor.appdaemon_uptime', 'new_state': {'entity_id': 'sensor.appdaemon_uptime', 'state': '0:08:34', 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {}}, 'old_state': {'entity_id': 'sensor.appdaemon_uptime', 'state': '0:08:33', 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {}}}, 'namespace': 'admin'},), 'kwargs': {}}
2020-11-11 09:32:23.378933 DEBUG AppDaemon: --> {'data': {'event_type': 'state_changed', 'data': {'entity_id': 'sensor.appdaemon_uptime', 'new_state': {'entity_id': 'sensor.appdaemon_uptime', 'state': '0:08:34', 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {}}, 'old_state': {'entity_id': 'sensor.appdaemon_uptime', 'state': '0:08:33', 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {}}}, 'namespace': 'admin'}, 'response_id': 'bbe0fff5-c958-4b58-9521-27b94bae8033', 'response_type': 'state_changed'}
**2020-11-11 09:32:23.427642 DEBUG AppDaemon: set_state(): sensor.callbacks_average_fired, {'state': 0.1}**
**2020-11-11 09:32:23.429727 DEBUG AppDaemon: parse_state: sensor.callbacks_average_fired, {'state': 0.1}**
**2020-11-11 09:32:23.431739 DEBUG AppDaemon: Old state: {'entity_id': 'sensor.callbacks_average_fired', 'state': 0.1, 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {}}**
**2020-11-11 09:32:23.433560 DEBUG AppDaemon: New state: {'entity_id': 'sensor.callbacks_average_fired', 'state': 0.1, 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {}}**
**2020-11-11 09:32:23.435051 DEBUG AppDaemon: sending event locally**
**2020-11-11 09:32:23.437202 DEBUG AppDaemon: set_state(): sensor.callbacks_average_executed, {'state': 0.1}**
**2020-11-11 09:32:23.438995 DEBUG AppDaemon: parse_state: sensor.callbacks_average_executed, {'state': 0.1}**
2020-11-11 09:32:23.441252 DEBUG AppDaemon: Old state: {'entity_id': 'sensor.callbacks_average_executed', 'state': 0.0, 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {}}
2020-11-11 09:32:23.442626 DEBUG AppDaemon: New state: {'entity_id': 'sensor.callbacks_average_executed', 'state': 0.1, 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {}}
2020-11-11 09:32:23.444438 DEBUG AppDaemon: sending event locally
2020-11-11 09:32:23.446334 DEBUG AppDaemon: set_state(): thread.thread-0, {'q': 0}
2020-11-11 09:32:23.448528 DEBUG AppDaemon: parse_state: thread.thread-0, {'q': 0}
2020-11-11 09:32:23.450574 DEBUG AppDaemon: Old state: {'entity_id': 'thread.thread-0', 'state': 'idle', 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': 'never', 'pinned_apps': ['hello_world']}}
2020-11-11 09:32:23.452365 DEBUG AppDaemon: New state: {'entity_id': 'thread.thread-0', 'state': 'idle', 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': 'never', 'pinned_apps': ['hello_world']}}
2020-11-11 09:32:23.453784 DEBUG AppDaemon: sending event locally
2020-11-11 09:32:23.455950 DEBUG AppDaemon: set_state(): thread.thread-1, {'q': 0}
2020-11-11 09:32:23.457068 DEBUG AppDaemon: parse_state: thread.thread-1, {'q': 0}
2020-11-11 09:32:23.458393 DEBUG AppDaemon: Old state: {'entity_id': 'thread.thread-1', 'state': 'idle', 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': '2020-11-11T09:32:22+01:00', 'pinned_apps': ['nest']}}
2020-11-11 09:32:23.459182 DEBUG AppDaemon: New state: {'entity_id': 'thread.thread-1', 'state': 'idle', 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': '2020-11-11T09:32:22+01:00', 'pinned_apps': ['nest']}}
2020-11-11 09:32:23.460268 DEBUG AppDaemon: sending event locally
2020-11-11 09:32:23.461594 DEBUG AppDaemon: Event type:state_changed:
2020-11-11 09:32:23.462723 DEBUG AppDaemon: {'entity_id': 'sensor.callbacks_average_fired', 'new_state': {'entity_id': 'sensor.callbacks_average_fired', 'state': 0.1, 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {}}, 'old_state': {'entity_id': 'sensor.callbacks_average_fired', 'state': 0.1, 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {}}}
2020-11-11 09:32:23.463674 DEBUG AppDaemon: process_event_callbacks() admin {'event_type': 'state_changed', 'data': {'entity_id': 'sensor.callbacks_average_fired', 'new_state': {'entity_id': 'sensor.callbacks_average_fired', 'state': 0.1, 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {}}, 'old_state': {'entity_id': 'sensor.callbacks_average_fired', 'state': 0.1, 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {}}}}
2020-11-11 09:32:23.465379 DEBUG AppDaemon: Event type:state_changed:
2020-11-11 09:32:23.466207 DEBUG AppDaemon: {'entity_id': 'sensor.callbacks_average_executed', 'new_state': {'entity_id': 'sensor.callbacks_average_executed', 'state': 0.1, 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {}}, 'old_state': {'entity_id': 'sensor.callbacks_average_executed', 'state': 0.0, 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {}}}
2020-11-11 09:32:23.467398 DEBUG AppDaemon: process_event_callbacks() admin {'event_type': 'state_changed', 'data': {'entity_id': 'sensor.callbacks_average_executed', 'new_state': {'entity_id': 'sensor.callbacks_average_executed', 'state': 0.1, 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {}}, 'old_state': {'entity_id': 'sensor.callbacks_average_executed', 'state': 0.0, 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {}}}}
2020-11-11 09:32:23.468883 DEBUG AppDaemon: Event type:state_changed:
2020-11-11 09:32:23.469966 DEBUG AppDaemon: {'entity_id': 'thread.thread-0', 'new_state': {'entity_id': 'thread.thread-0', 'state': 'idle', 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': 'never', 'pinned_apps': ['hello_world']}}, 'old_state': {'entity_id': 'thread.thread-0', 'state': 'idle', 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': 'never', 'pinned_apps': ['hello_world']}}}
2020-11-11 09:32:23.470936 DEBUG AppDaemon: process_event_callbacks() admin {'event_type': 'state_changed', 'data': {'entity_id': 'thread.thread-0', 'new_state': {'entity_id': 'thread.thread-0', 'state': 'idle', 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': 'never', 'pinned_apps': ['hello_world']}}, 'old_state': {'entity_id': 'thread.thread-0', 'state': 'idle', 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': 'never', 'pinned_apps': ['hello_world']}}}}
2020-11-11 09:32:23.472703 DEBUG AppDaemon: Event type:state_changed:
2020-11-11 09:32:23.473558 DEBUG AppDaemon: {'entity_id': 'thread.thread-1', 'new_state': {'entity_id': 'thread.thread-1', 'state': 'idle', 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': '2020-11-11T09:32:22+01:00', 'pinned_apps': ['nest']}}, 'old_state': {'entity_id': 'thread.thread-1', 'state': 'idle', 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': '2020-11-11T09:32:22+01:00', 'pinned_apps': ['nest']}}}
2020-11-11 09:32:23.474805 DEBUG AppDaemon: process_event_callbacks() admin {'event_type': 'state_changed', 'data': {'entity_id': 'thread.thread-1', 'new_state': {'entity_id': 'thread.thread-1', 'state': 'idle', 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': '2020-11-11T09:32:22+01:00', 'pinned_apps': ['nest']}}, 'old_state': {'entity_id': 'thread.thread-1', 'state': 'idle', 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': '2020-11-11T09:32:22+01:00', 'pinned_apps': ['nest']}}}}
2020-11-11 09:32:23.476656 DEBUG AppDaemon: thread_async loop, args={'function': <bound method ADStream.process_event of <appdaemon.stream.adstream.ADStream object at 0x757a04c0>>, 'args': ({'event_type': 'state_changed', 'data': {'entity_id': 'sensor.callbacks_average_fired', 'new_state': {'entity_id': 'sensor.callbacks_average_fired', 'state': 0.1, 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {}}, 'old_state': {'entity_id': 'sensor.callbacks_average_fired', 'state': 0.1, 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {}}}, 'namespace': 'admin'},), 'kwargs': {}}
2020-11-11 09:32:23.478080 DEBUG AppDaemon: thread_async loop, args={'function': <bound method ADStream.process_event of <appdaemon.stream.adstream.ADStream object at 0x757a04c0>>, 'args': ({'event_type': 'state_changed', 'data': {'entity_id': 'sensor.callbacks_average_executed', 'new_state': {'entity_id': 'sensor.callbacks_average_executed', 'state': 0.1, 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {}}, 'old_state': {'entity_id': 'sensor.callbacks_average_executed', 'state': 0.0, 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {}}}, 'namespace': 'admin'},), 'kwargs': {}}
2020-11-11 09:32:23.479292 DEBUG AppDaemon: thread_async loop, args={'function': <bound method ADStream.process_event of <appdaemon.stream.adstream.ADStream object at 0x757a04c0>>, 'args': ({'event_type': 'state_changed', 'data': {'entity_id': 'thread.thread-0', 'new_state': {'entity_id': 'thread.thread-0', 'state': 'idle', 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': 'never', 'pinned_apps': ['hello_world']}}, 'old_state': {'entity_id': 'thread.thread-0', 'state': 'idle', 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': 'never', 'pinned_apps': ['hello_world']}}}, 'namespace': 'admin'},), 'kwargs': {}}
2020-11-11 09:32:23.480728 DEBUG AppDaemon: thread_async loop, args={'function': <bound method ADStream.process_event of <appdaemon.stream.adstream.ADStream object at 0x757a04c0>>, 'args': ({'event_type': 'state_changed', 'data': {'entity_id': 'thread.thread-1', 'new_state': {'entity_id': 'thread.thread-1', 'state': 'idle', 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': '2020-11-11T09:32:22+01:00', 'pinned_apps': ['nest']}}, 'old_state': {'entity_id': 'thread.thread-1', 'state': 'idle', 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': '2020-11-11T09:32:22+01:00', 'pinned_apps': ['nest']}}}, 'namespace': 'admin'},), 'kwargs': {}}
2020-11-11 09:32:23.482640 DEBUG AppDaemon: --> {'data': {'event_type': 'state_changed', 'data': {'entity_id': 'sensor.callbacks_average_fired', 'new_state': {'entity_id': 'sensor.callbacks_average_fired', 'state': 0.1, 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {}}, 'old_state': {'entity_id': 'sensor.callbacks_average_fired', 'state': 0.1, 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {}}}, 'namespace': 'admin'}, 'response_id': 'bbe0fff5-c958-4b58-9521-27b94bae8033', 'response_type': 'state_changed'}
2020-11-11 09:32:23.484703 DEBUG AppDaemon: --> {'data': {'event_type': 'state_changed', 'data': {'entity_id': 'sensor.callbacks_average_executed', 'new_state': {'entity_id': 'sensor.callbacks_average_executed', 'state': 0.1, 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {}}, 'old_state': {'entity_id': 'sensor.callbacks_average_executed', 'state': 0.0, 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {}}}, 'namespace': 'admin'}, 'response_id': 'bbe0fff5-c958-4b58-9521-27b94bae8033', 'response_type': 'state_changed'}
2020-11-11 09:32:23.486437 DEBUG AppDaemon: --> {'data': {'event_type': 'state_changed', 'data': {'entity_id': 'thread.thread-0', 'new_state': {'entity_id': 'thread.thread-0', 'state': 'idle', 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': 'never', 'pinned_apps': ['hello_world']}}, 'old_state': {'entity_id': 'thread.thread-0', 'state': 'idle', 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': 'never', 'pinned_apps': ['hello_world']}}}, 'namespace': 'admin'}, 'response_id': 'bbe0fff5-c958-4b58-9521-27b94bae8033', 'response_type': 'state_changed'}
2020-11-11 09:32:23.488169 DEBUG AppDaemon: --> {'data': {'event_type': 'state_changed', 'data': {'entity_id': 'thread.thread-1', 'new_state': {'entity_id': 'thread.thread-1', 'state': 'idle', 'last_changed': '2020-11-11T09:32:23+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': '2020-11-11T09:32:22+01:00', 'pinned_apps': ['nest']}}, 'old_state': {'entity_id': 'thread.thread-1', 'state': 'idle', 'last_changed': '2020-11-11T09:32:22+01:00', 'attributes': {'q': 0, 'is_alive': True, 'time_called': '2020-11-11T09:32:22+01:00', 'pinned_apps': ['nest']}}}, 'namespace': 'admin'}, 'response_id': 'bbe0fff5-c958-4b58-9521-27b94bae8033', 'response_type': 'state_changed'}
That’s all well and good and thanks for the detailed info but it you don’t have the climate services in HA you’re kinda FUBAR! Personally I started with the Nest integration and then added appdaemon/nest.py. I’d first try adding climate:
to configuration.yaml.
If that doesn’t trigger them, try adding Nest to configuration.yaml:
nest:
client_id: !secret nest_client_id
client_secret: !secret nest_client_secret
project_id: !secret nest_project_id
subscriber_id: !secret nest_subscriber_id