Dashboard 'robots.txt' not found

First things first: Running Hassio with HA 0.64.3 on RPi3 with frenck’s add-on AppDaemon2.

Since yesterday, when i upgraded HA and AppDaemon to latest versions, my dashboards stopped updating the entity states and when i switch a lamp, or anything else, nothing happens but the icon appear as on.

When i open a page on the dashboard and look at the log, there are warnings about a “robots.txt” file not found and an unexpected error during DASH creation…

There is also an error about API disabled but i don’t think this has anything to do with it.

2018-03-07 13:18:09.859898 INFO AppDaemon Version 2.1.12 starting
2018-03-07 13:18:09.862045 INFO Configuration read from: /config/appdaemon/appdaemon.yaml
2018-03-07 13:18:11.105779 INFO Starting Apps
2018-03-07 13:18:11.875186 INFO Got initial state
2018-03-07 13:18:11.879330 INFO Loading Module: /config/appdaemon/apps/hello.py
2018-03-07 13:18:11.884242 INFO Loading Object hello_world using class HelloWorld from module hello
2018-03-07 13:18:12.624241 INFO hello_world: Hello from AppDaemon
2018-03-07 13:18:12.634465 INFO hello_world: You are now ready to run Apps!
2018-03-07 13:18:12.635373 INFO App initialization complete
2018-03-07 13:18:12.637409 INFO Starting dashboard
2018-03-07 13:18:12.672190 INFO API is disabled
2018-03-07 13:18:12.703656 INFO Connected to Home Assistant 0.64.3
2018-03-07 13:18:13.468404 INFO New dashboard connected: Lights
2018-03-07 13:18:15.370781 INFO New dashboard connected: Energy

Opening the dashboard with Google Chrome, there are no errors on the console when opening any page.

This is driving me crazy, can someone help please?

appdaemon.yaml

AppDaemon:
  logfile: STDOUT
  errorfile: STDERR
  threads: '10'
  app_dir: /config/appdaemon/apps
  disable_apps: 1

HASS:
  ha_url: http://hassio/homeassistant
  ha_key: <redacted>

HADashboard:
  dash_url: http://192.168.1.200:5050
  dash_dir: /config/appdaemon/dashboards

hello_world:
  module: hello
  class: HelloWorld

Hassio addon config:

{
  "log_level": "info",
  "commtype": "websockets",
  "system_packages": [],
  "python_packages": []
}

Hassio addon log:

2018-03-07 12:53:43.240091 INFO Loading custom skin 'default'
2018-03-07 12:53:43.265413 INFO Loading custom skin 'default'
2018-03-07 12:53:43.314751 INFO Compiling dashboard 'robots.txt'
2018-03-07 12:53:44.222108 INFO function [get_dashboard] finished in 982 ms
2018-03-07 12:53:44.256228 INFO Dashboard disconnected
2018-03-07 12:53:45.589367 WARNING Dashboard 'robots.txt' not found
2018-03-07 12:53:45.602206 WARNING ------------------------------------------------------------
2018-03-07 12:53:45.605616 WARNING Unexpected error during DASH creation
2018-03-07 12:53:45.607475 WARNING ------------------------------------------------------------
2018-03-07 12:53:45.610184 WARNING Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/appdaemon/dashboard.py", line 803, in get_dashboard
    with open(include_path, "r") as include_file:
FileNotFoundError: [Errno 2] No such file or directory: '/config/appdaemon/compiled/html/default/robots.txt_head.html'
2018-03-07 12:53:45.611171 WARNING ------------------------------------------------------------
2018-03-07 12:53:45.612740 INFO function [get_dashboard] finished in 2347 ms
Error handling request
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/aiohttp/web_protocol.py", line 381, in start
    resp = await self._request_handler(request)
  File "/usr/lib/python3.6/site-packages/aiohttp/web_app.py", line 310, in _handle
    resp = await handler(request)
  File "/usr/lib/python3.6/asyncio/coroutines.py", line 213, in coro
    res = yield from res
  File "/usr/lib/python3.6/site-packages/appdaemon/rundash.py", line 130, in load_dash
    return web.Response(text=response, content_type="text/html")
  File "/usr/lib/python3.6/site-packages/aiohttp/web_response.py", line 463, in __init__
    type(text))
TypeError: text argument must be str (<class 'dict'>)
2018-03-07 12:53:45.782602 INFO Loading custom skin 'default'
2018-03-07 12:53:45.819381 INFO Compiling dashboard 'robots.txt'
2018-03-07 12:53:46.204118 INFO New dashboard connected: Temperatures
2018-03-07 12:53:46.985613 WARNING Dashboard 'robots.txt' not found
2018-03-07 12:53:46.987933 WARNING ------------------------------------------------------------
2018-03-07 12:53:46.988889 WARNING Unexpected error during DASH creation
2018-03-07 12:53:46.989732 WARNING ------------------------------------------------------------
2018-03-07 12:53:46.991438 WARNING Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/appdaemon/dashboard.py", line 803, in get_dashboard
    with open(include_path, "r") as include_file:
FileNotFoundError: [Errno 2] No such file or directory: '/config/appdaemon/compiled/html/default/robots.txt_head.html'
2018-03-07 12:53:46.992377 WARNING ------------------------------------------------------------
2018-03-07 12:53:46.993412 INFO function [get_dashboard] finished in 1211 ms
Error handling request
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/aiohttp/web_protocol.py", line 381, in start
    resp = await self._request_handler(request)
  File "/usr/lib/python3.6/site-packages/aiohttp/web_app.py", line 310, in _handle
    resp = await handler(request)
  File "/usr/lib/python3.6/asyncio/coroutines.py", line 213, in coro
    res = yield from res
  File "/usr/lib/python3.6/site-packages/appdaemon/rundash.py", line 130, in load_dash
    return web.Response(text=response, content_type="text/html")
  File "/usr/lib/python3.6/site-packages/aiohttp/web_response.py", line 463, in __init__
    type(text))
