Default states-like UI if no Lovelace config

This commit is contained in:
Yegor Vialov
2020-05-19 22:01:07 +00:00
parent 3dca28a7da
commit dbeda6ea68
2 changed files with 40 additions and 16 deletions

View File

@ -30,8 +30,42 @@ class HomeAssistantUI {
}
Map _generateLovelaceConfig() {
Map result = {};
result['title'] = 'Home';
Map result = {
'title': 'Home'
};
List<Entity> left = HomeAssistant().entities.getByDomains(
excludeDomains: ['sensor','binary_sensor', 'device_tracker', 'person', 'sun']
);
List<Map> cards = [];
Map<String, Map> cardsByDomains = {};
left.forEach((Entity entity) {
if (entity is GroupEntity) {
cards.add({
'type': CardType.ENTITIES,
'title': entity.displayName,
'entities': entity.childEntities.map((e) => e.entityId)
});
} else if (entity is MediaPlayerEntity) {
cards.add({
'type': CardType.MEDIA_CONTROL,
'entity': entity.entityId
});
} else if (entity is AlarmControlPanelEntity) {
cards.add({
'type': CardType.ALARM_PANEL,
'entity': entity.entityId
});
} else if (cardsByDomains.containsKey(entity.domain)) {
cardsByDomains[entity.domain]['entities'].add(entity.entityId);
} else {
cardsByDomains[entity.domain] = {
'type': 'entities',
'entities': [entity.entityId],
'title': entity.domain
};
}
});
cards.addAll(cardsByDomains.values);
result['views'] = [
{
'icon': 'mdi:home',
@ -40,14 +74,7 @@ class HomeAssistantUI {
).map(
(en) => en.entityId
).toList(),
'cards': [{
'type': 'entities',
'entities': HomeAssistant().entities.getByDomains(
excludeDomains: ['sensor','binary_sensor', 'device_tracker', 'person', 'sun']
).map(
(en) => en.entityId
).toList()
}]
'cards': cards
}
];
return result;