Creating/Changing custom_widget

I’m sure I am missing something basic. But after hours of trying it my self thought I would ask.

Widget definition not found

I took the weather widget and installed a custom_widgets directory in the same folder as my appdaemon config. ( \hassio.local\config\appdaemon\custom_widgets )

Then I renamed all of the 4 files to tplink instead of weather, changed any instance in files that referred to baseweather to basetplink. My thinking is no matter what the widget is called it should work as expected (weather widget) I did not change any other code in files.

Error Log Snippet:

2018-04-05 13:47:14.449197 INFO Loading custom widget 'basetplink'
2018-04-05 13:47:14.450968 INFO Loading custom widget 'tplink.yaml'
2018-04-05 13:47:15.036044 INFO function [get_dashboard] finished in 1903 ms
2018-04-05 13:47:15.052884 INFO HADashboard: Dashboard disconnected
2018-04-05 13:47:15.624382 INFO HADashboard: New dashboard connected: Status
2018-04-05 13:49:57.025553 INFO Loading custom skin 'dark1'
2018-04-05 13:49:57.059468 INFO Compiling dashboard 'Hello'
2018-04-05 13:49:58.536997 WARNING Variable definition not found in CSS Skin variables: $sensor_state_text_style
2018-04-05 13:49:58.537617 WARNING Variable definition not found in CSS Skin variables: $sensor_container_style
2018-04-05 13:49:58.580141 WARNING Variable definition not found in CSS Skin variables: $sensor_state_text_style
2018-04-05 13:49:58.580759 WARNING Variable definition not found in CSS Skin variables: $sensor_container_style
2018-04-05 13:49:58.727263 WARNING Variable definition not found in CSS Skin variables: $sensor_state_text_style
2018-04-05 13:49:58.727872 WARNING Variable definition not found in CSS Skin variables: $sensor_container_style
2018-04-05 13:49:59.202690 INFO Loading custom widget 'basetplink'
2018-04-05 13:49:59.204514 INFO Loading custom widget 'tplink.yaml'
2018-04-05 13:50:00.103502 INFO function [get_dashboard] finished in 3078 ms
2018-04-05 13:50:00.120719 INFO HADashboard: Dashboard disconnected
2018-04-05 13:50:00.783636 INFO HADashboard: New dashboard connected: Control Panel
2018-04-05 13:50:03.092797 INFO Loading custom skin 'dark1'
2018-04-05 13:50:03.302874 INFO function [get_dashboard] finished in 210 ms
2018-04-05 13:50:03.319200 INFO HADashboard: Dashboard disconnected
2018-04-05 13:50:03.661578 INFO HADashboard: New dashboard connected: Status
2018-04-05 13:50:07.674344 INFO Compiling dashboard 'Hello'
2018-04-05 13:50:10.108371 INFO Loading custom widget 'basetplink'
2018-04-05 13:50:10.110076 INFO Loading custom widget 'tplink.yaml'
2018-04-05 13:50:11.028403 INFO function [get_dashboard] finished in 3389 ms
2018-04-05 13:50:11.051003 INFO HADashboard: Dashboard disconnected
2018-04-05 13:50:11.731479 INFO HADashboard: New dashboard connected: Control Panel
2018-04-05 13:50:14.162609 INFO Compiling dashboard 'Status'
2018-04-05 13:50:15.121833 WARNING Unable to find widget definition for 'tplink'
2018-04-05 13:50:15.122546 WARNING 'text_sensor' widget is deprecated, please use 'sensor' instead for widget 'weather_alert'
2018-04-05 13:50:15.633790 INFO Loading custom widget 'basetplink'
2018-04-05 13:50:15.635543 INFO Loading custom widget 'tplink.yaml'
2018-04-05 13:50:16.252838 INFO function [get_dashboard] finished in 2120 ms
2018-04-05 13:50:16.267686 INFO HADashboard: Dashboard disconnected
2018-04-05 13:50:16.597574 INFO HADashboard: New dashboard connected: Status

\hassio.local\config\appdaemon\dashboards\Status.dash

  tplink:
    widget_type: tplink
    units: "°C"

- tplink(2x2)

\hassio.local\config\appdaemon\custom_widgets\tplink.yaml

widget_type: basetplink
fields:
  title: ""
  unit: ""
  dark_sky_temperature: ""
  dark_sky_humidity: ""
  dark_sky_precip_probability: ""
  dark_sky_precip_intensity: ""
  dark_sky_wind_speed: ""
  dark_sky_pressure: ""
  dark_sky_wind_bearing: ""
  dark_sky_apparent_temperature: ""
  dark_sky_icon: ""
css: []
static_css:
  title_style: $weather_sub_style
  unit_style: $weather_unit_style
  main_style: $weather_main_style
  sub_style: $weather_sub_style
  widget_style: $weather_widget_style
icons: []
static_icons: []

\hassio.local\config\appdaemon\custom_widgets\basetplink\basetplink.css

.widget-basetplink-{{id}} {
		color: white;
}

.widget-basetplink-{{id}} h1 {
		margin-bottom: 0px;
}

.widget-basetplink-{{id}} [class^="primary"] {
		display: inline-block;
		vertical-align: middle;
		padding: 0;
		margin-left: 10px;
		margin-right: 10px;
		margin-top: 0px;
		margin-bottom: 0px;
}

.widget-basetplink-{{id}} [class^="secondary"] {
		display: inline-block;
		vertical-align: middle;
		padding: 0;
		margin-left: 0px;
		margin-right: 0px;
		margin-top: 0px;
		margin-bottom: 0px;
	}

.widget-basetplink-{{id}} .primary-climacon {
		font-family: "Climacons-Font";
		font-size: 70px;
}

.widget-basetplink-{{id}} .primary-info {
		font-size: 300%;
		font-weight: 400;
}

.widget-basetplink-{{id}} .primary-unit {
		font-size: 100%;
		font-weight: 400;
		margin-left: 0;
		margin-top: 20px;
		vertical-align: top;
}

.widget-basetplink-{{id}} .secondary-icon {
		font-family: "Climacons-Font";
		font-size: 40px;
		margin-left: 10px;
		margin-right: 0px;
}

.widget-basetplink-{{id}} .secondary-climacon {
		font-family: "Climacons-Font";
		font-size: 55px;
		margin-left: 10px;
		margin-right: 10px;
}

.widget-basetplink-{{id}} .secondary-info {
		font-size: 125%;
		font-weight: 200;
}

.widget-basetplink-{{id}} hr {
		width: 90%;
		border: 0;
		height: 1px;
		background: rgba(255, 255, 255, 0.25);
		margin-top: 15px;
		margin-bottom: 15px;
}

\hassio.local\config\appdaemon\custom_widgets\basetplink\basetplink.html

<h1 class="title" data-bind="text: title, attr:{ style: title_style}"></h1>
<div data-bind="attr: {style: main_style}">
		<p class="primary-climacon" data-bind="html: dark_sky_icon"></p>
		<p class="primary-info" data-bind="text: dark_sky_temperature"></p>
		<p class="primary-unit" data-bind="html: unit, attr: {style: unit_style}"></p>
<br>
<div data-bind="attr: {style: sub_style}">
		<p class="secondary-info">Humidity:&nbsp;</p>
		<p class="secondary-info" data-bind="text: dark_sky_humidity"></p>
		<p class="secondary-info">%</p>
		<br>
		<p class="secondary-info">Apparent Temp:&nbsp;</p>
		<p class="secondary-info" data-bind="html: dark_sky_apparent_temperature"></p>
		<p class="secondary-info" data-bind="html: unit"></p>
		<br>
		<p class="secondary-info">Rain:&nbsp;</p>
		<p class="secondary-info" data-bind="text: dark_sky_precip_probability"></p>
		<p class="secondary-info">&nbsp;%</p>
		<p class="secondary-info">&nbsp;/&nbsp;</p>
		<p class="secondary-info" data-bind="text: dark_sky_precip_intensity"></p>
		<p class="secondary-info">in</p>
		<br>
		<p class="secondary-info">Wind:&nbsp;</p>
		<p class="secondary-info" data-bind="text: dark_sky_wind_speed"></p>
		<p class="secondary-info">&nbsp;Mph</p>
		<p class="secondary-info">&nbsp;/&nbsp;</p>
		<p class="secondary-info" data-bind="html: dark_sky_wind_bearing"></p>
		<p class="secondary-info">&nbsp;&deg;</p>
		<br>
		<p class="secondary-info">Pressure:&nbsp;</p>
		<p class="secondary-info" data-bind="text: dark_sky_pressure"></p>
		<p class="secondary-info">&nbsp;Mbar</p>