TypeError: text argument must be str (<class 'dict'>)

there is a problem with appdaemon 2 and the latest version from HA.
Andrew will try to create a fix for it, but he is away for the time being, so it will take some time.

the options you have:

  1. wait for the fix
  2. go back to an older version from HA
  3. upgrade to appdaemon 3

Thank you @ReneTode. I think my best option is to move forward and upgrade to AppDaemon 3.

Do you know if there is any tutorial for the upgrade?

Installed AppDaemon3 from Frenck’s repository. Changed what was needed according to the docs.

Current config of appdaemon.yaml is:

log:
  accessfile: /config/appdaemon/logs/access.log
  errorfile: /config/appdaemon/logs/error.log
  logfile: /config/appdaemon/logs/appdaemon.log
  log_generations: 3
  log_size: 1000000
appdaemon:
  threads: 10
  plugins:
    HASS:
      type: hass
      ha_url: http://192.168.1.200:8123
      ha_key: '<redacted>'
hadashboard:
  dash_url: http://192.168.1.200:5050
  dashboard_dir: /config/appdaemon/dashboards

There are no errors on the addon log after start.

-----------------------------------------------------------
 Hass.io Add-on: AppDaemon3 v0.3.0
 Python Apps and HADashboard using AppDaemon 3.x for Home Assistant
 From: Community Hass.io Add-ons
 By: Franck Nijhof <[email protected]>
-----------------------------------------------------------
[cont-init.d] 00-banner.sh: exited 0.
[cont-init.d] 01-log-level.sh: executing... 
Log level is set to INFO
[cont-init.d] 01-log-level.sh: exited 0.
[cont-init.d] 02-updates.sh: executing... 
INFO: You are running the latest version of this add-on
[cont-init.d] 02-updates.sh: exited 0.
[cont-init.d] 03-version-requirements.sh: executing... 
INFO: Supervisor version requirements checks passed.
[cont-init.d] 03-version-requirements.sh: exited 0.
[cont-init.d] 20-init-configuration.sh: executing... 
[cont-init.d] 20-init-configuration.sh: exited 0.
[cont-init.d] 21-compiled-dir.sh: executing... 
[cont-init.d] 21-compiled-dir.sh: exited 0.
[cont-init.d] 30-auto-password.sh: executing... 
[cont-init.d] 30-auto-password.sh: exited 0.
[cont-init.d] 31-ha-url.sh: executing... 
WARNING: You are using an non-recommended Home Assistant URL!
WARNING: Setting the "ha_url" option in your AppDaemon config to
WARNING: "http://hassio/homeassistant" is recommended!
[cont-init.d] 31-ha-url.sh: exited 0.
[cont-init.d] 50-compiled-symlink.sh: executing... 
[cont-init.d] 50-compiled-symlink.sh: exited 0.
[cont-init.d] 80-system-packages.sh: executing... 
[cont-init.d] 80-system-packages.sh: exited 0.
[cont-init.d] 81-python-packages.sh: executing... 
[cont-init.d] 81-python-packages.sh: exited 0.
[cont-init.d] done.
[services.d] starting services
starting version 3.2.4
[services.d] done.

But now when i try to access the dashboard, i get lots of errors like this on Chrome console:

GET http://192.168.1.200:5050/state/sensor.humidade_media_casa 404 (Not Found)

i think this is important.
and i dont see anything to show that your appdaemon is actually started.

Yes, i saw that and changed it. It’s working now!

The appdaemon.yaml file was changed to

log:
  accessfile: /config/appdaemon/logs/access.log
  errorfile: /config/appdaemon/logs/error.log
  logfile: /config/appdaemon/logs/appdaemon.log
  log_generations: 3
  log_size: 1000000
appdaemon:
  threads: 10
  disable_apps: 1
  plugins:
    HASS:
      type: hass
      ha_url: http://hassio/homeassistant
      ha_key: <redacted>
hadashboard:
  dash_url: http://192.168.1.200:5050
  dashboard_dir: /config/appdaemon/dashboards
  dash_compile_on_start: 1

Everything is working but still have the same “robots.txt” warning.

2018-03-07 19:15:34.669941 WARNING Dashboard 'robots.txt' not found
2018-03-07 19:15:34.672374 WARNING ------------------------------------------------------------
2018-03-07 19:15:34.673323 WARNING Unexpected error during DASH creation
2018-03-07 19:15:34.674146 WARNING ------------------------------------------------------------
2018-03-07 19:15:34.675806 WARNING Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/appdaemon/dashboard.py", line 822, in get_dashboard
    with open(include_path, "r") as include_file:
FileNotFoundError: [Errno 2] No such file or directory: '/config/appdaemon/compiled/html/default/robots.txt_head.html'

2018-03-07 19:15:34.676675 WARNING ------------------------------------------------------------
2018-03-07 19:15:34.678201 INFO function [get_dashboard] finished in 1940 ms
2018-03-07 19:15:34.714920 INFO Loading custom skin 'default'
2018-03-07 19:15:34.746427 INFO Compiling dashboard 'robots.txt'
2018-03-07 19:15:36.049076 WARNING Dashboard 'robots.txt' not found
2018-03-07 19:15:36.051304 WARNING ------------------------------------------------------------
2018-03-07 19:15:36.052219 WARNING Unexpected error during DASH creation
2018-03-07 19:15:36.053044 WARNING ------------------------------------------------------------
2018-03-07 19:15:36.054540 WARNING Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/appdaemon/dashboard.py", line 822, in get_dashboard
    with open(include_path, "r") as include_file:
