From c177e2d639d8c1ff892f5118bf8da3142a00c3e8 Mon Sep 17 00:00:00 2001 From: joBr99 <29555657+joBr99@users.noreply.github.com> Date: Sat, 14 Jan 2023 15:14:11 +0100 Subject: [PATCH] add docs --- apps/nspanel-lovelace-ui/luibackend/pages.py | 23 +++++---- docs/card-power.md | 51 +++++++++++++++++++ docs/img/card-power.png | Bin 0 -> 26289 bytes 3 files changed, 65 insertions(+), 9 deletions(-) create mode 100644 docs/card-power.md create mode 100644 docs/img/card-power.png diff --git a/apps/nspanel-lovelace-ui/luibackend/pages.py b/apps/nspanel-lovelace-ui/luibackend/pages.py index 55009fb1..a6d6ee6e 100644 --- a/apps/nspanel-lovelace-ui/luibackend/pages.py +++ b/apps/nspanel-lovelace-ui/luibackend/pages.py @@ -631,15 +631,20 @@ class LuiPagesGen(object): def generate_power_page(self, navigation, heading, items): command = f"entityUpd~{heading}~{navigation}" for item in items: - entity = apis.ha_api.get_entity(item.entityId) - icon_color = self.get_entity_color(entity, overwrite=item.colorOverride) - icon = get_icon_ha(item.entityId, overwrite=item.iconOverride) - speed = 0 - if float(entity.state) > 0: - speed = str(item.entity_input_config.get("speed", 1)) - speed = apis.ha_api.render_template(speed) - unit = get_attr_safe(entity, "unit_of_measurement", "") - command += f"~{icon_color}~{icon}~{speed}~{entity.state} {unit}" + if apis.ha_api.entity_exists(item.entityId): + entity = apis.ha_api.get_entity(item.entityId) + icon_color = self.get_entity_color(entity, overwrite=item.colorOverride) + icon = get_icon_ha(item.entityId, overwrite=item.iconOverride) + speed = 0 + if float(entity.state) > 0: + speed = str(item.entity_input_config.get("speed", 1)) + speed = apis.ha_api.render_template(speed) + unit = get_attr_safe(entity, "unit_of_measurement", "") + command += f"~{icon_color}~{icon}~{speed}~{entity.state} {unit}" + elif item.entityId == "delete": + command += f"~~~~" + else: + command += f"~17299~{get_icon_id('mdi:alert-circle-outline')}~~" self._send_mqtt_msg(command) def render_card(self, card, send_page_type=True): diff --git a/docs/card-power.md b/docs/card-power.md new file mode 100644 index 00000000..b3404538 --- /dev/null +++ b/docs/card-power.md @@ -0,0 +1,51 @@ +# Power Card (v3.9 and higher) + +![card-power](img/card-power.png) + +```yaml + cards: + - type: cardPower + title: Power Test + entities: + - entity: sensor.today_energy + - entity: delete + - entity: sensor.today_energy + speed: 3 + - entity: sensor.today_energy + speed: -1 + - entity: sensor.today_energy + speed: -2 + - entity: sensor.today_energy + speed: -3 + - entity: sensor.today_energy + speed: 1 + - entity: sensor.today_energy + speed: 1 +``` + +The first two entities are shown in the middle of the card, all other entities are used around it. + +List of supported config keys of this card: + +key | optional | type | default | description +-- | -- | -- | -- | -- +`type` | False | string | `None` | Used by navigate items +`entities` | False | complex | `None` | contains entities of the card +`title` | True | string | `None` | Title of the Page +`key` | True | string | `None` | Used by navigate items + +List of supported entitiy types for this page: + +- sensor + +Some details about speed: + +It is possible to calculate the speed though home assistant templates, this allows to link the speed to something within your homeassistant. + +If you got a proper configuration for that, feel free to share it, would be a good addition to the documentation. + +``` + - entity: sensor.today_energy + speed: '{{ range(-3, 3) | random }}' +``` + diff --git a/docs/img/card-power.png b/docs/img/card-power.png new file mode 100644 index 0000000000000000000000000000000000000000..6b457ea2bacf43d763fe6be0e6227e30f345ee89 GIT binary patch literal 26289 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 Kx?I*g^nU=YioG`g literal 0 HcmV?d00001