</div>

\hassio.local\config\appdaemon\custom_widgets\basetplink\basetplink.js

function basetplink(widget_id, url, skin, parameters)
{
    // Will be using "self" throughout for the various flavors of "this"
    // so for consistency ...

    self = this;

    self.weather_icons =
    {
      "rain": '&#xe009',
      "snow": '&#xe036',
      "sleet": '&#xe003',
      "wind": '&#xe021',
      "fog": '&#xe01b',
      "cloudy": '&#xe000',
      "clear-day": '&#xe028',
      "clear-night": '&#xe02d',
      "partly-cloudy-day": '&#xe001',
      "partly-cloudy-night": '&#xe002'
    };

    // Initialization

    self.widget_id = widget_id;

    // Store on brightness or fallback to a default

    // Parameters may come in useful later on

    self.parameters = parameters;

    var callbacks = [];

    // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed
    // Initial will be called when the dashboard loads and state has been gathered for the entity
    // Update will be called every time an update occurs for that entity

    self.OnStateAvailable = OnStateAvailable;
    self.OnStateUpdate = OnStateUpdate;

    var monitored_entities =
    [
        {"entity": "sensor.dark_sky_temperature", "initial": self.OnStateAvailable, "update": self.OnStateUpdate},
        {"entity": "sensor.dark_sky_humidity", "initial": self.OnStateAvailable, "update": self.OnStateUpdate},
        {"entity": "sensor.dark_sky_precip_probability", "initial": self.OnStateAvailable, "update": self.OnStateUpdate},
        {"entity": "sensor.dark_sky_precip_intensity", "initial": self.OnStateAvailable, "update": self.OnStateUpdate},
        {"entity": "sensor.dark_sky_wind_speed", "initial": self.OnStateAvailable, "update": self.OnStateUpdate},
        {"entity": "sensor.dark_sky_pressure", "initial": self.OnStateAvailable, "update": self.OnStateUpdate},
        {"entity": "sensor.dark_sky_wind_bearing", "initial": self.OnStateAvailable, "update": self.OnStateUpdate},
        {"entity": "sensor.dark_sky_apparent_temperature", "initial": self.OnStateAvailable, "update": self.OnStateUpdate},
        {"entity": "sensor.dark_sky_icon", "initial": self.OnStateAvailable, "update": self.OnStateUpdate}
    ];

    // Finally, call the parent constructor to get things moving

    WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks);

    // Function Definitions

    // The StateAvailable function will be called when
    // self.state[<entity>] has valid information for the requested entity
    // state is the initial state
    // Methods

    function OnStateUpdate(self, state)
    {
        set_view(self, state)
    }

    function OnStateAvailable(self, state)
    {
        if (state.entity_id == "sensor.dark_sky_temperature")
        {
            self.set_field(self, "unit", state.attributes.unit_of_measurement)
        }
        set_view(self, state)
    }

    function set_view(self, state)
    {
        if (state.entity_id == "sensor.dark_sky_icon")
        {
            self.set_field(self, "dark_sky_icon", self.weather_icons[state.state])
        }
        else
        {
            var field = state.entity_id.split(".")[1];
            self.set_field(self, field, state.state)
        }
    }
}

it is very hard to see what is going on in this log.

from your description i think you have done the right things.
to make sure that you dont have a cashing problem:

  1. stop appdaemon (if problem keeps happening without errors also the device that runs appdaemon)
  2. close all dashboards
  3. clear cash from google chrome on your PC
  4. restart appdaemon
  5. open only! the test dashboard in google chrome
  6. if not the desired effect then check the console from google chrome for errors(CTRL SHIFT I)
  7. check the logs for errors (errorlog and acceslog)

Thanks for replying Rene

Guess I should mention the platform is Hass.io on a Rpi

Steps 1 to 6 done, a reboot does the majority of that.
No errors in chrome inspector.
Three different browser, chrome, edge and IE (yes I cleared cache)

Agree it should work, but doesn’t! Not sure where to go from here.

Do you have an example of a custom_widget that works. But is extremely simplified using all the same 4 files? (3 base’s and yaml) for testing instead of one already in the system like weather which I’m using.

My goal is basically a widget that display the entity from a TP-Link plug. It’s entity in HA is a switch with 4 states Amps, Watts, Volts and today’s total since midnight.

Also to change from Darksky to Weather Underground

Forgot to mention, I can not find any logs doing a search with WinSCP.

I installed your newest widget: iconsensor, exact same steps with the exact same results.

The paths are correct on my files, right?
I also set the appdaemon directory permissions to 777 just in case but unlikely.

i forgot to mention that if it doesnt work i wanted to see what is in the logs from startup :wink:
i think the path is right.
and that you cant find the logs is due to hassio.

what happens if you change your widget in the testdashboard to weather?

What logs do you want? The ones from appdaemon or homeassistant or both?

The default weather widget works fine, just as expected.

the appdaemon logs

Restarted appdaemon, set to debug level. Went to main panel then back to status panel where the two widgets are, the custom weather widget named tplink and your inconsensor widget. Default Skin for test same results with Dark1.

2018-04-07 13:06:32.523108 DEBUG HADasboard: Found dashboard type Control Panel
2018-04-07 13:06:32.526474 DEBUG HADasboard: Found dashboard type Status
2018-04-07 13:06:32.654762 DEBUG AppDaemon: Event type:state_changed:
2018-04-07 13:06:32.655596 DEBUG AppDaemon: {'entity_id': 'switch.garage_miner', 'old_state': {'entity_id': 'switch.garage_miner', 'state': 'on', 'attributes': {'current_power_w': '884.20', 'total_energy_kwh': '135.823', 'voltage': '113.8', 'current_a': '7.78', 'today_energy_kwh': '11.739', 'friendly_name': 'Garage Miner'}, 'last_changed': '2018-04-07T00:12:49.599266+00:00', 'last_updated': '2018-04-07T17:06:01.335463+00:00'}, 'new_state': {'entity_id': 'switch.garage_miner', 'state': 'on', 'attributes': {'current_power_w': '884.53', 'total_energy_kwh': '135.830', 'voltage': '113.7', 'current_a': '7.78', 'today_energy_kwh': '11.746', 'friendly_name': 'Garage Miner'}, 'last_changed': '2018-04-07T00:12:49.599266+00:00', 'last_updated': '2018-04-07T17:06:32.591602+00:00'}}
2018-04-07 13:06:32.657060 DEBUG AppDaemon: {'entity_id': 'switch.garage_miner', 'old_state': {'entity_id': 'switch.garage_miner', 'state': 'on', 'attributes': {'current_power_w': '884.20', 'total_energy_kwh': '135.823', 'voltage': '113.8', 'current_a': '7.78', 'today_energy_kwh': '11.739', 'friendly_name': 'Garage Miner'}, 'last_changed': '2018-04-07T00:12:49.599266+00:00', 'last_updated': '2018-04-07T17:06:01.335463+00:00'}, 'new_state': {'entity_id': 'switch.garage_miner', 'state': 'on', 'attributes': {'current_power_w': '884.53', 'total_energy_kwh': '135.830', 'voltage': '113.7', 'current_a': '7.78', 'today_energy_kwh': '11.746', 'friendly_name': 'Garage Miner'}, 'last_changed': '2018-04-07T00:12:49.599266+00:00', 'last_updated': '2018-04-07T17:06:32.591602+00:00'}}
2018-04-07 13:06:32.659591 DEBUG HADasboard: Sending data to 2 dashes: {'event_type': 'state_changed', 'data': {'entity_id': 'switch.garage_miner', 'old_state': {'entity_id': 'switch.garage_miner', 'state': 'on', 'attributes': {'current_power_w': '884.20', 'total_energy_kwh': '135.823', 'voltage': '113.8', 'current_a': '7.78', 'today_energy_kwh': '11.739', 'friendly_name': 'Garage Miner'}, 'last_changed': '2018-04-07T00:12:49.599266+00:00', 'last_updated': '2018-04-07T17:06:01.335463+00:00'}, 'new_state': {'entity_id': 'switch.garage_miner', 'state': 'on', 'attributes': {'current_power_w': '884.53', 'total_energy_kwh': '135.830', 'voltage': '113.7', 'current_a': '7.78', 'today_energy_kwh': '11.746', 'friendly_name': 'Garage Miner'}, 'last_changed': '2018-04-07T00:12:49.599266+00:00', 'last_updated': '2018-04-07T17:06:32.591602+00:00'}}, 'origin': 'LOCAL', 'time_fired': '2018-04-07T17:06:32.591724+00:00'}
2018-04-07 13:06:32.661043 DEBUG HADasboard: Found dashboard type Control Panel
2018-04-07 13:06:32.662770 DEBUG HADasboard: Found dashboard type Status
2018-04-07 13:06:32.678654 DEBUG AppDaemon: Event type:state_changed:
2018-04-07 13:06:32.679381 DEBUG AppDaemon: {'entity_id': 'sensor.tp_link_watts', 'old_state': {'entity_id': 'sensor.tp_link_watts', 'state': '884.2', 'attributes': {'unit_of_measurement': 'W', 'friendly_name': 'Watts'}, 'last_changed': '2018-04-07T17:06:01.383020+00:00', 'last_updated': '2018-04-07T17:06:01.383020+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_watts', 'state': '884.53', 'attributes': {'unit_of_measurement': 'W', 'friendly_name': 'Watts'}, 'last_changed': '2018-04-07T17:06:32.607562+00:00', 'last_updated': '2018-04-07T17:06:32.607562+00:00'}}
2018-04-07 13:06:32.680712 DEBUG AppDaemon: {'entity_id': 'sensor.tp_link_watts', 'old_state': {'entity_id': 'sensor.tp_link_watts', 'state': '884.2', 'attributes': {'unit_of_measurement': 'W', 'friendly_name': 'Watts'}, 'last_changed': '2018-04-07T17:06:01.383020+00:00', 'last_updated': '2018-04-07T17:06:01.383020+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_watts', 'state': '884.53', 'attributes': {'unit_of_measurement': 'W', 'friendly_name': 'Watts'}, 'last_changed': '2018-04-07T17:06:32.607562+00:00', 'last_updated': '2018-04-07T17:06:32.607562+00:00'}}
2018-04-07 13:06:32.681866 DEBUG HADasboard: Sending data to 2 dashes: {'event_type': 'state_changed', 'data': {'entity_id': 'sensor.tp_link_watts', 'old_state': {'entity_id': 'sensor.tp_link_watts', 'state': '884.2', 'attributes': {'unit_of_measurement': 'W', 'friendly_name': 'Watts'}, 'last_changed': '2018-04-07T17:06:01.383020+00:00', 'last_updated': '2018-04-07T17:06:01.383020+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_watts', 'state': '884.53', 'attributes': {'unit_of_measurement': 'W', 'friendly_name': 'Watts'}, 'last_changed': '2018-04-07T17:06:32.607562+00:00', 'last_updated': '2018-04-07T17:06:32.607562+00:00'}}, 'origin': 'LOCAL', 'time_fired': '2018-04-07T17:06:32.607709+00:00'}
2018-04-07 13:06:32.683522 DEBUG HADasboard: Found dashboard type Control Panel
2018-04-07 13:06:32.685202 DEBUG HADasboard: Found dashboard type Status
2018-04-07 13:06:32.695625 DEBUG AppDaemon: Event type:state_changed:
2018-04-07 13:06:32.696449 DEBUG AppDaemon: {'entity_id': 'sensor.tp_link_kw', 'old_state': {'entity_id': 'sensor.tp_link_kw', 'state': '135.823', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': 'Current KiloWatts'}, 'last_changed': '2018-04-07T17:06:01.409657+00:00', 'last_updated': '2018-04-07T17:06:01.409657+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_kw', 'state': '135.83', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': 'Current KiloWatts'}, 'last_changed': '2018-04-07T17:06:32.619582+00:00', 'last_updated': '2018-04-07T17:06:32.619582+00:00'}}
2018-04-07 13:06:32.697573 DEBUG AppDaemon: {'entity_id': 'sensor.tp_link_kw', 'old_state': {'entity_id': 'sensor.tp_link_kw', 'state': '135.823', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': 'Current KiloWatts'}, 'last_changed': '2018-04-07T17:06:01.409657+00:00', 'last_updated': '2018-04-07T17:06:01.409657+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_kw', 'state': '135.83', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': 'Current KiloWatts'}, 'last_changed': '2018-04-07T17:06:32.619582+00:00', 'last_updated': '2018-04-07T17:06:32.619582+00:00'}}
2018-04-07 13:06:32.698988 DEBUG HADasboard: Sending data to 2 dashes: {'event_type': 'state_changed', 'data': {'entity_id': 'sensor.tp_link_kw', 'old_state': {'entity_id': 'sensor.tp_link_kw', 'state': '135.823', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': 'Current KiloWatts'}, 'last_changed': '2018-04-07T17:06:01.409657+00:00', 'last_updated': '2018-04-07T17:06:01.409657+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_kw', 'state': '135.83', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': 'Current KiloWatts'}, 'last_changed': '2018-04-07T17:06:32.619582+00:00', 'last_updated': '2018-04-07T17:06:32.619582+00:00'}}, 'origin': 'LOCAL', 'time_fired': '2018-04-07T17:06:32.619700+00:00'}
2018-04-07 13:06:32.700497 DEBUG HADasboard: Found dashboard type Control Panel
2018-04-07 13:06:32.702480 DEBUG HADasboard: Found dashboard type Status
2018-04-07 13:06:32.714312 DEBUG AppDaemon: Event type:state_changed:
2018-04-07 13:06:32.714942 DEBUG AppDaemon: {'entity_id': 'sensor.tp_link_kw_today', 'old_state': {'entity_id': 'sensor.tp_link_kw_today', 'state': '11.739', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': "Today's KiloWatts"}, 'last_changed': '2018-04-07T17:06:01.431641+00:00', 'last_updated': '2018-04-07T17:06:01.431641+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_kw_today', 'state': '11.746', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': "Today's KiloWatts"}, 'last_changed': '2018-04-07T17:06:32.629069+00:00', 'last_updated': '2018-04-07T17:06:32.629069+00:00'}}
2018-04-07 13:06:32.716126 DEBUG AppDaemon: {'entity_id': 'sensor.tp_link_kw_today', 'old_state': {'entity_id': 'sensor.tp_link_kw_today', 'state': '11.739', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': "Today's KiloWatts"}, 'last_changed': '2018-04-07T17:06:01.431641+00:00', 'last_updated': '2018-04-07T17:06:01.431641+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_kw_today', 'state': '11.746', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': "Today's KiloWatts"}, 'last_changed': '2018-04-07T17:06:32.629069+00:00', 'last_updated': '2018-04-07T17:06:32.629069+00:00'}}
2018-04-07 13:06:32.717867 DEBUG HADasboard: Sending data to 2 dashes: {'event_type': 'state_changed', 'data': {'entity_id': 'sensor.tp_link_kw_today', 'old_state': {'entity_id': 'sensor.tp_link_kw_today', 'state': '11.739', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': "Today's KiloWatts"}, 'last_changed': '2018-04-07T17:06:01.431641+00:00', 'last_updated': '2018-04-07T17:06:01.431641+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_kw_today', 'state': '11.746', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': "Today's KiloWatts"}, 'last_changed': '2018-04-07T17:06:32.629069+00:00', 'last_updated': '2018-04-07T17:06:32.629069+00:00'}}, 'origin': 'LOCAL', 'time_fired': '2018-04-07T17:06:32.629353+00:00'}
2018-04-07 13:06:32.719825 DEBUG HADasboard: Found dashboard type Control Panel
2018-04-07 13:06:32.722060 DEBUG HADasboard: Found dashboard type Status
2018-04-07 13:06:32.731745 DEBUG AppDaemon: Event type:state_changed:
2018-04-07 13:06:32.736747 DEBUG AppDaemon: {'entity_id': 'sensor.tp_link_volts', 'old_state': {'entity_id': 'sensor.tp_link_volts', 'state': '113.8', 'attributes': {'unit_of_measurement': 'V', 'friendly_name': 'Current Voltage'}, 'last_changed': '2018-04-07T17:06:01.450715+00:00', 'last_updated': '2018-04-07T17:06:01.450715+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_volts', 'state': '113.7', 'attributes': {'unit_of_measurement': 'V', 'friendly_name': 'Current Voltage'}, 'last_changed': '2018-04-07T17:06:32.636501+00:00', 'last_updated': '2018-04-07T17:06:32.636501+00:00'}}
2018-04-07 13:06:32.737676 DEBUG AppDaemon: {'entity_id': 'sensor.tp_link_volts', 'old_state': {'entity_id': 'sensor.tp_link_volts', 'state': '113.8', 'attributes': {'unit_of_measurement': 'V', 'friendly_name': 'Current Voltage'}, 'last_changed': '2018-04-07T17:06:01.450715+00:00', 'last_updated': '2018-04-07T17:06:01.450715+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_volts', 'state': '113.7', 'attributes': {'unit_of_measurement': 'V', 'friendly_name': 'Current Voltage'}, 'last_changed': '2018-04-07T17:06:32.636501+00:00', 'last_updated': '2018-04-07T17:06:32.636501+00:00'}}
2018-04-07 13:06:32.739054 DEBUG HADasboard: Sending data to 2 dashes: {'event_type': 'state_changed', 'data': {'entity_id': 'sensor.tp_link_volts', 'old_state': {'entity_id': 'sensor.tp_link_volts', 'state': '113.8', 'attributes': {'unit_of_measurement': 'V', 'friendly_name': 'Current Voltage'}, 'last_changed': '2018-04-07T17:06:01.450715+00:00', 'last_updated': '2018-04-07T17:06:01.450715+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_volts', 'state': '113.7', 'attributes': {'unit_of_measurement': 'V', 'friendly_name': 'Current Voltage'}, 'last_changed': '2018-04-07T17:06:32.636501+00:00', 'last_updated': '2018-04-07T17:06:32.636501+00:00'}}, 'origin': 'LOCAL', 'time_fired': '2018-04-07T17:06:32.636681+00:00'}
2018-04-07 13:06:32.740419 DEBUG HADasboard: Found dashboard type Control Panel
2018-04-07 13:06:32.742587 DEBUG HADasboard: Found dashboard type Status
2018-04-07 13:06:32.999458 DEBUG AppDaemon: Util loop compute time: 5.0ms
2018-04-07 13:06:33.006321 DEBUG AppDaemon: Scheduler loop compute time: 4.0ms
2018-04-07 13:06:34.005108 DEBUG AppDaemon: Scheduler loop compute time: 1.0ms
2018-04-07 13:06:34.009612 DEBUG AppDaemon: Util loop compute time: 3.0ms
2018-04-07 13:06:35.006042 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 13:06:35.016156 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 13:06:36.006152 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 13:06:36.025905 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 13:06:37.008012 DEBUG AppDaemon: Scheduler loop compute time: 4.0ms
2018-04-07 13:06:37.034655 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 13:06:38.006744 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 13:06:38.042580 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 13:06:39.007431 DEBUG AppDaemon: Scheduler loop compute time: 4.0ms
2018-04-07 13:06:39.051949 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 13:06:40.007500 DEBUG AppDaemon: Scheduler loop compute time: 4.0ms
2018-04-07 13:06:40.060188 DEBUG AppDaemon: Util loop compute time: 5.0ms
2018-04-07 13:06:41.004281 DEBUG AppDaemon: Scheduler loop compute time: 1.0ms
2018-04-07 13:06:41.066307 DEBUG AppDaemon: Util loop compute time: 3.0ms
2018-04-07 13:06:41.085578 DEBUG AppDaemon: Event type:state_changed:
2018-04-07 13:06:41.086463 DEBUG AppDaemon: {'entity_id': 'sensor.load_5m', 'old_state': {'entity_id': 'sensor.load_5m', 'state': '0.68505859375', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (5m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:10.335568+00:00', 'last_updated': '2018-04-07T17:06:10.335568+00:00'}, 'new_state': {'entity_id': 'sensor.load_5m', 'state': '0.69921875', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (5m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:41.040901+00:00', 'last_updated': '2018-04-07T17:06:41.040901+00:00'}}
2018-04-07 13:06:41.087664 DEBUG AppDaemon: {'entity_id': 'sensor.load_5m', 'old_state': {'entity_id': 'sensor.load_5m', 'state': '0.68505859375', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (5m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:10.335568+00:00', 'last_updated': '2018-04-07T17:06:10.335568+00:00'}, 'new_state': {'entity_id': 'sensor.load_5m', 'state': '0.69921875', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (5m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:41.040901+00:00', 'last_updated': '2018-04-07T17:06:41.040901+00:00'}}
2018-04-07 13:06:41.089210 DEBUG HADasboard: Sending data to 2 dashes: {'event_type': 'state_changed', 'data': {'entity_id': 'sensor.load_5m', 'old_state': {'entity_id': 'sensor.load_5m', 'state': '0.68505859375', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (5m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:10.335568+00:00', 'last_updated': '2018-04-07T17:06:10.335568+00:00'}, 'new_state': {'entity_id': 'sensor.load_5m', 'state': '0.69921875', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (5m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:41.040901+00:00', 'last_updated': '2018-04-07T17:06:41.040901+00:00'}}, 'origin': 'LOCAL', 'time_fired': '2018-04-07T17:06:41.041014+00:00'}
2018-04-07 13:06:41.092020 DEBUG HADasboard: Found dashboard type Control Panel
2018-04-07 13:06:41.094351 DEBUG HADasboard: Found dashboard type Status
2018-04-07 13:06:41.123543 DEBUG AppDaemon: Event type:state_changed:
2018-04-07 13:06:41.125516 DEBUG AppDaemon: {'entity_id': 'sensor.load_1m', 'old_state': {'entity_id': 'sensor.load_1m', 'state': '0.744140625', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (1m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:10.242844+00:00', 'last_updated': '2018-04-07T17:06:10.242844+00:00'}, 'new_state': {'entity_id': 'sensor.load_1m', 'state': '0.79736328125', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (1m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:41.085001+00:00', 'last_updated': '2018-04-07T17:06:41.085001+00:00'}}
2018-04-07 13:06:41.127188 DEBUG AppDaemon: {'entity_id': 'sensor.load_1m', 'old_state': {'entity_id': 'sensor.load_1m', 'state': '0.744140625', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (1m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:10.242844+00:00', 'last_updated': '2018-04-07T17:06:10.242844+00:00'}, 'new_state': {'entity_id': 'sensor.load_1m', 'state': '0.79736328125', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (1m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:41.085001+00:00', 'last_updated': '2018-04-07T17:06:41.085001+00:00'}}
2018-04-07 13:06:41.129763 DEBUG HADasboard: Sending data to 2 dashes: {'event_type': 'state_changed', 'data': {'entity_id': 'sensor.load_1m', 'old_state': {'entity_id': 'sensor.load_1m', 'state': '0.744140625', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (1m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:10.242844+00:00', 'last_updated': '2018-04-07T17:06:10.242844+00:00'}, 'new_state': {'entity_id': 'sensor.load_1m', 'state': '0.79736328125', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (1m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:41.085001+00:00', 'last_updated': '2018-04-07T17:06:41.085001+00:00'}}, 'origin': 'LOCAL', 'time_fired': '2018-04-07T17:06:41.085141+00:00'}
2018-04-07 13:06:41.132078 DEBUG HADasboard: Found dashboard type Control Panel
2018-04-07 13:06:41.138239 DEBUG HADasboard: Found dashboard type Status
2018-04-07 13:06:41.154149 DEBUG AppDaemon: Event type:state_changed:
2018-04-07 13:06:41.154778 DEBUG AppDaemon: {'entity_id': 'sensor.processor_use', 'old_state': {'entity_id': 'sensor.processor_use', 'state': '15', 'attributes': {'unit_of_measurement': '%', 'friendly_name': 'Processor use', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:10.130033+00:00', 'last_updated': '2018-04-07T17:06:10.130033+00:00'}, 'new_state': {'entity_id': 'sensor.processor_use', 'state': '16', 'attributes': {'unit_of_measurement': '%', 'friendly_name': 'Processor use', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:41.122042+00:00', 'last_updated': '2018-04-07T17:06:41.122042+00:00'}}
2018-04-07 13:06:41.155655 DEBUG AppDaemon: {'entity_id': 'sensor.processor_use', 'old_state': {'entity_id': 'sensor.processor_use', 'state': '15', 'attributes': {'unit_of_measurement': '%', 'friendly_name': 'Processor use', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:10.130033+00:00', 'last_updated': '2018-04-07T17:06:10.130033+00:00'}, 'new_state': {'entity_id': 'sensor.processor_use', 'state': '16', 'attributes': {'unit_of_measurement': '%', 'friendly_name': 'Processor use', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:41.122042+00:00', 'last_updated': '2018-04-07T17:06:41.122042+00:00'}}
2018-04-07 13:06:41.156887 DEBUG HADasboard: Sending data to 2 dashes: {'event_type': 'state_changed', 'data': {'entity_id': 'sensor.processor_use', 'old_state': {'entity_id': 'sensor.processor_use', 'state': '15', 'attributes': {'unit_of_measurement': '%', 'friendly_name': 'Processor use', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:10.130033+00:00', 'last_updated': '2018-04-07T17:06:10.130033+00:00'}, 'new_state': {'entity_id': 'sensor.processor_use', 'state': '16', 'attributes': {'unit_of_measurement': '%', 'friendly_name': 'Processor use', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:41.122042+00:00', 'last_updated': '2018-04-07T17:06:41.122042+00:00'}}, 'origin': 'LOCAL', 'time_fired': '2018-04-07T17:06:41.122153+00:00'}
2018-04-07 13:06:41.159360 DEBUG HADasboard: Found dashboard type Control Panel
2018-04-07 13:06:41.161723 DEBUG HADasboard: Found dashboard type Status
2018-04-07 13:06:41.258852 DEBUG AppDaemon: Event type:state_changed:
2018-04-07 13:06:41.260043 DEBUG AppDaemon: {'entity_id': 'sensor.load_15m', 'old_state': {'entity_id': 'sensor.load_15m', 'state': '0.638671875', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (15m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:10.389078+00:00', 'last_updated': '2018-04-07T17:06:10.389078+00:00'}, 'new_state': {'entity_id': 'sensor.load_15m', 'state': '0.64404296875', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (15m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:41.173215+00:00', 'last_updated': '2018-04-07T17:06:41.173215+00:00'}}
2018-04-07 13:06:41.263797 DEBUG AppDaemon: {'entity_id': 'sensor.load_15m', 'old_state': {'entity_id': 'sensor.load_15m', 'state': '0.638671875', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (15m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:10.389078+00:00', 'last_updated': '2018-04-07T17:06:10.389078+00:00'}, 'new_state': {'entity_id': 'sensor.load_15m', 'state': '0.64404296875', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (15m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:41.173215+00:00', 'last_updated': '2018-04-07T17:06:41.173215+00:00'}}
2018-04-07 13:06:41.267425 DEBUG HADasboard: Sending data to 2 dashes: {'event_type': 'state_changed', 'data': {'entity_id': 'sensor.load_15m', 'old_state': {'entity_id': 'sensor.load_15m', 'state': '0.638671875', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (15m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:10.389078+00:00', 'last_updated': '2018-04-07T17:06:10.389078+00:00'}, 'new_state': {'entity_id': 'sensor.load_15m', 'state': '0.64404296875', 'attributes': {'unit_of_measurement': ' ', 'friendly_name': 'Load (15m)', 'icon': 'mdi:memory'}, 'last_changed': '2018-04-07T17:06:41.173215+00:00', 'last_updated': '2018-04-07T17:06:41.173215+00:00'}}, 'origin': 'LOCAL', 'time_fired': '2018-04-07T17:06:41.173334+00:00'}
2018-04-07 13:06:41.269978 DEBUG HADasboard: Found dashboard type Control Panel
2018-04-07 13:06:41.274641 DEBUG HADasboard: Found dashboard type Status
2018-04-07 13:06:41.335910 DEBUG AppDaemon: Event type:state_changed:
2018-04-07 13:06:41.337295 DEBUG AppDaemon: {'entity_id': 'sensor.since_last_boot', 'old_state': {'entity_id': 'sensor.since_last_boot', 'state': '16:54:49.058426', 'attributes': {'unit_of_measurement': '', 'friendly_name': 'Since last boot', 'icon': 'mdi:clock'}, 'last_changed': '2018-04-07T17:06:10.082091+00:00', 'last_updated': '2018-04-07T17:06:10.082091+00:00'}, 'new_state': {'entity_id': 'sensor.since_last_boot', 'state': '16:55:20.267417', 'attributes': {'unit_of_measurement': '', 'friendly_name': 'Since last boot', 'icon': 'mdi:clock'}, 'last_changed': '2018-04-07T17:06:41.294840+00:00', 'last_updated': '2018-04-07T17:06:41.294840+00:00'}}
2018-04-07 13:06:41.338804 DEBUG AppDaemon: {'entity_id': 'sensor.since_last_boot', 'old_state': {'entity_id': 'sensor.since_last_boot', 'state': '16:54:49.058426', 'attributes': {'unit_of_measurement': '', 'friendly_name': 'Since last boot', 'icon': 'mdi:clock'}, 'last_changed': '2018-04-07T17:06:10.082091+00:00', 'last_updated': '2018-04-07T17:06:10.082091+00:00'}, 'new_state': {'entity_id': 'sensor.since_last_boot', 'state': '16:55:20.267417', 'attributes': {'unit_of_measurement': '', 'friendly_name': 'Since last boot', 'icon': 'mdi:clock'}, 'last_changed': '2018-04-07T17:06:41.294840+00:00', 'last_updated': '2018-04-07T17:06:41.294840+00:00'}}
2018-04-07 13:06:41.340637 DEBUG HADasboard: Sending data to 2 dashes: {'event_type': 'state_changed', 'data': {'entity_id': 'sensor.since_last_boot', 'old_state': {'entity_id': 'sensor.since_last_boot', 'state': '16:54:49.058426', 'attributes': {'unit_of_measurement': '', 'friendly_name': 'Since last boot', 'icon': 'mdi:clock'}, 'last_changed': '2018-04-07T17:06:10.082091+00:00', 'last_updated': '2018-04-07T17:06:10.082091+00:00'}, 'new_state': {'entity_id': 'sensor.since_last_boot', 'state': '16:55:20.267417', 'attributes': {'unit_of_measurement': '', 'friendly_name': 'Since last boot', 'icon': 'mdi:clock'}, 'last_changed': '2018-04-07T17:06:41.294840+00:00', 'last_updated': '2018-04-07T17:06:41.294840+00:00'}}, 'origin': 'LOCAL', 'time_fired': '2018-04-07T17:06:41.295041+00:00'}
2018-04-07 13:06:41.342527 DEBUG HADasboard: Found dashboard type Control Panel
2018-04-07 13:06:41.345189 DEBUG HADasboard: Found dashboard type Status
2018-04-07 13:06:42.006522 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 13:06:42.073946 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 13:06:42.625094 DEBUG AppDaemon: Event type:state_changed:
2018-04-07 13:06:42.625828 DEBUG AppDaemon: {'entity_id': 'sensor.music_listening_this_week_lounge', 'old_state': {'entity_id': 'sensor.music_listening_this_week_lounge', 'state': '15.32', 'attributes': {'value': '15h 18m', 'unit_of_measurement': 'h', 'friendly_name': 'Music Listening This Week Lounge', 'icon': 'mdi:chart-line'}, 'last_changed': '2018-04-07T17:06:12.296994+00:00', 'last_updated': '2018-04-07T17:06:12.296994+00:00'}, 'new_state': {'entity_id': 'sensor.music_listening_this_week_lounge', 'state': '15.32', 'attributes': {'value': '15h 19m', 'unit_of_measurement': 'h', 'friendly_name': 'Music Listening This Week Lounge', 'icon': 'mdi:chart-line'}, 'last_changed': '2018-04-07T17:06:12.296994+00:00', 'last_updated': '2018-04-07T17:06:42.579598+00:00'}}
2018-04-07 13:06:42.631008 DEBUG AppDaemon: {'entity_id': 'sensor.music_listening_this_week_lounge', 'old_state': {'entity_id': 'sensor.music_listening_this_week_lounge', 'state': '15.32', 'attributes': {'value': '15h 18m', 'unit_of_measurement': 'h', 'friendly_name': 'Music Listening This Week Lounge', 'icon': 'mdi:chart-line'}, 'last_changed': '2018-04-07T17:06:12.296994+00:00', 'last_updated': '2018-04-07T17:06:12.296994+00:00'}, 'new_state': {'entity_id': 'sensor.music_listening_this_week_lounge', 'state': '15.32', 'attributes': {'value': '15h 19m', 'unit_of_measurement': 'h', 'friendly_name': 'Music Listening This Week Lounge', 'icon': 'mdi:chart-line'}, 'last_changed': '2018-04-07T17:06:12.296994+00:00', 'last_updated': '2018-04-07T17:06:42.579598+00:00'}}
2018-04-07 13:06:42.634942 DEBUG HADasboard: Sending data to 2 dashes: {'event_type': 'state_changed', 'data': {'entity_id': 'sensor.music_listening_this_week_lounge', 'old_state': {'entity_id': 'sensor.music_listening_this_week_lounge', 'state': '15.32', 'attributes': {'value': '15h 18m', 'unit_of_measurement': 'h', 'friendly_name': 'Music Listening This Week Lounge', 'icon': 'mdi:chart-line'}, 'last_changed': '2018-04-07T17:06:12.296994+00:00', 'last_updated': '2018-04-07T17:06:12.296994+00:00'}, 'new_state': {'entity_id': 'sensor.music_listening_this_week_lounge', 'state': '15.32', 'attributes': {'value': '15h 19m', 'unit_of_measurement': 'h', 'friendly_name': 'Music Listening This Week Lounge', 'icon': 'mdi:chart-line'}, 'last_changed': '2018-04-07T17:06:12.296994+00:00', 'last_updated': '2018-04-07T17:06:42.579598+00:00'}}, 'origin': 'LOCAL', 'time_fired': '2018-04-07T17:06:42.580161+00:00'}
2018-04-07 13:06:42.640438 DEBUG HADasboard: Found dashboard type Control Panel
2018-04-07 13:06:42.641990 DEBUG HADasboard: Found dashboard type Status
2018-04-07 13:06:43.006232 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 13:06:43.081468 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 13:06:44.004140 DEBUG AppDaemon: Scheduler loop compute time: 1.0ms
2018-04-07 13:06:44.088816 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 13:06:45.007159 DEBUG AppDaemon: Scheduler loop compute time: 4.0ms
2018-04-07 13:06:45.095402 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 13:06:46.006556 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 13:06:46.102870 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 13:06:47.006916 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 13:06:47.112956 DEBUG AppDaemon: Util loop compute time: 6.0ms
2018-04-07 13:06:48.006818 DEBUG AppDaemon: Scheduler loop compute time: 4.0ms
2018-04-07 13:06:48.122708 DEBUG AppDaemon: Util loop compute time: 4.0ms

presenting it as code block makes it readable, this way i cant tell much.
but i can tell that you have more then 1 dashboard open.

to get a clear view!:

  1. only use 1 custom widget
  2. make sure all dashboards are really closed
  3. close AD
  4. clear all logs
  5. restart AD in normal mode
  6. start ONLY the test dashboard without skin
  7. show the logs here as codeblock (including the startup from AD and the dashboard)

The first one I used blockquote, this one I used preformated text. Is there another option?

2018-04-07 16:49:30.972739 DEBUG AppDaemon: {'entity_id': 'sensor.tp_link_kw_2', 'old_state': {'entity_id': 'sensor.tp_link_kw_2', 'state': '95.086', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': 'Current KiloWatts'}, 'last_changed': '2018-04-07T20:48:59.787777+00:00', 'last_updated': '2018-04-07T20:48:59.787777+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_kw_2', 'state': '95.09', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': 'Current KiloWatts'}, 'last_changed': '2018-04-07T20:49:30.831919+00:00', 'last_updated': '2018-04-07T20:49:30.831919+00:00'}}
2018-04-07 16:49:30.984903 DEBUG AppDaemon: Event type:state_changed:
2018-04-07 16:49:30.985491 DEBUG AppDaemon: {'entity_id': 'sensor.tp_link_kw_today_2', 'old_state': {'entity_id': 'sensor.tp_link_kw_today_2', 'state': '10.154', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': "Today's KiloWatts"}, 'last_changed': '2018-04-07T20:48:59.798193+00:00', 'last_updated': '2018-04-07T20:48:59.798193+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_kw_today_2', 'state': '10.158', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': "Today's KiloWatts"}, 'last_changed': '2018-04-07T20:49:30.862676+00:00', 'last_updated': '2018-04-07T20:49:30.862676+00:00'}}
2018-04-07 16:49:30.986222 DEBUG AppDaemon: {'entity_id': 'sensor.tp_link_kw_today_2', 'old_state': {'entity_id': 'sensor.tp_link_kw_today_2', 'state': '10.154', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': "Today's KiloWatts"}, 'last_changed': '2018-04-07T20:48:59.798193+00:00', 'last_updated': '2018-04-07T20:48:59.798193+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_kw_today_2', 'state': '10.158', 'attributes': {'unit_of_measurement': 'kWh', 'friendly_name': "Today's KiloWatts"}, 'last_changed': '2018-04-07T20:49:30.862676+00:00', 'last_updated': '2018-04-07T20:49:30.862676+00:00'}}
2018-04-07 16:49:30.997339 DEBUG AppDaemon: Event type:state_changed:
2018-04-07 16:49:30.998186 DEBUG AppDaemon: {'entity_id': 'sensor.tp_link_volts_2', 'old_state': {'entity_id': 'sensor.tp_link_volts_2', 'state': '115.6', 'attributes': {'unit_of_measurement': 'V', 'friendly_name': 'Current Voltage'}, 'last_changed': '2018-04-07T20:48:59.809173+00:00', 'last_updated': '2018-04-07T20:48:59.809173+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_volts_2', 'state': '115.2', 'attributes': {'unit_of_measurement': 'V', 'friendly_name': 'Current Voltage'}, 'last_changed': '2018-04-07T20:49:30.884042+00:00', 'last_updated': '2018-04-07T20:49:30.884042+00:00'}}
2018-04-07 16:49:30.999394 DEBUG AppDaemon: {'entity_id': 'sensor.tp_link_volts_2', 'old_state': {'entity_id': 'sensor.tp_link_volts_2', 'state': '115.6', 'attributes': {'unit_of_measurement': 'V', 'friendly_name': 'Current Voltage'}, 'last_changed': '2018-04-07T20:48:59.809173+00:00', 'last_updated': '2018-04-07T20:48:59.809173+00:00'}, 'new_state': {'entity_id': 'sensor.tp_link_volts_2', 'state': '115.2', 'attributes': {'unit_of_measurement': 'V', 'friendly_name': 'Current Voltage'}, 'last_changed': '2018-04-07T20:49:30.884042+00:00', 'last_updated': '2018-04-07T20:49:30.884042+00:00'}}
2018-04-07 16:49:31.439544 DEBUG AppDaemon: Starting timer loop
2018-04-07 16:49:31.442756 DEBUG AppDaemon: Reading Apps
2018-04-07 16:49:31.449518 INFO AppDaemon: Reading config
2018-04-07 16:49:31.451574 DEBUG AppDaemon: Reading /config/appdaemon/apps/apps.yaml
2018-04-07 16:49:31.462991 INFO AppDaemon: /config/appdaemon/apps/apps.yaml added or modified
2018-04-07 16:49:31.463743 INFO AppDaemon: /config/appdaemon/apps/apps.yaml added or modified
2018-04-07 16:49:31.480960 INFO AppDaemon: App 'hello_world' added
2018-04-07 16:49:31.482767 INFO AppDaemon: Adding /config/appdaemon/apps to module import path
2018-04-07 16:49:31.484359 DEBUG AppDaemon: Found module /config/appdaemon/apps/hello.py
2018-04-07 16:49:31.486092 INFO AppDaemon: Loading App Module: /config/appdaemon/apps/hello.py
2018-04-07 16:49:31.531541 INFO AppDaemon: Initializing app hello_world using class HelloWorld from module hello
2018-04-07 16:49:31.950446 INFO hello_world: Hello from AppDaemon
2018-04-07 16:49:31.956827 INFO hello_world: You are now ready to run Apps!
2018-04-07 16:49:31.958732 INFO AppDaemon: App initialization complete
2018-04-07 16:49:31.962817 DEBUG AppDaemon: Util loop compute time: 3.0ms
2018-04-07 16:49:32.003640 DEBUG AppDaemon: Scheduler loop compute time: 2.0ms
2018-04-07 16:49:32.758545 DEBUG AppDaemon: Event type:state_changed:
2018-04-07 16:49:32.759227 DEBUG AppDaemon: {'entity_id': 'media_player.office', 'old_state': None, 'new_state': {'entity_id': 'media_player.office', 'state': 'off', 'attributes': {'friendly_name': 'Office', 'supported_features': 21437}, 'last_changed': '2018-04-07T20:49:32.720475+00:00', 'last_updated': '2018-04-07T20:49:32.720475+00:00'}}
2018-04-07 16:49:32.760164 DEBUG AppDaemon: {'entity_id': 'media_player.office', 'old_state': None, 'new_state': {'entity_id': 'media_player.office', 'state': 'off', 'attributes': {'friendly_name': 'Office', 'supported_features': 21437}, 'last_changed': '2018-04-07T20:49:32.720475+00:00', 'last_updated': '2018-04-07T20:49:32.720475+00:00'}}
2018-04-07 16:49:32.967465 DEBUG AppDaemon: Util loop compute time: 2.0ms
2018-04-07 16:49:33.003539 DEBUG AppDaemon: Scheduler loop compute time: 2.0ms
2018-04-07 16:49:33.972957 DEBUG AppDaemon: Util loop compute time: 2.0ms
2018-04-07 16:49:34.003647 DEBUG AppDaemon: Scheduler loop compute time: 2.0ms
2018-04-07 16:49:34.791323 DEBUG AppDaemon: Event type:service_registered:
2018-04-07 16:49:34.792481 DEBUG AppDaemon: {'domain': 'media_player', 'service': 'sonos_join'}
2018-04-07 16:49:34.802094 DEBUG AppDaemon: Event type:state_changed:
2018-04-07 16:49:34.803118 DEBUG AppDaemon: {'entity_id': 'media_player.lounge', 'old_state': None, 'new_state': {'entity_id': 'media_player.lounge', 'state': 'idle', 'attributes': {'volume_level': 0.21, 'is_volume_muted': False, 'media_content_type': 'music', 'source_list': ['1.FM - Absolute Blues Hits', '55 - The Garth Channel', '56 - The Highway', '58 - Prime Country', '800 Pound Jesus (256K S 2.43)', 'WhitBurn Country'], 'shuffle': False, 'is_coordinator': True, 'friendly_name': 'Sonos Kitchen', 'supported_features': 64063}, 'last_changed': '2018-04-07T20:49:34.750121+00:00', 'last_updated': '2018-04-07T20:49:34.750121+00:00'}}
2018-04-07 16:49:34.804322 DEBUG AppDaemon: {'entity_id': 'media_player.lounge', 'old_state': None, 'new_state': {'entity_id': 'media_player.lounge', 'state': 'idle', 'attributes': {'volume_level': 0.21, 'is_volume_muted': False, 'media_content_type': 'music', 'source_list': ['1.FM - Absolute Blues Hits', '55 - The Garth Channel', '56 - The Highway', '58 - Prime Country', '800 Pound Jesus (256K S 2.43)', 'WhitBurn Country'], 'shuffle': False, 'is_coordinator': True, 'friendly_name': 'Sonos Kitchen', 'supported_features': 64063}, 'last_changed': '2018-04-07T20:49:34.750121+00:00', 'last_updated': '2018-04-07T20:49:34.750121+00:00'}}
2018-04-07 16:49:34.812605 DEBUG AppDaemon: Event type:service_registered:
2018-04-07 16:49:34.813200 DEBUG AppDaemon: {'domain': 'media_player', 'service': 'sonos_unjoin'}
2018-04-07 16:49:34.827139 DEBUG AppDaemon: Event type:service_registered:
2018-04-07 16:49:34.827689 DEBUG AppDaemon: {'domain': 'media_player', 'service': 'sonos_snapshot'}
2018-04-07 16:49:34.859500 DEBUG AppDaemon: Event type:service_registered:
2018-04-07 16:49:34.860259 DEBUG AppDaemon: {'domain': 'media_player', 'service': 'sonos_restore'}
2018-04-07 16:49:34.867438 DEBUG AppDaemon: Event type:service_registered:
2018-04-07 16:49:34.868111 DEBUG AppDaemon: {'domain': 'media_player', 'service': 'sonos_set_sleep_timer'}
2018-04-07 16:49:34.875929 DEBUG AppDaemon: Event type:service_registered:
2018-04-07 16:49:34.876557 DEBUG AppDaemon: {'domain': 'media_player', 'service': 'sonos_clear_sleep_timer'}
2018-04-07 16:49:34.899220 DEBUG AppDaemon: Event type:service_registered:
2018-04-07 16:49:34.900350 DEBUG AppDaemon: {'domain': 'media_player', 'service': 'sonos_update_alarm'}
2018-04-07 16:49:34.908519 DEBUG AppDaemon: Event type:service_registered:
2018-04-07 16:49:34.909226 DEBUG AppDaemon: {'domain': 'media_player', 'service': 'sonos_set_option'}
2018-04-07 16:49:34.977895 DEBUG AppDaemon: Util loop compute time: 2.0ms
2018-04-07 16:49:35.003540 DEBUG AppDaemon: Scheduler loop compute time: 2.0ms
2018-04-07 16:49:35.154049 DEBUG AppDaemon: Event type:state_changed:
2018-04-07 16:49:35.154876 DEBUG AppDaemon: {'entity_id': 'media_player.lounge', 'old_state': {'entity_id': 'media_player.lounge', 'state': 'idle', 'attributes': {'volume_level': 0.21, 'is_volume_muted': False, 'media_content_type': 'music', 'source_list': ['1.FM - Absolute Blues Hits', '55 - The Garth Channel', '56 - The Highway', '58 - Prime Country', '800 Pound Jesus (256K S 2.43)', 'WhitBurn Country'], 'shuffle': False, 'is_coordinator': True, 'friendly_name': 'Sonos Kitchen', 'supported_features': 64063}, 'last_changed': '2018-04-07T20:49:34.750121+00:00', 'last_updated': '2018-04-07T20:49:34.750121+00:00'}, 'new_state': {'entity_id': 'media_player.lounge', 'state': 'paused', 'attributes': {'volume_level': 0.21, 'is_volume_muted': False, 'media_content_type': 'music', 'media_duration': 0, 'media_position': 0, 'media_position_updated_at': '2018-04-07T20:49:35.114995+00:00', 'media_title': 'x-sonosapi-hls:live:primecountry?sid=49&flags=8480&sn=2', 'media_artist': '', 'media_album_name': '', 'source_list': ['1.FM - Absolute Blues Hits', '55 - The Garth Channel', '56 - The Highway', '58 - Prime Country', '800 Pound Jesus (256K S 2.43)', 'WhitBurn Country'], 'shuffle': False, 'is_coordinator': True, 'friendly_name': 'Sonos Kitchen', 'supported_features': 64063}, 'last_changed': '2018-04-07T20:49:35.116337+00:00', 'last_updated': '2018-04-07T20:49:35.116337+00:00'}}
2018-04-07 16:49:35.156293 DEBUG AppDaemon: {'entity_id': 'media_player.lounge', 'old_state': {'entity_id': 'media_player.lounge', 'state': 'idle', 'attributes': {'volume_level': 0.21, 'is_volume_muted': False, 'media_content_type': 'music', 'source_list': ['1.FM - Absolute Blues Hits', '55 - The Garth Channel', '56 - The Highway', '58 - Prime Country', '800 Pound Jesus (256K S 2.43)', 'WhitBurn Country'], 'shuffle': False, 'is_coordinator': True, 'friendly_name': 'Sonos Kitchen', 'supported_features': 64063}, 'last_changed': '2018-04-07T20:49:34.750121+00:00', 'last_updated': '2018-04-07T20:49:34.750121+00:00'}, 'new_state': {'entity_id': 'media_player.lounge', 'state': 'paused', 'attributes': {'volume_level': 0.21, 'is_volume_muted': False, 'media_content_type': 'music', 'media_duration': 0, 'media_position': 0, 'media_position_updated_at': '2018-04-07T20:49:35.114995+00:00', 'media_title': 'x-sonosapi-hls:live:primecountry?sid=49&flags=8480&sn=2', 'media_artist': '', 'media_album_name': '', 'source_list': ['1.FM - Absolute Blues Hits', '55 - The Garth Channel', '56 - The Highway', '58 - Prime Country', '800 Pound Jesus (256K S 2.43)', 'WhitBurn Country'], 'shuffle': False, 'is_coordinator': True, 'friendly_name': 'Sonos Kitchen', 'supported_features': 64063}, 'last_changed': '2018-04-07T20:49:35.116337+00:00', 'last_updated': '2018-04-07T20:49:35.116337+00:00'}}
2018-04-07 16:49:35.986364 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:36.006265 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:36.993846 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:37.005757 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:37.990457 INFO function [get_dashboard] finished in 263 ms
2018-04-07 16:49:38.001338 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:38.007059 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:38.579942 INFO HADashboard: New dashboard connected: Status
2018-04-07 16:49:39.005901 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:39.012444 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:40.005817 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:40.018720 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:41.006150 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:41.026632 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:42.006612 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:42.033694 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:43.006303 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:43.041150 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:44.007624 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:44.048517 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:45.005613 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:45.055681 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:46.007230 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:46.062602 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:47.006466 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:47.069738 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:48.006355 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:48.076044 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:49.006136 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:49.082788 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:50.006644 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:50.091446 DEBUG AppDaemon: Util loop compute time: 5.0ms
2018-04-07 16:49:51.006118 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:51.099426 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:52.006861 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:52.106320 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:53.007653 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:53.112929 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:54.006414 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:54.119747 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:55.006422 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:55.126706 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:56.006137 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:56.134975 DEBUG AppDaemon: Util loop compute time: 4.0ms
2018-04-07 16:49:57.006553 DEBUG AppDaemon: Scheduler loop compute time: 3.0ms
2018-04-07 16:49:57.142802 DEBUG AppDaemon: Util loop compute time: 4.0ms

at the top of the forum you find this line:

When posting logs or configuration snippets please use code blocks and syntax highlighting.
that contains a link here:
Markdown Cheatsheet · adam-p/markdown-here Wiki · GitHub
explaining how to present codeblocks.

it also seems that you have a hard time to read and do exactly what is asked. (dont be offended, there are a lot of people who have trouble to do exactly what is written (even I in several cases) we tend to do what we think is expected, without reading every word exactly)

so i’ll try to ask is 1 more time as clear as I can:

  1. only use 1 custom widget (so delete all others)
  2. make sure all dashboards are really closed (on all tablets, phones, pcs, etc that you own)
  3. close AD
  4. clear all logs
  5. restart AD in normal (so NOT DEBUG) mode
  6. after you have checked that AD is correctly started and running as it should (by checking the logs) start ONLY the test dashboard without skin
  7. show the logs(acceslog, errorlog and appdaemon log) here as codeblock (including the startup from AD and the startup from dashboard)

Guilty! I thought I did what was expected. deleted the custom_widget iconsensor yaml and directory. stopped appdaemon, restarted the pi from shutdown, only used a direct link to the status page without skin and copied the appdaemon log. My confusion was in the info mode(normal and debug) and a brain fart in thinking if I removed all but 1 custom widget it was what was needed. After doing it your way and realizing I actually had to have only one widget in the panel (status page) I quickly found the error that I created in spacing of the yaml file.

Thank you for your time and patience. And it would take a lot more than pointing out my ignorance to offend me. I do have thirty years of Computer consulting and support behind me, I know exactly how an end user thinks. Guess I’m guilty too:slight_smile:

1 Like

your very welcome.
i am glad you took that wel. not everyone does, but sometimes saying something like that is the only way to get someone off the track that they are on.

glad you worked it out.

And here is the end results:

Looks fine, but it is not exactly what I envisioned. I used two custom widgets to get here.
Ideally it would be one custom widget with variables drawn from the entry in the status page block. But currently that is too advanced for me. Need to find an example to work from.

you create a widget that shows the state and 4 atrributes.
that is advanced :wink:
you say you used 2 widgets? combined? thats even more advanced.

if you share what you have done and what you envision, then maybe we can come to your ideal widget together.

Thanks Rene. wished it was advanced but it really is copy and paste hack starting with the weather widget.

The weather widget uses hard links to sensors, and so do I. So the two widgets are the same except for the hard links to the sensors in all of the required files.

I will start a new thread with what I have done, and there I will explain what was needed to accomplish this and what I envision it really should be. I’m sure there is a better solution for the masses as repeating steps is not the best way. In HA you need to pull out the attributes from the switch creating 5 sensors, then you need to hard link all 5 sensors in the widget for each switch. One or two not bad; but anymore than that and it gets tedious.

ah oke thats why you used 2 widgets :wink:
doesnt matter, we can take a look at it together and make a general widget from it.