FileNotFoundError: [Errno 2] No such file or directory: '/config/appdaemon/compiled/html/default/robots.txt_head.html'

2018-03-07 19:15:36.055443 WARNING ------------------------------------------------------------

please close all dashboards.
then stop appdaemon.

then please check in your dashboard dir if there are any files there that dont belong there.
/config/appdaemon/dashboards

then delete all files in
/config/appdaemon/compiled/html
/config/appdaemon/compiled/js
/config/appdaemon/compiled/css

then restart appdaemon
before you try any dashboards check your logs.

if there is still anything wrong, then please report back.
if not start your dashboard and check the logs again.

Done!

No strange files.

I don’t have any /config/appdaemon/compiled directory… Should i have it?

No errors on the logs!

After i open a dashboard the “robots.txt” warning appears again…

access.log

2018-03-07 23:22:11.088525 INFO HADashboard: New dashboard connected: HA Main Panel
2018-03-07 23:22:44.832740 INFO Loading custom skin 'default'
2018-03-07 23:22:44.851817 INFO Loading custom skin 'default'
2018-03-07 23:22:44.929562 INFO Compiling dashboard 'robots.txt'
2018-03-07 23:22:45.466849 INFO function [get_dashboard] finished in 635 ms
2018-03-07 23:22:46.006068 WARNING Dashboard 'robots.txt' not found
2018-03-07 23:22:46.007703 WARNING ------------------------------------------------------------
2018-03-07 23:22:46.008664 WARNING Unexpected error during DASH creation
2018-03-07 23:22:46.009421 WARNING ------------------------------------------------------------
2018-03-07 23:22:46.018133 WARNING Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/appdaemon/dashboard.py", line 822, in get_dashboard
    with open(include_path, "r") as include_file:
FileNotFoundError: [Errno 2] No such file or directory: '/config/appdaemon/compiled/html/default/robots.txt_head.html'

2018-03-07 23:22:46.018991 WARNING ------------------------------------------------------------
2018-03-07 23:22:46.019783 INFO function [get_dashboard] finished in 1169 ms
2018-03-07 23:22:46.046397 INFO Loading custom skin 'default'
2018-03-07 23:22:46.063210 INFO Compiling dashboard 'robots.txt'
2018-03-07 23:22:46.800414 INFO HADashboard: New dashboard connected: HA Main Panel
2018-03-07 23:22:47.378693 WARNING Dashboard 'robots.txt' not found
2018-03-07 23:22:47.381079 WARNING ------------------------------------------------------------
2018-03-07 23:22:47.382226 WARNING Unexpected error during DASH creation
2018-03-07 23:22:47.383286 WARNING ------------------------------------------------------------
2018-03-07 23:22:47.385184 WARNING Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/appdaemon/dashboard.py", line 822, in get_dashboard
    with open(include_path, "r") as include_file:
FileNotFoundError: [Errno 2] No such file or directory: '/config/appdaemon/compiled/html/default/robots.txt_head.html'

2018-03-07 23:22:47.386296 WARNING ------------------------------------------------------------
2018-03-07 23:22:47.387620 INFO function [get_dashboard] finished in 1341 ms

appdaemon.log

2018-03-07 23:22:00.200399 INFO AppDaemon Version 3.0.0b5 starting
2018-03-07 23:22:00.201861 INFO Configuration read from: /config/appdaemon/appdaemon.yaml
2018-03-07 23:22:00.208285 INFO AppDaemon: Starting Apps
2018-03-07 23:22:00.220176 INFO AppDaemon: Loading Plugin HASS using class HassPlugin from module hassplugin
2018-03-07 23:22:00.341498 INFO AppDaemon: HASS: HASS Plugin Initializing
2018-03-07 23:22:00.343594 INFO AppDaemon: HASS: HASS Plugin initialization complete
2018-03-07 23:22:00.345152 INFO Starting Dashboards
2018-03-07 23:22:00.393074 INFO API is disabled
2018-03-07 23:22:00.453668 INFO AppDaemon: HASS: Connected to Home Assistant 0.64.3
2018-03-07 23:22:03.196139 INFO AppDaemon: Reading config
2018-03-07 23:22:03.262652 INFO AppDaemon: /config/appdaemon/apps/apps.yaml added or modified
2018-03-07 23:22:03.318027 INFO AppDaemon: /config/appdaemon/apps/apps.yaml added or modified
2018-03-07 23:22:03.319792 INFO AppDaemon: Got initial state from namespace default
2018-03-07 23:22:03.320698 INFO AppDaemon: App 'hello_world' added
2018-03-07 23:22:03.335321 INFO AppDaemon: Adding /config/appdaemon/apps to module import path
2018-03-07 23:22:03.337946 INFO AppDaemon: Loading App Module: /config/appdaemon/apps/hello.py
2018-03-07 23:22:03.445006 INFO AppDaemon: Initializing app hello_world using class HelloWorld from module hello
2018-03-07 23:22:04.120857 INFO hello_world: Hello from AppDaemon
2018-03-07 23:22:04.130079 INFO hello_world: You are now ready to run Apps!
2018-03-07 23:22:04.133148 INFO AppDaemon: App initialization complete
2018-03-07 23:32:02.460640 WARNING AppDaemon: Excessive time spent in utility loop: 1158.0ms

i dont know how you look at your directories, but i got the feeling that you miss stuff somehow.

the dir /config/appdaemon/compiled should exist and appdaemon needs to have full access there.
what files are there all in the dashboard dir?
and what is in your HA main Panel dashboard?

I use Samba to access the files.

HA Main Panel is:

title: HA Main Panel
widget_dimensions: [114, 114]
widget_size: [1, 1]
widget_margins: [5, 5]
columns: 8
global_parameters:
    use_comma: 0
    precision: 1
    use_hass_icon: 1

#### Layout
layout:
    - clock(2x1), temp_out, temp_in, alarm, jmra_presence, lslma_presence, bama_presence
    - weather_widget(2x2)
    - 
    - porta_rua, consumption_w
    - include: TemplateNavigation


#### Widgets
clock:
  widget_type: clock
  widget_style: "border-radius: 6px;"
  time_format: 24hr
  show_seconds: 1
  time_style: "color: #00aaff !important"
  date_format_country: "pt"
  date_format_options:
    weekday: "long"
    day: "2-digit"
    month: "2-digit"
    year: "numeric"

porta_rua:
  widget_type: binary_sensor
  widget_style: "border-radius: 6px;"
  entity: binary_sensor.porta_da_rua
  title: Porta da Rua
  state_text: 1
  state_map:
    "on": Aberta
    "off": Fechada
  icon_on: mdi-lock-open-outline
  icon_off: mdi-lock-outline
  icon_style_active: "color: red"
  icon_style_inactive: "color: green"

weather_widget:
  widget_type: weather
  widget_style: "border-radius: 6px;"
  units: "&deg;C"

jmra_presence:
  widget_type: device_tracker
  widget_style: "border-radius: 6px;"
  title: Jorge
  device: jmra

lslma_presence:
  widget_type: device_tracker
  widget_style: "border-radius: 6px;"
  title: Lara
  device: lslma

bama_presence:
  widget_type: device_tracker
  widget_style: "border-radius: 6px;"
  title: Bia
  device: bama

temp_out:
  widget_type: sensor
  widget_style: "border-radius: 6px;"
  entity: sensor.dark_sky_temperature
  title: Temp. Rua
  sub_entity: sensor.dark_sky_humidity

temp_in:
  widget_type: sensor
  widget_style: "border-radius: 6px;"
  entity: sensor.temperatura_media_casa
  title: Temp. Casa
  sub_entity: sensor.humidade_media_casa

alarm:
  widget_type: alarm
  widget_style: "border-radius: 6px;"
  entity: alarm_control_panel.house
  title: Alarme

consumption_w:
  widget_type: sensor
  widget_style: "border-radius: 6px;"
  entity: sensor.energy_watt
  precision: 0
  title: Consumo (W)
  sub_entity: sensor.consumption_daily_total_kwh

i would try another way to view your files.
you have working and active dashboards.
that is only possible if you have a compiled directory.
the fact that you cant see that, tells me you dont see everything.

could be that the samba user doesnt have all the rights it needs to see all files.

what you could try is to rename the dashboards directory.
create a new dashboards directory and create 1 simple dashboard there (just 1 sensor in the dash)
close all dashboards before that and stop appdaemon.

after that restart AD and see the logs
then start that 1 new dashboard.

what you also can do is give in the compiled dir in the area where you now see:
network > HASSIO > config > dashboards
click on it and change dashboards to compiled and enter.
could be that it becomes visible if it is hidden.

Do you mean i should create a directory called compiled inside /config/appdaemon/dashboards (/config/appdaemon/dashboards/compiled) or change the name of dashboards to compiled (/config/appdaemon/compiled)?

no i gave you 2 things you could try:

  1. rename the dashboards directory.
    create a new dashboards directory and create 1 simple dashboard there (just 1 sensor in the dash)
    close all dashboards before that and stop appdaemon.
    after that restart AD and see the logs
    then start that 1 new dashboard.

  2. in your explorer balk at the top you see:
    network > HASSIO > config > dashboards
    click behind the word dashboards and it should change to a dir like \ \HASSIO\config\dashboards
    change that to \ \HASSIO\config\compiled and give an enter.
    if it is hidden but you have access, the dir will be opened, if you dont have access, explorer will give you an error popup.

When i access Hassio with Filezilla, there is a compiled folder but is shown as a simlink. Clicking it does nothing…

20edit

It shows the error popup

I’m going to try your first point now

stupid hassio.
they relocated the compiled dir.
why the hell did they do that??

but thanks for figuring that out, it makes a lot of things clear.

Lol… And what does that have to do with the error i’m having?

I’ve tried your first point and the error is still there after i access the dashboard…

2018-03-08 00:45:48.989540 INFO Loading custom skin 'default'
2018-03-08 00:45:49.294257 INFO Compiling dashboard 'robots.txt'
2018-03-08 00:45:50.611944 WARNING Dashboard 'robots.txt' not found
2018-03-08 00:45:50.614115 WARNING ------------------------------------------------------------
2018-03-08 00:45:50.615491 WARNING Unexpected error during DASH creation
2018-03-08 00:45:50.616873 WARNING ------------------------------------------------------------
2018-03-08 00:45:50.622517 WARNING Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/appdaemon/dashboard.py", line 822, in get_dashboard
    with open(include_path, "r") as include_file:
FileNotFoundError: [Errno 2] No such file or directory: '/config/appdaemon/compiled/html/default/robots.txt_head.html'

2018-03-08 00:45:50.624289 WARNING ------------------------------------------------------------
2018-03-08 00:45:50.626375 INFO function [get_dashboard] finished in 1637 ms
2018-03-08 00:45:50.660815 INFO Loading custom skin 'default'
2018-03-08 00:45:50.693734 INFO Compiling dashboard 'robots.txt'
2018-03-08 00:45:51.915427 INFO Loading custom skin 'default'
2018-03-08 00:45:52.302378 WARNING Dashboard 'robots.txt' not found
2018-03-08 00:45:52.306752 WARNING ------------------------------------------------------------
2018-03-08 00:45:52.308869 WARNING Unexpected error during DASH creation
2018-03-08 00:45:52.312005 INFO Compiling dashboard 'test'
2018-03-08 00:45:52.323756 WARNING ------------------------------------------------------------
2018-03-08 00:45:52.328034 WARNING Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/appdaemon/dashboard.py", line 822, in get_dashboard
    with open(include_path, "r") as include_file:
FileNotFoundError: [Errno 2] No such file or directory: '/config/appdaemon/compiled/html/default/robots.txt_head.html'

2018-03-08 00:45:52.329676 WARNING ------------------------------------------------------------
2018-03-08 00:45:52.331486 INFO function [get_dashboard] finished in 1671 ms
2018-03-08 00:45:52.459512 INFO Loading custom skin 'default'
2018-03-08 00:45:52.624797 INFO Compiling dashboard 'robots.txt'
2018-03-08 00:45:55.232785 WARNING Dashboard 'robots.txt' not found
2018-03-08 00:45:55.235888 WARNING ------------------------------------------------------------
2018-03-08 00:45:55.238002 WARNING Unexpected error during DASH creation
2018-03-08 00:45:55.239688 WARNING ------------------------------------------------------------
2018-03-08 00:45:55.241826 WARNING Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/appdaemon/dashboard.py", line 822, in get_dashboard
    with open(include_path, "r") as include_file:
FileNotFoundError: [Errno 2] No such file or directory: '/config/appdaemon/compiled/html/default/robots.txt_head.html'

2018-03-08 00:45:55.243249 WARNING ------------------------------------------------------------
2018-03-08 00:45:55.244748 INFO function [get_dashboard] finished in 2785 ms
2018-03-08 00:45:55.370678 INFO Loading custom widget 'baseweather'
2018-03-08 00:45:55.378743 INFO Loading custom widget 'basenew_weather'
2018-03-08 00:45:55.386969 INFO Loading custom widget 'new_weather.yaml'
2018-03-08 00:45:55.390135 INFO Loading custom widget 'weather.yaml'
2018-03-08 00:45:56.306265 INFO function [get_dashboard] finished in 4397 ms
2018-03-08 00:45:56.517995 INFO Loading custom skin 'default'
2018-03-08 00:45:56.592959 INFO Compiling dashboard 'robots.txt'
2018-03-08 00:45:57.456207 INFO HADashboard: New dashboard connected: Test Panel
2018-03-08 00:45:57.739586 WARNING Dashboard 'robots.txt' not found
2018-03-08 00:45:57.742324 WARNING ------------------------------------------------------------
2018-03-08 00:45:57.744607 WARNING Unexpected error during DASH creation
2018-03-08 00:45:57.746918 WARNING ------------------------------------------------------------
2018-03-08 00:45:57.750987 WARNING Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/appdaemon/dashboard.py", line 822, in get_dashboard
    with open(include_path, "r") as include_file:
FileNotFoundError: [Errno 2] No such file or directory: '/config/appdaemon/compiled/html/default/robots.txt_head.html'

2018-03-08 00:45:57.752597 WARNING ------------------------------------------------------------
2018-03-08 00:45:57.754979 INFO function [get_dashboard] finished in 1236 ms

And there is an error on AppDaemon3 addon log:

[cont-init.d] 00-banner.sh: executing... 
-----------------------------------------------------------
 Hass.io Add-on: AppDaemon3 v0.3.0
 Python Apps and HADashboard using AppDaemon 3.x for Home Assistant
 From: Community Hass.io Add-ons
 By: Franck Nijhof <[email protected]>
-----------------------------------------------------------
[cont-init.d] 00-banner.sh: exited 0.
[cont-init.d] 01-log-level.sh: executing... 
Log level is set to INFO
[cont-init.d] 01-log-level.sh: exited 0.
[cont-init.d] 02-updates.sh: executing... 
INFO: You are running the latest version of this add-on
[cont-init.d] 02-updates.sh: exited 0.
[cont-init.d] 03-version-requirements.sh: executing... 
INFO: Supervisor version requirements checks passed.
[cont-init.d] 03-version-requirements.sh: exited 0.
[cont-init.d] 20-init-configuration.sh: executing... 
[cont-init.d] 20-init-configuration.sh: exited 0.
[cont-init.d] 21-compiled-dir.sh: executing... 
[cont-init.d] 21-compiled-dir.sh: exited 0.
[cont-init.d] 30-auto-password.sh: executing... 
[cont-init.d] 30-auto-password.sh: exited 0.
[cont-init.d] 31-ha-url.sh: executing... 
[cont-init.d] 31-ha-url.sh: exited 0.
[cont-init.d] 50-compiled-symlink.sh: executing... 
[cont-init.d] 50-compiled-symlink.sh: exited 0.
[cont-init.d] 80-system-packages.sh: executing... 
[cont-init.d] 80-system-packages.sh: exited 0.
[cont-init.d] 81-python-packages.sh: executing... 
[cont-init.d] 81-python-packages.sh: exited 0.
[cont-init.d] done.
[services.d] starting services
starting version 3.2.4
[services.d] done.
Error handling request
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/aiohttp/web_protocol.py", line 416, in start
    resp = yield from self._request_handler(request)
  File "/usr/lib/python3.6/site-packages/aiohttp/web.py", line 325, in _handle
    resp = yield from handler(request)
  File "/usr/lib/python3.6/site-packages/aiohttp/web_middlewares.py", line 93, in impl
    return (yield from handler(request))
  File "/usr/lib/python3.6/site-packages/appdaemon/rundash.py", line 50, in wrapper
    return await myfunc(*args)
  File "/usr/lib/python3.6/site-packages/appdaemon/rundash.py", line 253, in load_dash
    return web.Response(text=response, content_type="text/html")
  File "/usr/lib/python3.6/site-packages/aiohttp/web_response.py", line 471, in __init__
    type(text))
TypeError: text argument must be str (<class 'dict'>)
Error handling request
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/aiohttp/web_protocol.py", line 416, in start
    resp = yield from self._request_handler(request)
  File "/usr/lib/python3.6/site-packages/aiohttp/web.py", line 325, in _handle
    resp = yield from handler(request)
  File "/usr/lib/python3.6/site-packages/aiohttp/web_middlewares.py", line 93, in impl
    return (yield from handler(request))
  File "/usr/lib/python3.6/site-packages/appdaemon/rundash.py", line 50, in wrapper
    return await myfunc(*args)
  File "/usr/lib/python3.6/site-packages/appdaemon/rundash.py", line 253, in load_dash
    return web.Response(text=response, content_type="text/html")
  File "/usr/lib/python3.6/site-packages/aiohttp/web_response.py", line 471, in __init__
    type(text))
TypeError: text argument must be str (<class 'dict'>)
Error handling request
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/aiohttp/web_protocol.py", line 416, in start
    resp = yield from self._request_handler(request)
  File "/usr/lib/python3.6/site-packages/aiohttp/web.py", line 325, in _handle
    resp = yield from handler(request)
  File "/usr/lib/python3.6/site-packages/aiohttp/web_middlewares.py", line 93, in impl
    return (yield from handler(request))
  File "/usr/lib/python3.6/site-packages/appdaemon/rundash.py", line 50, in wrapper
    return await myfunc(*args)
  File "/usr/lib/python3.6/site-packages/appdaemon/rundash.py", line 253, in load_dash
    return web.Response(text=response, content_type="text/html")
  File "/usr/lib/python3.6/site-packages/aiohttp/web_response.py", line 471, in __init__
    type(text))
TypeError: text argument must be str (<class 'dict'>)
Error handling request
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/aiohttp/web_protocol.py", line 416, in start
    resp = yield from self._request_handler(request)
  File "/usr/lib/python3.6/site-packages/aiohttp/web.py", line 325, in _handle
    resp = yield from handler(request)
  File "/usr/lib/python3.6/site-packages/aiohttp/web_middlewares.py", line 93, in impl
    return (yield from handler(request))
  File "/usr/lib/python3.6/site-packages/appdaemon/rundash.py", line 50, in wrapper
    return await myfunc(*args)
  File "/usr/lib/python3.6/site-packages/appdaemon/rundash.py", line 253, in load_dash
    return web.Response(text=response, content_type="text/html")
  File "/usr/lib/python3.6/site-packages/aiohttp/web_response.py", line 471, in __init__
    type(text))
TypeError: text argument must be str (<class 'dict'>)

what it has to do with your error is that i cant let you delete the temperary files, that might be troubeling.

but i see another thing.
you have a custom skin default?

what is all in your dir custom_css?
and in the subdirs from that?
and if you have a sub_dir default there, what is in the variables.yaml?

the custom skin is a copy of the default one, but with a black background.

variables.yaml
# Core styles. Reference these wherever possible rather than making custom
# versions of red, green, etc. This will make it easier to quickly change the
# overall pallette of the dashboard just by overriding these variables.

# This file contains the application "defaults".
# IF YOU WANT TO CUSTOMIZE styleS FOR YOUR OWN INSTANCE, DO NOT EDIT THIS FILE.

# ----------------------------------------------------------------------------
# Custom styles instructions
#    1. Create a new directory under custom_css
#    2. copy these files over
#    3. EDIT
#    4. Select the new dir as the "skin" argument of any 
#       dashboards you want to use it
# ----------------------------------------------------------------------------

#
# Custom head includes - should be a YAML List, e.g.:
#
#head_includes:
#  - some include
#  - some other include
#
# Text will be included verbatim in the head section of the doc, use for styles,
# javascript or 3rd party css etc. etc.
#
# It is your responsibility to ensure the HTML is correct
#

head_includes:
 - <! head tags go here ->

#
# Custom body includes - should be a YAML List, e.g.:
#
#body_includes:
#  - some include
#  - some other include
#
# Text will be included verbatim in the body section of the doc, use it for JavaScript
#
# It is your responsibility to ensure the HTML is correct
#

body_includes:
 - <! body tags go here ->

#
# Styles
#

white: "#fff"
red: "#ff0055"
green: "#aaff00"
blue: "#00aaff"
purple: "#aa00ff"
yellow: "#ffff00"
orange: "#ffaa00"

gray_very_dark: "#333"
gray_dark: "#444"
gray_medium: "#666"
gray_light: "#888"

#Page and widget defaults
background_style: "background-color: #444"
text_style: "color: #fff"

#These are used for icons and indicators
style_inactive: "color: $gray_light"
style_active: "color: $green"
style_active_warn: "color: $red"
style_info: "color: $blue"
style_title: "color: $white"
style_title2: "color: $white"

# Widget Default Definitions

scene_icon_on: fa-square
scene_icon_off: fa-square
scene_icon_style_active: $style_active
scene_icon_style_inactive: $style_inactive
scene_title_style: $style_title
scene_title2_style: $style_title2
scene_widget_style: $background_style
scene_state_text_style: "color: $white"

