diff --git a/.github/workflows/automatic-custom-card-docs.yml b/.github/workflows/automatic-custom-card-docs.yml index a92327fbe..5f4c5ab23 100644 --- a/.github/workflows/automatic-custom-card-docs.yml +++ b/.github/workflows/automatic-custom-card-docs.yml @@ -11,7 +11,7 @@ jobs: docit: runs-on: "ubuntu-latest" steps: - - uses: "actions/checkout@v3" + - uses: "actions/checkout@v4" with: fetch-depth: 0 - name: "Copy and rename README.md files" diff --git a/.github/workflows/check-code-quality.yml b/.github/workflows/check-code-quality.yml index 2583600cb..e1b5b5ca6 100644 --- a/.github/workflows/check-code-quality.yml +++ b/.github/workflows/check-code-quality.yml @@ -11,11 +11,11 @@ jobs: runs-on: "ubuntu-latest" steps: - name: "⤵️ Check out code from GitHub" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "⚙️ Set up Python" uses: "actions/setup-python@v4" with: - python-version: 3.8 + python-version: 3.11 - name: "⚙️ Set up Ruby" uses: "ruby/setup-ruby@v1" with: diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f54dfd08b..1fbd12737 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -34,7 +34,7 @@ jobs: steps: - name: "Checkout repository" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" # Initializes the CodeQL tools for scanning. - name: "Initialize CodeQL" diff --git a/.github/workflows/hacs-validate.yml b/.github/workflows/hacs-validate.yml index d9a19e621..d2986cfa9 100644 --- a/.github/workflows/hacs-validate.yml +++ b/.github/workflows/hacs-validate.yml @@ -13,7 +13,7 @@ jobs: runs-on: "ubuntu-latest" steps: - name: "checkout" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "validation" uses: "home-assistant/actions/hassfest@master" @@ -22,7 +22,7 @@ jobs: runs-on: "ubuntu-latest" steps: - name: "checkout" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "validation" uses: "hacs/action@main" with: diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index a782ee3b6..2ed8a8677 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -12,7 +12,7 @@ jobs: runs-on: "ubuntu-latest" steps: - name: "⤵️ Check out code from GitHub" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "\U0001F680 Run Labeler" uses: "crazy-max/ghaction-github-labeler@v4" with: diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index d03239b40..335876e14 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -10,9 +10,9 @@ jobs: deploy: runs-on: "ubuntu-latest" steps: - - uses: "actions/checkout@v3" + - uses: "actions/checkout@v4" with: - node-version: "16.x" + node-version: "20.x" - uses: "actions/setup-python@v4" with: python-version: "3.11" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3196cc7e6..12d6ee6ee 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,7 +11,7 @@ jobs: runs-on: "ubuntu-latest" steps: - name: "Check out repository" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Get version" id: "version" diff --git a/.markdownlint.yml b/.markdownlint.yml index ed383dae4..e6fda1a29 100644 --- a/.markdownlint.yml +++ b/.markdownlint.yml @@ -6,7 +6,7 @@ default: true MD001: false MD024: - allow_different_nesting: true + siblings_only: true MD025: false @@ -48,7 +48,7 @@ no-emphasis-as-heading: false first-line-h1: false code-block-style: - style: ["fenced"] + style: "fenced" proper-names: names: [] diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d9b4023f0..1a05c35c7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,7 +12,7 @@ ci: repos: - repo: "https://github.com/pre-commit/pre-commit-hooks" - rev: "v4.2.0" + rev: "v5.0.0" hooks: - id: "check-executables-have-shebangs" - id: "check-json" @@ -30,7 +30,7 @@ repos: - id: "mixed-line-ending" - repo: "https://github.com/adrienverge/yamllint.git" - rev: "v1.26.3" + rev: "v1.35.1" hooks: - id: "yamllint" args: ["--format", "parsable", "--strict"] @@ -41,13 +41,13 @@ repos: )$ - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.31.1 + rev: v0.43.0 hooks: - id: markdownlint args: ["--fix"] - repo: "https://github.com/jumanjihouse/pre-commit-hook-yamlfmt" - rev: "0.1.1" + rev: "0.2.3" hooks: - id: "yamlfmt" args: @@ -63,23 +63,23 @@ repos: exclude: ".*" - repo: "https://github.com/mattlqx/pre-commit-search-and-replace" - rev: "v1.0.5" + rev: "v1.1.8" hooks: - id: "search-and-replace" - repo: "https://github.com/asottile/pyupgrade" - rev: "v2.31.1" + rev: "v3.19.1" hooks: - id: "pyupgrade" args: ["--py39-plus"] - repo: https://github.com/pycqa/isort - rev: 5.12.0 + rev: 5.13.2 hooks: - id: isort - repo: "https://github.com/psf/black" - rev: "22.3.0" + rev: "24.10.0" hooks: - id: "black" args: @@ -89,7 +89,7 @@ repos: files: '^((custom_components|tests)/.+)?[^/]+\.py$' - repo: "https://github.com/PyCQA/flake8" - rev: "4.0.1" + rev: "7.1.1" hooks: - id: "flake8" additional_dependencies: @@ -99,7 +99,7 @@ repos: files: '^(custom_components/.+)?[^/]+\.py$' - repo: "https://github.com/PyCQA/bandit" - rev: "1.7.4" + rev: "1.8.0" hooks: - id: "bandit" args: @@ -108,7 +108,7 @@ repos: # - "--configfile=bandit.yaml" <<: *python-files-with-tests - repo: https://github.com/codespell-project/codespell.git - rev: "v2.1.0" + rev: "v2.3.0" hooks: - id: codespell files: "(.*.md|translations/en.json)" diff --git a/README.md b/README.md index 9cfc8928f..56c8e7fd2 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ It's kind of hard to explain what this is, so let's call it a "theme" (in quotation marks). But one thing is for sure, it is very nice! Taking the exceptional work of tben as a basis, this repository is aimed to ease installation and maintenance of his wonderful work. You can use this interpretation of a SmartHomeUI more or less like a theme in HomeAssistant. - +example-image1 example-image2 example-image3 example-image4 ## Wiki for documentation @@ -28,6 +28,7 @@ Take a look here: [https://ui-lovelace-minimalist.github.io/UI/](https://ui-love Table of content from the WIKI
+ @@ -103,5 +104,5 @@ The same goes for our `custom_cards`. As the number grows, the list would be to ### Contributions ->This is a living project and all input is very welcome! If you configured and designed a card, that you would like to share, please feel free to do so! We are happy to include your contribution so others can use it as well! -This project uses pre-commit for consistent and clean code. If possible, please make sure that you also use pre-commit for local development before creating a pull request. +> This is a living project and all input is very welcome! If you configured and designed a card, that you would like to share, please feel free to do so! We are happy to include your contribution so others can use it as well! +> This project uses pre-commit for consistent and clean code. If possible, please make sure that you also use pre-commit for local development before creating a pull request. diff --git a/custom_cards/custom_card_alarm_time/card_alarm_time.yaml b/custom_cards/custom_card_alarm_time/card_alarm_time.yaml index bea5c3afb..15e355be0 100644 --- a/custom_cards/custom_card_alarm_time/card_alarm_time.yaml +++ b/custom_cards/custom_card_alarm_time/card_alarm_time.yaml @@ -176,10 +176,11 @@ card_alarm_time: type: "custom:button-card" template: "widget_icon" tap_action: - action: "call-service" - service: "input_datetime.set_datetime" - service_data: + action: "perform-action" + perform_action: "input_datetime.set_datetime" + target: entity_id: "[[[ return variables.ulm_card_alarm_time_datetime ]]]" + data: time: > [[[ var timestamp = states[variables.ulm_card_alarm_time_datetime].attributes.timestamp; @@ -259,10 +260,11 @@ card_alarm_time: type: "custom:button-card" template: "widget_icon" tap_action: - action: "call-service" - service: "input_datetime.set_datetime" - service_data: + action: "perform-action" + perform_action: "input_datetime.set_datetime" + target: entity_id: "[[[ return variables.ulm_card_alarm_time_datetime ]]]" + data: time: > [[[ var timestamp = states[variables.ulm_card_alarm_time_datetime].attributes.timestamp; diff --git a/custom_cards/custom_card_bar_card/custom_card_bar_card.yaml b/custom_cards/custom_card_bar_card/custom_card_bar_card.yaml index dcb4ca712..58dd0b13d 100644 --- a/custom_cards/custom_card_bar_card/custom_card_bar_card.yaml +++ b/custom_cards/custom_card_bar_card/custom_card_bar_card.yaml @@ -44,26 +44,27 @@ custom_card_bar_card: name: "off" min: "[[[ return variables.ulm_custom_card_bar_card_min ]]]" max: "[[[ return variables.ulm_custom_card_bar_card_max ]]]" - style: |- - bar-card-currentbar { - border-radius: 0px !important; - right: 0; - } - bar-card-backgroundbar { - border-radius: 0px !important; - right: 0; - } - #states { - padding: 0; - height: 35px; - } - bar-card-background { - height: 35px !important; - } - bar-card-indicator { - left: 10px; - } - bar-card-value { - font-weight: bold; - font-size: 12px; - } + card_mod: + style: |- + bar-card-currentbar { + border-radius: 0px !important; + right: 0; + } + bar-card-backgroundbar { + border-radius: 0px !important; + right: 0; + } + #states { + padding: 0; + height: 35px; + } + bar-card-background { + height: 35px !important; + } + bar-card-indicator { + left: 10px; + } + bar-card-value { + font-weight: bold; + font-size: 12px; + } diff --git a/custom_cards/custom_card_camera/README.md b/custom_cards/custom_card_camera/README.md index d3ebfbabc..90cef23db 100644 --- a/custom_cards/custom_card_camera/README.md +++ b/custom_cards/custom_card_camera/README.md @@ -3,6 +3,7 @@ title: Custom Camera Card hide: - toc --- + # Custom-card "Camera" @@ -21,7 +22,7 @@ Version: 1.0.0
1.0.1 -Added variable to passthough aspect ratio to the picture entity card. Fix minor issues with title. +Added variable to passthrough aspect ratio to the picture entity card. Fix minor issues with title.
1.0.0 @@ -39,7 +40,7 @@ Initial release. ulm_custom_card_camera_title: true ulm_custom_card_camera_name: "name" ulm_custom_card_camera_label: "label" - ulm_custom_card_camera_aspect_ratio: '16:9' + ulm_custom_card_camera_aspect_ratio: "16:9" ``` ## Variables diff --git a/custom_cards/custom_card_chromecast/custom_card_chromecast.yaml b/custom_cards/custom_card_chromecast/custom_card_chromecast.yaml index 3810be83d..c11c1328a 100644 --- a/custom_cards/custom_card_chromecast/custom_card_chromecast.yaml +++ b/custom_cards/custom_card_chromecast/custom_card_chromecast.yaml @@ -49,9 +49,9 @@ card_media_player_chromecast_with_controls: type: "custom:button-card" template: "widget_icon" tap_action: - action: "call-service" - service: "media_player.toggle" - service_data: + action: "perform-action" + perform_action: "media_player.toggle" + target: entity_id: "[[[ return variables.ulm_card_media_player_with_controls_entity ]]]" icon: "mdi:power" item2: @@ -60,9 +60,9 @@ card_media_player_chromecast_with_controls: template: "widget_icon" entity: "[[[ return variables.ulm_card_media_player_with_controls_entity ]]]" tap_action: - action: "call-service" - service: "media_player.media_play_pause" - service_data: + action: "perform-action" + perform_action: "media_player.media_play_pause" + target: entity_id: "[[[ return variables.ulm_card_media_player_with_controls_entity ]]]" icon: "mdi:pause" state: @@ -75,9 +75,9 @@ card_media_player_chromecast_with_controls: type: "custom:button-card" template: "widget_icon" tap_action: - action: "call-service" - service: "media_player.toggle" - service_data: + action: "perform-action" + perform_action: "media_player.toggle" + target: entity_id: "[[[ return variables.ulm_card_media_player_with_controls_entity ]]]" icon: "mdi:video-input-hdmi" diff --git a/custom_cards/custom_card_eraycetinay_elapsed_time/custom_card_eraycetinay_elapsed_time.yaml b/custom_cards/custom_card_eraycetinay_elapsed_time/custom_card_eraycetinay_elapsed_time.yaml index 6d7f5283f..eac04aa4c 100644 --- a/custom_cards/custom_card_eraycetinay_elapsed_time/custom_card_eraycetinay_elapsed_time.yaml +++ b/custom_cards/custom_card_eraycetinay_elapsed_time/custom_card_eraycetinay_elapsed_time.yaml @@ -23,15 +23,15 @@ custom_card_eraycetinay_elapsed_time: let text = ''; if(entity.attributes.has_date) { - text += days > 0 ? days + ' ' + (days > 1 ? variables.custom_card_eraycetinay_elapsed_time_days : variables.custom_card_eraycetinay_elapsed_time_day) +' ' : ''; + text += days > 0 ? days + ' ' + (days > 1 ? variables.ulm_custom_card_eraycetinay_elapsed_time_days : variables.ulm_custom_card_eraycetinay_elapsed_time_day) +' ' : ''; } if(entity.attributes.has_time) { - text += hours > 0 ? hours + ' ' + (hours > 1 ? variables.custom_card_eraycetinay_elapsed_time_hours : variables.custom_card_eraycetinay_elapsed_time_hour) +' ' : ''; + text += hours > 0 ? hours + ' ' + (hours > 1 ? variables.ulm_custom_card_eraycetinay_elapsed_time_hours : variables.ulm_custom_card_eraycetinay_elapsed_time_hour) +' ' : ''; } if(entity.attributes.has_time && !entity.attributes.has_date) { - text += minutes > 0 ? minutes + ' ' + (minutes > 1 ? variables.custom_card_eraycetinay_elapsed_time_minutes : variables.custom_card_eraycetinay_elapsed_time_minute) +' ' : ''; + text += minutes > 0 ? minutes + ' ' + (minutes > 1 ? variables.ulm_custom_card_eraycetinay_elapsed_time_minutes : variables.ulm_custom_card_eraycetinay_elapsed_time_minute) +' ' : ''; } - text = text.length ? text += variables.custom_card_eraycetinay_elapsed_time_ago : variables.custom_card_eraycetinay_elapsed_time_justnow; + text = text.length ? text += variables.ulm_custom_card_eraycetinay_elapsed_time_ago : variables.ulm_custom_card_eraycetinay_elapsed_time_justnow; return text; ]]] diff --git a/custom_cards/custom_card_eraycetinay_elapsed_time/languages/de.yaml b/custom_cards/custom_card_eraycetinay_elapsed_time/languages/de.yaml index d0b14792a..0b81d9b18 100644 --- a/custom_cards/custom_card_eraycetinay_elapsed_time/languages/de.yaml +++ b/custom_cards/custom_card_eraycetinay_elapsed_time/languages/de.yaml @@ -1,11 +1,11 @@ --- ulm_custom_card_eraycetinay_elapsed_time_language_variables: variables: - custom_card_eraycetinay_elapsed_time_day: "Tag" - custom_card_eraycetinay_elapsed_time_days: "Tage" - custom_card_eraycetinay_elapsed_time_hour: "Stunde" - custom_card_eraycetinay_elapsed_time_hours: "Stunden" - custom_card_eraycetinay_elapsed_time_minute: "Minute" - custom_card_eraycetinay_elapsed_time_minutes: "Minuten" - custom_card_eraycetinay_elapsed_time_ago: "her" - custom_card_eraycetinay_elapsed_time_justnow: "Jetzt" + ulm_custom_card_eraycetinay_elapsed_time_day: "Tag" + ulm_custom_card_eraycetinay_elapsed_time_days: "Tage" + ulm_custom_card_eraycetinay_elapsed_time_hour: "Stunde" + ulm_custom_card_eraycetinay_elapsed_time_hours: "Stunden" + ulm_custom_card_eraycetinay_elapsed_time_minute: "Minute" + ulm_custom_card_eraycetinay_elapsed_time_minutes: "Minuten" + ulm_custom_card_eraycetinay_elapsed_time_ago: "her" + ulm_custom_card_eraycetinay_elapsed_time_justnow: "Jetzt" diff --git a/custom_cards/custom_card_eraycetinay_elapsed_time/languages/en.yaml b/custom_cards/custom_card_eraycetinay_elapsed_time/languages/en.yaml index 738a2e718..a062075df 100644 --- a/custom_cards/custom_card_eraycetinay_elapsed_time/languages/en.yaml +++ b/custom_cards/custom_card_eraycetinay_elapsed_time/languages/en.yaml @@ -1,11 +1,11 @@ --- ulm_custom_card_eraycetinay_elapsed_time_language_variables: variables: - custom_card_eraycetinay_elapsed_time_day: "day" - custom_card_eraycetinay_elapsed_time_days: "days" - custom_card_eraycetinay_elapsed_time_hour: "hour" - custom_card_eraycetinay_elapsed_time_hours: "hours" - custom_card_eraycetinay_elapsed_time_minute: "minute" - custom_card_eraycetinay_elapsed_time_minutes: "minutes" - custom_card_eraycetinay_elapsed_time_ago: "ago" - custom_card_eraycetinay_elapsed_time_justnow: "just now" + ulm_custom_card_eraycetinay_elapsed_time_day: "day" + ulm_custom_card_eraycetinay_elapsed_time_days: "days" + ulm_custom_card_eraycetinay_elapsed_time_hour: "hour" + ulm_custom_card_eraycetinay_elapsed_time_hours: "hours" + ulm_custom_card_eraycetinay_elapsed_time_minute: "minute" + ulm_custom_card_eraycetinay_elapsed_time_minutes: "minutes" + ulm_custom_card_eraycetinay_elapsed_time_ago: "ago" + ulm_custom_card_eraycetinay_elapsed_time_justnow: "just now" diff --git a/custom_cards/custom_card_eraycetinay_elapsed_time/languages/es.yaml b/custom_cards/custom_card_eraycetinay_elapsed_time/languages/es.yaml index 08f72bf65..137df9718 100644 --- a/custom_cards/custom_card_eraycetinay_elapsed_time/languages/es.yaml +++ b/custom_cards/custom_card_eraycetinay_elapsed_time/languages/es.yaml @@ -1,11 +1,11 @@ --- ulm_custom_card_eraycetinay_elapsed_time_language_variables: variables: - custom_card_eraycetinay_elapsed_time_day: "día" - custom_card_eraycetinay_elapsed_time_days: "días" - custom_card_eraycetinay_elapsed_time_hour: "hora" - custom_card_eraycetinay_elapsed_time_hours: "horas" - custom_card_eraycetinay_elapsed_time_minute: "minuto" - custom_card_eraycetinay_elapsed_time_minutes: "minutos" - custom_card_eraycetinay_elapsed_time_ago: "atrás" - custom_card_eraycetinay_elapsed_time_justnow: "justo ahora" + ulm_custom_card_eraycetinay_elapsed_time_day: "día" + ulm_custom_card_eraycetinay_elapsed_time_days: "días" + ulm_custom_card_eraycetinay_elapsed_time_hour: "hora" + ulm_custom_card_eraycetinay_elapsed_time_hours: "horas" + ulm_custom_card_eraycetinay_elapsed_time_minute: "minuto" + ulm_custom_card_eraycetinay_elapsed_time_minutes: "minutos" + ulm_custom_card_eraycetinay_elapsed_time_ago: "atrás" + ulm_custom_card_eraycetinay_elapsed_time_justnow: "justo ahora" diff --git a/custom_cards/custom_card_eraycetinay_elapsed_time/languages/hu.yaml b/custom_cards/custom_card_eraycetinay_elapsed_time/languages/hu.yaml new file mode 100644 index 000000000..5c29e717f --- /dev/null +++ b/custom_cards/custom_card_eraycetinay_elapsed_time/languages/hu.yaml @@ -0,0 +1,11 @@ +--- +ulm_custom_card_eraycetinay_elapsed_time_language_variables: + variables: + ulm_custom_card_eraycetinay_elapsed_time_day: "nappal" + ulm_custom_card_eraycetinay_elapsed_time_days: "nappal" + ulm_custom_card_eraycetinay_elapsed_time_hour: "órával" + ulm_custom_card_eraycetinay_elapsed_time_hours: "órával" + ulm_custom_card_eraycetinay_elapsed_time_minute: "perccel" + ulm_custom_card_eraycetinay_elapsed_time_minutes: "perccel" + ulm_custom_card_eraycetinay_elapsed_time_ago: "ezelőtt" + ulm_custom_card_eraycetinay_elapsed_time_justnow: "éppen most" diff --git a/custom_cards/custom_card_eraycetinay_elapsed_time/languages/pl.yaml b/custom_cards/custom_card_eraycetinay_elapsed_time/languages/pl.yaml index 9d59fd2e4..e7912b293 100644 --- a/custom_cards/custom_card_eraycetinay_elapsed_time/languages/pl.yaml +++ b/custom_cards/custom_card_eraycetinay_elapsed_time/languages/pl.yaml @@ -1,11 +1,11 @@ --- ulm_custom_card_eraycetinay_elapsed_time_language_variables: variables: - custom_card_eraycetinay_elapsed_time_day: "dzień" - custom_card_eraycetinay_elapsed_time_days: "dni" - custom_card_eraycetinay_elapsed_time_hour: "godzinę" - custom_card_eraycetinay_elapsed_time_hours: "godzin" - custom_card_eraycetinay_elapsed_time_minute: "minutę" - custom_card_eraycetinay_elapsed_time_minutes: "minut" - custom_card_eraycetinay_elapsed_time_ago: "temu" - custom_card_eraycetinay_elapsed_time_justnow: "przed chwilą" + ulm_custom_card_eraycetinay_elapsed_time_day: "dzień" + ulm_custom_card_eraycetinay_elapsed_time_days: "dni" + ulm_custom_card_eraycetinay_elapsed_time_hour: "godzinę" + ulm_custom_card_eraycetinay_elapsed_time_hours: "godzin" + ulm_custom_card_eraycetinay_elapsed_time_minute: "minutę" + ulm_custom_card_eraycetinay_elapsed_time_minutes: "minut" + ulm_custom_card_eraycetinay_elapsed_time_ago: "temu" + ulm_custom_card_eraycetinay_elapsed_time_justnow: "przed chwilą" diff --git a/custom_cards/custom_card_eraycetinay_elapsed_time/languages/tr.yaml b/custom_cards/custom_card_eraycetinay_elapsed_time/languages/tr.yaml index d3991c805..0b36ea71f 100644 --- a/custom_cards/custom_card_eraycetinay_elapsed_time/languages/tr.yaml +++ b/custom_cards/custom_card_eraycetinay_elapsed_time/languages/tr.yaml @@ -1,11 +1,11 @@ --- ulm_custom_card_eraycetinay_elapsed_time_language_variables: variables: - custom_card_eraycetinay_elapsed_time_day: "gün" - custom_card_eraycetinay_elapsed_time_days: "gün" - custom_card_eraycetinay_elapsed_time_hour: "saat" - custom_card_eraycetinay_elapsed_time_hours: "saat" - custom_card_eraycetinay_elapsed_time_minute: "dakika" - custom_card_eraycetinay_elapsed_time_minutes: "dakika" - custom_card_eraycetinay_elapsed_time_ago: "önce" - custom_card_eraycetinay_elapsed_time_justnow: "az önce" + ulm_custom_card_eraycetinay_elapsed_time_day: "gün" + ulm_custom_card_eraycetinay_elapsed_time_days: "gün" + ulm_custom_card_eraycetinay_elapsed_time_hour: "saat" + ulm_custom_card_eraycetinay_elapsed_time_hours: "saat" + ulm_custom_card_eraycetinay_elapsed_time_minute: "dakika" + ulm_custom_card_eraycetinay_elapsed_time_minutes: "dakika" + ulm_custom_card_eraycetinay_elapsed_time_ago: "önce" + ulm_custom_card_eraycetinay_elapsed_time_justnow: "az önce" diff --git a/custom_cards/custom_card_eraycetinay_lock/README.md b/custom_cards/custom_card_eraycetinay_lock/README.md index 777c75ac2..9b3bb9e06 100644 --- a/custom_cards/custom_card_eraycetinay_lock/README.md +++ b/custom_cards/custom_card_eraycetinay_lock/README.md @@ -107,6 +107,20 @@ Version: 0.0.3
+ + + + + + + + + + + + + +
Setup no Displays a warning when the door is lock but the door is still open.
ulm_custom_card_eraycetinay_lock_battery_sensor_binarytruefalsenoSet to true if using a binary battery sensor. Will ignore battery_warning percentage settings
ulm_custom_card_eraycetinay_lock_battery_sensor_binary_low_stateoffonnoSet whether the binary sensor turns to on or off when in low state
??? note "Template Code" diff --git a/custom_cards/custom_card_eraycetinay_lock/custom_card_eraycetinay_lock.yaml b/custom_cards/custom_card_eraycetinay_lock/custom_card_eraycetinay_lock.yaml index 4c2447996..fa59709a2 100644 --- a/custom_cards/custom_card_eraycetinay_lock/custom_card_eraycetinay_lock.yaml +++ b/custom_cards/custom_card_eraycetinay_lock/custom_card_eraycetinay_lock.yaml @@ -7,16 +7,19 @@ custom_card_eraycetinay_lock: variables: ulm_custom_card_eraycetinay_lock_battery_warning: 20 ulm_custom_card_eraycetinay_lock_battery_warning_low: 5 + ulm_custom_card_eraycetinay_lock_battery_sensor_binary: false + ulm_custom_card_eraycetinay_lock_battery_sensor_binary_low_state: "on" + ulm_custom_card_eraycetinay_lock_only_open: false tap_action: action: | [[[ - return variables.ulm_custom_card_eraycetinay_lock_tap_control ? "call-service" : "more-info"; + return variables.ulm_custom_card_eraycetinay_lock_tap_control ? "perform-action" : "more-info"; ]]] - # only related with call-service action - service: | + # only related with perform-action + perform_action: | [[[ if(variables.ulm_custom_card_eraycetinay_lock_tap_control){ - if(variables.ulm_custom_card_eraycetinay_lock_open){ + if(variables.ulm_custom_card_eraycetinay_lock_only_open){ return "lock.open"; } else { if (entity.state == "locked"){ @@ -27,8 +30,8 @@ custom_card_eraycetinay_lock: } } ]]] - # only related with call-service action - service_data: + # only related with perform-action + target: entity_id: | [[[ return entity.entity_id; ]]] show_label: true @@ -89,10 +92,16 @@ custom_card_eraycetinay_lock: - background-color: | [[[ if (variables.ulm_custom_card_eraycetinay_lock_battery_level !== undefined) { - if (states[variables.ulm_custom_card_eraycetinay_lock_battery_level].state <= variables.ulm_custom_card_eraycetinay_lock_battery_warning_low) { - return "rgba(var(--color-red),1)"; - } else if (states[variables.ulm_custom_card_eraycetinay_lock_battery_level].state <= variables.ulm_custom_card_eraycetinay_lock_battery_warning) { - return "rgba(var(--color-yellow),1)"; + if (variables.ulm_custom_card_eraycetinay_lock_battery_sensor_binary) { + if (states[variables.ulm_custom_card_eraycetinay_lock_battery_level].state == variables.ulm_custom_card_eraycetinay_lock_battery_sensor_binary_low_state) { + return "rgba(var(--color-red),1)"; + } + } else { + if (states[variables.ulm_custom_card_eraycetinay_lock_battery_level].state <= variables.ulm_custom_card_eraycetinay_lock_battery_warning_low) { + return "rgba(var(--color-red),1)"; + } else if (states[variables.ulm_custom_card_eraycetinay_lock_battery_level].state <= variables.ulm_custom_card_eraycetinay_lock_battery_warning) { + return "rgba(var(--color-yellow),1)"; + } } } ]]] @@ -106,10 +115,18 @@ custom_card_eraycetinay_lock: notification_battery: > [[[ if (variables.ulm_custom_card_eraycetinay_lock_battery_level !== undefined) { - if (variables.ulm_custom_card_eraycetinay_lock_battery_warning >= states[variables.ulm_custom_card_eraycetinay_lock_battery_level].state) { - return ` - - `; + if (variables.ulm_custom_card_eraycetinay_lock_battery_sensor_binary) { + if (states[variables.ulm_custom_card_eraycetinay_lock_battery_level].state == variables.ulm_custom_card_eraycetinay_lock_battery_sensor_binary_low_state) { + return ` + + `; + } + } else { + if (variables.ulm_custom_card_eraycetinay_lock_battery_warning >= states[variables.ulm_custom_card_eraycetinay_lock_battery_level].state) { + return ` + + `; + } } } ]]] diff --git a/custom_cards/custom_card_eraycetinay_lock/languages/de.yaml b/custom_cards/custom_card_eraycetinay_lock/languages/de.yaml index 1305d95eb..d97a28f11 100644 --- a/custom_cards/custom_card_eraycetinay_lock/languages/de.yaml +++ b/custom_cards/custom_card_eraycetinay_lock/languages/de.yaml @@ -1,11 +1,12 @@ --- custom_card_eraycetinay_lock_language_variables: variables: - custom_card_eraycetinay_lock_locked: "verriegelt" - custom_card_eraycetinay_lock_unlocked: "entriegelt" - custom_card_eraycetinay_lock_locking: "verriegeln" - custom_card_eraycetinay_lock_unlocking: "entriegeln" - custom_card_eraycetinay_lock_unavailable: "nicht verfügbar" - custom_card_eraycetinay_lock_jammed: "blockiert" - custom_card_eraycetinay_lock_locked_and_opened: "Die Tür ist verschlossen, aber noch offen." - custom_card_eraycetinay_lock_battery_is_at: "Batterie ist an" + ulm_custom_card_eraycetinay_lock_locked: "verriegelt" + ulm_custom_card_eraycetinay_lock_unlocked: "entriegelt" + ulm_custom_card_eraycetinay_lock_locking: "verriegeln" + ulm_custom_card_eraycetinay_lock_unlocking: "entriegeln" + ulm_custom_card_eraycetinay_lock_unavailable: "nicht verfügbar" + ulm_custom_card_eraycetinay_lock_jammed: "blockiert" + ulm_custom_card_eraycetinay_lock_locked_and_opened: "Die Tür ist verschlossen, aber noch offen." + ulm_custom_card_eraycetinay_lock_battery_is_at: "Batterie ist an" + ulm_custom_card_eraycetinay_lock_battery_is_low: "Batterie schwach" diff --git a/custom_cards/custom_card_eraycetinay_lock/languages/en.yaml b/custom_cards/custom_card_eraycetinay_lock/languages/en.yaml index f34a60515..81579b70b 100644 --- a/custom_cards/custom_card_eraycetinay_lock/languages/en.yaml +++ b/custom_cards/custom_card_eraycetinay_lock/languages/en.yaml @@ -1,11 +1,12 @@ --- custom_card_eraycetinay_lock_language_variables: variables: - custom_card_eraycetinay_lock_locked: "locked" - custom_card_eraycetinay_lock_unlocked: "unlocked" - custom_card_eraycetinay_lock_locking: "locking" - custom_card_eraycetinay_lock_unlocking: "unlocking" - custom_card_eraycetinay_lock_unavailable: "unavailable" - custom_card_eraycetinay_lock_jammed: "jammed" - custom_card_eraycetinay_lock_locked_and_opened: "The door is locked but still open." - custom_card_eraycetinay_lock_battery_is_at: "Battery is at" + ulm_custom_card_eraycetinay_lock_locked: "locked" + ulm_custom_card_eraycetinay_lock_unlocked: "unlocked" + ulm_custom_card_eraycetinay_lock_locking: "locking" + ulm_custom_card_eraycetinay_lock_unlocking: "unlocking" + ulm_custom_card_eraycetinay_lock_unavailable: "unavailable" + ulm_custom_card_eraycetinay_lock_jammed: "jammed" + ulm_custom_card_eraycetinay_lock_locked_and_opened: "The door is locked but still open." + ulm_custom_card_eraycetinay_lock_battery_is_at: "Battery is at" + ulm_custom_card_eraycetinay_lock_battery_is_low: "Battery is low" diff --git a/custom_cards/custom_card_eraycetinay_lock/languages/es.yaml b/custom_cards/custom_card_eraycetinay_lock/languages/es.yaml index 637d3c74c..3281e2ee1 100644 --- a/custom_cards/custom_card_eraycetinay_lock/languages/es.yaml +++ b/custom_cards/custom_card_eraycetinay_lock/languages/es.yaml @@ -1,11 +1,12 @@ --- custom_card_eraycetinay_lock_language_variables: variables: - custom_card_eraycetinay_lock_locked: "bloqueado" - custom_card_eraycetinay_lock_unlocked: "desbloqueado" - custom_card_eraycetinay_lock_locking: "bloqueando" - custom_card_eraycetinay_lock_unlocking: "desbloqueando" - custom_card_eraycetinay_lock_unavailable: "no disponible" - custom_card_eraycetinay_lock_jammed: "apretada" - custom_card_eraycetinay_lock_locked_and_opened: "La puerta está cerrada pero aún abierta." - custom_card_eraycetinay_lock_battery_is_at: "la batería está en" + ulm_custom_card_eraycetinay_lock_locked: "bloqueado" + ulm_custom_card_eraycetinay_lock_unlocked: "desbloqueado" + ulm_custom_card_eraycetinay_lock_locking: "bloqueando" + ulm_custom_card_eraycetinay_lock_unlocking: "desbloqueando" + ulm_custom_card_eraycetinay_lock_unavailable: "no disponible" + ulm_custom_card_eraycetinay_lock_jammed: "apretada" + ulm_custom_card_eraycetinay_lock_locked_and_opened: "La puerta está cerrada pero aún abierta." + ulm_custom_card_eraycetinay_lock_battery_is_at: "la batería está en" + ulm_custom_card_eraycetinay_lock_battery_is_low: "La batería está baja" diff --git a/custom_cards/custom_card_eraycetinay_lock/languages/pl.yaml b/custom_cards/custom_card_eraycetinay_lock/languages/pl.yaml index b00d13270..edfaba02f 100644 --- a/custom_cards/custom_card_eraycetinay_lock/languages/pl.yaml +++ b/custom_cards/custom_card_eraycetinay_lock/languages/pl.yaml @@ -1,11 +1,12 @@ --- custom_card_eraycetinay_lock_language_variables: variables: - custom_card_eraycetinay_lock_locked: "zamknięty" - custom_card_eraycetinay_lock_unlocked: "otwarty" - custom_card_eraycetinay_lock_locking: "zamykanie" - custom_card_eraycetinay_lock_unlocking: "otwieranie" - custom_card_eraycetinay_lock_unavailable: "niedostępny" - custom_card_eraycetinay_lock_jammed: "zacięty" - custom_card_eraycetinay_lock_locked_and_opened: "Drzwi są zamknięte, ale nadal otwarte." - custom_card_eraycetinay_lock_battery_is_at: "Bateria jest na" + ulm_custom_card_eraycetinay_lock_locked: "zamknięty" + ulm_custom_card_eraycetinay_lock_unlocked: "otwarty" + ulm_custom_card_eraycetinay_lock_locking: "zamykanie" + ulm_custom_card_eraycetinay_lock_unlocking: "otwieranie" + ulm_custom_card_eraycetinay_lock_unavailable: "niedostępny" + ulm_custom_card_eraycetinay_lock_jammed: "zacięty" + ulm_custom_card_eraycetinay_lock_locked_and_opened: "Drzwi są zamknięte, ale nadal otwarte." + ulm_custom_card_eraycetinay_lock_battery_is_at: "Bateria jest na" + ulm_custom_card_eraycetinay_lock_battery_is_low: "Bateria jest słaba" diff --git a/custom_cards/custom_card_eraycetinay_lock/languages/sv.yaml b/custom_cards/custom_card_eraycetinay_lock/languages/sv.yaml index 707eab945..858d90629 100644 --- a/custom_cards/custom_card_eraycetinay_lock/languages/sv.yaml +++ b/custom_cards/custom_card_eraycetinay_lock/languages/sv.yaml @@ -1,11 +1,12 @@ --- custom_card_eraycetinay_lock_language_variables: variables: - custom_card_eraycetinay_lock_locked: "låst" - custom_card_eraycetinay_lock_unlocked: "olåst" - custom_card_eraycetinay_lock_locking: "låser" - custom_card_eraycetinay_lock_unlocking: "låser upp" - custom_card_eraycetinay_lock_unavailable: "otillgängligt" - custom_card_eraycetinay_lock_jammed: "fastnat" - custom_card_eraycetinay_lock_locked_and_opened: "Dörren är låst men fortfarande öppen." - custom_card_eraycetinay_lock_battery_is_at: "Batterinivån är" + ulm_custom_card_eraycetinay_lock_locked: "låst" + ulm_custom_card_eraycetinay_lock_unlocked: "olåst" + ulm_custom_card_eraycetinay_lock_locking: "låser" + ulm_custom_card_eraycetinay_lock_unlocking: "låser upp" + ulm_custom_card_eraycetinay_lock_unavailable: "otillgängligt" + ulm_custom_card_eraycetinay_lock_jammed: "fastnat" + ulm_custom_card_eraycetinay_lock_locked_and_opened: "Dörren är låst men fortfarande öppen." + ulm_custom_card_eraycetinay_lock_battery_is_at: "Batterinivån är" + ulm_custom_card_eraycetinay_lock_battery_is_low: "Batteriet är lågt" diff --git a/custom_cards/custom_card_eraycetinay_lock/languages/tr.yaml b/custom_cards/custom_card_eraycetinay_lock/languages/tr.yaml index e612ab5f2..71087a982 100644 --- a/custom_cards/custom_card_eraycetinay_lock/languages/tr.yaml +++ b/custom_cards/custom_card_eraycetinay_lock/languages/tr.yaml @@ -1,11 +1,12 @@ --- custom_card_eraycetinay_lock_language_variables: variables: - custom_card_eraycetinay_lock_locked: "kilitli" - custom_card_eraycetinay_lock_unlocked: "kilitli değil" - custom_card_eraycetinay_lock_locking: "kilitleniyor" - custom_card_eraycetinay_lock_unlocking: "kilit açılıyor" - custom_card_eraycetinay_lock_unavailable: "müsait değil" - custom_card_eraycetinay_lock_jammed: "sıkışmış" - custom_card_eraycetinay_lock_locked_and_opened: "Kapı kilitli ama hala açık" - custom_card_eraycetinay_lock_battery_is_at: "pil" + ulm_custom_card_eraycetinay_lock_locked: "kilitli" + ulm_custom_card_eraycetinay_lock_unlocked: "kilitli değil" + ulm_custom_card_eraycetinay_lock_locking: "kilitleniyor" + ulm_custom_card_eraycetinay_lock_unlocking: "kilit açılıyor" + ulm_custom_card_eraycetinay_lock_unavailable: "müsait değil" + ulm_custom_card_eraycetinay_lock_jammed: "sıkışmış" + ulm_custom_card_eraycetinay_lock_locked_and_opened: "Kapı kilitli ama hala açık" + ulm_custom_card_eraycetinay_lock_battery_is_at: "pil" + ulm_custom_card_eraycetinay_lock_battery_is_low: "pil zayıf" diff --git a/custom_cards/custom_card_esh_welcome/custom_card_esh_welcome.yaml b/custom_cards/custom_card_esh_welcome/custom_card_esh_welcome.yaml index d2c089bf3..5a9b32266 100644 --- a/custom_cards/custom_card_esh_welcome/custom_card_esh_welcome.yaml +++ b/custom_cards/custom_card_esh_welcome/custom_card_esh_welcome.yaml @@ -405,9 +405,9 @@ card_esh_welcome_topbar: type: "custom:button-card" template: "chips" tap_action: - action: "call-service" - service: "input_boolean.toggle" - service_data: + action: "perform-action" + perform_action: "input_boolean.toggle" + target: entity_id: "[[[ return variables.ulm_card_esh_welcome_collapse ]]]" show_icon: true icon: "mdi:chevron-up" diff --git a/custom_cards/custom_card_haven_washer/custom_card_haven_washer.yaml b/custom_cards/custom_card_haven_washer/custom_card_haven_washer.yaml index 0ebb86562..42561ff34 100644 --- a/custom_cards/custom_card_haven_washer/custom_card_haven_washer.yaml +++ b/custom_cards/custom_card_haven_washer/custom_card_haven_washer.yaml @@ -565,10 +565,11 @@ custom_card_haven_washer: type: "custom:button-card" template: "widget_icon" tap_action: - action: "call-service" - service: "input_datetime.set_datetime" - service_data: + action: "perform-action" + perform_action: "input_datetime.set_datetime" + target: entity_id: "[[[ return variables.ulm_custom_card_washer_delayed_starttime; ]]]" + data: time: > [[[ if (!!variables.ulm_custom_card_washer_delayed_starttime @@ -597,10 +598,11 @@ custom_card_haven_washer: type: "custom:button-card" template: "custom_card_haven_washer_delayed_text" tap_action: - action: "call-service" - service: "input_datetime.set_datetime" - service_data: + action: "perform-action" + perform_action: "input_datetime.set_datetime" + target: entity_id: "[[[ return variables.ulm_custom_card_washer_delayed_starttime; ]]]" + data: time: > [[[ if (!!variables.ulm_custom_card_washer_delayed_starttime @@ -624,10 +626,11 @@ custom_card_haven_washer: } ]]] hold_action: - action: "call-service" - service: "input_datetime.set_datetime" - service_data: + action: "perform-action" + perform_action: "input_datetime.set_datetime" + target: entity_id: "[[[ variables.ulm_custom_card_washer_delayed_starttime ]]]" + data: time: > [[[ if (!!variables.ulm_custom_card_washer_delayed_starttime @@ -656,10 +659,11 @@ custom_card_haven_washer: type: "custom:button-card" template: "widget_icon" tap_action: - action: "call-service" - service: "input_datetime.set_datetime" - service_data: + action: "perform-action" + perform_action: "input_datetime.set_datetime" + target: entity_id: "[[[ return variables.ulm_custom_card_washer_delayed_starttime ]]]" + data: time: > [[[ if (!!variables.ulm_custom_card_washer_delayed_starttime diff --git a/custom_cards/custom_card_heat_pump/custom_card_heat_pump.yaml b/custom_cards/custom_card_heat_pump/custom_card_heat_pump.yaml index df0477091..b3097b1ba 100644 --- a/custom_cards/custom_card_heat_pump/custom_card_heat_pump.yaml +++ b/custom_cards/custom_card_heat_pump/custom_card_heat_pump.yaml @@ -99,10 +99,11 @@ custom_card_heat_pump: template: "widget_icon" icon: "mdi:arrow-down" tap_action: - action: "call-service" - service: "climate.set_temperature" - service_data: + action: "perform-action" + perform_action: "climate.set_temperature" + target: entity_id: "[[[ return entity.entity_id ]]]" + data: temperature: "[[[ return entity.attributes.temperature - entity.attributes.target_temp_step ]]]" item2: card: @@ -120,10 +121,11 @@ custom_card_heat_pump: template: "widget_icon" icon: "mdi:arrow-up" tap_action: - action: "call-service" - service: "climate.set_temperature" - service_data: + action: "perform-action" + perform_action: "climate.set_temperature" + target: entity_id: "[[[ return entity.entity_id ]]]" + data: temperature: "[[[ return entity.attributes.temperature + entity.attributes.target_temp_step ]]]" item3: card: @@ -133,19 +135,21 @@ custom_card_heat_pump: template: "widget_icon_juve" icon: "mdi:power" tap_action: - action: "call-service" - service: "climate.set_hvac_mode" - service_data: + action: "perform-action" + perform_action: "climate.set_hvac_mode" + target: entity_id: "[[[ return entity.entity_id ]]]" + data: hvac_mode: "off" - type: "custom:button-card" template: "widget_icon_juve" icon: "mdi:fire" tap_action: - action: "call-service" - service: "climate.set_hvac_mode" - service_data: + action: "perform-action" + perform_action: "climate.set_hvac_mode" + target: entity_id: "[[[ return entity.entity_id ]]]" + data: hvac_mode: "heat" styles: icon: @@ -170,10 +174,11 @@ custom_card_heat_pump: template: "widget_icon_juve" icon: "mdi:snowflake" tap_action: - action: "call-service" - service: "climate.set_hvac_mode" - service_data: + action: "perform-action" + perform_action: "climate.set_hvac_mode" + target: entity_id: "[[[ return entity.entity_id ]]]" + data: hvac_mode: "cool" styles: icon: @@ -198,10 +203,11 @@ custom_card_heat_pump: template: "widget_icon_juve" icon: "mdi:sync" tap_action: - action: "call-service" - service: "climate.set_hvac_mode" - service_data: + action: "perform-action" + perform_action: "climate.set_hvac_mode" + target: entity_id: "[[[ return entity.entity_id ]]]" + data: hvac_mode: "heat_cool" styles: icon: @@ -226,10 +232,11 @@ custom_card_heat_pump: template: "widget_icon_juve" icon: "mdi:water" tap_action: - action: "call-service" - service: "climate.set_hvac_mode" - service_data: + action: "perform-action" + perform_action: "climate.set_hvac_mode" + target: entity_id: "[[[ return entity.entity_id ]]]" + data: hvac_mode: "dry" styles: icon: @@ -254,10 +261,11 @@ custom_card_heat_pump: template: "widget_icon_juve" icon: "mdi:fan" tap_action: - action: "call-service" - service: "climate.set_hvac_mode" - service_data: + action: "perform-action" + perform_action: "climate.set_hvac_mode" + target: entity_id: "[[[ return entity.entity_id ]]]" + data: hvac_mode: "fan_only" styles: icon: diff --git a/custom_cards/custom_card_httpedo13_sun/README.md b/custom_cards/custom_card_httpedo13_sun/README.md index cbf240478..36ae30916 100644 --- a/custom_cards/custom_card_httpedo13_sun/README.md +++ b/custom_cards/custom_card_httpedo13_sun/README.md @@ -3,6 +3,7 @@ title: Sun Card Custom-card hide: - toc --- + # Custom-card "Sun" @@ -24,6 +25,7 @@ Initial release ## Requirements This card uses: + @@ -49,10 +51,10 @@ This card uses: ## Usage ```yaml - - type: custom:button-card - template: custom_card_httpedo13_sun - variables: - language: 'it' +- type: custom:button-card + template: custom_card_httpedo13_sun + variables: + language: "it" ``` ## Variables @@ -60,12 +62,12 @@ This card uses: The same sun card config. | Name | Accepted values | Description | Default | -|---------------|----------------------|--------------------------------------|-----------------------------------------------------| +| ------------- | -------------------- | ------------------------------------ | --------------------------------------------------- | | darkMode | `boolean` | Changes card colors to dark or light | Home assistant dark mode state | | language | `string`1 | Changes card language | Home assistant language or english if not supported | | showAzimuth | `boolean` | Displays azimuth in the footer | `false` | | showElevation | `boolean` | Displays elevation in the footer | `false` | | timeFormat | `'12h'`/`'24h'` | Displayed time format | Locale based on Home assistant language | -| title | `string` | Card title | Doesn't display a title by default | | +| title | `string` | Card title | Doesn't display a title by default | (1) Supported languages: `da`, `de`, `en`, `es`, `et`, `fi`, `fr`, `hu`, `it`, `nl`, `pl`, `pt-BR`, `ru`, `sl`, `sv` diff --git a/custom_cards/custom_card_httpedo13_thermostat/custom_card_httpedo13_thermostat.yaml b/custom_cards/custom_card_httpedo13_thermostat/custom_card_httpedo13_thermostat.yaml index f1c44182c..254bf35c3 100644 --- a/custom_cards/custom_card_httpedo13_thermostat/custom_card_httpedo13_thermostat.yaml +++ b/custom_cards/custom_card_httpedo13_thermostat/custom_card_httpedo13_thermostat.yaml @@ -75,10 +75,11 @@ custom_card_httpedo13_thermostat_with_buttons: return 'var(--card-background-color)'; ]]] tap_action: - action: "call-service" - service: "climate.set_hvac_mode" - service_data: + action: "perform-action" + perform_action: "climate.set_hvac_mode" + target: entity_id: "[[[ return variables.entity ]]]" + data: hvac_mode: | [[[ if (states[variables.entity].state == "off"){ @@ -109,10 +110,11 @@ custom_card_httpedo13_thermostat_with_buttons: - "icon_info" - "custom_card_httpedo13_thermostat" tap_action: - action: "call-service" - service: "climate.set_hvac_mode" - service_data: + action: "perform-action" + perform_action: "climate.set_hvac_mode" + target: entity_id: "[[[ return variables.entity ]]]" + data: hvac_mode: | [[[ if (states[variables.entity].state == "off"){ @@ -157,11 +159,12 @@ custom_card_httpedo13_thermostat_with_buttons: template: "widget_icon_for_thermostat" entity: "[[[ return variables.entity ]]]" tap_action: - action: "call-service" - service: "climate.set_temperature" - service_data: - temperature: "[[[ return (parseFloat(states[variables.entity].attributes.temperature) - 0.5) ]]]" + action: "perform-action" + perform_action: "climate.set_temperature" + target: entity_id: "[[[ return variables.entity ]]]" + data: + temperature: "[[[ return (parseFloat(states[variables.entity].attributes.temperature) - 0.5) ]]]" icon: "mdi:minus" item2: card: @@ -177,11 +180,12 @@ custom_card_httpedo13_thermostat_with_buttons: template: "widget_icon_for_thermostat" entity: "[[[ return variables.entity ]]]" tap_action: - action: "call-service" - service: "climate.set_temperature" - service_data: - temperature: "[[[ return (parseFloat(states[variables.entity].attributes.temperature) + 0.5) ]]]" + action: "perform-action" + perform_action: "climate.set_temperature" + target: entity_id: "[[[ return variables.entity ]]]" + data: + temperature: "[[[ return (parseFloat(states[variables.entity].attributes.temperature) + 0.5) ]]]" icon: "mdi:plus" custom_card_httpedo13_thermostat_with_buttons_collapse: @@ -204,10 +208,11 @@ custom_card_httpedo13_thermostat_with_buttons_collapse: return 'var(--card-background-color)'; ]]] tap_action: - action: "call-service" - service: "climate.set_hvac_mode" - service_data: + action: "perform-action" + perform_action: "climate.set_hvac_mode" + target: entity_id: "[[[ return variables.entity ]]]" + data: hvac_mode: | [[[ if (states[variables.entity].state == "off"){ @@ -238,10 +243,11 @@ custom_card_httpedo13_thermostat_with_buttons_collapse: - "icon_info" - "custom_card_httpedo13_thermostat" tap_action: - action: "call-service" - service: "climate.set_hvac_mode" - service_data: + action: "perform-action" + perform_action: "climate.set_hvac_mode" + target: entity_id: "[[[ return variables.entity ]]]" + data: hvac_mode: | [[[ if (states[variables.entity].state == "off"){ @@ -291,11 +297,12 @@ custom_card_httpedo13_thermostat_with_buttons_collapse: template: "widget_icon_for_thermostat" entity: "[[[ return variables.entity ]]]" tap_action: - action: "call-service" - service: "climate.set_temperature" - service_data: - temperature: "[[[ return (parseFloat(states[variables.entity].attributes.temperature) - 0.5) ]]]" + action: "perform-action" + perform_action: "climate.set_temperature" + target: entity_id: "[[[ return variables.entity ]]]" + data: + temperature: "[[[ return (parseFloat(states[variables.entity].attributes.temperature) - 0.5) ]]]" icon: "mdi:minus" item2: card: @@ -311,11 +318,12 @@ custom_card_httpedo13_thermostat_with_buttons_collapse: template: "widget_icon_for_thermostat" entity: "[[[ return variables.entity ]]]" tap_action: - action: "call-service" - service: "climate.set_temperature" - service_data: - temperature: "[[[ return (parseFloat(states[variables.entity].attributes.temperature) + 0.5) ]]]" + action: "perform-action" + perform_action: "climate.set_temperature" + target: entity_id: "[[[ return variables.entity ]]]" + data: + temperature: "[[[ return (parseFloat(states[variables.entity].attributes.temperature) + 0.5) ]]]" icon: "mdi:plus" widget_current_temperature: diff --git a/custom_cards/custom_card_iAbadia_battery_chip/README.md b/custom_cards/custom_card_iAbadia_battery_chip/README.md new file mode 100644 index 000000000..ece9f3ec9 --- /dev/null +++ b/custom_cards/custom_card_iAbadia_battery_chip/README.md @@ -0,0 +1,58 @@ +--- +title: iAbadia's Battery Chip Custom Card +hide: + - toc +--- + + + +# Custom-card "Battery Chip" + +This is a `custom-card` or `custom-chip` to see your device's battery level at a glance. + +![Screenshot](../../docs/assets/img/custom_card_iAbadia_battery_chip.png) + +## Credits + +Author: Iñaki Abadia - 2024 +Version: 1.0.0 + +## Changelog + +
+1.0.0 +Initial release +
+ +## Requirements + +None + +## Usage + +```yaml +type: "custom:button-card" +template: custom_card_iAbadia_battery_chip +variables: + ulm_custom_card_iAbadia_battery_chip_entity: sensor.living_room_sensor_battery + ulm_custom_card_iAbadia_battery_chip_icon: mdi:thermostat + ulm_custom_card_iAbadia_battery_chip_warning: 30 + ulm_custom_card_iAbadia_battery_chip_danger: 10 +``` + +## Variables + +| Variable | Example | Required | Explanation | +| ---------------------------------------------- | -------------------- | -------- | ----------------------------------------------------- | +| ulm_custom_card_iAbadia_battery_chip_entity | `sensor.temperature` | ✓ | Battery entity | +| ulm_custom_card_iAbadia_battery_chip_icon | `mdi:thermometer` | ✘ | Icon to be displayed. Will default to mdi:battery | +| ulm_custom_card_iAbadia_battery_chip_warning | `20` | ✘ | Battery level below which to color as warning (yellow) | +| ulm_custom_card_iAbadia_battery_chip_danger | `10` | ✘ | Battery level below which to color as danger (red) | + +## Template Code + +??? note "Template Code" + + ```yaml title="custom_card_irmajavi_speedtest.yaml" + --8<-- "custom_cards/custom_card_iAbadia_battery_chip/custom_card_iAbadia_battery_chip.yaml" + ``` diff --git a/custom_cards/custom_card_iAbadia_battery_chip/custom_card_iAbadia_battery_chip.yaml b/custom_cards/custom_card_iAbadia_battery_chip/custom_card_iAbadia_battery_chip.yaml new file mode 100644 index 000000000..2f9dca3f7 --- /dev/null +++ b/custom_cards/custom_card_iAbadia_battery_chip/custom_card_iAbadia_battery_chip.yaml @@ -0,0 +1,38 @@ +--- +custom_card_iAbadia_battery_chip: + template: + - "chips" + variables: + ulm_custom_card_iAbadia_battery_chip_entity: "" + ulm_custom_card_iAbadia_battery_chip_icon: "" + ulm_custom_card_iAbadia_battery_chip_danger: "10" + ulm_custom_card_iAbadia_battery_chip_warning: "20" + show_icon: true + triggers_update: "all" + icon: > + [[[ + if (variables.ulm_custom_card_iAbadia_battery_chip_icon){ + return variables.ulm_custom_card_iAbadia_battery_chip_icon; + } else { + return "mdi:battery" + } + ]]] + entity: "[[[ return variables.ulm_custom_card_iAbadia_battery_chip_entity; ]]]" + tap_action: + action: "more-info" + entity: "[[[ return variables.ulm_custom_card_iAbadia_battery_chip_entity; ]]]" + styles: + icon: + - color: > + [[[ + let battery_level = Math.round((states[variables.ulm_custom_card_iAbadia_battery_chip_entity].state)/1); + if (battery_level > variables.ulm_custom_card_iAbadia_battery_chip_warning) { + return "var(--google-green)" + } else if (battery_level <= variables.ulm_custom_card_iAbadia_battery_chip_warning && battery_level > variables.ulm_custom_card_iAbadia_battery_chip_danger) { + return "var(--google-yellow)" + } else { + return "var(--google-red)" + } + ]]] + grid: + - grid-template-areas: "'i'" diff --git a/custom_cards/custom_card_imswel_medias/README.md b/custom_cards/custom_card_imswel_medias/README.md index 6e137338b..28b49f162 100644 --- a/custom_cards/custom_card_imswel_medias/README.md +++ b/custom_cards/custom_card_imswel_medias/README.md @@ -29,6 +29,7 @@ Initial release ## Requirements This card needs the following to function correctly: + | Component | Required | | ----------------------------------------------------------------------------------------- | ---------------------------------- | |[Plex Recently Added](https://github.com/NemesisRE/sensor.plex_recently_added) | Yes for **`Media Library Card`** | @@ -40,6 +41,7 @@ This card needs the following to function correctly: **Media Library Card** for [Plex Recently Added](https://github.com/NemesisRE/sensor.plex_recently_added) : ![example-image-plex](../../docs/assets/img/custom_card_imswel_medias/medias_library_plex.png)
+ | Variable | Default | Required | Notes | | ----------------------------- | ------- | -------- | ----------------------------------------------------------------------- | | ulm_custom_card_imswel_medias_index | 1 | Yes | The index of the item in your **Plex library** to show. | @@ -58,6 +60,7 @@ This card needs the following to function correctly: ![example-image-radarr](../../docs/assets/img/custom_card_imswel_medias/medias_upcoming_radarr.png) ![example-image-sonarr](../../docs/assets/img/custom_card_imswel_medias/medias_upcoming_sonarr.png)
+ | Variable | Default | Required | Notes | | ----------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------- | | ulm_custom_card_imswel_medias_index | 1 | Yes | The index of the item in your **Radarr/Sonarr library** to show. | diff --git a/custom_cards/custom_card_input_datetime/card_input_datetime.yaml b/custom_cards/custom_card_input_datetime/card_input_datetime.yaml index 87d917e2b..9657ff71a 100644 --- a/custom_cards/custom_card_input_datetime/card_input_datetime.yaml +++ b/custom_cards/custom_card_input_datetime/card_input_datetime.yaml @@ -37,10 +37,11 @@ card_input_datetime: type: "custom:button-card" template: "widget_icon" tap_action: - action: "call-service" - service: "input_datetime.set_datetime" - service_data: + action: "perform-action" + perform_action: "input_datetime.set_datetime" + target: entity_id: "[[[ return entity.entity_id ]]]" + data: time: > [[[ var timestamp = entity.attributes.timestamp @@ -68,10 +69,11 @@ card_input_datetime: template: "widget_text" entity: "[[[ return entity.entity_id ]]]" tap_action: - action: "call-service" - service: "input_datetime.set_datetime" - service_data: + action: "perform-action" + perform_action: "input_datetime.set_datetime" + target: entity_id: "[[[ return entity.entity_id ]]]" + data: time: > [[[ var timestamp = entity.attributes.timestamp @@ -93,10 +95,11 @@ card_input_datetime: return formattedTime; ]]] hold_action: - action: "call-service" - service: "input_datetime.set_datetime" - service_data: + action: "perform-action" + perform_action: "input_datetime.set_datetime" + target: entity_id: "[[[ return entity.entity_id ]]]" + data: time: > [[[ var timestamp = entity.attributes.timestamp @@ -123,10 +126,11 @@ card_input_datetime: type: "custom:button-card" template: "widget_icon" tap_action: - action: "call-service" - service: "input_datetime.set_datetime" - service_data: + action: "perform-action" + perform_action: "input_datetime.set_datetime" + target: entity_id: "[[[ return entity.entity_id ]]]" + data: time: > [[[ var timestamp = entity.attributes.timestamp diff --git a/custom_cards/custom_card_input_number/card_input_number.yaml b/custom_cards/custom_card_input_number/card_input_number.yaml index 712be4c5a..2a33e0a7c 100644 --- a/custom_cards/custom_card_input_number/card_input_number.yaml +++ b/custom_cards/custom_card_input_number/card_input_number.yaml @@ -38,16 +38,18 @@ card_input_number: type: "custom:button-card" template: "widget_icon" tap_action: - action: "call-service" - service: | + action: "perform-action" + perform_action: | [[[ if( entity.entity_id.startsWith("input_number.") ) return "input_number.decrement"; - if( entity.entity_id.startsWith("counter.") ) + else if( entity.entity_id.startsWith("counter.") ) return "counter.decrement"; + else if( entity.entity_id.startsWith("select.") ) + return "select.select_previous"; return ""; ]]] - service_data: + target: entity_id: "[[[ return entity.entity_id ]]]" icon: "mdi:arrow-down" item2: @@ -56,25 +58,27 @@ card_input_number: template: "widget_text" entity: "[[[ return entity.entity_id ]]]" tap_action: - action: "call-service" - service: "cover.stop_cover" - service_data: + action: "perform-action" + perform_action: "cover.stop_cover" + target: entity_id: "[[[ return entity.entity_id ]]]" item3: card: type: "custom:button-card" template: "widget_icon" tap_action: - action: "call-service" - service: | + action: "perform-action" + perform_action: | [[[ if( entity.entity_id.startsWith("input_number.") ) return "input_number.increment"; - if( entity.entity_id.startsWith("counter.") ) + else if( entity.entity_id.startsWith("counter.") ) return "counter.increment"; + else if( entity.entity_id.startsWith("select.") ) + return "select.select_next"; return ""; ]]] - service_data: + target: entity_id: "[[[ return entity.entity_id ]]]" icon: "mdi:arrow-up" diff --git a/custom_cards/custom_card_irmajavi_speedtest/custom_card_irmajavi_speedtest.yaml b/custom_cards/custom_card_irmajavi_speedtest/custom_card_irmajavi_speedtest.yaml index d4a204be1..0c126cd39 100644 --- a/custom_cards/custom_card_irmajavi_speedtest/custom_card_irmajavi_speedtest.yaml +++ b/custom_cards/custom_card_irmajavi_speedtest/custom_card_irmajavi_speedtest.yaml @@ -30,11 +30,9 @@ custom_card_irmajavi_speedtest: show_name: true show_icon: true label: >- - [[[ return variables.ulm_custom_card_irmajavi_speedtest_router_model - ]]] + [[[ return variables.ulm_custom_card_irmajavi_speedtest_router_model ]]] name: >- - [[[ return variables.ulm_custom_card_irmajavi_speedtest_router_name - ]]] + [[[ return variables.ulm_custom_card_irmajavi_speedtest_router_name ]]] icon: "mdi:wifi" styles: icon: @@ -72,9 +70,9 @@ custom_card_irmajavi_speedtest: card: type: "custom:button-card" tap_action: - action: "call-service" - service: "homeassistant.update_entity" - service_data: + action: "perform-action" + perform_action: "homeassistant.update_entity" + target: entity_id: - "[[[ return variables.ulm_custom_card_irmajavi_speedtest_download_speed_entity]]]" - "[[[ return variables.ulm_custom_card_irmajavi_speedtest_upload_speed_entity]]]" @@ -146,15 +144,13 @@ custom_card_irmajavi_speedtest: item1: card: type: "custom:button-card" - tap_action: - action: "more-info" color: "var(--google-blue)" show_label: true show_icon: false name: "[[[ return variables.ulm_custom_card_irmajavi_speedtest_download ]]]" entity: >- [[[ return - variables.ulm_custom_card_irmajavi_speedtest_download_speed_entity; + variables.ulm_custom_card_irmajavi_speedtest_download_speed_entity; ]]] label: | [[[ @@ -209,10 +205,10 @@ custom_card_irmajavi_speedtest: [[[ var state1 = ""; if (states[variables.ulm_custom_card_irmajavi_speedtest_upload_speed_entity].state){ - var state1 = states[variables.ulm_custom_card_irmajavi_speedtest_upload_speed_entity].state; - if (states[variables.ulm_custom_card_irmajavi_speedtest_upload_speed_entity].attributes.unit_of_measurement){ - state1 += states[variables.ulm_custom_card_irmajavi_speedtest_upload_speed_entity].attributes.unit_of_measurement; - } + var state1 = states[variables.ulm_custom_card_irmajavi_speedtest_upload_speed_entity].state; + if (states[variables.ulm_custom_card_irmajavi_speedtest_upload_speed_entity].attributes.unit_of_measurement){ + state1 += states[variables.ulm_custom_card_irmajavi_speedtest_upload_speed_entity].attributes.unit_of_measurement; + } } return state1; ]]] diff --git a/custom_cards/custom_card_media_player_sonos/custom_card_media_player_sonos.yaml b/custom_cards/custom_card_media_player_sonos/custom_card_media_player_sonos.yaml index 9bfc4c1cc..3213ca9f0 100644 --- a/custom_cards/custom_card_media_player_sonos/custom_card_media_player_sonos.yaml +++ b/custom_cards/custom_card_media_player_sonos/custom_card_media_player_sonos.yaml @@ -58,9 +58,9 @@ card_media_player_sonos_with_controls: type: "custom:button-card" template: "widget_icon" tap_action: - action: "call-service" - service: "media_player.volume_down" - service_data: + action: "perform-action" + perform_action: "media_player.volume_down" + target: entity_id: "[[[ return variables.ulm_card_media_player_with_controls_entity ]]]" icon: "mdi:volume-minus" item2: @@ -69,9 +69,9 @@ card_media_player_sonos_with_controls: template: "widget_icon" entity: "[[[ return variables.ulm_card_media_player_with_controls_entity ]]]" tap_action: - action: "call-service" - service: "media_player.media_play_pause" - service_data: + action: "perform-action" + perform_action: "media_player.media_play_pause" + target: entity_id: "[[[ return variables.ulm_card_media_player_with_controls_entity ]]]" icon: "mdi:pause" state: @@ -84,9 +84,9 @@ card_media_player_sonos_with_controls: type: "custom:button-card" template: "widget_icon" tap_action: - action: "call-service" - service: "media_player.volume_up" - service_data: + action: "perform-action" + perform_action: "media_player.volume_up" + target: entity_id: "[[[ return variables.ulm_card_media_player_with_controls_entity ]]]" icon: "mdi:volume-plus" diff --git a/custom_cards/custom_card_mpse_printer/custom_card_mpse_printer.yaml b/custom_cards/custom_card_mpse_printer/custom_card_mpse_printer.yaml index 3cf1542f1..56fad13d0 100644 --- a/custom_cards/custom_card_mpse_printer/custom_card_mpse_printer.yaml +++ b/custom_cards/custom_card_mpse_printer/custom_card_mpse_printer.yaml @@ -41,36 +41,37 @@ custom_card_mpse_printer: color: "black" entities: - entity: "[[[ return variables.ulm_card_printer_black_name ]]]" - style: | - bar-card-currentbar{ - border: 0.01rem solid rgba(var(--color-theme),.4); - } - bar-card-backgroundbar{ - display: none; - } - bar-card-name{ - width: 2rem; - margin-right: 40px !important; - } - bar-card-value{ - width: 2rem; - margin-left: 40px !important; - justify-content: center; - display: flex; - color: grey; - } - bar-card-background{ - margin: 4px 0 4px 0 !important; - text-align: initial; - } - ha-card{ - --bar-card-border-radius: 5px; - border-radius: 0px; - box-shadow: none; - } - #states{ - padding: 0 16px; - } + card_mod: + style: | + bar-card-currentbar{ + border: 0.01rem solid rgba(var(--color-theme),.4); + } + bar-card-backgroundbar{ + display: none; + } + bar-card-name{ + width: 2rem; + margin-right: 40px !important; + } + bar-card-value{ + width: 2rem; + margin-left: 40px !important; + justify-content: center; + display: flex; + color: grey; + } + bar-card-background{ + margin: 4px 0 4px 0 !important; + text-align: initial; + } + ha-card{ + --bar-card-border-radius: 5px; + border-radius: 0px; + box-shadow: none; + } + #states{ + padding: 0 16px; + } item3: card: type: "custom:bar-card" @@ -84,36 +85,37 @@ custom_card_mpse_printer: color: "rgb(250,255,0)" entities: - entity: "[[[ return variables.ulm_card_printer_yellow_name ]]]" - style: | - bar-card-currentbar{ - border: 0.01rem solid rgba(var(--color-theme),.4); - } - bar-card-backgroundbar{ - display: none; - } - bar-card-name{ - width: 2rem; - margin-right: 40px !important; - } - bar-card-value{ - width: 2rem; - margin-left: 40px !important; - justify-content: center; - display: flex; - color: grey; - } - bar-card-background{ - margin: 4px 0 4px 0 !important; - text-align: initial; - } - ha-card{ - --bar-card-border-radius: 5px; - border-radius: 0px; - box-shadow: none; - } - #states{ - padding: 0 16px; - } + card_mod: + style: | + bar-card-currentbar{ + border: 0.01rem solid rgba(var(--color-theme),.4); + } + bar-card-backgroundbar{ + display: none; + } + bar-card-name{ + width: 2rem; + margin-right: 40px !important; + } + bar-card-value{ + width: 2rem; + margin-left: 40px !important; + justify-content: center; + display: flex; + color: grey; + } + bar-card-background{ + margin: 4px 0 4px 0 !important; + text-align: initial; + } + ha-card{ + --bar-card-border-radius: 5px; + border-radius: 0px; + box-shadow: none; + } + #states{ + padding: 0 16px; + } item4: card: type: "custom:bar-card" @@ -127,36 +129,37 @@ custom_card_mpse_printer: color: "rgb(248,0,255)" entities: - entity: "[[[ return variables.ulm_card_printer_magenta_name ]]]" - style: | - bar-card-currentbar{ - border: 0.01rem solid rgba(var(--color-theme),.4); - } - bar-card-backgroundbar{ - display: none; - } - bar-card-name{ - width: 2rem; - margin-right: 40px !important; - } - bar-card-value{ - width: 2rem; - margin-left: 40px !important; - justify-content: center; - display: flex; - color: grey; - } - bar-card-background{ - margin: 4px 0 4px 0 !important; - text-align: initial; - } - ha-card{ - --bar-card-border-radius: 5px; - border-radius: 0px; - box-shadow: none; - } - #states{ - padding: 0 16px; - } + card_mod: + style: | + bar-card-currentbar{ + border: 0.01rem solid rgba(var(--color-theme),.4); + } + bar-card-backgroundbar{ + display: none; + } + bar-card-name{ + width: 2rem; + margin-right: 40px !important; + } + bar-card-value{ + width: 2rem; + margin-left: 40px !important; + justify-content: center; + display: flex; + color: grey; + } + bar-card-background{ + margin: 4px 0 4px 0 !important; + text-align: initial; + } + ha-card{ + --bar-card-border-radius: 5px; + border-radius: 0px; + box-shadow: none; + } + #states{ + padding: 0 16px; + } item5: card: type: "custom:bar-card" @@ -170,36 +173,37 @@ custom_card_mpse_printer: color: "rgb(0,255,255)" entities: - entity: "[[[ return variables.ulm_card_printer_cyan_name ]]]" - style: | - bar-card-currentbar{ - border: 0.01rem solid rgba(var(--color-theme),.4); - } - bar-card-backgroundbar{ - display: none; - } - bar-card-name{ - width: 2rem; - margin-right: 40px !important; - } - bar-card-value{ - width: 2rem; - margin-left: 40px !important; - justify-content: center; - display: flex; - color: grey; - } - bar-card-background{ - margin: 4px 0 4px 0 !important; - text-align: initial; - } - ha-card{ - --bar-card-border-radius: 5px; - border-radius: 0px; - box-shadow: none; - } - #states{ - padding: 0 16px 16px 16px; - } + card_mod: + style: | + bar-card-currentbar{ + border: 0.01rem solid rgba(var(--color-theme),.4); + } + bar-card-backgroundbar{ + display: none; + } + bar-card-name{ + width: 2rem; + margin-right: 40px !important; + } + bar-card-value{ + width: 2rem; + margin-left: 40px !important; + justify-content: center; + display: flex; + color: grey; + } + bar-card-background{ + margin: 4px 0 4px 0 !important; + text-align: initial; + } + ha-card{ + --bar-card-border-radius: 5px; + border-radius: 0px; + box-shadow: none; + } + #states{ + padding: 0 16px 16px 16px; + } custom_card_mpse_printer_blue: state: - styles: diff --git a/custom_cards/custom_card_mpse_thermostat/custom_card_mpse_thermostat.yaml b/custom_cards/custom_card_mpse_thermostat/custom_card_mpse_thermostat.yaml index c8870299a..ab63cb2fd 100644 --- a/custom_cards/custom_card_mpse_thermostat/custom_card_mpse_thermostat.yaml +++ b/custom_cards/custom_card_mpse_thermostat/custom_card_mpse_thermostat.yaml @@ -85,10 +85,11 @@ custom_card_mpse_thermostat: template: "widget_icon" icon: "mdi:arrow-down" tap_action: - action: "call-service" - service: "climate.set_temperature" - service_data: + action: "perform-action" + perform_action: "climate.set_temperature" + target: entity_id: "[[[ return entity.entity_id ]]]" + data: temperature: "[[[ return entity.attributes.temperature - entity.attributes.target_temp_step ]]]" item2: card: @@ -106,8 +107,9 @@ custom_card_mpse_thermostat: template: "widget_icon" icon: "mdi:arrow-up" tap_action: - action: "call-service" - service: "climate.set_temperature" - service_data: + action: "perform-action" + perform_action: "climate.set_temperature" + target: entity_id: "[[[ return entity.entity_id ]]]" + data: temperature: "[[[ return entity.attributes.temperature + entity.attributes.target_temp_step ]]]" diff --git a/custom_cards/custom_card_neekster_update/custom_card_neekster_update.yaml b/custom_cards/custom_card_neekster_update/custom_card_neekster_update.yaml index 792e5101b..749e83ff9 100644 --- a/custom_cards/custom_card_neekster_update/custom_card_neekster_update.yaml +++ b/custom_cards/custom_card_neekster_update/custom_card_neekster_update.yaml @@ -131,9 +131,9 @@ card_neekster_update: hold_action: action: "more-info" tap_action: - action: "call-service" - service: "update.install" - service_data: + action: "perform-action" + perform_action: "update.install" + target: entity_id: "[[[ return entity.entity_id ]]]" icon: "mdi:package-down" item2: @@ -142,13 +142,13 @@ card_neekster_update: template: "widget_icon" entity: "[[[ return entity.entity_id ]]]" hold_action: - action: "call-service" - service: "update.clear_skipped" - service_data: + action: "cperform-action" + perform_action: "update.clear_skipped" + target: entity_id: "[[[ return entity.entity_id ]]]" tap_action: - action: "call-service" - service: "update.skip" - service_data: + action: "perform-action" + perform_action: "update.skip" + target: entity_id: "[[[ return entity.entity_id ]]]" icon: "mdi:cancel" diff --git a/custom_cards/custom_card_nik_clock/README.md b/custom_cards/custom_card_nik_clock/README.md index 5f3712a59..44b48dd34 100644 --- a/custom_cards/custom_card_nik_clock/README.md +++ b/custom_cards/custom_card_nik_clock/README.md @@ -3,11 +3,12 @@ title: Tablet Clock Card hide: - toc --- + # Custom-card "Tablet clock Card" -This is a `custom-card` that shows the currenct time and Date. This is designed for a tablet or big monitor. +This is a `custom-card` that shows the current time and Date. This is designed for a tablet or big monitor. ![Screenshot](../../docs/assets/img/custom_card_nik_clock.png) diff --git a/custom_cards/custom_card_nik_clock/custom_card_nik_clock.yaml b/custom_cards/custom_card_nik_clock/custom_card_nik_clock.yaml index bb7860f0f..e85f8476f 100644 --- a/custom_cards/custom_card_nik_clock/custom_card_nik_clock.yaml +++ b/custom_cards/custom_card_nik_clock/custom_card_nik_clock.yaml @@ -32,14 +32,14 @@ custom_card_nik_clock: action: > [[[ if (variables.ulm_custom_card_nik_clock_switch_enable){ - return 'call-service' + return 'perform-action' } else{ return 'none' } ]]] - service: "input_boolean.toggle" - service_data: + perform_action: "input_boolean.toggle" + target: entity_id: "[[[ return variables.ulm_custom_card_nik_clock_switch ]]]" styles: card: diff --git a/custom_cards/custom_card_nik_door/README.md b/custom_cards/custom_card_nik_door/README.md index 8e8220318..8237abebf 100644 --- a/custom_cards/custom_card_nik_door/README.md +++ b/custom_cards/custom_card_nik_door/README.md @@ -8,7 +8,7 @@ hide: # Custom-card "Minimal Door Lock" -This is a `custom-card` that shows the currenct state of your Lock and allows you to open and close it showing the state with a Minimal Design. +This is a `custom-card` that shows the current state of your Lock and allows you to open and close it showing the state with a Minimal Design. ![Screenshot](../../docs/assets/img/custom_card_nik_door.png) @@ -36,7 +36,6 @@ To have the Minimalist cards and custom cards installed ## Usage ```yaml - - type: "custom:button-card" template: "custom_card_nik_door" entity: "sensor.nuki_blindato_door_security_state" diff --git a/custom_cards/custom_card_nik_door/custom_card_nik_door.yaml b/custom_cards/custom_card_nik_door/custom_card_nik_door.yaml index 58a53a644..b533f2dc1 100644 --- a/custom_cards/custom_card_nik_door/custom_card_nik_door.yaml +++ b/custom_cards/custom_card_nik_door/custom_card_nik_door.yaml @@ -112,9 +112,9 @@ custom_card_nik_door: icon: "mdi:lock-open-variant" entity: "[[[ return entity.entity_id ]]]" tap_action: - action: "call-service" - service: "lock.open" - service_data: + action: "perform-action" + perform_action: "lock.open" + target: entity_id: "[[[ return variables.ulm_custom_card_entity_1_lock ]]]" state: - value: "Open" @@ -136,9 +136,9 @@ custom_card_nik_door: icon: "mdi:lock" entity: "[[[ return entity.entity_id ]]]" tap_action: - action: "call-service" - service: "lock.lock" - service_data: + action: "perform-action" + perform_action: "lock.lock" + target: entity_id: "[[[ return variables.ulm_custom_card_entity_1_lock ]]]" state: - value: "Closed & Locked" diff --git a/custom_cards/custom_card_nik_tablet/custom_card_nik_tablet.yaml b/custom_cards/custom_card_nik_tablet/custom_card_nik_tablet.yaml index aa8398ca8..07168fbbe 100644 --- a/custom_cards/custom_card_nik_tablet/custom_card_nik_tablet.yaml +++ b/custom_cards/custom_card_nik_tablet/custom_card_nik_tablet.yaml @@ -100,9 +100,9 @@ custom_card_nik_tablet: entity: "[[[ return variables.ulm_custom_card_nik_tablet_restart ]]]" icon: "mdi:restart-alert" tap_action: - action: "call-service" - service: "button.press" - service_data: + action: "perform-action" + perform_action: "button.press" + target: entity_id: "[[[ return variables.ulm_custom_card_nik_tablet_restart ]]]" item2: card: @@ -121,9 +121,9 @@ custom_card_nik_tablet: entity: "[[[ return variables.ulm_custom_card_nik_tablet_reload ]]]" icon: "mdi:reload" tap_action: - action: "call-service" - service: "button.press" - service_data: + action: "perform-action" + perform_action: "button.press" + target: entity_id: "[[[ return variables.ulm_custom_card_nik_tablet_reload ]]]" item4: card: diff --git a/custom_cards/custom_card_paddy_dwd_pollen/custom_card_paddy_dwd_pollen.yaml b/custom_cards/custom_card_paddy_dwd_pollen/custom_card_paddy_dwd_pollen.yaml index 1fee063b8..86cf79ab5 100644 --- a/custom_cards/custom_card_paddy_dwd_pollen/custom_card_paddy_dwd_pollen.yaml +++ b/custom_cards/custom_card_paddy_dwd_pollen/custom_card_paddy_dwd_pollen.yaml @@ -2,7 +2,7 @@ custom_card_paddy_dwd_pollen: template: - "card_generic_swap" - - "custom_card_paddy_dwd_pollen_language_variables" + - "ulm_custom_card_paddy_dwd_pollen_language_variables" variables: ulm_card_generic_swap_name: "[[[ return variables.ulm_custom_card_paddy_dwd_pollen_name; ]]]" ulm_card_generic_swap_icon: "[[[ return variables.ulm_custom_card_paddy_dwd_pollen_icon; ]]]" @@ -17,27 +17,6 @@ custom_card_paddy_dwd_pollen: card: type: "custom:button-card" entity: "[[[ return entity.entity_id ]]]" - item2: - card: - type: "custom:button-card" - entity: "[[[ return entity.entity_id ]]]" - label: > - [[[ - if (entity.state == "6"){ - return variables.custom_card_paddy_dwd_pollen_6; - } else if (entity.state == "5"){ - return variables.custom_card_paddy_dwd_pollen_5; - } else if (entity.state == "4"){ - return variables.custom_card_paddy_dwd_pollen_4; - } else if (entity.state == "3"){ - return variables.custom_card_paddy_dwd_pollen_3; - } else if (entity.state == "2"){ - return variables.custom_card_paddy_dwd_pollen_2; - } else if (entity.state == "1"){ - return variables.custom_card_paddy_dwd_pollen_1; - } - return variables.custom_card_paddy_dwd_pollen_none; - ]]] state: - value: "6" styles: @@ -67,3 +46,24 @@ custom_card_paddy_dwd_pollen: styles: icon: - color: "rgba(var(--color-theme),0.2)" + item2: + card: + type: "custom:button-card" + entity: "[[[ return entity.entity_id ]]]" + label: > + [[[ + if (entity.state == "6"){ + return variables.ulm_custom_card_paddy_dwd_pollen_6; + } else if (entity.state == "5"){ + return variables.ulm_custom_card_paddy_dwd_pollen_5; + } else if (entity.state == "4"){ + return variables.ulm_custom_card_paddy_dwd_pollen_4; + } else if (entity.state == "3"){ + return variables.ulm_custom_card_paddy_dwd_pollen_3; + } else if (entity.state == "2"){ + return variables.ulm_custom_card_paddy_dwd_pollen_2; + } else if (entity.state == "1"){ + return variables.ulm_custom_card_paddy_dwd_pollen_1; + } + return variables.ulm_custom_card_paddy_dwd_pollen_none; + ]]] diff --git a/custom_cards/custom_card_paddy_dwd_pollen/languages/de.yaml b/custom_cards/custom_card_paddy_dwd_pollen/languages/de.yaml index be9723597..06b5d8a1f 100644 --- a/custom_cards/custom_card_paddy_dwd_pollen/languages/de.yaml +++ b/custom_cards/custom_card_paddy_dwd_pollen/languages/de.yaml @@ -1,10 +1,10 @@ --- -custom_card_paddy_dwd_pollen_language_variables: +ulm_custom_card_paddy_dwd_pollen_language_variables: variables: - custom_card_paddy_dwd_pollen_6: "hoch" - custom_card_paddy_dwd_pollen_5: "mittel bis hoch" - custom_card_paddy_dwd_pollen_4: "mittel" - custom_card_paddy_dwd_pollen_3: "gering bis mittel" - custom_card_paddy_dwd_pollen_2: "gering" - custom_card_paddy_dwd_pollen_1: "keine bis gering" - custom_card_paddy_dwd_pollen_none: "keine" + ulm_custom_card_paddy_dwd_pollen_6: "hoch" + ulm_custom_card_paddy_dwd_pollen_5: "mittel bis hoch" + ulm_custom_card_paddy_dwd_pollen_4: "mittel" + ulm_custom_card_paddy_dwd_pollen_3: "gering bis mittel" + ulm_custom_card_paddy_dwd_pollen_2: "gering" + ulm_custom_card_paddy_dwd_pollen_1: "keine bis gering" + ulm_custom_card_paddy_dwd_pollen_none: "keine" diff --git a/custom_cards/custom_card_paddy_dwd_pollen/languages/en.yaml b/custom_cards/custom_card_paddy_dwd_pollen/languages/en.yaml index 2e1ab807f..ae15ef735 100644 --- a/custom_cards/custom_card_paddy_dwd_pollen/languages/en.yaml +++ b/custom_cards/custom_card_paddy_dwd_pollen/languages/en.yaml @@ -1,10 +1,10 @@ --- -custom_card_paddy_dwd_pollen_language_variables: +ulm_custom_card_paddy_dwd_pollen_language_variables: variables: - custom_card_paddy_dwd_pollen_6: "high" - custom_card_paddy_dwd_pollen_5: "medium to high" - custom_card_paddy_dwd_pollen_4: "medium" - custom_card_paddy_dwd_pollen_3: "low to mediuml" - custom_card_paddy_dwd_pollen_2: "low" - custom_card_paddy_dwd_pollen_1: "none to low" - custom_card_paddy_dwd_pollen_none: "none" + ulm_custom_card_paddy_dwd_pollen_6: "high" + ulm_custom_card_paddy_dwd_pollen_5: "medium to high" + ulm_custom_card_paddy_dwd_pollen_4: "medium" + ulm_custom_card_paddy_dwd_pollen_3: "low to mediuml" + ulm_custom_card_paddy_dwd_pollen_2: "low" + ulm_custom_card_paddy_dwd_pollen_1: "none to low" + ulm_custom_card_paddy_dwd_pollen_none: "none" diff --git a/custom_cards/custom_card_paddy_dwd_pollen/languages/es.yaml b/custom_cards/custom_card_paddy_dwd_pollen/languages/es.yaml index 274ee9bd4..789edbaca 100644 --- a/custom_cards/custom_card_paddy_dwd_pollen/languages/es.yaml +++ b/custom_cards/custom_card_paddy_dwd_pollen/languages/es.yaml @@ -1,10 +1,10 @@ --- -custom_card_paddy_dwd_pollen_language_variables: +ulm_custom_card_paddy_dwd_pollen_language_variables: variables: - custom_card_paddy_dwd_pollen_6: "alto" - custom_card_paddy_dwd_pollen_5: "medio a alto" - custom_card_paddy_dwd_pollen_4: "medio" - custom_card_paddy_dwd_pollen_3: "bajo a medio" - custom_card_paddy_dwd_pollen_2: "bajo" - custom_card_paddy_dwd_pollen_1: "ninguno a bajo" - custom_card_paddy_dwd_pollen_none: "ninguno" + ulm_custom_card_paddy_dwd_pollen_6: "alto" + ulm_custom_card_paddy_dwd_pollen_5: "medio a alto" + ulm_custom_card_paddy_dwd_pollen_4: "medio" + ulm_custom_card_paddy_dwd_pollen_3: "bajo a medio" + ulm_custom_card_paddy_dwd_pollen_2: "bajo" + ulm_custom_card_paddy_dwd_pollen_1: "ninguno a bajo" + ulm_custom_card_paddy_dwd_pollen_none: "ninguno" diff --git a/custom_cards/custom_card_paddy_dwd_pollen/languages/pl.yaml b/custom_cards/custom_card_paddy_dwd_pollen/languages/pl.yaml index a3f4092fb..4bf91dd47 100644 --- a/custom_cards/custom_card_paddy_dwd_pollen/languages/pl.yaml +++ b/custom_cards/custom_card_paddy_dwd_pollen/languages/pl.yaml @@ -1,10 +1,10 @@ --- -custom_card_paddy_dwd_pollen_language_variables: +ulm_custom_card_paddy_dwd_pollen_language_variables: variables: - custom_card_paddy_dwd_pollen_6: "bardzo wysokie" - custom_card_paddy_dwd_pollen_5: "wysokie" - custom_card_paddy_dwd_pollen_4: "średnie" - custom_card_paddy_dwd_pollen_3: "umiarkowane" - custom_card_paddy_dwd_pollen_2: "słabe" - custom_card_paddy_dwd_pollen_1: "bardzo słabe" - custom_card_paddy_dwd_pollen_none: "brak" + ulm_custom_card_paddy_dwd_pollen_6: "bardzo wysokie" + ulm_custom_card_paddy_dwd_pollen_5: "wysokie" + ulm_custom_card_paddy_dwd_pollen_4: "średnie" + ulm_custom_card_paddy_dwd_pollen_3: "umiarkowane" + ulm_custom_card_paddy_dwd_pollen_2: "słabe" + ulm_custom_card_paddy_dwd_pollen_1: "bardzo słabe" + ulm_custom_card_paddy_dwd_pollen_none: "brak" diff --git a/custom_cards/custom_card_person_info_small/README.md b/custom_cards/custom_card_person_info_small/README.md new file mode 100644 index 000000000..6a2ae52fc --- /dev/null +++ b/custom_cards/custom_card_person_info_small/README.md @@ -0,0 +1,57 @@ +--- +title: Person Info Card +--- + + + +## Description + +![Person Info](../../docs/assets/img/custom_card_person_info_small_dark.png) +![Person Info](../../docs/assets/img/custom_card_person_info_small_light.png) + +The `custom_card_person_info_small` is based on `card_person_info`. + +## Credits + +- Author: Imaginelenses <@imaginelenses> +- Based on [person info card](https://ui-lovelace-minimalist.github.io/UI/usage/custom_cards/custom_card_person_info/#variables) by Jordan Janzen <@jordandrako> +- Version: 1.0.0 + +## Variables + +| Variable | Default | Required | Notes | +| -------------------------------------------- | -------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| ulm_card_person_entity | | :material-check: | The person entity | +| ulm_card_person_use_entity_picture | true | :material-close: | If you set this to true, the card shows the entity picture from your user, otherwise (set to false) shows the icon. Default is false. | +| ulm_card_person_zone1 | | :material-close: | Set another zone (beside "home") to use for the card. You can set up two zones besides "home". | +| ulm_card_person_zone2 | | :material-close: | Set another zone (beside "home") to use for the card. You can set up two zones besides "home". | +| ulm_address | | :material-close: | Show an address as label, add an entity with a geo location | +| ulm_card_person_driving_entity | | :material-close: | Set a binary sensor that depicts when this person is driving | +| ulm_card_person_battery_entity | | :material-close: | Set a battery level sensor | +| ulm_card_person_battery_state_entity | | :material-close: | Set a battery state sensor (eg the battery state sensor from the home assistant companion app will have the states "charging" or "discharging") | +| ulm_card_battery_battery_level_danger | 15 | :material-close: | Changes the color of the Icon, if the battery level falls below the provided value. Must be higher than ulm_card_battery_battery_level_waring | +| ulm_card_battery_battery_level_waring | 30 | :material-close: | Changes the color of the Icon, if the battery level falls below the provided value. | +| ulm_card_battery_color_battery_level_danger | var(--google-red) | :material-close: | Color of icon if battery level is within the 'danger' zone. | +| ulm_card_battery_color_battery_level_warning | var(--google-yellow) | :material-close: | Color of icon if battery level is within the 'warning' zone. | +| ulm_card_battery_color_battery_level_ok | var(--google-green) | :material-close: | Color of icon if battery level is not within the 'danger' or 'warning' zone. | + +## Usage + +```yaml +- type: "custom:button-card" + template: card_person_info_small + variables: + ulm_card_person_entity: person.imaginelenses + ulm_card_person_zone1: zone.work + ulm_card_person_driving_entity: binary_sensor.driving + ulm_card_person_battery_entity: sensor.phone_battery_level + ulm_card_person_battery_state_entity: sensor.phone_battery_state +``` + +## Template Code + +??? note "Template Code" + + ```yaml title="custom_card_person_info_small.yaml" + --8<-- "custom_cards/custom_card_person_info_small/custom_card_person_info_small.yaml" + ``` diff --git a/custom_cards/custom_card_person_info_small/custom_card_person_info_small.yaml b/custom_cards/custom_card_person_info_small/custom_card_person_info_small.yaml new file mode 100644 index 000000000..b593518c0 --- /dev/null +++ b/custom_cards/custom_card_person_info_small/custom_card_person_info_small.yaml @@ -0,0 +1,148 @@ +--- +card_person_info_small: + template: + - "icon_info_bg" + - "ulm_translation_engine" + variables: + ulm_card_person_use_entity_picture: true + ulm_card_person_zone1: "" + ulm_card_person_zone2: "" + ulm_card_person_icon: "mdi:face-man" + ulm_address: "" + ulm_address_locality: "" + ulm_card_person_driving_entity: "" + ulm_card_person_battery_entity: "" + ulm_card_person_battery_state_entity: "" + ulm_card_battery_battery_level_danger: 15 + ulm_card_battery_battery_level_warning: 30 + ulm_card_battery_color_battery_level_danger: "var(--google-red)" + ulm_card_battery_color_battery_level_warning: "var(--google-yellow)" + ulm_card_battery_color_battery_level_ok: "var(--google-green)" + triggers_update: "all" + tap_action: + action: "more-info" + entity: "[[[ return variables.ulm_card_person_entity; ]]]" + hold_action: + action: "more-info" + entity: "[[[ return variables.ulm_card_person_battery_entity; ]]]" + show_label: true + show_name: true + label: > + [[[ + if (variables.ulm_address){ + return states[variables.ulm_address].state; + } else if (variables.ulm_address_locality){ + return states[variables.ulm_address_locality].attributes.Locality; + } + else if (states[variables.ulm_card_person_driving_entity]?.state === "on") { + let state = states[variables.ulm_card_person_entity].state; + return `Driving - ${variables.ulm_translation_state}`; + } else { + let state = states[variables.ulm_card_person_entity].state; + return hass.resources[hass["language"]]["component.person.entity_component._.state." + state] ? hass.resources[hass["language"]]["component.person.entity_component._.state." + state] : state; + } + ]]] + name: "[[[ return states[variables.ulm_card_person_entity].attributes.friendly_name ]]]" + entity: "[[[ return variables.ulm_card_person_entity; ]]]" + icon: "[[[ return variables.ulm_card_person_icon; ]]]" + show_entity_picture: "[[[ return variables.ulm_card_person_use_entity_picture ]]]" + entity_picture: + "[[[ return variables.ulm_card_person_use_entity_picture != false ? states[variables.ulm_card_person_entity].attributes.entity_picture\ + \ : null ]]]" + styles: + grid: + - grid-template-areas: "'i battery' 'n n' 'l l'" + icon: + - color: "rgba(var(--color-theme),0.9)" + - width: "42px" + - place-self: "start" + name: + - place-self: "center" + - margin-left: 0 + - margin-top: "6%" + label: + - place-self: "center" + - margin-left: 0 + - text-transform: "capitalize" + custom_fields: + notification: + - position: "absolute" + - top: "7%" + - left: "38px" + - height: "16px" + - width: "16px" + - border: "2px solid var(--card-background-color)" + - border-radius: "50%" + - font-size: "12px" + - line-height: "14px" + - background-color: > + [[[ + if (states[variables.ulm_card_person_entity].state == 'home') { + return "rgba(var(--color-blue),1)"; + } else { + return "rgba(var(--color-yellow),1)"; + } + ]]] + battery: + - width: "30px" + - height: "30px" + - place-self: "end" + - align-self: "center" + - background-color: "rgba(var(--primary-background-color), 0.5)" + - border: "2px solid var(--card-background-color)" + - border-radius: "50%" + + custom_fields: + notification: > + [[[ + let height = "11px"; + let width = "11px"; + if (states[variables.ulm_card_person_entity].state !== 'home') { + if (states[variables.ulm_card_person_entity].state === states[variables.ulm_card_person_zone1]?.attributes?.friendly_name) { + var icon = states[variables.ulm_card_person_zone1].attributes.icon !== null ? states[variables.ulm_card_person_zone1].attributes.icon : 'mdi:help-circle' + return ``; + } else if (states[variables.ulm_card_person_entity].state === states[variables.ulm_card_person_zone2]?.attributes?.friendly_name) { + var icon = states[variables.ulm_card_person_zone2].attributes.icon !== null ? states[variables.ulm_card_person_zone2].attributes.icon : 'mdi:help-circle' + return ``; + } else { + return ``; + } + } else { + return ``; + } + ]]] + battery: > + [[[ + if (states[variables.ulm_card_person_battery_entity]?.state) { + let battery_level = states[variables.ulm_card_person_battery_entity]?.state; + battery_level = Number(battery_level); + let charging = states[variables.ulm_card_person_battery_state_entity]?.state.toLowerCase() === "charging"; + + var infix = charging ? "-charging" : "" + let icon = "mdi:help-circle-outline"; + if (battery_level == 100) { + icon = "mdi:battery"; + } else if (battery_level < 10) { + icon = "mdi:battery" + infix + "-outline"; + } else if (battery_level == "unknown" || battery_level == "unavailable") { + icon = "mdi:battery-off"; + } else { + icon = "mdi:battery" + infix + "-" + Math.floor(battery_level / 10) * 10; + } + + let color = variables.ulm_card_battery_color_battery_level_ok; + if (battery_level !== "unavailable") { + if (battery_level <= variables.ulm_card_battery_battery_level_danger) { + color = variables.ulm_card_battery_color_battery_level_danger; + } else if (battery_level <= variables.ulm_card_battery_battery_level_warning) { + color = variables.ulm_card_battery_color_battery_level_warning; + } else { + color = variables.ulm_card_battery_color_battery_level_ok; + } + } + + return ` + + `; + } + ]]] diff --git a/custom_cards/custom_card_saxel_fan/custom_card_saxel_fan.yaml b/custom_cards/custom_card_saxel_fan/custom_card_saxel_fan.yaml index d175b17f3..14b60ab0f 100644 --- a/custom_cards/custom_card_saxel_fan/custom_card_saxel_fan.yaml +++ b/custom_cards/custom_card_saxel_fan/custom_card_saxel_fan.yaml @@ -198,10 +198,11 @@ custom_card_saxel_fan_common: icon: "[[[ return variables.ulm_button_icon ]]]" entity: "[[[ return entity.entity_id ]]]" tap_action: - action: "call-service" - service: "[[[ return variables.ulm_button_service ]]]" - service_data: + action: "perform-action" + perform_action: "[[[ return variables.ulm_button_service ]]]" + target: entity_id: "[[[ return entity.entity_id; ]]]" + data: oscillating: "[[[ return !entity.attributes[variables.oscillate_attribute] ]]]" template: - "widget_icon" diff --git a/custom_cards/custom_card_scenes/README.md b/custom_cards/custom_card_scenes/README.md index db64478f9..01562ba97 100644 --- a/custom_cards/custom_card_scenes/README.md +++ b/custom_cards/custom_card_scenes/README.md @@ -3,6 +3,7 @@ title: Scenes Card Custom-card hide: - toc --- + # Custom-card "Scenes Card" @@ -21,76 +22,76 @@ Version: 1.2.0
1.2.0 - ```yaml - #OLD +```yaml +#OLD - type: "custom:button-card" - template: - - card_scenes - variables: - entity_1: "scene.YOUR_SCENE" - entity_2: "scene.YOUR_SCENE" - entity_3: "scene.YOUR_SCENE" - entity_4: "scene.YOUR_SCENE" - entity_5: "scene.YOUR_SCENE" - name_1: "YOUR_NAME" - name_2: "YOUR_NAME" - name_3: "YOUR_NAME" - name_4: "YOUR_NAME" - name_5: "YOUR_NAME" - icon_1: "mdi:YOUR_ICON" - icon_2: "mdi:YOUR_ICON" - icon_3: "mdi:YOUR_ICON" - icon_4: "mdi:YOUR_ICON" - icon_5: "mdi:YOUR_ICON" - color_icon_1: "yellow" - color_icon_2: "blue" - color_icon_3: "purple" - color_icon_4: "green" - color_icon_5: "red" - color_bg_1: "yellow" - color_bg_2: "blue" - color_bg_3: "purple" - color_bg_4: "green" - color_bg_5: "red" - ``` - - ```yaml - #NEW + template: + - card_scenes + variables: + entity_1: "scene.YOUR_SCENE" + entity_2: "scene.YOUR_SCENE" + entity_3: "scene.YOUR_SCENE" + entity_4: "scene.YOUR_SCENE" + entity_5: "scene.YOUR_SCENE" + name_1: "YOUR_NAME" + name_2: "YOUR_NAME" + name_3: "YOUR_NAME" + name_4: "YOUR_NAME" + name_5: "YOUR_NAME" + icon_1: "mdi:YOUR_ICON" + icon_2: "mdi:YOUR_ICON" + icon_3: "mdi:YOUR_ICON" + icon_4: "mdi:YOUR_ICON" + icon_5: "mdi:YOUR_ICON" + icon_color_1: "yellow" + icon_color_2: "blue" + icon_color_3: "purple" + icon_color_4: "green" + icon_color_5: "red" + bg_color_1: "yellow" + bg_color_2: "blue" + bg_color_3: "purple" + bg_color_4: "green" + bg_color_5: "red" +``` + +```yaml +#NEW - type: "custom:button-card" - template: - - card_scenes - variables: - entity_1: - entity_id: "scene.YOUR_SCENE" - icon: "mdi:YOUR_ICON" - icon_color: "yellow" - name: "YOUR_NAME" - bg_color: "yellow" - entity_2: - entity_id: "scene.YOUR_SCENE" - icon: "mdi:YOUR_ICON" - icon_color: "blue" - name: "YOUR_NAME" - bg_color: "blue" - entity_3: - entity_id: "scene.YOUR_SCENE" - icon: "mdi:YOUR_ICON" - icon_color: "purple" - name: "YOUR_NAME" - bg_color: "purple" - entity_4: - entity_id: "scene.YOUR_SCENE" - icon: "mdi:YOUR_ICON" - icon_color: "green" - name: "YOUR_NAME" - bg_color: "green" - entity_5: - entity_id: "scene.YOUR_SCENE" - icon: "mdi:YOUR_ICON" - icon_color: "red" - name: "YOUR_NAME" - bg_color: "red" - ``` + template: + - card_scenes + variables: + entity_1: + entity_id: "scene.YOUR_SCENE" + icon: "mdi:YOUR_ICON" + icon_color: "yellow" + name: "YOUR_NAME" + bg_color: "yellow" + entity_2: + entity_id: "scene.YOUR_SCENE" + icon: "mdi:YOUR_ICON" + icon_color: "blue" + name: "YOUR_NAME" + bg_color: "blue" + entity_3: + entity_id: "scene.YOUR_SCENE" + icon: "mdi:YOUR_ICON" + icon_color: "purple" + name: "YOUR_NAME" + bg_color: "purple" + entity_4: + entity_id: "scene.YOUR_SCENE" + icon: "mdi:YOUR_ICON" + icon_color: "green" + name: "YOUR_NAME" + bg_color: "green" + entity_5: + entity_id: "scene.YOUR_SCENE" + icon: "mdi:YOUR_ICON" + icon_color: "red" + name: "YOUR_NAME" + bg_color: "red" +```
diff --git a/custom_cards/custom_card_scenes/card_scenes.yaml b/custom_cards/custom_card_scenes/card_scenes.yaml index d316b54c8..c4b2cd5dc 100644 --- a/custom_cards/custom_card_scenes/card_scenes.yaml +++ b/custom_cards/custom_card_scenes/card_scenes.yaml @@ -57,8 +57,8 @@ card_scenes: color_icon: "[[[ return variables.entity_1.icon_color ]]]" color_bg: "[[[ return variables.entity_1.bg_color ]]]" tap_action: - action: "call-service" - service: | + action: "perform-action" + perform_action: | [[[ let domain = variables.entity_1.entity_id.substr(0, variables.entity_1.entity_id.indexOf(".")); if (domain == "automation") { @@ -67,7 +67,7 @@ card_scenes: return "homeassistant.turn_on" } ]]] - service_data: + target: entity_id: "[[[ return variables.entity_1.entity_id ]]]" item2: card: @@ -80,8 +80,8 @@ card_scenes: color_icon: "[[[ return variables.entity_2.icon_color ]]]" color_bg: "[[[ return variables.entity_2.bg_color ]]]" tap_action: - action: "call-service" - service: | + action: "perform-action" + perform_action: | [[[ let domain = variables.entity_2.entity_id.substr(0, variables.entity_2.entity_id.indexOf(".")); if (domain == "automation") { @@ -90,7 +90,7 @@ card_scenes: return "homeassistant.turn_on" } ]]] - service_data: + target: entity_id: "[[[ return variables.entity_2.entity_id ]]]" item3: card: @@ -103,8 +103,8 @@ card_scenes: color_icon: "[[[ return variables.entity_3.icon_color ]]]" color_bg: "[[[ return variables.entity_3.bg_color ]]]" tap_action: - action: "call-service" - service: | + action: "perform-action" + perform_action: | [[[ let domain = variables.entity_3.entity_id.substr(0, variables.entity_3.entity_id.indexOf(".")); if (domain == "automation") { @@ -113,7 +113,7 @@ card_scenes: return "homeassistant.turn_on" } ]]] - service_data: + target: entity_id: "[[[ return variables.entity_3.entity_id ]]]" item4: card: @@ -126,8 +126,8 @@ card_scenes: color_icon: "[[[ return variables.entity_4.icon_color ]]]" color_bg: "[[[ return variables.entity_4.bg_color ]]]" tap_action: - action: "call-service" - service: | + action: "perform-action" + perform_action: | [[[ let domain = variables.entity_4.entity_id.substr(0, variables.entity_4.entity_id.indexOf(".")); if (domain == "automation") { @@ -136,7 +136,7 @@ card_scenes: return "homeassistant.turn_on" } ]]] - service_data: + target: entity_id: "[[[ return variables.entity_4.entity_id ]]]" item5: card: @@ -149,8 +149,8 @@ card_scenes: color_icon: "[[[ return variables.entity_5.icon_color ]]]" color_bg: "[[[ return variables.entity_5.bg_color ]]]" tap_action: - action: "call-service" - service: | + action: "perform-action" + perform_action: | [[[ let domain = variables.entity_5.entity_id.substr(0, variables.entity_5.entity_id.indexOf(".")); if (domain == "automation") { @@ -159,7 +159,7 @@ card_scenes: return "homeassistant.turn_on" } ]]] - service_data: + target: entity_id: "[[[ return variables.entity_5.entity_id ]]]" card_scenes_pill: diff --git a/custom_cards/custom_card_schumijo_flower/README.md b/custom_cards/custom_card_schumijo_flower/README.md index 518095d67..cbf595d7f 100644 --- a/custom_cards/custom_card_schumijo_flower/README.md +++ b/custom_cards/custom_card_schumijo_flower/README.md @@ -14,8 +14,9 @@ This is a `custom-card` to display a plant entity. Shows state of the plant and ## Credits -Author: schumijo - 2021 -Version: 1.1.0 +- Author: schumijo - 2021 +- Update 2.0.0 : Ashino - 2024 +- Version: 2.0.0 ## Changelog @@ -28,6 +29,11 @@ Initial release Fix language files for beta5 Updated README +
+2.0.0 +Add support to lovelace-flower-card from Olen (advanced forked version) +Updated README +
## Usage @@ -38,6 +44,10 @@ Updated README ulm_card_flower_entity: plant.bonsai_ficus ulm_card_flower_name: Bonsai Ficus ulm_card_flower_species: "ficus retusa" + ulm_card_flower_show_bars: + - temperature + - humidity + - moisture ``` #### Variables @@ -67,11 +77,30 @@ Updated README + + + + + +
Component / cardyes The species of your plant
ulm_card_flower_show_bars +- temperature +
+- moisture +
+- humidity +
noThe bar you want to display. Any of : +
  • illuminance
  • +
  • humidity
  • +
  • moisture
  • +
  • conductivity
  • +
  • temperature
  • +
  • dli
  • +
    ## Requirements -Need [lovelace-flower-card](https://github.com/thomasloven/lovelace-flower-card) +Need [lovelace-flower-card](https://github.com/Olen/lovelace-flower-card) ## Template code diff --git a/custom_cards/custom_card_schumijo_flower/custom_card_schumijo_flower.yaml b/custom_cards/custom_card_schumijo_flower/custom_card_schumijo_flower.yaml index 6703e826a..655661ca1 100644 --- a/custom_cards/custom_card_schumijo_flower/custom_card_schumijo_flower.yaml +++ b/custom_cards/custom_card_schumijo_flower/custom_card_schumijo_flower.yaml @@ -77,6 +77,7 @@ card_flower: type: "custom:flower-card" entity: "[[[ return variables.ulm_card_flower_entity ]]]" species: "[[[ return variables.ulm_card_flower_species ]]]" + show_bars: "[[[ return variables.ulm_card_flower_show_bars ]]]" card_mod: style: | ha-card{ diff --git a/custom_cards/custom_card_sisimomo_printer/custom_card_sisimomo_printer.yaml b/custom_cards/custom_card_sisimomo_printer/custom_card_sisimomo_printer.yaml index 30315c9f4..b80018dd8 100644 --- a/custom_cards/custom_card_sisimomo_printer/custom_card_sisimomo_printer.yaml +++ b/custom_cards/custom_card_sisimomo_printer/custom_card_sisimomo_printer.yaml @@ -163,60 +163,61 @@ custom_card_sisimomo_printer: } ]]] - style: | - /* Cartridge CSS */ - div#cartridges .wrapper { - display: grid; - grid-template-columns: auto 1fr auto; - grid-gap: 1rem; - padding: 12px 8px 8px 8px; - } - div#cartridges .wrapper > *:nth-child(3n-2), .wrapper > *:nth-child(3n) { - place-self: center start; - } - div#cartridges .wrapper > .label { - filter: opacity(70%); - font-size: medium; - } - div#cartridges .wrapper > .container-bar { - position: relative; - border-radius: 4px; - border: 0.01rem solid rgba(var(--color-theme),.35); - } - div#cartridges .wrapper > .container-bar .bar { - height: 20px; - border-radius: 4px; - } - div#cartridges .wrapper > .state { - filter: opacity(40%); - font-size: medium; - } + card_mod: + style: | + /* Cartridge CSS */ + div#cartridges .wrapper { + display: grid; + grid-template-columns: auto 1fr auto; + grid-gap: 1rem; + padding: 12px 8px 8px 8px; + } + div#cartridges .wrapper > *:nth-child(3n-2), .wrapper > *:nth-child(3n) { + place-self: center start; + } + div#cartridges .wrapper > .label { + filter: opacity(70%); + font-size: medium; + } + div#cartridges .wrapper > .container-bar { + position: relative; + border-radius: 4px; + border: 0.01rem solid rgba(var(--color-theme),.35); + } + div#cartridges .wrapper > .container-bar .bar { + height: 20px; + border-radius: 4px; + } + div#cartridges .wrapper > .state { + filter: opacity(40%); + font-size: medium; + } - /* Error CSS */ - div#cartridges .error-container { - text-align: left; - font-size: 75%; - font-family: var(--code-font-family, monospace); - padding: 10px; - background-color: rgba(219, 68, 55, 0.75); - margin-top:10px; - border-radius:8px; - } - div#cartridges .error-container ul { - list-style: none; - padding: 0; - margin: 0; - overflow-wrap: break-word; - word-wrap: break-word; - white-space: normal !important; - } - div#cartridges .error-container ul li { - margin-top: 0.5em; - } - div#cartridges .info-unavailable { - padding: 1em; - white-space: normal; - margin-top:10px; - border-radius:8px; - opacity: 60%; - } + /* Error CSS */ + div#cartridges .error-container { + text-align: left; + font-size: 75%; + font-family: var(--code-font-family, monospace); + padding: 10px; + background-color: rgba(219, 68, 55, 0.75); + margin-top:10px; + border-radius:8px; + } + div#cartridges .error-container ul { + list-style: none; + padding: 0; + margin: 0; + overflow-wrap: break-word; + word-wrap: break-word; + white-space: normal !important; + } + div#cartridges .error-container ul li { + margin-top: 0.5em; + } + div#cartridges .info-unavailable { + padding: 1em; + white-space: normal; + margin-top:10px; + border-radius:8px; + opacity: 60%; + } diff --git a/custom_cards/custom_card_speedtest_shogun160/custom_card_speedtest_shogun160.yaml b/custom_cards/custom_card_speedtest_shogun160/custom_card_speedtest_shogun160.yaml index ccb027758..b90a0551d 100644 --- a/custom_cards/custom_card_speedtest_shogun160/custom_card_speedtest_shogun160.yaml +++ b/custom_cards/custom_card_speedtest_shogun160/custom_card_speedtest_shogun160.yaml @@ -13,9 +13,9 @@ custom_card_speedtest_shogun160: ulm_custom_card_speedtest_ping_max: 85 ulm_custom_card_speedtest_round: false tap_action: - action: "call-service" - service: "homeassistant.update_entity" - service_data: + action: "perform-action" + perform_action: "homeassistant.update_entity" + target: entity_id: - "[[[ return variables.ulm_custom_card_speedtest_download_speed_entity]]]" - "[[[ return variables.ulm_custom_card_speedtest_upload_speed_entity]]]" diff --git a/custom_cards/custom_card_tpx01_aircondition/custom_card_tpx01_aircondition.yaml b/custom_cards/custom_card_tpx01_aircondition/custom_card_tpx01_aircondition.yaml index a144ee4fa..5807c5925 100644 --- a/custom_cards/custom_card_tpx01_aircondition/custom_card_tpx01_aircondition.yaml +++ b/custom_cards/custom_card_tpx01_aircondition/custom_card_tpx01_aircondition.yaml @@ -78,10 +78,11 @@ custom_card_tpx01_aircondition_with_buttons: type: "custom:button-card" template: "widget_icon" tap_action: - action: "call-service" - service: "climate.set_hvac_mode" - service_data: + action: "perform-action" + perform_action: "climate.set_hvac_mode" + target: entity_id: "[[[ return variables.entity ]]]" + data: hvac_mode: "cool" icon: "mdi:power" - type: "conditional" @@ -92,10 +93,11 @@ custom_card_tpx01_aircondition_with_buttons: type: "custom:button-card" template: "widget_icon" tap_action: - action: "call-service" - service: "climate.set_hvac_mode" - service_data: + action: "perform-action" + perform_action: "climate.set_hvac_mode" + target: entity_id: "[[[ return variables.entity ]]]" + data: hvac_mode: "off" icon: "mdi:power-off" item2: @@ -108,9 +110,9 @@ custom_card_tpx01_aircondition_with_buttons: type: "custom:button-card" template: "widget_icon" tap_action: - action: "call-service" - service: "script.decrease_climate_temperature" - service_data: + action: "perform-action" + perform_action: "script.decrease_climate_temperature" + target: entity_id: "[[[ return variables.entity ]]]" icon: "mdi:minus" item2: @@ -126,9 +128,9 @@ custom_card_tpx01_aircondition_with_buttons: type: "custom:button-card" template: "widget_icon" tap_action: - action: "call-service" - service: "script.increment_climate_temperature" - service_data: + action: "perform-action" + perform_action: "script.increment_climate_temperature" + target: entity_id: "[[[ return variables.entity ]]]" icon: "mdi:plus" diff --git a/custom_cards/custom_template_shogun160_battery_info/README.md b/custom_cards/custom_template_shogun160_battery_info/README.md index 3400942cb..dbdc51781 100644 --- a/custom_cards/custom_template_shogun160_battery_info/README.md +++ b/custom_cards/custom_template_shogun160_battery_info/README.md @@ -27,9 +27,9 @@ This is an template to add the battery level to every ui minimalist card ## Variables -| Variable | Default | Required | Notes | -| -------------------------------------------- | ------- | -------- | ------------------------------------------------------------------------ | -| ulm_battery_entity | | No | The entity to represent the battery_level +| Variable | Default | Required | Notes | +| ------------------ | ------- | -------- | ----------------------------------------- | +| ulm_battery_entity | | No | The entity to represent the battery_level | ## Usage with battery or battery_level attribute from entity diff --git a/custom_components/ui_lovelace_minimalist/__init__.py b/custom_components/ui_lovelace_minimalist/__init__.py index be8369bbc..8498321b2 100644 --- a/custom_components/ui_lovelace_minimalist/__init__.py +++ b/custom_components/ui_lovelace_minimalist/__init__.py @@ -11,6 +11,7 @@ from homeassistant.core import HomeAssistant from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.loader import async_get_integration +import voluptuous as vol from .base import UlmBase from .const import DOMAIN, NAME @@ -18,6 +19,8 @@ _LOGGER: logging.Logger = logging.getLogger(__package__) +CONFIG_SCHEMA = vol.Schema({DOMAIN: vol.Schema({})}, extra=vol.ALLOW_EXTRA) + async def async_initialize_integration( hass: HomeAssistant, diff --git a/custom_components/ui_lovelace_minimalist/base.py b/custom_components/ui_lovelace_minimalist/base.py index dc2e0dcae..417f24a3d 100644 --- a/custom_components/ui_lovelace_minimalist/base.py +++ b/custom_components/ui_lovelace_minimalist/base.py @@ -2,13 +2,14 @@ from __future__ import annotations +from collections.abc import Awaitable from dataclasses import asdict, dataclass, field from functools import partial import logging import os import pathlib import shutil -from typing import Any, Awaitable, Callable +from typing import Any, Callable from aiogithubapi import ( GitHubAPI, @@ -419,9 +420,9 @@ async def configure_dashboard(self) -> bool: async_remove_panel(self.hass, "ui-lovelace-minimalist") if self.configuration.adaptive_ui_enabled: - self.hass.data["lovelace"]["dashboards"][ - adv_dashboard_url - ] = LovelaceYAML(self.hass, adv_dashboard_url, adv_dashboard_config) + self.hass.data["lovelace"]["dashboards"][adv_dashboard_url] = ( + LovelaceYAML(self.hass, adv_dashboard_url, adv_dashboard_config) + ) _register_panel( self.hass, adv_dashboard_url, "yaml", adv_dashboard_config, True diff --git a/custom_components/ui_lovelace_minimalist/config_flow.py b/custom_components/ui_lovelace_minimalist/config_flow.py index 6b8d2245f..9ad4f2892 100644 --- a/custom_components/ui_lovelace_minimalist/config_flow.py +++ b/custom_components/ui_lovelace_minimalist/config_flow.py @@ -7,7 +7,9 @@ from aiogithubapi import GitHubDeviceAPI, GitHubException from aiogithubapi.common.const import OAUTH_USER_LOGIN +from awesomeversion import AwesomeVersion from homeassistant import config_entries +from homeassistant.const import __version__ as HAVERSION from homeassistant.core import callback from homeassistant.helpers import aiohttp_client import homeassistant.helpers.config_validation as cv @@ -51,6 +53,10 @@ _LOGGER: logging.Logger = logging.getLogger(__name__) +# Version threshold for config_entry setting in options flow +# See: https://github.com/home-assistant/core/pull/129562 +HA_OPTIONS_FLOW_VERSION_THRESHOLD = "2024.11.99" + async def ulm_config_option_schema(options: dict = {}) -> dict: """Return a schema for ULM configuration options.""" @@ -242,7 +248,10 @@ class UlmOptionFlowHandler(config_entries.OptionsFlow): def __init__(self, config_entry: config_entries.ConfigEntry) -> None: """Initialize.""" - self.config_entry = config_entry + self.options = dict(config_entry.options) + # See: https://github.com/home-assistant/core/pull/129562 + if AwesomeVersion(HAVERSION) < HA_OPTIONS_FLOW_VERSION_THRESHOLD: + self.config_entry = config_entry async def async_step_init(self, _user_input=None): """Manage the options.""" diff --git a/custom_components/ui_lovelace_minimalist/const.py b/custom_components/ui_lovelace_minimalist/const.py index 92c6056f6..e75a2c2e9 100644 --- a/custom_components/ui_lovelace_minimalist/const.py +++ b/custom_components/ui_lovelace_minimalist/const.py @@ -1,4 +1,5 @@ """Constants for UI Lovelace Minimalist.""" + from typing import TypeVar # Base component constants @@ -19,50 +20,49 @@ COMMUNITY_CARDS_FOLDER = "custom_cards" LANGUAGES = { - "Català": "ca", "Czech": "cs", "Danish": "da", - "Dutch": "nl", + "German": "de", "English (GB)": "en", + "Spanish": "es", + "Català": "ca", "French": "fr", - "German": "de", - "Hebrew": "he", "Italian": "it", + "Dutch": "nl", + "Hebrew": "he", "Norwegian": "no", "Polish": "pl", - "Portuguese (Brazil)": "pt-BR", "Portuguese": "pt", - "Russian": "ru", - "Slovak": "sk", + "Portuguese (Brazil)": "pt-BR", "Slovenian": "sl", - "Spanish": "es", + "Slovak": "sk", "Swedish": "sv", "Turkish": "tr", - "Ukrainian": "uk", + "Russian": "ru", "中文(简体)": "zh-CN", } CONF_LANGUAGE = "language" CONF_LANGUAGES = [ - "Català", "Czech", "Danish", - "Dutch", + "German", "English (GB)", + "Spanish", + "Català", "French", - "German", - "Hebrew", "Italian", + "Dutch", + "Hebrew", "Norwegian", "Polish", - "Portuguese (Brazil)", "Portuguese", - "Russian", + "Portuguese (Brazil)", "Slovenian", - "Spanish", + "Slovak", "Swedish", "Turkish", - "Ukrainian", + "Russian", "中文(简体)", ] CONF_SIDEPANEL_ENABLED = "sidepanel_enabled" diff --git a/custom_components/ui_lovelace_minimalist/enums.py b/custom_components/ui_lovelace_minimalist/enums.py index fa4d36405..48b3b15ca 100644 --- a/custom_components/ui_lovelace_minimalist/enums.py +++ b/custom_components/ui_lovelace_minimalist/enums.py @@ -1,4 +1,5 @@ """Helper constants.""" + # pylint: disable=missing-class-docstring from enum import Enum diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_vacuum.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_vacuum.yaml index 928010263..893eb179d 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_vacuum.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_vacuum.yaml @@ -21,6 +21,7 @@ card_vacuum: var state = entity.state.toLowerCase(); var colors = { "cleaning": "blue", + "mowing": "blue", "paused": "green", "mopping": "yellow", "returning": "purple", @@ -52,7 +53,7 @@ card_vacuum: let map = "'item1' 'map' 'item2'" if(variables.ulm_card_vacuum_camera != ""){ if(variables.ulm_card_vacuum_camera_toggle){ - if(entity.state.toLowerCase() === 'cleaning' || entity.state.toLowerCase() === 'mopping'){ + if(entity.state.toLowerCase() === 'cleaning' || entity.state.toLowerCase() === 'mopping' || entity.state.toLowerCase() === 'mowing'){ return map; } } else { @@ -67,7 +68,7 @@ card_vacuum: let map = "repeat(3, min-content)" if(variables.ulm_card_vacuum_camera != ""){ if(variables.ulm_card_vacuum_camera_toggle){ - if(entity.state.toLowerCase() === 'cleaning' || entity.state.toLowerCase() === 'mopping'){ + if(entity.state.toLowerCase() === 'cleaning' || entity.state.toLowerCase() === 'mopping' || entity.state.toLowerCase() === 'mowing'){ return map; } } else { @@ -94,7 +95,7 @@ card_vacuum: let map = "block" if(variables.ulm_card_vacuum_camera != ""){ if(variables.ulm_card_vacuum_camera_toggle){ - if(entity.state.toLowerCase() === 'cleaning' || entity.state.toLowerCase() === 'mopping'){ + if(entity.state.toLowerCase() === 'cleaning' || entity.state.toLowerCase() === 'mopping' || entity.state.toLowerCase() === 'mowing'){ return map; } } else { @@ -249,7 +250,7 @@ card_vacuum: ]]] state: - operator: "template" - value: "[[[ return ['cleaning','mopping'].includes(entity.state.toLowerCase()) ]]]" + value: "[[[ return ['cleaning','mopping','mowing'].includes(entity.state.toLowerCase()) ]]]" icon: "mdi:stop" tap_action: action: "perform-action" @@ -260,7 +261,7 @@ card_vacuum: action: "perform-action" perform_action: > [[[ - return ['cleaning','mopping'].includes(entity.state.toLowerCase()) ? "vacuum.stop" : "vacuum.start"; + return ['cleaning','mopping','mowing'].includes(entity.state.toLowerCase()) ? "vacuum.stop" : "vacuum.start"; ]]] target: entity_id: "[[[ return entity.entity_id ]]]" diff --git a/custom_components/ui_lovelace_minimalist/translations/ca.json b/custom_components/ui_lovelace_minimalist/translations/ca.json index 95a9b0f89..dcdb12205 100644 --- a/custom_components/ui_lovelace_minimalist/translations/ca.json +++ b/custom_components/ui_lovelace_minimalist/translations/ca.json @@ -24,7 +24,7 @@ "reauth_successful": "Reautenticació amb èxit." }, "progress": { - "wait_for_device": "1. Obrir {url} \n2.Enganxa la clau següent per autoritzar ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. Obrir {url}\n2.Enganxa la clau següent per autoritzar ULM:\n\n```{code}```" } }, "options": { @@ -56,5 +56,15 @@ "ack": "Has de reconeixer tots els estaments.", "gh_token": "No s'ha establert el token de Github. Si et plau, reinstal·la aquesta integració per seguir amb el procés de configuració. (No es perdrà cap configuració personalitzada)" } + }, + "services": { + "reload": { + "name": "Reload", + "description": "Reload dashboard configuration for UI Lovelace Minimalist." + }, + "installed": { + "name": "Installed", + "description": "Change the installed key in global config for UI Lovelace Minimalist." + } } } diff --git a/custom_components/ui_lovelace_minimalist/translations/cs.json b/custom_components/ui_lovelace_minimalist/translations/cs.json index 099bc659a..266384f9c 100644 --- a/custom_components/ui_lovelace_minimalist/translations/cs.json +++ b/custom_components/ui_lovelace_minimalist/translations/cs.json @@ -24,7 +24,7 @@ "reauth_successful": "Reauthentication was successful." }, "progress": { - "wait_for_device": "1. Open {url} \n2.Paste the following key to authorize ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. Open {url}\n2.Paste the following key to authorize ULM:\n\n```{code}```" } }, "options": { @@ -56,5 +56,15 @@ "ack": "You need to acknowledge all statements.", "gh_token": "Github Token not set. Please re-install this integration to go throught the setup procedure. (No custom configuration will be lost)" } + }, + "services": { + "reload": { + "name": "Reload", + "description": "Reload dashboard configuration for UI Lovelace Minimalist." + }, + "installed": { + "name": "Installed", + "description": "Change the installed key in global config for UI Lovelace Minimalist." + } } } diff --git a/custom_components/ui_lovelace_minimalist/translations/da.json b/custom_components/ui_lovelace_minimalist/translations/da.json index 00f5475b2..16c147352 100644 --- a/custom_components/ui_lovelace_minimalist/translations/da.json +++ b/custom_components/ui_lovelace_minimalist/translations/da.json @@ -24,7 +24,7 @@ "reauth_successful": "Reauthentication was successful." }, "progress": { - "wait_for_device": "1. Open {url} \n2.Paste the following key to authorize ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. Open {url}\n2.Paste the following key to authorize ULM:\n\n```{code}```" } }, "options": { @@ -59,9 +59,11 @@ }, "services": { "reload": { + "name": "Reload", "description": "Genindlæs dashboard-konfiguration til UI Lovelace Minimalist." }, "installed": { + "name": "Installed", "description": "Skift den installerede nøgle i global konfiguration for UI Lovelace Minimalist." } } diff --git a/custom_components/ui_lovelace_minimalist/translations/de.json b/custom_components/ui_lovelace_minimalist/translations/de.json index ff4d33b93..d5ee86a00 100644 --- a/custom_components/ui_lovelace_minimalist/translations/de.json +++ b/custom_components/ui_lovelace_minimalist/translations/de.json @@ -24,7 +24,7 @@ "reauth_successful": "Die erneute Authentifizierung war erfolgreich." }, "progress": { - "wait_for_device": "1. Öffne {url} \n2.Fügen Sie den folgenden Schlüssel ein, um ULM zu autorisieren: \n```\n{code}\n```\n" + "wait_for_device": "1. Öffne {url}\n2.Fügen Sie den folgenden Schlüssel ein, um ULM zu autorisieren:\n\n```{code}```" } }, "options": { @@ -60,9 +60,11 @@ }, "services": { "reload": { + "name": "Reload", "description": "Neuladen der Dashboardkonfiguration für UI Lovelace Minimalist" }, "installed": { + "name": "Installed", "description": "Änderung des installierten Schlüssels in der globalen Konfiguration für UI Lovelace Minimalist." } } diff --git a/custom_components/ui_lovelace_minimalist/translations/en.json b/custom_components/ui_lovelace_minimalist/translations/en.json index 6a4a96133..212384c53 100644 --- a/custom_components/ui_lovelace_minimalist/translations/en.json +++ b/custom_components/ui_lovelace_minimalist/translations/en.json @@ -24,7 +24,7 @@ "reauth_successful": "Reauthentication was successful." }, "progress": { - "wait_for_device": "1. Open {url} \n2.Paste the following key to authorize ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. Open {url}\n2.Paste the following key to authorize ULM:\n\n```{code}```" } }, "options": { @@ -59,9 +59,11 @@ }, "services": { "reload": { + "name": "Reload", "description": "Reload dashboard configuration for UI Lovelace Minimalist." }, "installed": { + "name": "Installed", "description": "Change the installed key in global config for UI Lovelace Minimalist." } } diff --git a/custom_components/ui_lovelace_minimalist/translations/es.json b/custom_components/ui_lovelace_minimalist/translations/es.json index 78fef41b7..5287d349d 100644 --- a/custom_components/ui_lovelace_minimalist/translations/es.json +++ b/custom_components/ui_lovelace_minimalist/translations/es.json @@ -24,7 +24,7 @@ "reauth_successful": "La reautenticación se ha realizado con éxito." }, "progress": { - "wait_for_device": "1. Abre {url} \n2.Pega la siguiente clave para autorizar a ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. Abre {url}\n2.Pega la siguiente clave para autorizar a ULM:\n\n```{code}```" } }, "options": { @@ -56,5 +56,15 @@ "ack": "Debes aceptar todas las declaraciones.", "gh_token": "El token de Github no está configurado. Por favor, vuelve a instalar esta integración para pasar por el procedimiento de configuración. (No se perderá ninguna configuración personalizada)" } + }, + "services": { + "reload": { + "name": "Reload", + "description": "Reload dashboard configuration for UI Lovelace Minimalist." + }, + "installed": { + "name": "Installed", + "description": "Change the installed key in global config for UI Lovelace Minimalist." + } } } diff --git a/custom_components/ui_lovelace_minimalist/translations/fi.json b/custom_components/ui_lovelace_minimalist/translations/fi.json index 8412f653e..fd2e9655e 100644 --- a/custom_components/ui_lovelace_minimalist/translations/fi.json +++ b/custom_components/ui_lovelace_minimalist/translations/fi.json @@ -24,7 +24,7 @@ "reauth_successful": "Reauthentication was successful." }, "progress": { - "wait_for_device": "1. Open {url} \n2.Paste the following key to authorize ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. Open {url}\n2.Paste the following key to authorize ULM:\n\n```{code}```" } }, "options": { @@ -56,5 +56,15 @@ "ack": "You need to acknowledge all statements.", "gh_token": "Github Token not set. Please re-install this integration to go throught the setup procedure. (No custom configuration will be lost)" } + }, + "services": { + "reload": { + "name": "Reload", + "description": "Reload dashboard configuration for UI Lovelace Minimalist." + }, + "installed": { + "name": "Installed", + "description": "Change the installed key in global config for UI Lovelace Minimalist." + } } } diff --git a/custom_components/ui_lovelace_minimalist/translations/fr.json b/custom_components/ui_lovelace_minimalist/translations/fr.json index cb1869a68..21bd0a9d2 100644 --- a/custom_components/ui_lovelace_minimalist/translations/fr.json +++ b/custom_components/ui_lovelace_minimalist/translations/fr.json @@ -24,7 +24,7 @@ "reauth_successful": "La réauthentification a réussi." }, "progress": { - "wait_for_device": "1. Ouvrir {url} \n2.Collez la clé suivante pour autoriser ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. Ouvrir {url}\n2.Collez la clé suivante pour autoriser ULM:\n\n```{code}```" } }, "options": { @@ -56,5 +56,15 @@ "ack": "Vous devez confirmer toutes les déclarations.", "gh_token": "Jeton Github non défini. Veuillez réinstaller cette intégration pour recommencer la procédure d'installation. (Aucune configuration personnalisée ne sera perdue)" } + }, + "services": { + "reload": { + "name": "Reload", + "description": "Reload dashboard configuration for UI Lovelace Minimalist." + }, + "installed": { + "name": "Installed", + "description": "Change the installed key in global config for UI Lovelace Minimalist." + } } } diff --git a/custom_components/ui_lovelace_minimalist/translations/he.json b/custom_components/ui_lovelace_minimalist/translations/he.json index ed53867a3..9470895fa 100644 --- a/custom_components/ui_lovelace_minimalist/translations/he.json +++ b/custom_components/ui_lovelace_minimalist/translations/he.json @@ -24,7 +24,7 @@ "reauth_successful": "אימות מחדש הצליח" }, "progress": { - "wait_for_device": "1. פתח {url} \n2.הדבק המפתח על מנת לאשרר את ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. פתח {url}\n2.הדבק המפתח על מנת לאשרר את ULM:\n\n```{code}```" } }, "options": { @@ -59,9 +59,11 @@ }, "services": { "reload": { + "name": "Reload", "description": "טען קנפוג הדאשבורד מחדש עבור יו.איי. לאבלייס מינימליסט" }, "installed": { + "name": "Installed", "description": "החלף את המפתח המותקן בקנפוג הגלובלי עבור יו.איי. לאבלייס מינימליסט" } } diff --git a/custom_components/ui_lovelace_minimalist/translations/it.json b/custom_components/ui_lovelace_minimalist/translations/it.json index 7525f455d..b679b99c7 100644 --- a/custom_components/ui_lovelace_minimalist/translations/it.json +++ b/custom_components/ui_lovelace_minimalist/translations/it.json @@ -24,7 +24,7 @@ "reauth_successful": "Reauthentication was successful." }, "progress": { - "wait_for_device": "1. Open {url} \n2.Paste the following key to authorize ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. Open {url}\n2.Paste the following key to authorize ULM:\n\n```{code}```" } }, "options": { @@ -56,5 +56,15 @@ "ack": "You need to acknowledge all statements.", "gh_token": "Github Token not set. Please re-install this integration to go throught the setup procedure. (No custom configuration will be lost)" } + }, + "services": { + "reload": { + "name": "Reload", + "description": "Reload dashboard configuration for UI Lovelace Minimalist." + }, + "installed": { + "name": "Installed", + "description": "Change the installed key in global config for UI Lovelace Minimalist." + } } } diff --git a/custom_components/ui_lovelace_minimalist/translations/nl.json b/custom_components/ui_lovelace_minimalist/translations/nl.json index dbc1372ef..740322270 100644 --- a/custom_components/ui_lovelace_minimalist/translations/nl.json +++ b/custom_components/ui_lovelace_minimalist/translations/nl.json @@ -24,7 +24,7 @@ "reauth_successful": "Reauthentication was successful." }, "progress": { - "wait_for_device": "1. Open {url} \n2.Paste the following key to authorize ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. Open {url}\n2.Paste the following key to authorize ULM:\n\n```{code}```" } }, "options": { @@ -59,9 +59,11 @@ }, "services": { "reload": { + "name": "Reload", "description": "Herlaad dashboardconfiguratie voor UI Lovelace Minimalist." }, "installed": { + "name": "Installed", "description": "Wijzig de geïnstalleerde sleutel in globale configuratie voor UI Lovelace Minimalist." } } diff --git a/custom_components/ui_lovelace_minimalist/translations/pl.json b/custom_components/ui_lovelace_minimalist/translations/pl.json index fd6883ca6..a2bbe2e65 100644 --- a/custom_components/ui_lovelace_minimalist/translations/pl.json +++ b/custom_components/ui_lovelace_minimalist/translations/pl.json @@ -24,7 +24,7 @@ "reauth_successful": "Ponowne uwierzytelnienie zakończyło się sukcesem" }, "progress": { - "wait_for_device": "1. Otwórz {url} \n2.Wklej poniższy klucz, aby autoryzować ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. Otwórz {url}\n2.Wklej poniższy klucz, aby autoryzować ULM:\n\n```{code}```" } }, "options": { @@ -56,5 +56,15 @@ "ack": "Należy zaznaczyć wszystkie oświadczenia.", "gh_token": "Token GitHub nie został ustawiony. Zainstaluj ponownie integrację, aby przejść przez proces konfiguracji. Żadna niestandardowa konfiguracja nie zostanie utracona." } + }, + "services": { + "reload": { + "name": "Reload", + "description": "Reload dashboard configuration for UI Lovelace Minimalist." + }, + "installed": { + "name": "Installed", + "description": "Change the installed key in global config for UI Lovelace Minimalist." + } } } diff --git a/custom_components/ui_lovelace_minimalist/translations/pt-BR.json b/custom_components/ui_lovelace_minimalist/translations/pt-BR.json index 26049dab2..06dd94712 100644 --- a/custom_components/ui_lovelace_minimalist/translations/pt-BR.json +++ b/custom_components/ui_lovelace_minimalist/translations/pt-BR.json @@ -24,7 +24,7 @@ "reauth_successful": "Reauthentication was successful." }, "progress": { - "wait_for_device": "1. Open {url} \n2.Paste the following key to authorize ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. Open {url}\n2.Paste the following key to authorize ULM:\n\n```{code}```" } }, "options": { @@ -56,5 +56,15 @@ "ack": "You need to acknowledge all statements.", "gh_token": "Github Token not set. Please re-install this integration to go throught the setup procedure. (No custom configuration will be lost)" } + }, + "services": { + "reload": { + "name": "Reload", + "description": "Reload dashboard configuration for UI Lovelace Minimalist." + }, + "installed": { + "name": "Installed", + "description": "Change the installed key in global config for UI Lovelace Minimalist." + } } } diff --git a/custom_components/ui_lovelace_minimalist/translations/ru.json b/custom_components/ui_lovelace_minimalist/translations/ru.json index 9f1c9967a..17ac50287 100644 --- a/custom_components/ui_lovelace_minimalist/translations/ru.json +++ b/custom_components/ui_lovelace_minimalist/translations/ru.json @@ -24,7 +24,7 @@ "reauth_successful": "Повторная аутентификация прошла успешно." }, "progress": { - "wait_for_device": "1. Откройте ссылку {url} \n2.Вставьте следующий ключ для авторизации ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. Откройте ссылку {url}\n2.Вставьте следующий ключ для авторизации ULM:\n\n```{code}```" } }, "options": { @@ -56,5 +56,15 @@ "ack": "Вы должны подтвердить все пункты.", "gh_token": "Токен Github не установлен. Пожалуйста, переустановите эту интеграцию, чтобы пройти процедуру установки. (Никакая пользовательская конфигурация не будет потеряна)" } + }, + "services": { + "reload": { + "name": "Reload", + "description": "Reload dashboard configuration for UI Lovelace Minimalist." + }, + "installed": { + "name": "Installed", + "description": "Change the installed key in global config for UI Lovelace Minimalist." + } } } diff --git a/custom_components/ui_lovelace_minimalist/translations/sk.json b/custom_components/ui_lovelace_minimalist/translations/sk.json index 5345f1824..07afd0548 100644 --- a/custom_components/ui_lovelace_minimalist/translations/sk.json +++ b/custom_components/ui_lovelace_minimalist/translations/sk.json @@ -24,7 +24,7 @@ "reauth_successful": "Opätovná autentifikácia bola úspešná." }, "progress": { - "wait_for_device": "1. Otvoriť {url} \n2.Vložte nasledujúci kľúč na autorizáciu ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. Otvoriť {url}\n2.Vložte nasledujúci kľúč na autorizáciu ULM:\n\n```{code}```" } }, "options": { @@ -59,9 +59,11 @@ }, "services": { "reload": { + "name": "Reload", "description": "Znovu načítajte konfiguráciu dashboardu pre používateľské rozhranie Lovelace Minimalist." }, "installed": { + "name": "Installed", "description": "Zmeňte nainštalovaný kľúč v globálnej konfigurácii pre používateľské rozhranie Lovelace Minimalist." } } diff --git a/custom_components/ui_lovelace_minimalist/translations/sl.json b/custom_components/ui_lovelace_minimalist/translations/sl.json index 56a6e4fbd..04f6fcb3c 100644 --- a/custom_components/ui_lovelace_minimalist/translations/sl.json +++ b/custom_components/ui_lovelace_minimalist/translations/sl.json @@ -24,7 +24,7 @@ "reauth_successful": "Ponovna avtentikacija je bila uspešna." }, "progress": { - "wait_for_device": "1. Odpri {url} \n2.Za avtorizacijo prilepite naslednji ključ ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. Odpri {url}\n2.Za avtorizacijo prilepite naslednji ključ ULM:\n\n```{code}```" } }, "options": { @@ -56,5 +56,15 @@ "ack": "Vse izjave morate potrditi.", "gh_token": "Žeton Github ni nastavljen. Znova namestite to integracijo, da opravite postopek namestitve. (Nobena konfiguracija po meri ne bo izgubljena)" } + }, + "services": { + "reload": { + "name": "Reload", + "description": "Reload dashboard configuration for UI Lovelace Minimalist." + }, + "installed": { + "name": "Installed", + "description": "Change the installed key in global config for UI Lovelace Minimalist." + } } } diff --git a/custom_components/ui_lovelace_minimalist/translations/sv.json b/custom_components/ui_lovelace_minimalist/translations/sv.json index 08a85316f..188853c60 100644 --- a/custom_components/ui_lovelace_minimalist/translations/sv.json +++ b/custom_components/ui_lovelace_minimalist/translations/sv.json @@ -24,7 +24,7 @@ "reauth_successful": "Återautentiseringen lyckades." }, "progress": { - "wait_for_device": "1. Öppna {url} \n2.Klistra in följande nyckel för att auktorisera ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. Öppna {url}\n2.Klistra in följande nyckel för att auktorisera ULM:\n\n```{code}```" } }, "options": { @@ -56,5 +56,15 @@ "ack": "Du måste bekräfta alla uttalande.", "gh_token": "Github Token inte inställt. Installera om denna integration för att gå igenom installationsproceduren. (Ingen anpassad konfiguration kommer att gå förlorad)" } + }, + "services": { + "reload": { + "name": "Reload", + "description": "Reload dashboard configuration for UI Lovelace Minimalist." + }, + "installed": { + "name": "Installed", + "description": "Change the installed key in global config for UI Lovelace Minimalist." + } } } diff --git a/custom_components/ui_lovelace_minimalist/translations/uk.json b/custom_components/ui_lovelace_minimalist/translations/uk.json index eeeeda065..ebd5c3d15 100644 --- a/custom_components/ui_lovelace_minimalist/translations/uk.json +++ b/custom_components/ui_lovelace_minimalist/translations/uk.json @@ -24,7 +24,7 @@ "reauth_successful": "Повторна автентифікація пройшла успішно." }, "progress": { - "wait_for_device": "1. Відкрите {url} \n2.Вставте цей ключ для авторизації ULM: \n```\n{code}\n```\n" + "wait_for_device": "1. Відкрите {url}\n2.Вставте цей ключ для авторизації ULM:\n\n```{code}```" } }, "options": { @@ -59,9 +59,11 @@ }, "services": { "reload": { + "name": "Reload", "description": "Перезавантажте конфігурацію Інформаційної панелі для UI Lovelace Minimalist." }, "installed": { + "name": "Installed", "description": "Змініть встановлений ключ у глобальних налаштуваннях для UI Lovelace Minimalist." } } diff --git a/custom_components/ui_lovelace_minimalist/translations/zh-CN.json b/custom_components/ui_lovelace_minimalist/translations/zh-CN.json index 25fdc9f08..347e4ac3f 100644 --- a/custom_components/ui_lovelace_minimalist/translations/zh-CN.json +++ b/custom_components/ui_lovelace_minimalist/translations/zh-CN.json @@ -24,7 +24,7 @@ "reauth_successful": "重新验证成功。" }, "progress": { - "wait_for_device": "1. 访问 {url} \n2. 粘贴以下密钥以授权本集成: \n```\n{code}\n```\n" + "wait_for_device": "1. 访问 {url}\n2. 粘贴以下密钥以授权本集成:\n\n```{code}```" } }, "options": { @@ -59,9 +59,11 @@ }, "services": { "reload": { + "name": "Reload", "description": "为 UI Lovelace Minimalist 重载仪表盘配置。" }, "installed": { + "name": "Installed", "description": "为 UI Lovelace Minimalist 更改全局配置中的已安装密钥." } } diff --git a/custom_components/ui_lovelace_minimalist/utils/decode.py b/custom_components/ui_lovelace_minimalist/utils/decode.py index 9d42516c0..708f22f1a 100644 --- a/custom_components/ui_lovelace_minimalist/utils/decode.py +++ b/custom_components/ui_lovelace_minimalist/utils/decode.py @@ -1,4 +1,5 @@ """Util to decode content from the github API.""" + from base64 import b64decode diff --git a/custom_components/ui_lovelace_minimalist/utils/logger.py b/custom_components/ui_lovelace_minimalist/utils/logger.py index 699d7f1fe..47a77c07e 100644 --- a/custom_components/ui_lovelace_minimalist/utils/logger.py +++ b/custom_components/ui_lovelace_minimalist/utils/logger.py @@ -1,4 +1,5 @@ """Custom logger for HACS.""" + import logging from ..const import PACKAGE_NAME diff --git a/docs/assets/img/custom_card_iAbadia_battery_chip.png b/docs/assets/img/custom_card_iAbadia_battery_chip.png new file mode 100644 index 000000000..89a9a910d Binary files /dev/null and b/docs/assets/img/custom_card_iAbadia_battery_chip.png differ diff --git a/docs/assets/img/custom_card_person_info_small_dark.png b/docs/assets/img/custom_card_person_info_small_dark.png new file mode 100644 index 000000000..36ec3c6a9 Binary files /dev/null and b/docs/assets/img/custom_card_person_info_small_dark.png differ diff --git a/docs/assets/img/custom_card_person_info_small_light.png b/docs/assets/img/custom_card_person_info_small_light.png new file mode 100644 index 000000000..aeabb5fc1 Binary files /dev/null and b/docs/assets/img/custom_card_person_info_small_light.png differ diff --git a/docs/setup/adaptive_dash.md b/docs/setup/adaptive_dash.md index 5c49f650c..767cd371c 100644 --- a/docs/setup/adaptive_dash.md +++ b/docs/setup/adaptive_dash.md @@ -3,7 +3,9 @@ title: Adaptive Dashboard hide: - toc --- + + ![Minimalist_adaptive_dashboard](../assets/img/setup/minimalist_adaptive_dash.gif) ## Add Adaptive Dashboard @@ -16,11 +18,11 @@ This dashboard automatically changes based on the device/screen size your are us This dashboard make extensive use of `state-switch` and `layout-card`. These are available through HACS or as manual install from Github. !!! warning "Warning" - For now the `state-switch` works only with version `v1.9.3` or below! +For now the `state-switch` works only with version `v1.9.3` or below! -| Additional lovelace resources | -| ----------------------------------------------------------------------- | -| [`layout-card`](https://github.com/thomasloven/lovelace-layout-card) | +| Additional lovelace resources | +| ---------------------------------------------------------------------- | +| [`layout-card`](https://github.com/thomasloven/lovelace-layout-card) | | [`state-switch`](https://github.com/thomasloven/lovelace-state-switch) | You need also configure an `input_select` with options for each popup_card and view you have configured. This `input_select` controls the cards showing on the right-side of the screen when in fullscreen mode. @@ -62,16 +64,16 @@ We have also added a folder with all the needed files to customizing your new da ```yaml config └── ui_lovelace_minimalist - ├── custom_cards - └── dashboard - └── ui-lovelace.yaml - └── adaptive-dash - └── adaptive-ui.yaml - └── popup - └── popup.yaml - └── views - └── livingroom.yaml - └── main.yaml +├── custom_cards +└── dashboard +└── ui-lovelace.yaml +└── adaptive-dash +└── adaptive-ui.yaml +└── popup +└── popup.yaml +└── views +└── livingroom.yaml +└── main.yaml ``` ## Customizing @@ -140,11 +142,11 @@ First you need to add the `input_select` you have created to the file. entity: input_select.minimalist_ui # put your input_select here ``` -We preconfigured multiple popups for different types of devices. In `popup.yaml` you only have to complete the information in the variables part. The `light 1`, `mediaplayer 1`, `livingroom` parts in the code refer to the options you have configuered in your `input_select`. Make sure they are spelled the same. ([see documentation on `state-switch`](https://github.com/thomasloven/lovelace-state-switch)) +We preconfigured multiple popups for different types of devices. In `popup.yaml` you only have to complete the information in the variables part. The `light 1`, `mediaplayer 1`, `livingroom` parts in the code refer to the options you have configured in your `input_select`. Make sure they are spelled the same. ([see documentation on `state-switch`](https://github.com/thomasloven/lovelace-state-switch)) !!! warning "Warning" - Only uncomment the options you have configured! - Else it could result in multiple errors in the dev-console of your browser. +Only uncomment the options you have configured! +Else it could result in multiple errors in the dev-console of your browser. Follow this part to add a card to an option of your `input_select`: To add a light popup to your first light card you just have to add the corresponding entity: diff --git a/docs/setup/custom_actions.md b/docs/setup/custom_actions.md index 33b34270b..da2a97053 100644 --- a/docs/setup/custom_actions.md +++ b/docs/setup/custom_actions.md @@ -3,7 +3,9 @@ title: Custom actions hide: - toc --- + + ## Customize tap, double-tap and hold actions This 'theme' do offer support for customizing actions. Tap, double-tap and hold on different parts (card, icon and name) of the cards could be changed. To achieve this customization follow the instructions on this page. @@ -25,19 +27,18 @@ ulm_custom_actions: ulm_name_tap_action: "more-info" ulm_name_hold_action: "toggle" ulm_name_double_tap_action: "popup" - ``` Possible values for each variables are : -| Value | Description | -|------------|---------------------------------------------------------------------------------------------------------------------------------| -| none | No action | -| toggle | Toggle an entity if available (for binary_sensor and sensor entity, `none` action is used) | -| more-info | Display more-info window | -| popup | Display UI LOVELACE MINIMALIST popup if available and enabled on card (if not `more-info` action is used) | -| adaptive | Switch UI LOVELACE MINIMALIST popup on adaptive dashboard
    if current dashboard is adaptive (if not `popup` action is used) | -| navigate | Navigate to an other UI LOVELACE MINIMALIST view. Need additional variable (see below) | +| Value | Description | +| --------- | ------------------------------------------------------------------------------------------------------------------------------ | +| none | No action | +| toggle | Toggle an entity if available (for binary_sensor and sensor entity, `none` action is used) | +| more-info | Display more-info window | +| popup | Display UI LOVELACE MINIMALIST popup if available and enabled on card (if not `more-info` action is used) | +| adaptive | Switch UI LOVELACE MINIMALIST popup on adaptive dashboard
    if current dashboard is adaptive (if not `popup` action is used) | +| navigate | Navigate to an other UI LOVELACE MINIMALIST view. Need additional variable (see below) | ## Haptic feedback @@ -60,8 +61,7 @@ ulm_custom_actions: ulm_name_double_tap_haptic: "none" ``` -Possible values for each variables (according to the underlying [button card]( -https://github.com/custom-cards/button-card)) are : +Possible values for each variables (according to the underlying [button card](https://github.com/custom-cards/button-card)) are : - `none` - `success` @@ -98,7 +98,6 @@ To define the path of `navigate` action, add one of the following depending on y variables: ulm_name_hold_action: "navigate" ulm_name_hold_navigate_path: "/adaptive-dash/Livingroom" - ``` ## Call service action @@ -130,7 +129,6 @@ tap action. ulm_name_tap_service: "light.toggle" ulm_name_tap_service_data: entity_id: light.light_livingroom_2 - ``` ## Overwrite custom actions @@ -145,7 +143,6 @@ For example, this code will overwrite the tap action on card with `more-info` ac variables: ulm_card_tap_action: "more-info" ulm_card_tap_haptic: "success" - ``` ## Custom Popups @@ -164,7 +161,7 @@ within the `ulm_custom_popup`. This `entity` variable is optional. It is also po custom popup it the `entity` variable within the `ulm_custom_popup is set to`none`. ```yaml -- type: 'custom:button-card' +- type: "custom:button-card" template: card_power_outlet entity: switch.power_outlet_livingroom variables: @@ -178,7 +175,6 @@ custom popup it the `entity` variable within the `ulm_custom_popup is set to`non ulm_popup_power_outlet_sensor2: sensor.power_outlet_livingroom_consumption ulm_popup_power_outlet_graph_sensor: sensor.power_outlet_livingroom ulm_popup_power_outlet_entity: switch.power_outlet_livingroom - ``` The available popup templates `popup_media_player_infos`, `popup_light_brightness`, `popup_thermostat_temperature` @@ -318,7 +314,6 @@ custom_card: ulm_name_double_tap_service: "[[[ return variables.ulm_name_double_tap_service; ]]]" ulm_name_double_tap_service_data: "[[[ return variables.ulm_name_double_tap_service_data]]]" ulm_custom_popup: "[[[ return variables.ulm_custom_popup; ]]]" - ``` !!! tip "For developes who have already implemented the custom actions on their card" @@ -354,10 +349,9 @@ The following code won't work on custom popup cards: ```yaml popup_weather_forecast: -... - variables: - ulm_weather_popup_surpress_first_forecast: false -... +--- +variables: + ulm_weather_popup_surpress_first_forecast: false ``` Instead of using the variables section of the card the variables must be checked within a JavaScript template. The following @@ -376,4 +370,4 @@ element: > ]]] ``` -The code checks if the variable is available before reading from the variabl and if the variable isn't available it will set a default value. +The code checks if the variable is available before reading from the variable and if the variable isn't available it will set a default value. diff --git a/docs/usage/cards/card_battery.md b/docs/usage/cards/card_battery.md index 662aa3444..3d4043d56 100644 --- a/docs/usage/cards/card_battery.md +++ b/docs/usage/cards/card_battery.md @@ -3,6 +3,7 @@ title: Battery Card hide: - toc --- + ## Description @@ -11,37 +12,37 @@ hide: Charging animation if `ulm_card_battery_charging_animation` is true: - +example-image The `battery-card` is a slightly enhanced `generic-card`, that can indicate whether and how a device is being charged and colors the icon based on the battery level. ## Variables -| Variable | Default | Required | Notes | -|----------|---------|------------------|-------------------| -| entity | | :material-check: | This is your battery entity | -| ulm_card_battery_name | `friendly_name` | :material-close: | Customize name | -| ulm_card_battery_attribute | | :material-close: | If your entity provides the battery percent in an attribute (= not as an own sensor), fill in the attribute's name here. E.g. if you have `sensor.livingroom_thermometer` and the attribute for your battery power is `sensor.livingroom_thermometer.attributes.battery_percent`, you fill in battery_percent here. | -| ulm_card_battery_battery_state_entity_id | | :material-close: | Entity that holds the battery state (charging/discharging). If provided, the Icon will display the current status. | -| ulm_card_battery_charger_type_entity_id | | :material-close: | Entity that holds the charger type (ac/wireless/none). This Entity replaces the need for the `ulm_card_battery_battery_state_entity_id` entity. If provided, the Icon will display the current charger type. This is only useful if you charge your devices Wireless and with cable. | -| ulm_card_battery_charging_animation | `false` | :material-close: | Weather to show charging animation or not. If set to `true`, `ulm_card_battery_battery_state_entity_id` needs to be defined and `ulm_card_battery_charger_type_entity_id` will be ignored. | -| ulm_card_battery_battery_level_danger | | :material-check: | Changes the color of the Icon, if the battery level falls below the provided value. Must be higher than `ulm_card_battery_battery_level_waring` | -| ulm_card_battery_battery_level_waring | | :material-check: | Changes the color of the Icon, if the battery level falls below the provided value. | -| ulm_card_battery_color_battery_level_danger | var(--google-red) | :material-close: | Color of icon if battery level is within the 'danger' zone. | -| ulm_card_battery_color_battery_level_warning | var(--google-yellow) | :material-close: | Color of icon if battery level is within the 'warning' zone. | -| ulm_card_battery_color_battery_level_ok | var(--google-green) | :material-close: | Color of icon if battery level is not within the 'danger' or 'warning' zone. | +| Variable | Default | Required | Notes | +| -------------------------------------------- | -------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| entity | | :material-check: | This is your battery entity | +| ulm_card_battery_name | `friendly_name` | :material-close: | Customize name | +| ulm_card_battery_attribute | | :material-close: | If your entity provides the battery percent in an attribute (= not as an own sensor), fill in the attribute's name here. E.g. if you have `sensor.livingroom_thermometer` and the attribute for your battery power is `sensor.livingroom_thermometer.attributes.battery_percent`, you fill in battery_percent here. | +| ulm_card_battery_battery_state_entity_id | | :material-close: | Entity that holds the battery state (charging/discharging). If provided, the Icon will display the current status. | +| ulm_card_battery_charger_type_entity_id | | :material-close: | Entity that holds the charger type (ac/wireless/none). This Entity replaces the need for the `ulm_card_battery_battery_state_entity_id` entity. If provided, the Icon will display the current charger type. This is only useful if you charge your devices Wireless and with cable. | +| ulm_card_battery_charging_animation | `false` | :material-close: | Weather to show charging animation or not. If set to `true`, `ulm_card_battery_battery_state_entity_id` needs to be defined and `ulm_card_battery_charger_type_entity_id` will be ignored. | +| ulm_card_battery_battery_level_danger | | :material-check: | Changes the color of the Icon, if the battery level falls below the provided value. Must be higher than `ulm_card_battery_battery_level_waring` | +| ulm_card_battery_battery_level_waring | | :material-check: | Changes the color of the Icon, if the battery level falls below the provided value. | +| ulm_card_battery_color_battery_level_danger | var(--google-red) | :material-close: | Color of icon if battery level is within the 'danger' zone. | +| ulm_card_battery_color_battery_level_warning | var(--google-yellow) | :material-close: | Color of icon if battery level is within the 'warning' zone. | +| ulm_card_battery_color_battery_level_ok | var(--google-green) | :material-close: | Color of icon if battery level is not within the 'danger' or 'warning' zone. | ## Usage ```yaml -- type: 'custom:button-card' +- type: "custom:button-card" template: card_battery entity: sensor.battery_level variables: - ulm_card_battery_charger_type_entity_id: sensor.battery_level - ulm_card_battery_battery_level_danger: 30 - ulm_card_battery_battery_level_warning: 80 - ulm_card_battery_name: Smartphone + ulm_card_battery_charger_type_entity_id: sensor.battery_level + ulm_card_battery_battery_level_danger: 30 + ulm_card_battery_battery_level_warning: 80 + ulm_card_battery_name: Smartphone ``` ??? note "Template Code" diff --git a/docs/usage/cards/card_binary_sensor.md b/docs/usage/cards/card_binary_sensor.md index 4079ee9be..3073d33c5 100644 --- a/docs/usage/cards/card_binary_sensor.md +++ b/docs/usage/cards/card_binary_sensor.md @@ -3,6 +3,7 @@ title: Binary Sensor Card hide: - toc --- + ## Description @@ -13,14 +14,14 @@ The `binary-sensor-card` is to show the state (on/off, open/close, etc.) of a bi ## Variables -| Variable | Default | Required | Notes | -|----------|---------|------------------|-------------------| -| entity | | :material-check: | | -| ulm_card_binary_sensor_show_last_changed | | :material-close: | `true` or `false` | -| ulm_card_binary_sensor_name | | :material-close: | Set custom Name | -| ulm_card_binary_sensor_icon | | :material-close: | Set custom Icon | -| ulm_card_binary_sensor_color | `blue` | :material-close: | Set Custom Color | | -| ulm_card_binary_sensor_force_background_color | `false` | :material-close: | Set `ulm_card_binary_sensor_color` as background color in active state ` | | +| Variable | Default | Required | Notes | +| --------------------------------------------- | ------- | ---------------- | ------------------------------------------------------------------------ | +| entity | | :material-check: | | +| ulm_card_binary_sensor_show_last_changed | | :material-close: | `true` or `false` | +| ulm_card_binary_sensor_name | | :material-close: | Set custom Name | +| ulm_card_binary_sensor_icon | | :material-close: | Set custom Icon | +| ulm_card_binary_sensor_color | `blue` | :material-close: | Set Custom Color | +| ulm_card_binary_sensor_force_background_color | `false` | :material-close: | Set `ulm_card_binary_sensor_color` as background color in active state ` | !!! Warning "⚠️ Breaking Change `v1.0.1`" @@ -41,7 +42,7 @@ The `binary-sensor-card` is to show the state (on/off, open/close, etc.) of a bi ## Usage ```yaml -- type: 'custom:button-card' +- type: "custom:button-card" template: card_binary_sensor variables: ulm_card_binary_sensor_alert: true diff --git a/docs/usage/cards/card_binary_sensor_alert.md b/docs/usage/cards/card_binary_sensor_alert.md index 302c5b39c..bac375d97 100644 --- a/docs/usage/cards/card_binary_sensor_alert.md +++ b/docs/usage/cards/card_binary_sensor_alert.md @@ -3,6 +3,7 @@ title: Binary Sensor Alert Card hide: - toc --- + ## Description @@ -13,15 +14,15 @@ The `binary-sensor-card` is to show the state (on/off, open/close, etc.) of a bi ## Variables -| Variable | Default | Required | Notes | -|----------|---------|------------------|-------------------| -| entity | | :material-check: | | -| ulm_card_binary_sensor_alert_show_last_changed | | :material-close: | `true` or `false` | -| ulm_card_binary_sensor_alert_name | | :material-close: | Set custom Name | -| ulm_card_binary_sensor_alert_icon | | :material-close: | Set custom Icon | -| ulm_icon_alert_invert_state | false | :material-close: | Invert the alert state logic so an alert is shown when the sensor is "off" | -| ulm_card_binary_sensor_alert_color | `blue` | :material-close: | Set Custom Color | | -| ulm_card_binary_sensor_alert_force_background_color | `false` | :material-close: | Set `ulm_card_binary_sensor_alert_color` as background color in active state ` | | +| Variable | Default | Required | Notes | +| --------------------------------------------------- | ------- | ---------------- | ------------------------------------------------------------------------------ | +| entity | | :material-check: | | +| ulm_card_binary_sensor_alert_show_last_changed | | :material-close: | `true` or `false` | +| ulm_card_binary_sensor_alert_name | | :material-close: | Set custom Name | +| ulm_card_binary_sensor_alert_icon | | :material-close: | Set custom Icon | +| ulm_icon_alert_invert_state | false | :material-close: | Invert the alert state logic so an alert is shown when the sensor is "off" | +| ulm_card_binary_sensor_alert_color | `blue` | :material-close: | Set Custom Color | +| ulm_card_binary_sensor_alert_force_background_color | `false` | :material-close: | Set `ulm_card_binary_sensor_alert_color` as background color in active state ` | !!! Warning "⚠️ Breaking Change `v1.0.1`" @@ -30,6 +31,7 @@ The `binary-sensor-card` is to show the state (on/off, open/close, etc.) of a bi variables: ulm_show_last_changed: true ``` + !!! Warning "⚠️ Breaking Change `v1.3.8`" `ulm_show_last_changed` is renamed to `ulm_card_binary_sensor_show_last_changed`: @@ -41,7 +43,7 @@ The `binary-sensor-card` is to show the state (on/off, open/close, etc.) of a bi ## Usage ```yaml -- type: 'custom:button-card' +- type: "custom:button-card" template: card_binary_sensor_alert variables: ulm_card_binary_sensor_alert: true diff --git a/docs/usage/cards/card_generic.md b/docs/usage/cards/card_generic.md index 9b187acb4..b057bcc80 100644 --- a/docs/usage/cards/card_generic.md +++ b/docs/usage/cards/card_generic.md @@ -3,6 +3,7 @@ title: Generic Card hide: - toc --- + ## Description @@ -13,18 +14,18 @@ This is the `generic-card` to display values from a sensor, eg. to show humidity ## Variables -| Variable | Default | Required | Notes | -|----------|---------|------------------|-------------------| -| entity | | :material-check: | | -| ulm_card_generic_name | | :material-close: | Set custom Name | -| ulm_card_generic_icon | | :material-close: | Set custom Icon | -| ulm_card_generic_color | `blue` | :material-close: | Set Custom Color | | -| ulm_card_generic_force_background_color | `false` | :material-close: | Set `ulm_card_generic_color` as background color in active state ` | | +| Variable | Default | Required | Notes | +| --------------------------------------- | ------- | ---------------- | ------------------------------------------------------------------ | +| entity | | :material-check: | | +| ulm_card_generic_name | | :material-close: | Set custom Name | +| ulm_card_generic_icon | | :material-close: | Set custom Icon | +| ulm_card_generic_color | `blue` | :material-close: | Set Custom Color | +| ulm_card_generic_force_background_color | `false` | :material-close: | Set `ulm_card_generic_color` as background color in active state ` | ## Usage ```yaml -- type: 'custom:button-card' +- type: "custom:button-card" template: card_generic entity: sensor.next_waste_collection ``` diff --git a/docs/usage/cards/card_generic_swap.md b/docs/usage/cards/card_generic_swap.md index 6aa1ff132..879809fba 100644 --- a/docs/usage/cards/card_generic_swap.md +++ b/docs/usage/cards/card_generic_swap.md @@ -3,6 +3,7 @@ title: Generic Swap Card hide: - toc --- + ## Description @@ -13,18 +14,18 @@ This is a `generic-card` with swapped label and name. ## Variables -| Variable | Default | Required | Notes | -|----------|---------|------------------|-------------------| -| entity | | :material-check: | | -| ulm_card_generic_swap_name | | :material-close: | Set custom Name | -| ulm_card_generic_swap_icon | | :material-close: | Set custom Icon | -| ulm_card_generic_swap_color | `blue` | :material-close: | Set Custom Color | | -| ulm_card_generic_swap_force_background_color | `false` | :material-close: | Set `ulm_card_generic_swap_color` as background color in active state ` | | +| Variable | Default | Required | Notes | +| -------------------------------------------- | ------- | ---------------- | ----------------------------------------------------------------------- | +| entity | | :material-check: | | +| ulm_card_generic_swap_name | | :material-close: | Set custom Name | +| ulm_card_generic_swap_icon | | :material-close: | Set custom Icon | +| ulm_card_generic_swap_color | `blue` | :material-close: | Set Custom Color | +| ulm_card_generic_swap_force_background_color | `false` | :material-close: | Set `ulm_card_generic_swap_color` as background color in active state ` | ## Usage ```yaml -- type: 'custom:button-card' +- type: "custom:button-card" template: card_generic_swap entity: sensor.next_waste_collection ``` diff --git a/docs/usage/cards/card_graph.md b/docs/usage/cards/card_graph.md index c213e8f53..8c7673a9a 100644 --- a/docs/usage/cards/card_graph.md +++ b/docs/usage/cards/card_graph.md @@ -3,47 +3,48 @@ title: Graph Card hide: - toc --- + ## Description ![example-image](../../assets/img/ulm_cards/card_graph.png){ width="500" } -The `card_graph` shows an entity with the actual state and a *min-graph-card* integrated. This can be used for a thermostat to show the actual temperature and the history. It now supports dual graphs as well as bar style graphs. +The `card_graph` shows an entity with the actual state and a _min-graph-card_ integrated. This can be used for a thermostat to show the actual temperature and the history. It now supports dual graphs as well as bar style graphs. ## Variables -| Variable | Default | Required | Notes | -|----------|---------|------------------|-------------------| -| entity | | :material-check: | Your entity_id for the temperature sensor | -| ulm_card_graph_color | | :material-close: | This is to adjust your color value. Use a CSS variable from HA or set a color value (eg. #FFFFFF) | -| ulm_card_graph_name | | :material-close: | Set graph name | -| ulm_card_graph_icon | | :material-close: | Set custom icon | -| ulm_card_graph_entity | | :material-check: | Your entity_id for the temperature sensor | -| ulm_card_graph_entity2 | | :material-close: | Your entity_id for the second temperature sensor | -| ulm_card_graph_color2 | | :material-close: | This is to adjust your color value of the second graph. Use a CSS variable from HA or set a color value (eg. #FFFFFF) | -| ulm_card_graph_type | fill | :material-close: | This is to change the appearance of the graph. Default is fill, but line, bar are valid options. | -| ulm_card_graph_hours | 24 | :material-close: | How much time should the graph cover, default is 24 hours. | -| ulm_card_graph_points | 0.5 | :material-close: | Specify amount of data points the graph should display for each hour. A larger number results in a more detailed graph. | -| ulm_card_graph_group_by | interval | :material-close: | Specify type of grouping of data, dynamic interval, date or hour. | -| ulm_card_graph_line_width | 5 | :material-close: | Set the thickness of the line. | +| Variable | Default | Required | Notes | +| ------------------------- | -------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------- | +| entity | | :material-check: | Your entity_id for the temperature sensor | +| ulm_card_graph_color | | :material-close: | This is to adjust your color value. Use a CSS variable from HA or set a color value (eg. #FFFFFF) | +| ulm_card_graph_name | | :material-close: | Set graph name | +| ulm_card_graph_icon | | :material-close: | Set custom icon | +| ulm_card_graph_entity | | :material-check: | Your entity_id for the temperature sensor | +| ulm_card_graph_entity2 | | :material-close: | Your entity_id for the second temperature sensor | +| ulm_card_graph_color2 | | :material-close: | This is to adjust your color value of the second graph. Use a CSS variable from HA or set a color value (eg. #FFFFFF) | +| ulm_card_graph_type | fill | :material-close: | This is to change the appearance of the graph. Default is fill, but line, bar are valid options. | +| ulm_card_graph_hours | 24 | :material-close: | How much time should the graph cover, default is 24 hours. | +| ulm_card_graph_points | 0.5 | :material-close: | Specify amount of data points the graph should display for each hour. A larger number results in a more detailed graph. | +| ulm_card_graph_group_by | interval | :material-close: | Specify type of grouping of data, dynamic interval, date or hour. | +| ulm_card_graph_line_width | 5 | :material-close: | Set the thickness of the line. | ## Usage ```yaml - - type: 'custom:button-card' - template: card_graph - entity: sensor.livingroom_temperature - variables: - ulm_card_graph_color: "var(--google-blue)" - ulm_card_graph_name: Temperature Livingroom - ulm_card_graph_entity: sensor.livingroom_temperature - ulm_card_graph_color2: "var(--google-green)" - ulm_card_graph_entity2: sensor.bedgroom_temperature - ulm_card_graph_type: fill - ulm_card_graph_hours: 24 - ulm_card_graph_group_by: interval - ulm_card_graph_line_width: 5 +- type: "custom:button-card" + template: card_graph + entity: sensor.livingroom_temperature + variables: + ulm_card_graph_color: "var(--google-blue)" + ulm_card_graph_name: Temperature Livingroom + ulm_card_graph_entity: sensor.livingroom_temperature + ulm_card_graph_color2: "var(--google-green)" + ulm_card_graph_entity2: sensor.bedroom_temperature + ulm_card_graph_type: fill + ulm_card_graph_hours: 24 + ulm_card_graph_group_by: interval + ulm_card_graph_line_width: 5 ``` ??? note "Template Code" diff --git a/docs/usage/cards/card_input_boolean.md b/docs/usage/cards/card_input_boolean.md index 2f9d51565..16110d903 100644 --- a/docs/usage/cards/card_input_boolean.md +++ b/docs/usage/cards/card_input_boolean.md @@ -3,6 +3,7 @@ title: Input_boolean Card hide: - toc --- + ## Description @@ -13,18 +14,18 @@ The `input-boolean-card` is to switch an `input_boolean` on or off. ## Variables -| Variable | Default | Required | Notes | -|----------|---------|------------------|-------------------| -| entity | | :material-check: | | -| ulm_card_input_boolean_name | | :material-close: | Set custom Name | -| ulm_card_input_boolean_icon | | :material-close: | Set custom Icon | -| ulm_card_input_boolean_color | `blue` | :material-close: | Set Custom Color | | -| ulm_card_input_boolean_force_background_color | `false` | :material-close: | Set `ulm_card_input_boolean_color` as background color in active state ` | | +| Variable | Default | Required | Notes | +| --------------------------------------------- | ------- | ---------------- | ------------------------------------------------------------------------ | +| entity | | :material-check: | | +| ulm_card_input_boolean_name | | :material-close: | Set custom Name | +| ulm_card_input_boolean_icon | | :material-close: | Set custom Icon | +| ulm_card_input_boolean_color | `blue` | :material-close: | Set Custom Color | +| ulm_card_input_boolean_force_background_color | `false` | :material-close: | Set `ulm_card_input_boolean_color` as background color in active state ` | ## Usage ```yaml -- type: 'custom:button-card' +- type: "custom:button-card" template: card_input_boolean entity: input_boolean.guest_mode variables: diff --git a/docs/usage/cards/card_light.md b/docs/usage/cards/card_light.md index ad44ce507..8a965c746 100644 --- a/docs/usage/cards/card_light.md +++ b/docs/usage/cards/card_light.md @@ -33,25 +33,25 @@ To use `popup_light` you need to set the variable `ulm_card_light_enable_popup` ## Variables -| Variable/Entity | Default | Required | Notes | Requirement | -| ------------------------------------- | --------------- | ---------------- | ------------------------------------------------------ | --------------------------------------------- | -| entity | | :material-check: | Your HA entity | | -| ulm_card_light_name | `friendly_name` | :material-close: | Customize name | | -| ulm_card_light_icon | `mdi:lightbulb` | :material-close: | Customize icon | | -| ulm_card_light_enable_slider | `false` | :material-close: | Enable slider | | -| ulm_card_light_enable_slider_minSet | `0` | :material-close: | Minimum brightness value user can select in the slider | Need `ulm_card_light_enable_slider: true` | -| ulm_card_light_enable_slider_maxSet | `100` | :material-close: | Maximum brightness value user can select in the slider | Need `ulm_card_light_enable_slider: true` | -| ulm_card_light_enable_collapse | `false` | :material-close: | Collapse slider when off | Need `ulm_card_light_enable_slider: true` | -| ulm_card_light_enable_horizontal | `false` | :material-close: | Enable horizontal card | | -| ulm_card_light_enable_horizontal_wide | `false` | :material-close: | Wider slider | Need `ulm_card_light_enable_horizontal: true` | -| ulm_card_light_color | `yellow` | :material-close: | Set a manual color from the theme for icon, slider and background | | -| ulm_card_light_enable_color | `false` | :material-close: | Enable icon and label light color from the light itself. | Overrides `ulm_card_light_color` | -| ulm_card_light_force_background_color | `false` | :material-close: | Force background light color even in light theme | | -| ulm_card_light_enable_popup | `false` | :material-close: | Enable `popup_light` | | -| ulm_card_light_enable_popup_tap | `false` | :material-close: | Enable `popup_light` on simple icon tap | | -| ulm_card_light_color_palette | | :material-close: | Add `select` entity to control color palette | | -| ulm_card_light_enable_buttons | `false` | :material-close: | Enable Preset Brightness Buttons | -| ulm_card_light_brightness_low/med/high | | :material-close: | Override the Brightness defaults for Buttons - Percentages | +| Variable/Entity | Default | Required | Notes | Requirement | +| ----------------------------------------- | --------------- | ---------------- | ----------------------------------------------------------------- | --------------------------------------------- | +| entity | | :material-check: | Your HA entity | | +| ulm_card_light_name | `friendly_name` | :material-close: | Customize name | | +| ulm_card_light_icon | `mdi:lightbulb` | :material-close: | Customize icon | | +| ulm_card_light_enable_slider | `false` | :material-close: | Enable slider | | +| ulm_card_light_enable_slider_minSet | `0` | :material-close: | Minimum brightness value user can select in the slider | Need `ulm_card_light_enable_slider: true` | +| ulm_card_light_enable_slider_maxSet | `100` | :material-close: | Maximum brightness value user can select in the slider | Need `ulm_card_light_enable_slider: true` | +| ulm_card_light_enable_collapse | `false` | :material-close: | Collapse slider when off | Need `ulm_card_light_enable_slider: true` | +| ulm_card_light_enable_horizontal | `false` | :material-close: | Enable horizontal card | | +| ulm_card_light_enable_horizontal_wide | `false` | :material-close: | Wider slider | Need `ulm_card_light_enable_horizontal: true` | +| ulm_card_light_color | `yellow` | :material-close: | Set a manual color from the theme for icon, slider and background | | +| ulm_card_light_enable_color | `false` | :material-close: | Enable icon and label light color from the light itself. | Overrides `ulm_card_light_color` | +| ulm_card_light_force_background_color | `false` | :material-close: | Force background light color even in light theme | | +| ulm_card_light_enable_popup | `false` | :material-close: | Enable `popup_light` | | +| ulm_card_light_enable_popup_tap | `false` | :material-close: | Enable `popup_light` on simple icon tap | | +| ulm_card_light_color_palette | | :material-close: | Add `select` entity to control color palette | | +| ulm_card_light_enable_buttons | `false` | :material-close: | Enable Preset Brightness Buttons | | +| ulm_card_light_brightness_low/medium/high | | :material-close: | Override the Brightness defaults for Buttons - Percentages | | ## Usage diff --git a/docs/usage/cards/card_media_player.md b/docs/usage/cards/card_media_player.md index e8366d651..6a152fdc5 100644 --- a/docs/usage/cards/card_media_player.md +++ b/docs/usage/cards/card_media_player.md @@ -15,31 +15,30 @@ hide: ![example-image](../../assets/img/ulm_cards/card_media_player_art_controls.png){ width="500" } ![example-image](../../assets/img/ulm_cards/card_media_player_volume_slider.png){ width="500" } - The `card_media_player` shows you the _app_, the _title_ and the _album name_ playing, if the data is available through HA. The _app_ is shown via a different icon. +The `card_media_player` shows you the _app_, the _title_ and the _album name_ playing, if the data is available through HA. The _app_ is shown via a different icon. ## Variables -| Variable | Default | Required | Notes | -| -------------------------------------------- | ------- | ---------------- | ----------------------------------------------- | -| entity | | :material-check: | The media-player entity | -| ulm_card_media_player_name | | | Name to display for your media-player | -| ulm_card_media_player_icon | | | Change the icon displayed | -| ulm_card_media_player_enable_art | false | | Enable album picture on background | -| ulm_card_media_player_enable_controls | false | | Enable controls below the title | -| ulm_card_media_player_enable_volume_slider | false | | Enable volume slider below controls | -| ulm_card_media_player_enable_volume_buttons | false | | Enable volume buttons below controls | -| ulm_card_media_player_enable_volume_adjust | 5 | | Volume Adjust Amount - if not set then 1 for TV and 5 for Speaker | -| ulm_card_media_player_collapsible | false | | Controls are collapsible when state is off | -| ulm_card_media_player_idle_off | false | | If true "idle" states will count as "off" for collapse | -| ulm_card_media_player_player_controls_entity | entity | | Change the controlled entity | -| ulm_card_media_player_enable_popup | false | | Enable pop-up | -| ulm_card_media_player_more_info | false | | Displays artist and album info in the sub-label | -| ulm_card_media_player_power_button | false | | Show power button | -| ulm_card_media_player_color | `blue` | :material-close: | Set Custom Color | | -| ulm_card_media_player_force_background_color | `false` | :material-close: | Set `ulm_card_media_player_color` as background color in active state ` | | +| Variable | Default | Required | Notes | +| -------------------------------------------- | ------- | ---------------- | ----------------------------------------------------------------------- | +| entity | | :material-check: | The media-player entity | +| ulm_card_media_player_name | | | Name to display for your media-player | +| ulm_card_media_player_icon | | | Change the icon displayed | +| ulm_card_media_player_enable_art | false | | Enable album picture on background | +| ulm_card_media_player_enable_controls | false | | Enable controls below the title | +| ulm_card_media_player_enable_volume_slider | false | | Enable volume slider below controls | +| ulm_card_media_player_enable_volume_buttons | false | | Enable volume buttons below controls | +| ulm_card_media_player_enable_volume_adjust | 5 | | Volume Adjust Amount - if not set then 1 for TV and 5 for Speaker | +| ulm_card_media_player_collapsible | false | | Controls are collapsible when state is off | +| ulm_card_media_player_player_controls_entity | entity | | Change the controlled entity | +| ulm_card_media_player_enable_popup | false | | Enable pop-up | +| ulm_card_media_player_more_info | false | | Displays artist and album info in the sub-label | +| ulm_card_media_player_power_button | false | | Show power button | +| ulm_card_media_player_color | `blue` | :material-close: | Set Custom Color | +| ulm_card_media_player_force_background_color | `false` | :material-close: | Set `ulm_card_media_player_color` as background color in active state ` | !!! note - To use `popup_media_player` you need to set the variable `ulm_card_media_player_enable_popup` to `true`. This is a different approach as the other `popup_cards` use. +To use `popup_media_player` you need to set the variable `ulm_card_media_player_enable_popup` to `true`. This is a different approach as the other `popup_cards` use. ## Usage @@ -48,7 +47,7 @@ hide: template: card_media_player entity: media_player.livingroom_shield variables: - ulm_card_media_player_name : Livingroom Nvidia Shield + ulm_card_media_player_name: Livingroom Nvidia Shield ``` ??? note "Template Code" diff --git a/docs/usage/cards/card_power_outlet.md b/docs/usage/cards/card_power_outlet.md index da3a8c795..3cab9af2f 100644 --- a/docs/usage/cards/card_power_outlet.md +++ b/docs/usage/cards/card_power_outlet.md @@ -3,6 +3,7 @@ title: Power Outlet Card hide: - toc --- + ## Description @@ -13,19 +14,19 @@ This is the `power-outlet-card`. It shows you the state of a power outlet, and i ## Variables -| Variable | Default | Required | Notes | -|----------|---------|------------------|-------------------| -| entity | | :material-check: | | -| ulm_card_power_outlet_name | | :material-close: | Set custom Name | -| ulm_card_power_outlet_icon | | :material-close: | Set custom Icon | -|ulm_card_power_outlet_consumption_sensor| | :material-close: | If you set this sensor, the `power-outlet-card` shows the energy consumption next to the state. | -| ulm_card_power_outlet_color | `yellow` | :material-close: | Set Custom Color | | -| ulm_card_power_outlet_force_background_color | `false` | :material-close: | Set `ulm_card_power_outlet_color` as background color in active state ` | | +| Variable | Default | Required | Notes | +| -------------------------------------------- | -------- | ---------------- | ----------------------------------------------------------------------------------------------- | +| entity | | :material-check: | | +| ulm_card_power_outlet_name | | :material-close: | Set custom Name | +| ulm_card_power_outlet_icon | | :material-close: | Set custom Icon | +| ulm_card_power_outlet_consumption_sensor | | :material-close: | If you set this sensor, the `power-outlet-card` shows the energy consumption next to the state. | +| ulm_card_power_outlet_color | `yellow` | :material-close: | Set Custom Color | +| ulm_card_power_outlet_force_background_color | `false` | :material-close: | Set `ulm_card_power_outlet_color` as background color in active state ` | ## Usage ```yaml -- type: 'custom:button-card' +- type: "custom:button-card" template: card_power_outlet variables: ulm_card_power_outlet_consumption_sensor: sensor.power_outlet_livingroom_consumption diff --git a/docs/usage/cards/card_room.md b/docs/usage/cards/card_room.md index b6eea51a8..97b494a8f 100644 --- a/docs/usage/cards/card_room.md +++ b/docs/usage/cards/card_room.md @@ -3,6 +3,7 @@ title: Room Card hide: - toc --- + ## Description @@ -14,79 +15,79 @@ The card has support for up to 4 subicons at the right side of the card. These c ## Variables -| Variable | Default | Required | Notes | Requirement | -|----------------------------------------|-----------------|------------------|----------------|-------------| -| label_use_temperature | `true` | :material-close: | Define whether the label should show the current room temperature
    The temperature should be provide by either a `temperature` or `current_temperature` attribute or by the entity state | -| label_use_brightness | `false` | :material-close: | Define whether the label should show the current room brightness of the lights
    Requires `label_use_temperature` to be false | -| entity_1 | | :material-close: | a `room_entity` object (see below) | | -| entity_2 | | :material-close: | a `room_entity` object (see below) | | -| entity_3 | | :material-close: | a `room_entity` object (see below) | | -| entity_4 | | :material-close: | a `room_entity` object (see below) | | +| Variable | Default | Required | Notes | Requirement | +| --------------------- | ------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | +| label_use_temperature | `true` | :material-close: | Define whether the label should show the current room temperature
    The temperature should be provide by either a `temperature` or `current_temperature` attribute or by the entity state | | +| label_use_brightness | `false` | :material-close: | Define whether the label should show the current room brightness of the lights
    Requires `label_use_temperature` to be false | | +| entity_1 | | :material-close: | a `room_entity` object (see below) | | +| entity_2 | | :material-close: | a `room_entity` object (see below) | | +| entity_3 | | :material-close: | a `room_entity` object (see below) | | +| entity_4 | | :material-close: | a `room_entity` object (see below) | | ## Room entity -| Variable | Default | Required | Notes | Requirement | -|----------------------------------------|-----------------|------------------|----------------|-------------| -| entity_id | | :material-close: | The entity_id of the status icon | | -| templates | | :material-close: | List of the additional button card templates to apply to this icon | | -| tap_action | | :material-close: | tap_action for the icon (see button card documentation for options) | | -| hold_action | | :material-close: | tap_action for the icon (see button card documentation for options) | | +| Variable | Default | Required | Notes | Requirement | +| ----------- | ------- | ---------------- | ------------------------------------------------------------------- | ----------- | +| entity_id | | :material-close: | The entity_id of the status icon | | +| templates | | :material-close: | List of the additional button card templates to apply to this icon | | +| tap_action | | :material-close: | tap_action for the icon (see button card documentation for options) | | +| hold_action | | :material-close: | tap_action for the icon (see button card documentation for options) | | ## Default card options All the options from the button card are still available for the large room card. If you want to tweak this card a little bit more, below are some examples. The full list can be found here: [link](https://github.com/custom-cards/button-card#main-options) -| Options | Default | Required | Notes | Requirement | -|----------------------------------------|-----------------|------------------|----------------|-------------| -| entity | | :material-close: | The entity_id for the large card | | -| icon | | :material-close: | Icon to display. Defaults to the entity icon | | -| tap_action | | :material-close: | Define the type of action on click, if undefined, toggle will be used.
    See [Action](https://github.com/custom-cards/button-card#Action)| | -| hold_action | | :material-close: | Define the type of action on hold, if undefined, nothing happens
    See [Action](https://github.com/custom-cards/button-card#Action)| | -| label | | :material-close: | Change the label text | | -| title | | :material-close: | Change the title text | | +| Options | Default | Required | Notes | Requirement | +| ----------- | ------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | +| entity | | :material-close: | The entity_id for the large card | | +| icon | | :material-close: | Icon to display. Defaults to the entity icon | | +| tap_action | | :material-close: | Define the type of action on click, if undefined, toggle will be used.
    See [Action](https://github.com/custom-cards/button-card#Action) | | +| hold_action | | :material-close: | Define the type of action on hold, if undefined, nothing happens
    See [Action](https://github.com/custom-cards/button-card#Action) | | +| label | | :material-close: | Change the label text | | +| title | | :material-close: | Change the title text | | ## Usage ```yaml - - type: 'custom:button-card' - template: - - card_room - - red_no_state - name: Bathroom - entity: light.bathroom - icon: mdi:shower-head - tap_action: - action: navigate - navigation_path: '/ui-lovelace-minimalist/bathroom' - variables: - label_use_temperature: false - label_use_brightness: true - entity_1: - entity_id: light.bathroom - templates: - - yellow_on - tap_action: - action: toggle - entity_2: - entity_id: binary_sensor.badkamer_motion_sensor - templates: - - blue_on - tap_action: - action: none - entity_3: - entity_id: input_boolean.badkamer_motionsensor_enabled - templates: - - green_on - - red_off - tap_action: - action: toggle - entity_4: - entity_id: input_boolean.bath_mode - templates: - - pink_on - tap_action: - action: toggle +- type: "custom:button-card" + template: + - card_room + - red_no_state + name: Bathroom + entity: light.bathroom + icon: mdi:shower-head + tap_action: + action: navigate + navigation_path: "/ui-lovelace-minimalist/bathroom" + variables: + label_use_temperature: false + label_use_brightness: true + entity_1: + entity_id: light.bathroom + templates: + - yellow_on + tap_action: + action: toggle + entity_2: + entity_id: binary_sensor.badkamer_motion_sensor + templates: + - blue_on + tap_action: + action: none + entity_3: + entity_id: input_boolean.badkamer_motionsensor_enabled + templates: + - green_on + - red_off + tap_action: + action: toggle + entity_4: + entity_id: input_boolean.bath_mode + templates: + - pink_on + tap_action: + action: toggle ``` ??? note "Template Code" diff --git a/docs/usage/cards/card_scenes.md b/docs/usage/cards/card_scenes.md index 2eff76083..c428a481e 100644 --- a/docs/usage/cards/card_scenes.md +++ b/docs/usage/cards/card_scenes.md @@ -3,6 +3,7 @@ title: Scenes Card hide: - toc --- + ## Description @@ -13,32 +14,32 @@ This card is part of the Welcome Scenes card and can be used separately to only ## Variables -| Variable | Default | Required | Notes | -|----------|---------|------------------|-------------------| -| entity_1 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities | -| entity_2 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities| -| entity_3 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities| -| entity_4 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities| -| entity_5 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities| -| entity_6 | none | :material-close: | Can be any common type of entity | -| entity_7 | none | :material-close: | Can be any common type of entity | +| Variable | Default | Required | Notes | +| -------- | ------------- | ---------------- | ----------------------------------------------------------------------------------------- | +| entity_1 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities | +| entity_2 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities | +| entity_3 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities | +| entity_4 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities | +| entity_5 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities | +| entity_6 | none | :material-close: | Can be any common type of entity | +| entity_7 | none | :material-close: | Can be any common type of entity | ## Entity Variables -| Variable | Default | Required | Notes | -|----------|---------|------------------|-------------------| -| _entity_id | | :material-close: | Support almost all types of entities
    Scenes do always show as off | -| _icon | | :material-close: | The icon to show | -| _name | | :material-close: | The name to show| -| _color | Random | :material-close: | Color of the icon
    Can choose between: `blue`, `red`, `green`, `yellow`, `pink`, `purple`
    If not specified, it will take a random color | -| _state | `on` or `playing` | :material-close: | Define `input_select` state or give manual state for pill to be full | -| _nav_path | | :material-close: | Navigate to another view
    *Overrides other types of actions* +| Variable | Default | Required | Notes | +| ----------- | ----------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| \_entity_id | | :material-close: | Support almost all types of entities
    Scenes do always show as off | +| \_icon | | :material-close: | The icon to show | +| \_name | | :material-close: | The name to show | +| \_color | Random | :material-close: | Color of the icon
    Can choose between: `blue`, `red`, `green`, `yellow`, `pink`, `purple`
    If not specified, it will take a random color | +| \_state | `on` or `playing` | :material-close: | Define `input_select` state or give manual state for pill to be full | +| \_nav_path | | :material-close: | Navigate to another view
    _Overrides other types of actions_ | ## Usage !!! note "" - You can set 1 to 7 entities to show 1 to 7 pills dynamically
    - If set none it uses `auto-entities` with max 5 pills +You can set 1 to 7 entities to show 1 to 7 pills dynamically
    +If set none it uses `auto-entities` with max 5 pills ```yaml - type: "custom:button-card" diff --git a/docs/usage/cards/card_vacuum.md b/docs/usage/cards/card_vacuum.md index 415f24e8e..738e7e8d8 100644 --- a/docs/usage/cards/card_vacuum.md +++ b/docs/usage/cards/card_vacuum.md @@ -3,6 +3,7 @@ title: Vacuum Card hide: - toc --- + ## Description @@ -15,18 +16,18 @@ This is a card to control your Robot-vacuum. It has support for all vacuums whic ## Variables -| Variable | Default | Required | Notes | -|----------|---------|------------------|-------------------| -| entity | `vacuum.*` | :material-check: | | -|`ulm_card_vacuum_name`| | :material-close: | Add a custom name | -|`ulm_card_vacuum_icon`| | :material-close: | Add a custom MDI icon | -|`ulm_card_vacuum_label`| | :material-close: | Add a custom label | -|`ulm_card_vacuum_room`| | :material-close: | Add a script to clean a specific room | -|`ulm_card_vacuum_room_icon`| | :material-close: | Add custom icon to the room script | -|`ulm_card_vacuum_camera`| | :material-close: | Add a camera entity to the card to show the vacuum map | -|`ulm_card_vacuum_camera_toggle`| | :material-close: | Only show the camera entity while cleaning | -| ulm_card_vacuum_color | state based | :material-close: | Set Custom Color | | -| ulm_card_vacuum_force_background_color | `false` | :material-close: | Set `ulm_card_vacuum_color` as background color in active state ` | | +| Variable | Default | Required | Notes | +| -------------------------------------- | ----------- | ---------------- | ----------------------------------------------------------------- | +| entity | `vacuum.*` | :material-check: | | +| `ulm_card_vacuum_name` | | :material-close: | Add a custom name | +| `ulm_card_vacuum_icon` | | :material-close: | Add a custom MDI icon | +| `ulm_card_vacuum_label` | | :material-close: | Add a custom label | +| `ulm_card_vacuum_room` | | :material-close: | Add a script to clean a specific room | +| `ulm_card_vacuum_room_icon` | | :material-close: | Add custom icon to the room script | +| `ulm_card_vacuum_camera` | | :material-close: | Add a camera entity to the card to show the vacuum map | +| `ulm_card_vacuum_camera_toggle` | | :material-close: | Only show the camera entity while cleaning | +| ulm_card_vacuum_color | state based | :material-close: | Set Custom Color | +| ulm_card_vacuum_force_background_color | `false` | :material-close: | Set `ulm_card_vacuum_color` as background color in active state ` | ## Usage diff --git a/docs/usage/cards/card_welcome_scenes.md b/docs/usage/cards/card_welcome_scenes.md index 196683236..c1fe9d143 100644 --- a/docs/usage/cards/card_welcome_scenes.md +++ b/docs/usage/cards/card_welcome_scenes.md @@ -3,6 +3,7 @@ title: Welcome Scenes Card hide: - toc --- + ## Description @@ -13,45 +14,45 @@ This is a card which shows the basic needs for your dashboard. This card can gen ## Variables -| Variable | Default | Required | Notes | -|----------|---------|------------------|-------------------| -| ulm_card_welcome_scenes_collapse | | :material-close: | Enables the collapse function.
    requires an `input_boolean` to track the state| -| ulm_weather | | :material-check: | This is your weather provider.
    Example: `weather.your_provider`| -| ulm_language | Language of your system | :material-close: | You can set a different format with the [BCP-47 language tags](https://www.techonthenet.com/js/language_tags.php)
    Example: `"en-US"` or just `"en"`| -| entity_1 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities | -| entity_2 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities| -| entity_3 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities| -| entity_4 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities| -| entity_5 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities| -| entity_6 | none | :material-close: | Can be any common type of entity | -| entity_7 | none | :material-close: | Can be any common type of entity | +| Variable | Default | Required | Notes | +| -------------------------------- | ----------------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ulm_card_welcome_scenes_collapse | | :material-close: | Enables the collapse function.
    requires an `input_boolean` to track the state | +| ulm_weather | | :material-check: | This is your weather provider.
    Example: `weather.your_provider` | +| ulm_language | Language of your system | :material-close: | You can set a different format with the [BCP-47 language tags](https://www.techonthenet.com/js/language_tags.php)
    Example: `"en-US"` or just `"en"` | +| entity_1 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities | +| entity_2 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities | +| entity_3 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities | +| entity_4 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities | +| entity_5 | auto-entities | :material-close: | Can be any common type of entity
    if no entity is specified defaults to auto-entities | +| entity_6 | none | :material-close: | Can be any common type of entity | +| entity_7 | none | :material-close: | Can be any common type of entity | ## Entity Variables -| Variable | Default | Required | Notes | -|----------|---------|------------------|-------------------| -| _entity_id | | :material-close: | Support almost all types of entities
    Scenes do always show as off | -| _icon | | :material-close: | The icon to show | -| _name | | :material-close: | The name to show| -| _color | Random | :material-close: | Color of the icon
    Can choose between: `blue`, `red`, `green`, `yellow`, `pink`, `purple`
    If not specified, it will take a random color | -| _state | `on` or `playing` | :material-close: | Define `input_select` state or give manual state for pill to be full | -| _nav_path | | :material-close: | Navigate to another view
    *Overrides other types of actions* -| _service_data | | :material-close: | Data to be passed through to data_service. Useful for running scripts with custom fields/parameters +| Variable | Default | Required | Notes | +| -------------- | ----------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| \_entity_id | | :material-close: | Support almost all types of entities
    Scenes do always show as off | +| \_icon | | :material-close: | The icon to show | +| \_name | | :material-close: | The name to show | +| \_color | Random | :material-close: | Color of the icon
    Can choose between: `blue`, `red`, `green`, `yellow`, `pink`, `purple`
    If not specified, it will take a random color | +| \_state | `on` or `playing` | :material-close: | Define `input_select` state or give manual state for pill to be full | +| \_nav_path | | :material-close: | Navigate to another view
    _Overrides other types of actions_ | +| \_service_data | | :material-close: | Data to be passed through to data_service. Useful for running scripts with custom fields/parameters | ## Requirement Collapse Function !!! note "" - This feature is fully optional. It requires some more manual configuration! +This feature is fully optional. It requires some more manual configuration! You need to create a `input_boolean` in HA to track the state. See [Docs](https://www.home-assistant.io/integrations/input_boolean/). Furthermore, you need to add the `input_boolean` to the variable `ulm_card_welcome_scenes_collapse` **and** to either the `entity` or `triggers_update` to make sure it directly refreshes the state. !!! warning - Do not use `triggers_update: "all"`! This will lead to unwanted behavior with the random colors generator. +Do not use `triggers_update: "all"`! This will lead to unwanted behavior with the random colors generator. ## Usage !!! note "" - You can set 1 to 7 entities to show 1 to 7 pills dynamically
    - If set none it uses `auto-entities` with max 5 pills +You can set 1 to 7 entities to show 1 to 7 pills dynamically
    +If set none it uses `auto-entities` with max 5 pills ```yaml - type: "custom:button-card" diff --git a/docs/usage/chips/chip_mdi_icon_state.md b/docs/usage/chips/chip_mdi_icon_state.md index 0aae91388..662f23478 100644 --- a/docs/usage/chips/chip_mdi_icon_state.md +++ b/docs/usage/chips/chip_mdi_icon_state.md @@ -3,6 +3,7 @@ title: Mdi:icon State Chip hide: - toc --- + ## Description @@ -13,12 +14,12 @@ This `chip` displays an icon using [mdi](https://materialdesignicons.com/) and ` ## Variables -| Variable | Default | Required | Notes | -|----------|---------|------------------|-------------------| -|ulm_chip_mdi_icon_state_entity | | :material-check: | `entity` to link | | -|ulm_chip_mdi_icon_state_icon | | :material-close: | mdi:icon to display | -|ulm_chip_mdi_icon_state_icon_color | `primary-text-color` | :material-close: | Allow to change `icon` color | -|ulm_chip_mdi_icon_state_label_color | `primary-text-color` | :material-close: | Allow to change `label` color | +| Variable | Default | Required | Notes | +| ----------------------------------- | -------------------- | ---------------- | ----------------------------- | +| ulm_chip_mdi_icon_state_entity | | :material-check: | `entity` to link | +| ulm_chip_mdi_icon_state_icon | | :material-close: | mdi:icon to display | +| ulm_chip_mdi_icon_state_icon_color | `primary-text-color` | :material-close: | Allow to change `icon` color | +| ulm_chip_mdi_icon_state_label_color | `primary-text-color` | :material-close: | Allow to change `label` color | ## Usage diff --git a/docs/usage/custom_cards/custom_card_camera.md b/docs/usage/custom_cards/custom_card_camera.md index f8d304bf5..d06e8dbf9 100644 --- a/docs/usage/custom_cards/custom_card_camera.md +++ b/docs/usage/custom_cards/custom_card_camera.md @@ -3,6 +3,7 @@ title: Custom Camera Card hide: - toc --- + # Custom-card "Camera" @@ -21,7 +22,7 @@ Version: 1.0.0
    1.0.1 -Added variable to passthough aspect ratio to the picture entity card. Fix minor issues with title. +Added variable to passthrough aspect ratio to the picture entity card. Fix minor issues with title.
    1.0.0 @@ -39,7 +40,7 @@ Initial release. ulm_custom_card_camera_title: true ulm_custom_card_camera_name: "name" ulm_custom_card_camera_label: "label" - ulm_custom_card_camera_aspect_ratio: '16:9' + ulm_custom_card_camera_aspect_ratio: "16:9" ``` ## Variables diff --git a/docs/usage/custom_cards/custom_card_httpedo13_sun.md b/docs/usage/custom_cards/custom_card_httpedo13_sun.md index c7684decb..78ab73887 100644 --- a/docs/usage/custom_cards/custom_card_httpedo13_sun.md +++ b/docs/usage/custom_cards/custom_card_httpedo13_sun.md @@ -3,6 +3,7 @@ title: Sun Card Custom-card hide: - toc --- + # Custom-card "Sun" @@ -24,6 +25,7 @@ Initial release ## Requirements This card uses: + @@ -49,10 +51,10 @@ This card uses: ## Usage ```yaml - - type: custom:button-card - template: custom_card_httpedo13_sun - variables: - language: 'it' +- type: custom:button-card + template: custom_card_httpedo13_sun + variables: + language: "it" ``` ## Variables @@ -60,12 +62,12 @@ This card uses: The same sun card config. | Name | Accepted values | Description | Default | -|---------------|----------------------|--------------------------------------|-----------------------------------------------------| +| ------------- | -------------------- | ------------------------------------ | --------------------------------------------------- | | darkMode | `boolean` | Changes card colors to dark or light | Home assistant dark mode state | | language | `string`1 | Changes card language | Home assistant language or english if not supported | | showAzimuth | `boolean` | Displays azimuth in the footer | `false` | | showElevation | `boolean` | Displays elevation in the footer | `false` | | timeFormat | `'12h'`/`'24h'` | Displayed time format | Locale based on Home assistant language | -| title | `string` | Card title | Doesn't display a title by default | | +| title | `string` | Card title | Doesn't display a title by default | (1) Supported languages: `da`, `de`, `en`, `es`, `et`, `fi`, `fr`, `hu`, `it`, `nl`, `pl`, `pt-BR`, `ru`, `sl`, `sv` diff --git a/docs/usage/custom_cards/custom_card_iAbadia_battery_chip.md b/docs/usage/custom_cards/custom_card_iAbadia_battery_chip.md new file mode 100644 index 000000000..05a56b8fe --- /dev/null +++ b/docs/usage/custom_cards/custom_card_iAbadia_battery_chip.md @@ -0,0 +1,58 @@ +--- +title: iAbadia's Battery Chip Custom Card +hide: + - toc +--- + + + +# Custom-card "Battery Chip" + +This is a `custom-card` or `custom-chip` to see your device's battery level at a glance. + +![Screenshot](../../assets/img/custom_card_iAbadia_battery_chip.png) + +## Credits + +Author: Iñaki Abadia - 2024 +Version: 1.0.0 + +## Changelog + +
    +1.0.0 +Initial release +
    + +## Requirements + +None + +## Usage + +```yaml +type: "custom:button-card" +template: custom_card_iAbadia_battery_chip +variables: + ulm_custom_card_iAbadia_battery_chip_entity: sensor.living_room_sensor_battery + ulm_custom_card_iAbadia_battery_chip_icon: mdi:thermostat + ulm_custom_card_iAbadia_battery_chip_warning: 30 + ulm_custom_card_iAbadia_battery_chip_danger: 10 +``` + +## Variables + +| Variable | Example | Required | Explanation | +| ---------------------------------------------- | -------------------- | -------- | ----------------------------------------------------- | +| ulm_custom_card_iAbadia_battery_chip_entity | `sensor.temperature` | ✓ | Battery entity | +| ulm_custom_card_iAbadia_battery_chip_icon | `mdi:thermometer` | ✘ | Icon to be displayed. Will default to mdi:battery | +| ulm_custom_card_iAbadia_battery_chip_warning | `20` | ✘ | Battery level below which to color as warning (yellow) | +| ulm_custom_card_iAbadia_battery_chip_danger | `10` | ✘ | Battery level below which to color as danger (red) | + +## Template Code + +??? note "Template Code" + + ```yaml title="custom_card_irmajavi_speedtest.yaml" + --8<-- "custom_cards/custom_card_iAbadia_battery_chip/custom_card_iAbadia_battery_chip.yaml" + ``` diff --git a/docs/usage/custom_cards/custom_card_imswel_medias.md b/docs/usage/custom_cards/custom_card_imswel_medias.md index e1994dc63..69c2405aa 100644 --- a/docs/usage/custom_cards/custom_card_imswel_medias.md +++ b/docs/usage/custom_cards/custom_card_imswel_medias.md @@ -29,6 +29,7 @@ Initial release ## Requirements This card needs the following to function correctly: + | Component | Required | | ----------------------------------------------------------------------------------------- | ---------------------------------- | |[Plex Recently Added](https://github.com/NemesisRE/sensor.plex_recently_added) | Yes for **`Media Library Card`** | @@ -40,6 +41,7 @@ This card needs the following to function correctly: **Media Library Card** for [Plex Recently Added](https://github.com/NemesisRE/sensor.plex_recently_added) : ![example-image-plex](../../assets/img/custom_card_imswel_medias/medias_library_plex.png)
    + | Variable | Default | Required | Notes | | ----------------------------- | ------- | -------- | ----------------------------------------------------------------------- | | ulm_custom_card_imswel_medias_index | 1 | Yes | The index of the item in your **Plex library** to show. | @@ -58,6 +60,7 @@ This card needs the following to function correctly: ![example-image-radarr](../../assets/img/custom_card_imswel_medias/medias_upcoming_radarr.png) ![example-image-sonarr](../../assets/img/custom_card_imswel_medias/medias_upcoming_sonarr.png)
    + | Variable | Default | Required | Notes | | ----------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------- | | ulm_custom_card_imswel_medias_index | 1 | Yes | The index of the item in your **Radarr/Sonarr library** to show. | diff --git a/docs/usage/custom_cards/custom_card_nik_clock.md b/docs/usage/custom_cards/custom_card_nik_clock.md index 735bfa8a4..795f109fe 100644 --- a/docs/usage/custom_cards/custom_card_nik_clock.md +++ b/docs/usage/custom_cards/custom_card_nik_clock.md @@ -3,11 +3,12 @@ title: Tablet Clock Card hide: - toc --- + # Custom-card "Tablet clock Card" -This is a `custom-card` that shows the currenct time and Date. This is designed for a tablet or big monitor. +This is a `custom-card` that shows the current time and Date. This is designed for a tablet or big monitor. ![Screenshot](../../assets/img/custom_card_nik_clock.png) diff --git a/docs/usage/custom_cards/custom_card_nik_door.md b/docs/usage/custom_cards/custom_card_nik_door.md index 01b1f8941..282fba66f 100644 --- a/docs/usage/custom_cards/custom_card_nik_door.md +++ b/docs/usage/custom_cards/custom_card_nik_door.md @@ -8,7 +8,7 @@ hide: # Custom-card "Minimal Door Lock" -This is a `custom-card` that shows the currenct state of your Lock and allows you to open and close it showing the state with a Minimal Design. +This is a `custom-card` that shows the current state of your Lock and allows you to open and close it showing the state with a Minimal Design. ![Screenshot](../../assets/img/custom_card_nik_door.png) @@ -36,7 +36,6 @@ To have the Minimalist cards and custom cards installed ## Usage ```yaml - - type: "custom:button-card" template: "custom_card_nik_door" entity: "sensor.nuki_blindato_door_security_state" diff --git a/docs/usage/custom_cards/custom_card_scenes.md b/docs/usage/custom_cards/custom_card_scenes.md index 2b2d46614..ed0e8b033 100644 --- a/docs/usage/custom_cards/custom_card_scenes.md +++ b/docs/usage/custom_cards/custom_card_scenes.md @@ -3,6 +3,7 @@ title: Scenes Card Custom-card hide: - toc --- + # Custom-card "Scenes Card" @@ -21,76 +22,76 @@ Version: 1.2.0
    1.2.0 - ```yaml - #OLD +```yaml +#OLD - type: "custom:button-card" - template: - - card_scenes - variables: - entity_1: "scene.YOUR_SCENE" - entity_2: "scene.YOUR_SCENE" - entity_3: "scene.YOUR_SCENE" - entity_4: "scene.YOUR_SCENE" - entity_5: "scene.YOUR_SCENE" - name_1: "YOUR_NAME" - name_2: "YOUR_NAME" - name_3: "YOUR_NAME" - name_4: "YOUR_NAME" - name_5: "YOUR_NAME" - icon_1: "mdi:YOUR_ICON" - icon_2: "mdi:YOUR_ICON" - icon_3: "mdi:YOUR_ICON" - icon_4: "mdi:YOUR_ICON" - icon_5: "mdi:YOUR_ICON" - color_icon_1: "yellow" - color_icon_2: "blue" - color_icon_3: "purple" - color_icon_4: "green" - color_icon_5: "red" - color_bg_1: "yellow" - color_bg_2: "blue" - color_bg_3: "purple" - color_bg_4: "green" - color_bg_5: "red" - ``` - - ```yaml - #NEW + template: + - card_scenes + variables: + entity_1: "scene.YOUR_SCENE" + entity_2: "scene.YOUR_SCENE" + entity_3: "scene.YOUR_SCENE" + entity_4: "scene.YOUR_SCENE" + entity_5: "scene.YOUR_SCENE" + name_1: "YOUR_NAME" + name_2: "YOUR_NAME" + name_3: "YOUR_NAME" + name_4: "YOUR_NAME" + name_5: "YOUR_NAME" + icon_1: "mdi:YOUR_ICON" + icon_2: "mdi:YOUR_ICON" + icon_3: "mdi:YOUR_ICON" + icon_4: "mdi:YOUR_ICON" + icon_5: "mdi:YOUR_ICON" + icon_color_1: "yellow" + icon_color_2: "blue" + icon_color_3: "purple" + icon_color_4: "green" + icon_color_5: "red" + bg_color_1: "yellow" + bg_color_2: "blue" + bg_color_3: "purple" + bg_color_4: "green" + bg_color_5: "red" +``` + +```yaml +#NEW - type: "custom:button-card" - template: - - card_scenes - variables: - entity_1: - entity_id: "scene.YOUR_SCENE" - icon: "mdi:YOUR_ICON" - icon_color: "yellow" - name: "YOUR_NAME" - bg_color: "yellow" - entity_2: - entity_id: "scene.YOUR_SCENE" - icon: "mdi:YOUR_ICON" - icon_color: "blue" - name: "YOUR_NAME" - bg_color: "blue" - entity_3: - entity_id: "scene.YOUR_SCENE" - icon: "mdi:YOUR_ICON" - icon_color: "purple" - name: "YOUR_NAME" - bg_color: "purple" - entity_4: - entity_id: "scene.YOUR_SCENE" - icon: "mdi:YOUR_ICON" - icon_color: "green" - name: "YOUR_NAME" - bg_color: "green" - entity_5: - entity_id: "scene.YOUR_SCENE" - icon: "mdi:YOUR_ICON" - icon_color: "red" - name: "YOUR_NAME" - bg_color: "red" - ``` + template: + - card_scenes + variables: + entity_1: + entity_id: "scene.YOUR_SCENE" + icon: "mdi:YOUR_ICON" + icon_color: "yellow" + name: "YOUR_NAME" + bg_color: "yellow" + entity_2: + entity_id: "scene.YOUR_SCENE" + icon: "mdi:YOUR_ICON" + icon_color: "blue" + name: "YOUR_NAME" + bg_color: "blue" + entity_3: + entity_id: "scene.YOUR_SCENE" + icon: "mdi:YOUR_ICON" + icon_color: "purple" + name: "YOUR_NAME" + bg_color: "purple" + entity_4: + entity_id: "scene.YOUR_SCENE" + icon: "mdi:YOUR_ICON" + icon_color: "green" + name: "YOUR_NAME" + bg_color: "green" + entity_5: + entity_id: "scene.YOUR_SCENE" + icon: "mdi:YOUR_ICON" + icon_color: "red" + name: "YOUR_NAME" + bg_color: "red" +```
    diff --git a/docs/usage/custom_cards/custom_card_schumijo_flower.md b/docs/usage/custom_cards/custom_card_schumijo_flower.md index 994a3c851..9acad317a 100644 --- a/docs/usage/custom_cards/custom_card_schumijo_flower.md +++ b/docs/usage/custom_cards/custom_card_schumijo_flower.md @@ -14,8 +14,9 @@ This is a `custom-card` to display a plant entity. Shows state of the plant and ## Credits -Author: schumijo - 2021 -Version: 1.1.0 +- Author: schumijo - 2021 +- Update 2.0.0 : Ashino - 2024 +- Version: 2.0.0 ## Changelog @@ -28,6 +29,11 @@ Initial release Fix language files for beta5 Updated README +
    +2.0.0 +Add support to lovelace-flower-card from Olen (advanced forked version) +Updated README +
    ## Usage @@ -38,6 +44,10 @@ Updated README ulm_card_flower_entity: plant.bonsai_ficus ulm_card_flower_name: Bonsai Ficus ulm_card_flower_species: "ficus retusa" + ulm_card_flower_show_bars: + - temperature + - humidity + - moisture ``` #### Variables @@ -67,11 +77,30 @@ Updated README + + + + + +
    Component / cardyes The species of your plant
    ulm_card_flower_show_bars +- temperature +
    +- moisture +
    +- humidity +
    noThe bar you want to display. Any of : +
  • illuminance
  • +
  • humidity
  • +
  • moisture
  • +
  • conductivity
  • +
  • temperature
  • +
  • dli
  • +
    ## Requirements -Need [lovelace-flower-card](https://github.com/thomasloven/lovelace-flower-card) +Need [lovelace-flower-card](https://github.com/Olen/lovelace-flower-card) ## Template code diff --git a/docs/usage/custom_cards/custom_template_shogun160_battery_info.md b/docs/usage/custom_cards/custom_template_shogun160_battery_info.md index 3400942cb..dbdc51781 100644 --- a/docs/usage/custom_cards/custom_template_shogun160_battery_info.md +++ b/docs/usage/custom_cards/custom_template_shogun160_battery_info.md @@ -27,9 +27,9 @@ This is an template to add the battery level to every ui minimalist card ## Variables -| Variable | Default | Required | Notes | -| -------------------------------------------- | ------- | -------- | ------------------------------------------------------------------------ | -| ulm_battery_entity | | No | The entity to represent the battery_level +| Variable | Default | Required | Notes | +| ------------------ | ------- | -------- | ----------------------------------------- | +| ulm_battery_entity | | No | The entity to represent the battery_level | ## Usage with battery or battery_level attribute from entity