Ubuntu 24.04
HA Core 2026.1.0
appdaemon 4.5.13
I am running Home Assistant core which is working as expected along with appdaemon running in a python venv, so no add on. I verified appdaemon is running with a dashboard, however I am not able to get it to connect to HA. Also I verified the token is correct and that port 8123 is in my firewall rules. I tried using localhost, 127.0.0.1 and my server IP address for ha_url. My appdaemon.yaml file with a few updates worked for a 2024 version of HA and appdaemon. Any settings I need to do for the latest versions of HA and appdaemon?
Any help is appreciated.
Thanks Mark
My YAML file:
appdaemon:
plugins:
HASS:
type: hass
ha_url: <http://localhost:8123>
cert_verify: False
token: <my_ha_token>
# Location required to calculate the time the sun rises and sets
latitude: xxxxx
longitude: xxxx
# Impacts weather/sunrise data (altitude above sea level in meters)
elevation: 2100
# Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
time_zone: America/New_York
#logs:
main_log:
filename: /home/mark/appdaemon_conf/conf/appdaemon.log
error_log:
filename: /home/mark/appdaemon_conf/conf/error.log
diag_log:
filename: /home/mark/appdaemon_conf/conf/diag.log
access_log:
filename: /home/mark/appdaemon_conf/conf/access.log
# log_generations: 3
# log_size: 1000000
http:
url: http://0.0.0.0:5050
hadashboard:
2026-02-04 07:39:24.130 DEBUG AppDaemon: Reading config file: /home/mark/appdaemon_conf/conf/appdaemon.yaml
2026-02-04 07:39:24.146 DEBUG AppDaemon: {
"admin": null,
"api": null,
"appdaemon": {
"access_log": {
"filename": "/home/mark/appdaemon_conf/conf/access.log"
},
"ad_version": "4.5.13",
"admin_delay": 1.0,
"api_key": null,
"api_port": null,
"api_ssl_certificate": null,
"api_ssl_key": null,
"app_dir": "/home/mark/appdaemon_conf/conf/apps",
"ascii_encode": true,
"cert_verify": true,
"check_app_updates_profile": false,
"config_dir": "/home/mark/appdaemon_conf/conf",
"config_file": "/home/mark/appdaemon_conf/conf/appdaemon.yaml",
"diag_log": {
"filename": "/home/mark/appdaemon_conf/conf/diag.log"
},
"disable_apps": false,
"discard_init_events": false,
"elevation": 2100,
"endtime": null,
"error_log": {
"filename": "/home/mark/appdaemon_conf/conf/error.log"
},
"exclude_dirs": [
"__pycache__",
"build",
".venv"
],
"ext": ".yaml",
"filters": [],
"import_method": null,
"import_paths": [],
"internal_function_timeout": 60.0,
"invalid_config_warnings": true,
"latitude": 34.892594,
"load_distribution": "roundrobbin",
"log_thread_actions": false,
"loglevel": "DEBUG",
"longitude": -83.538831,
"main_log": {
"filename": "/home/mark/appdaemon_conf/conf/appdaemon.log"
},
"max_utility_skew": 2.0,
"missing_app_warnings": true,
"module_debug": {},
"namespaces": {},
"pin_apps": true,
"pin_threads": null,
"plugin_performance_update": 10,
"plugins": {
"HASS": {
"api_class": "Hass",
"api_module": "appdaemon.plugins.hass.hassapi",
"appdaemon_startup_conditions": null,
"cert_path": null,
"cert_verify": false,
"commtype": null,
"config_sleep_time": 60.0,
"connect_timeout": 1.0,
"disable": false,
"enable_started_event": true,
"ha_key": null,
"ha_url": "%3Chttp://0.0.0.0:8123%3E",
"name": "HASS",
"namespace": "default",
"namespaces": [],
"persist_entities": false,
"plugin_class": "HassPlugin",
"plugin_module": "appdaemon.plugins.hass.hassplugin",
"plugin_startup_conditions": null,
"refresh_delay": 600.0,
"refresh_timeout": 30.0,
"retry_secs": 5.0,
"services_sleep_time": 60.0,
"suppress_log_messages": false,
"token": "**********",
"type": "hass",
"ws_max_msg_size": 4194304,
"ws_timeout": 10.0
}
},
"production_mode": false,
"qsize_warning_iterations": 10,
"qsize_warning_step": 60,
"qsize_warning_threshold": 50,
"starttime": null,
"stop_function": null,
"suppress_log_messages": false,
"thread_duration_warning_threshold": 10.0,
"threadpool_workers": 10,
"threads": null,
"time_zone": "America/New_York",
"timewarp": 1.0,
"total_threads": null,
"use_dictionary_unpacking": false,
"use_stream": false,
"utility_delay": 1.0,
"uvloop": false,
"write_toml": false
},
"hadashboard": {
"compile_on_start": false,
"config_dir": "/home/mark/appdaemon_conf/conf",
"config_file": "/home/mark/appdaemon_conf/conf/appdaemon.yaml",
"dashboard": true,
"dashboard_dir": null,
"force_compile": false,
"profile_dashboard": false
},
"http": {
"headers": null,
"password": null,
"ssl_certificate": null,
"ssl_key": null,
"static_dirs": null,
"transport": "ws",
"url": "http://0.0.0.0:5050/"
},
"log": null,
"logs": {},
"old_admin": null
}
2026-02-04 07:39:24.146455 WARNING AppDaemon: Extra config field 'access_log'. This will be ignored
2026-02-04 07:39:24.146571 WARNING AppDaemon: Extra config field 'error_log'. This will be ignored
2026-02-04 07:39:24.146630 WARNING AppDaemon: Extra config field 'main_log'. This will be ignored
2026-02-04 07:39:24.146692 WARNING AppDaemon: Extra config field 'diag_log'. This will be ignored
2026-02-04 07:39:24.147054 DEBUG file: Reading config file: /home/mark/appdaemon_conf/conf/apps/apps.yaml
2026-02-04 07:39:24.147 DEBUG AppDaemon: Using selector: EpollSelector
2026-02-04 07:39:24.147739 DEBUG AppDaemon: Created new async event loop
2026-02-04 07:39:24.150233 INFO AppDaemon: ------------------------------------------------------------
2026-02-04 07:39:24.150298 INFO AppDaemon: AppDaemon Version 4.5.13 starting
2026-02-04 07:39:24.150348 INFO AppDaemon: ------------------------------------------------------------
2026-02-04 07:39:24.150396 INFO AppDaemon: Python version is 3.13.11
2026-02-04 07:39:24.150441 INFO AppDaemon: Configuration read from: /home/mark/appdaemon_conf/conf/appdaemon.yaml
2026-02-04 07:39:24.150778 INFO AppDaemon: Using /home/mark/appdaemon_conf/conf/apps as app_dir
2026-02-04 07:39:24.150905 DEBUG AppDaemon: register_service called: admin.app.edit -> <bound method AppManagement.manage_services of <appdaemon.app_management.AppManagement object at 0x709cefefacf0>>
2026-02-04 07:39:24.150982 DEBUG AppDaemon: register_service called: admin.app.stop -> <bound method AppManagement.manage_services of <appdaemon.app_management.AppManagement object at 0x709cefefacf0>>
2026-02-04 07:39:24.151053 DEBUG AppDaemon: register_service called: admin.app.reload -> <bound method AppManagement.manage_services of <appdaemon.app_management.AppManagement object at 0x709cefefacf0>>
2026-02-04 07:39:24.151121 DEBUG AppDaemon: register_service called: admin.app.create -> <bound method AppManagement.manage_services of <appdaemon.app_management.AppManagement object at 0x709cefefacf0>>
2026-02-04 07:39:24.151187 DEBUG AppDaemon: register_service called: admin.app.start -> <bound method AppManagement.manage_services of <appdaemon.app_management.AppManagement object at 0x709cefefacf0>>
2026-02-04 07:39:24.151260 DEBUG AppDaemon: register_service called: admin.app.enable -> <bound method AppManagement.manage_services of <appdaemon.app_management.AppManagement object at 0x709cefefacf0>>
2026-02-04 07:39:24.151324 DEBUG AppDaemon: register_service called: admin.app.restart -> <bound method AppManagement.manage_services of <appdaemon.app_management.AppManagement object at 0x709cefefacf0>>
2026-02-04 07:39:24.151387 DEBUG AppDaemon: register_service called: admin.app.disable -> <bound method AppManagement.manage_services of <appdaemon.app_management.AppManagement object at 0x709cefefacf0>>
2026-02-04 07:39:24.151449 DEBUG AppDaemon: register_service called: admin.app.remove -> <bound method AppManagement.manage_services of <appdaemon.app_management.AppManagement object at 0x709cefefacf0>>
2026-02-04 07:39:24.152064 INFO AppDaemon: Loading built-in plugin 'HASS' using 'HassPlugin' from 'appdaemon.plugins.hass.hassplugin'
2026-02-04 07:39:24.152249 INFO HASS: HASS Plugin initialization complete
2026-02-04 07:39:24.152402 INFO AppDaemon: Initializing HTTP
2026-02-04 07:39:24.152583 INFO AppDaemon: Using 'ws' for event stream
2026-02-04 07:39:24.153823 INFO AppDaemon: API is disabled
2026-02-04 07:39:24.153922 INFO AppDaemon: Admin Interface is disabled
2026-02-04 07:39:24.153993 INFO AppDaemon: Starting Dashboards
2026-02-04 07:39:24.155103 DEBUG AppDaemon: Starting AppDaemon
2026-02-04 07:39:24.155183 DEBUG AppDaemon: Starting thread_async loop
2026-02-04 07:39:24.155286 DEBUG AppDaemon: Running async event loop forever
2026-02-04 07:39:24.155378 DEBUG AppDaemon: Event type: service_registered:
2026-02-04 07:39:24.155438 DEBUG AppDaemon: process_event_callbacks() admin {'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'edit'}}
2026-02-04 07:39:24.155529 DEBUG AppDaemon: Event type: service_registered:
2026-02-04 07:39:24.155581 DEBUG AppDaemon: process_event_callbacks() admin {'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'stop'}}
2026-02-04 07:39:24.155665 DEBUG AppDaemon: Event type: service_registered:
2026-02-04 07:39:24.155723 DEBUG AppDaemon: process_event_callbacks() admin {'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'reload'}}
2026-02-04 07:39:24.155803 DEBUG AppDaemon: Event type: service_registered:
2026-02-04 07:39:24.155861 DEBUG AppDaemon: process_event_callbacks() admin {'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'create'}}
2026-02-04 07:39:24.155939 DEBUG AppDaemon: Event type: service_registered:
2026-02-04 07:39:24.155995 DEBUG AppDaemon: process_event_callbacks() admin {'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'start'}}
2026-02-04 07:39:24.156073 DEBUG AppDaemon: Event type: service_registered:
2026-02-04 07:39:24.156130 DEBUG AppDaemon: process_event_callbacks() admin {'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'enable'}}
2026-02-04 07:39:24.156207 DEBUG AppDaemon: Event type: service_registered:
2026-02-04 07:39:24.156276 DEBUG AppDaemon: process_event_callbacks() admin {'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'restart'}}
2026-02-04 07:39:24.156359 DEBUG AppDaemon: Event type: service_registered:
2026-02-04 07:39:24.156415 DEBUG AppDaemon: process_event_callbacks() admin {'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'disable'}}
2026-02-04 07:39:24.156491 DEBUG AppDaemon: Event type: service_registered:
2026-02-04 07:39:24.156546 DEBUG AppDaemon: process_event_callbacks() admin {'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'remove'}}
2026-02-04 07:39:24.186819 DEBUG AppDaemon: Previous message repeated 1 times
2026-02-04 07:39:24.186955 DEBUG AppDaemon: thread_async loop, args={'function': <bound method Events.process_event of <appdaemon.events.Events object at 0x709cefef9fd0>>, 'args': ('admin', {'event_type': '__AD_LOG_EVENT', 'data': {'level': 'INFO', 'app_name': 'AppDaemon', 'message': "Loading built-in plugin 'HASS' using 'HassPlugin' from 'appdaemon.plugins.hass.hassplugin'", 'type': 'log', 'log_type': 'main_log', 'asctime': '2026-02-04 07:39:24.152112', 'ts': datetime.datetime(2026, 2, 4, 7, 39, 24, 152039), 'formatted_message': "2026-02-04 07:39:24.152112 INFO AppDaemon: Loading built-in plugin 'HASS' using 'HassPlugin' from 'appdaemon.plugins.hass.hassplugin'"}}), 'kwargs': {}}
2026-02-04 07:39:24.187040 DEBUG AppDaemon: thread_async loop, args={'function': <bound method Events.process_event of <appdaemon.events.Events object at 0x709cefef9fd0>>, 'args': ('admin', {'event_type': '__AD_LOG_EVENT', 'data': {'level': 'INFO', 'app_name': 'HASS', 'message': 'HASS Plugin initialization complete', 'type': 'log', 'log_type': 'main_log', 'asctime': '2026-02-04 07:39:24.152287', 'ts': datetime.datetime(2026, 2, 4, 7, 39, 24, 152227), 'formatted_message': '2026-02-04 07:39:24.152287 INFO HASS: HASS Plugin initialization complete'}}), 'kwargs': {}}
2026-02-04 07:39:24.187131 DEBUG AppDaemon: thread_async loop, args={'function': <bound method Events.process_event of <appdaemon.events.Events object at 0x709cefef9fd0>>, 'args': ('admin', {'event_type': '__AD_LOG_EVENT', 'data': {'level': 'INFO', 'app_name': 'AppDaemon', 'message': 'Initializing HTTP', 'type': 'log', 'log_type': 'main_log', 'asctime': '2026-02-04 07:39:24.152441', 'ts': datetime.datetime(2026, 2, 4, 7, 39, 24, 152383), 'formatted_message': '2026-02-04 07:39:24.152441 INFO AppDaemon: Initializing HTTP'}}), 'kwargs': {}}
2026-02-04 07:39:24.187228 DEBUG AppDaemon: thread_async loop, args={'function': <bound method Events.process_event of <appdaemon.events.Events object at 0x709cefef9fd0>>, 'args': ('admin', {'event_type': '__AD_LOG_EVENT', 'data': {'level': 'INFO', 'app_name': 'AppDaemon', 'message': "Using 'ws' for event stream", 'type': 'log', 'log_type': 'main_log', 'asctime': '2026-02-04 07:39:24.152621', 'ts': datetime.datetime(2026, 2, 4, 7, 39, 24, 152559), 'formatted_message': "2026-02-04 07:39:24.152621 INFO AppDaemon: Using 'ws' for event stream"}}), 'kwargs': {}}
2026-02-04 07:39:24.187299 DEBUG AppDaemon: thread_async loop, args={'function': <bound method Events.process_event of <appdaemon.events.Events object at 0x709cefef9fd0>>, 'args': ('admin', {'event_type': '__AD_LOG_EVENT', 'data': {'level': 'INFO', 'app_name': 'AppDaemon', 'message': 'API is disabled', 'type': 'log', 'log_type': 'main_log', 'asctime': '2026-02-04 07:39:24.153869', 'ts': datetime.datetime(2026, 2, 4, 7, 39, 24, 153798), 'formatted_message': '2026-02-04 07:39:24.153869 INFO AppDaemon: API is disabled'}}), 'kwargs': {}}
2026-02-04 07:39:24.187366 DEBUG AppDaemon: thread_async loop, args={'function': <bound method Events.process_event of <appdaemon.events.Events object at 0x709cefef9fd0>>, 'args': ('admin', {'event_type': '__AD_LOG_EVENT', 'data': {'level': 'INFO', 'app_name': 'AppDaemon', 'message': 'Admin Interface is disabled', 'type': 'log', 'log_type': 'main_log', 'asctime': '2026-02-04 07:39:24.153953', 'ts': datetime.datetime(2026, 2, 4, 7, 39, 24, 153904), 'formatted_message': '2026-02-04 07:39:24.153953 INFO AppDaemon: Admin Interface is disabled'}}), 'kwargs': {}}
2026-02-04 07:39:24.187456 DEBUG AppDaemon: thread_async loop, args={'function': <bound method Events.process_event of <appdaemon.events.Events object at 0x709cefef9fd0>>, 'args': ('admin', {'event_type': '__AD_LOG_EVENT', 'data': {'level': 'INFO', 'app_name': 'AppDaemon', 'message': 'Starting Dashboards', 'type': 'log', 'log_type': 'main_log', 'asctime': '2026-02-04 07:39:24.154021', 'ts': datetime.datetime(2026, 2, 4, 7, 39, 24, 153978), 'formatted_message': '2026-02-04 07:39:24.154021 INFO AppDaemon: Starting Dashboards'}}), 'kwargs': {}}
2026-02-04 07:39:24.187532 DEBUG AppDaemon: thread_async loop, args={'function': <bound method ADStream.process_event of <appdaemon.stream.adstream.ADStream object at 0x709cefefbb60>>, 'args': ({'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'edit'}, 'namespace': 'admin'},), 'kwargs': {}}
2026-02-04 07:39:24.187604 DEBUG AppDaemon: thread_async loop, args={'function': <bound method ADStream.process_event of <appdaemon.stream.adstream.ADStream object at 0x709cefefbb60>>, 'args': ({'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'stop'}, 'namespace': 'admin'},), 'kwargs': {}}
2026-02-04 07:39:24.187674 DEBUG AppDaemon: thread_async loop, args={'function': <bound method ADStream.process_event of <appdaemon.stream.adstream.ADStream object at 0x709cefefbb60>>, 'args': ({'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'reload'}, 'namespace': 'admin'},), 'kwargs': {}}
2026-02-04 07:39:24.187744 DEBUG AppDaemon: thread_async loop, args={'function': <bound method ADStream.process_event of <appdaemon.stream.adstream.ADStream object at 0x709cefefbb60>>, 'args': ({'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'create'}, 'namespace': 'admin'},), 'kwargs': {}}
2026-02-04 07:39:24.187843 DEBUG AppDaemon: thread_async loop, args={'function': <bound method ADStream.process_event of <appdaemon.stream.adstream.ADStream object at 0x709cefefbb60>>, 'args': ({'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'start'}, 'namespace': 'admin'},), 'kwargs': {}}
2026-02-04 07:39:24.187912 DEBUG AppDaemon: thread_async loop, args={'function': <bound method ADStream.process_event of <appdaemon.stream.adstream.ADStream object at 0x709cefefbb60>>, 'args': ({'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'enable'}, 'namespace': 'admin'},), 'kwargs': {}}
2026-02-04 07:39:24.187982 DEBUG AppDaemon: thread_async loop, args={'function': <bound method ADStream.process_event of <appdaemon.stream.adstream.ADStream object at 0x709cefefbb60>>, 'args': ({'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'restart'}, 'namespace': 'admin'},), 'kwargs': {}}
2026-02-04 07:39:24.188051 DEBUG AppDaemon: thread_async loop, args={'function': <bound method ADStream.process_event of <appdaemon.stream.adstream.ADStream object at 0x709cefefbb60>>, 'args': ({'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'disable'}, 'namespace': 'admin'},), 'kwargs': {}}
2026-02-04 07:39:24.188120 DEBUG AppDaemon: thread_async loop, args={'function': <bound method ADStream.process_event of <appdaemon.stream.adstream.ADStream object at 0x709cefefbb60>>, 'args': ({'event_type': 'service_registered', 'data': {'namespace': 'admin', 'domain': 'app', 'service': 'remove'}, 'namespace': 'admin'},), 'kwargs': {}}
2026-02-04 07:39:24.188202 DEBUG AppDaemon: Starting utility loop
2026-02-04 07:39:24.188696 INFO AppDaemon: Starting apps with 1 worker threads. Apps will all be assigned threads and pinned to them.
2026-02-04 07:39:24.189888 ERROR HASS: %3Chttp://0.0.0.0:8123%3E/api/websocket
2026-02-04 07:39:24.190290 INFO HASS: Attempting reconnection in 5.0s
2026-02-04 07:39:24.190412 DEBUG AppDaemon: Event type: __AD_LOG_EVENT:
2026-02-04 07:39:24.190484 DEBUG AppDaemon: process_event_callbacks() admin {'event_type': '__AD_LOG_EVENT', 'data': {'level': 'INFO', 'app_name': 'AppDaemon', 'message': 'Using /home/mark/appdaemon_conf/conf/apps as app_dir', 'type': 'log', 'log_type': 'main_log', 'asctime': '2026-02-04 07:39:24.150821', 'ts': datetime.datetime(2026, 2, 4, 7, 39, 24, 150749), 'formatted_message': '2026-02-04 07:39:24.150821 INFO AppDaemon: Using /home/mark/appdaemon_conf/conf/apps as app_dir'}}
2026-02-04 07:39:24.190569 DEBUG AppDaemon: Event type: __AD_LOG_EVENT: