diff --git a/panels/hassio/ha-panel-hassio.html b/panels/hassio/ha-panel-hassio.html
index ee03a303ee..2054396754 100644
--- a/panels/hassio/ha-panel-hassio.html
+++ b/panels/hassio/ha-panel-hassio.html
@@ -127,7 +127,16 @@ Polymer({
apiCalled: function (ev) {
if (ev.detail.success) {
- this.$.data.refresh();
+ var tries = 1;
+
+ var tryUpdate = function () {
+ this.$.data.refresh().catch(function () {
+ tries += 1;
+ setTimeout(tryUpdate, Math.min(tries, 5) * 1000);
+ })
+ }.bind(this);
+
+ tryUpdate();
}
},
diff --git a/panels/hassio/hassio-data.html b/panels/hassio/hassio-data.html
index 4e07d35f45..eac78a7fb5 100644
--- a/panels/hassio/hassio-data.html
+++ b/panels/hassio/hassio-data.html
@@ -29,27 +29,29 @@ Polymer({
},
refresh: function () {
- this.fetchSupervisorInfo();
- this.fetchHostInfo();
- this.fetchHassInfo();
+ return Promise.all([
+ this.fetchSupervisorInfo(),
+ this.fetchHostInfo(),
+ this.fetchHassInfo(),
+ ])
},
fetchSupervisorInfo: function () {
- this.hass.callApi('get', 'hassio/supervisor/info')
+ return this.hass.callApi('get', 'hassio/supervisor/info')
.then(function (info) {
this.supervisor = info.data;
}.bind(this));
},
fetchHostInfo: function () {
- this.hass.callApi('get', 'hassio/host/info')
+ return this.hass.callApi('get', 'hassio/host/info')
.then(function (info) {
this.host = info.data;
}.bind(this));
},
fetchHassInfo: function () {
- this.hass.callApi('get', 'hassio/homeassistant/info')
+ return this.hass.callApi('get', 'hassio/homeassistant/info')
.then(function (info) {
this.homeassistant = info.data;
}.bind(this));