mode_icon_on: fa-arrows-alt
mode_icon_off: fa-arrows-alt
mode_icon_style_active: $style_active
mode_icon_style_inactive: $style_inactive
mode_title_style: $style_title
mode_title2_style: $style_title2
mode_widget_style: $background_style
mode_state_text_style: "color: $white"

script_icon_on: fa-th-large
script_icon_off: fa-th-large
script_icon_style_active: $style_active
script_icon_style_inactive: $style_inactive
script_title_style: $style_title
script_title2_style: $style_title2
script_widget_style: $background_style
script_state_text_style: "color: $white"

binary_sensor_icon_on: fa-bullseye
binary_sensor_icon_off: fa-minus
binary_sensor_icon_style_active: $style_active_warn
binary_sensor_icon_style_inactive: $style_inactive
binary_sensor_title_style: $style_title
binary_sensor_title2_style: $style_title2
binary_sensor_widget_style: $background_style
binary_sensor_state_text_style: "color: $white"

icon_title_style: $style_title
icon_title2_style: $style_title2
icon_widget_style: $background_style
icon_state_text_style: "color: $white"

device_tracker_icon_on: fa-user
device_tracker_icon_off: fa-user
device_tracker_icon_style_active: $style_active
device_tracker_icon_style_inactive: $style_inactive
device_tracker_title_style: $style_title
device_tracker_title2_style: $style_title2
device_tracker_widget_style: $background_style
device_tracker_state_text_style: "color: $white"

input_boolean_icon_on: fa-sliders
input_boolean_icon_off: fa-sliders
input_boolean_icon_style_active: $style_active
input_boolean_icon_style_inactive: $style_inactive
input_boolean_title_style: $style_title
input_boolean_title2_style: $style_title2
input_boolean_widget_style: $background_style
input_boolean_state_text_style: "color: $white"

switch_icon_on: fa-circle
switch_icon_off: fa-circle-thin
switch_icon_style_active: $style_active
switch_icon_style_inactive: $style_inactive
switch_title_style: $style_title
switch_title2_style: $style_title2
switch_widget_style: $background_style
switch_state_text_style: "color: $white"

lock_icon_on: fa-unlock-alt
lock_icon_off: fa-lock
lock_icon_style_active: $style_active_warn
lock_icon_style_inactive: $style_inactive
lock_title_style: $style_title
lock_title2_style: $style_title2
lock_widget_style: $background_style
lock_state_text_style: "color: $white"

cover_icon_on: fa-arrows-v
cover_icon_off: fa-arrows-v
cover_icon_style_active: $style_active_warn
cover_icon_style_inactive: $style_inactive
cover_title_style: $style_title
cover_title2_style: $style_title2
cover_widget_style: $background_style
cover_state_text_style: "color: $white"

clock_date_style: "color: $white"
clock_time_style: "color: $purple"
clock_widget_style: $background_style

weather_main_style: "color: $orange"
weather_unit_style: "color: $orange"
weather_sub_style: "color: $blue"
weather_widget_style: $background_style

weather_summary_title_style: $style_title
weather_summary_text_style: "font-family: Climacons-Font; font-size: 100px"
weather_summary_state_text_style: "color: $white"
weather_summary_widget_style: $background_style
weather_summary_container_style: ""

london_underground_title_style: "color: $white"
london_underground_text_style: "color: $white"
london_underground_state_text_style: "color: $white;"
london_underground_widget_style: $background_style
london_underground_container_style: ""

label_title_style: $style_title
label_title2_style: $style_title2
label_text_style: "color: $white"
label_state_text_style: "color: $white"
label_widget_style: $background_style
label_container_style: ""

sensor_title_style: $style_title
sensor_title2_style: $style_title2
sensor_value_style: "color: $blue; font-size: 250%"
sensor_text_style: "color: $white; font-size: 100%"
sensor_state_text_style: "color: $white; font-size: 100%"
sensor_unit_style: "color: $blue; font-size: 100%"
sensor_widget_style: $background_style
sensor_container_style: ""

alarm_title_style: $style_title
alarm_title2_style: $style_title2
alarm_state_style: "color: $white; font-size: 100%"
alarm_widget_style: $background_style

reload_icon_active: fa-spinner fa-spin
reload_icon_inactive: fa-refresh
reload_icon_active_style: "color: $white"
reload_icon_inactive_style: "color: $white"
reload_title_style: $style_title
reload_title2_style: $style_title2
reload_widget_style: $background_style

javascript_icon_active: fa-asterisk
javascript_icon_inactive: fa-asterisk
javascript_icon_active_style: "color: $white"
javascript_icon_inactive_style: "color: $white"
javascript_title_style: $style_title
javascript_title2_style: $style_title2
javascript_widget_style: $background_style

navigate_icon_active: fa-spinner fa-spin
navigate_icon_inactive: fa-gear
navigate_icon_active_style: "color: $white"
navigate_icon_inactive_style: "color: $white"
navigate_title_style: $style_title
navigate_title2_style: $style_title2
navigate_widget_style: $background_style


media_player_icon_play: fa-play
media_player_icon_pause: fa-pause
media_player_icon_up: fa-plus
media_player_icon_down: fa-minus
media_player_title_style: $style_title
media_player_media_title_style: $style_title2
media_player_album_style: $style_title2
media_player_artist_style: $style_title2
media_player_icon_style_active: "color: $green"
media_player_icon_style_inactive: "color: $gray_light"
media_player_state_text_style: "color: $white"
media_player_units_style: "color: $white"
media_player_level_style: "color: $white"
media_player_level_up_style: "color: $gray_light"
media_player_level_down_style: "color: $gray_light"
media_player_widget_style: $background_style
media_player_icon_previous: fa-step-backward
media_player_icon_next: fa-step-forward
media_player_icon_style_previous: "color: $gray_light"
media_player_icon_style_next: "color: $gray_light"


light_icon_on: fa-circle
light_icon_off: fa-circle-thin
light_icon_up: fa-plus
light_icon_down: fa-minus
light_title_style: $style_title
light_title2_style: $style_title2
light_icon_style_active: $style_active
light_icon_style_inactive: $style_inactive
light_state_text_style: "color: $white"
light_level_style: "color: $white"
light_unit_style:  "color: $white"
light_level_up_style: "color: $gray_light"
light_level_down_style: "color: $gray_light"
light_widget_style: $background_style

input_number_title_style: $style_title
input_number_title2_style: $style_title2
input_number_minvalue_style: $style_title
input_number_maxvalue_style: $style_title
input_number_value_style: $style_title
input_number_slider_style: "-webkit-appearance: none"
input_number_container_style: ""
input_number_widget_style: $background_style

climate_icon_up: fa-plus
climate_icon_down: fa-minus
climate_title_style: $style_title
climate_title2_style: $style_title2
climate_level_style: "color: $blue"
climate_unit_style: "color: $blue"
climate_level_up_style: "color: $gray_light"
climate_level_down_style: "color: $gray_light"
climate_widget_style: $background_style
climate_level2_style: "color: $blue"
climate_unit2_style: "color: $blue"

group_icon_on: fa-circle
group_icon_off: fa-circle-thin
group_icon_up: fa-plus
group_icon_down: fa-minus
group_title_style: $style_title
group_title2_style: $style_title2
group_icon_style_active: $style_active
group_icon_style_inactive: $style_inactive
group_state_text_style: "color: $white"
group_level_style: "color: $white"
group_level_up_style: "color: $gray_light"
group_level_down_style: "color: $gray_light"
group_widget_style: $background_style
group_unit_style: "color: $white"

iframe_title_style: "$style_title; background-color: rgba(0, 0, 0, 0.5)"
iframe_widget_style: $background_style

alarm_title_style: "color: $blue"
alarm_widget_style: $background_style
alarm_title2_style: $style_title2
alarm_state_style: "color: $white;font-size: 100%"
alarm_panel_state_style: "color: $white"
alarm_panel_code_style: "color: $white"
alarm_panel_background_style: "background-color: $gray_dark"
alarm_panel_button_style: "background-color: $gray_medium"

camera_widget_style: $background_style
camera_title_style: "$style_title; background-color: rgba(0, 0, 0, 0.5)"

gauge_widget_style: $background_style
gauge_title_style: $style_title
gauge_title2_style: $style_title2
gauge_low_value_color: "$blue"
gauge_med_value_color: "$blue"
gauge_high_value_color: "$blue"
gauge_value_bgcolor: "$gray_medium"
gauge_text_color: "$blue"

rss_title_style: $style_title
rss_title2_style: $style_title2
rss_text_style: "color: $blue"
rss_widget_style: $background_style

input_select_title_style: $style_title
input_select_title2_style: $style_title2
input_select_widget_style: $background_style
input_select_select_style: "background-color: #999;color:black"
input_select_container_style: ""

input_slider_icon_up: fa-plus
input_slider_icon_down: fa-minus
input_slider_title_style: $style_title
input_slider_title2_style: $style_title2
input_slider_level_style: "color: $blue"
input_slider_unit_style: "color: $blue"
input_slider_level_up_style: "color: $gray_light"
input_slider_level_down_style: "color: $gray_light"
input_slider_widget_style: $background_style

new_input_number_title_style: $style_title
new_input_number_title2_style: $style_title2
new_input_number_minvalue_style: $style_title
new_input_number_maxvalue_style: $style_title
new_input_number_value_style: $style_title
new_input_number_slider_style: "-webkit-appearance: none"
new_input_number_container_style: ""
new_input_number_widget_style: $background_style

vertical_input_number_title_style: $style_title
vertical_input_number_title2_style: $style_title2
vertical_input_number_minvalue_style: $style_title
vertical_input_number_maxvalue_style: $style_title
vertical_input_number_value_style: $style_title
vertical_input_number_slider_style: ""
vertical_input_number_container_style: ""
vertical_input_number_widget_style: $background_style

light_with_brightness_icon_on: mdi-lightbulb
light_with_brightness_icon_off: mdi-lightbulb
light_with_brightness_title_style: $style_title
light_with_brightness_title2_style: $style_title2
light_with_brightness_slider_style: ""
light_with_brightness_widget_style: $background_style
light_with_brightness_icon_style_active: $style_active
light_with_brightness_icon_style_inactive: $style_inactive

light_with_colorpicker_icon_on: mdi-lightbulb
light_with_colorpicker_icon_off: mdi-lightbulb
light_with_colorpicker_title_style: $style_title
light_with_colorpicker_title2_style: $style_title2
light_with_colorpicker_button_style: ""
light_with_colorpicker_widget_style: $background_style
light_with_colorpicker_icon_style_active: $style_active
light_with_colorpicker_icon_style_inactive: $style_inactive

radial_widget_style: "background: none"

thermo_widget_style: "background: none"

heater_icon_on: fa-fire
heater_icon_off: fa-fire
heater_title_style: $style_title
heater_title2_style: $style_title2
heater_slider_style: ""
heater_widget_style: $background_style
heater_icon_style_active: $style_active
heater_icon_style_inactive: $style_inactive