diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
index 8dc9143..ac1fdfa 100644
--- a/.github/ISSUE_TEMPLATE/bug.yml
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -1,8 +1,6 @@
---
name: Bug Report
-description: |
- We aim to keep everything running smoothly.
- Please fill out the form with details to help us identify and address the issue.
+description: If something isn't working as expected, let us know here.
title: "`Bug` "
labels: [Bug]
body:
@@ -11,23 +9,25 @@ body:
value: |
Thanks for taking the time to fill out a bug report!
- We wanna everything always working like a charm, so please let us know where our attention is needed.
+ We aim to keep everything working perfectly, so your detailed reports are crucial.
+
+ Report only one specific issue per submission. If you encounter another issue, create a new report for effective tracking and resolution.
+
+ The more detail you provide, the quicker we can help.
> [!WARNING]
- > Remember to omit any private or sensitive information, as this bug report will be publicly visible.
+ > Omit any private or sensitive information, as this bug report will be publicly visible.
- type: markdown
attributes:
value: |
- ## Please provide the version numbers for TFT, ESPHome, and Blueprint
-
- You can find these version numbers on the boot screen of your device.
- The Blueprint version can also be found in the automation where the blueprint is set.
+ ## Version Information
+ Provide version numbers for TFT, ESPHome, and Blueprint. These can be found on your device's boot screen and in the automation where the blueprint is set.
- type: input
attributes:
label: TFT Version
- description: Enter the version number of TFT.
+ description: Enter the TFT version number.
placeholder: e.g., 4.1.4
validations:
required: false
@@ -35,7 +35,7 @@ body:
- type: input
attributes:
label: ESPHome Version
- description: Enter the version number of ESPHome.
+ description: Enter the ESPHome version number.
placeholder: e.g., 4.1.4
validations:
required: false
@@ -43,7 +43,7 @@ body:
- type: input
attributes:
label: Blueprint Version
- description: Enter the version number of the Blueprint.
+ description: Enter the Blueprint version number.
placeholder: e.g., 4.1.4
validations:
required: false
@@ -53,96 +53,81 @@ body:
label: Panel Model
description: Select your NSPanel model.
options:
- - NSPanel EU Model
- - NSPanel US Model
- - NSPanel US Model (Landscape)
+ - EU
+ - US
+ - US (Landscape)
validations:
required: true
- type: markdown
attributes:
value: |
- ## Please provide details about the bug
+ ## Bug Details
- type: input
attributes:
label: What is the bug?
- description: A clear and concise description of what the bug is.
- placeholder: e.g., When I try this, I'm getting this result, while I was expecting that...
+ description: Describe the bug clearly and concisely.
+ placeholder: e.g., When I try this, I get this result, but I expected that...
validations:
required: true
- type: textarea
attributes:
label: Steps to Reproduce
- description: Steps to reproduce the behavior. Please feel free to share pictures of your screen or anything relevant.
+ description: Detail the steps to reproduce the behavior. Include screenshots or other relevant information.
placeholder: |
1. Go to '...'
2. Click on '...'
- 3. See error
+ 3. See error on '...'
validations:
required: true
- type: markdown
attributes:
value: |
- ## Please provide some additional info, when possible
+ ## Additional Information (Optional)
- type: textarea
attributes:
- label: Your panel's YAML
- description: Please provide device's YAML configuration.
+ label: Your Panel's YAML
+ description: Provide your panel's YAML configuration.
render: yaml
placeholder: |
- substitutions:
- # Settings - Editable values
- device_name: "YOUR_NSPANEL_NAME"
- wifi_ssid: !secret wifi_ssid
- wifi_password: !secret wifi_password
-
- nextion_update_url: "http://homeassistant.local:8123/local/nspanel_us.tft"
-
- # Add-on configuration (if needed)
- ## Add-on climate
- heater_relay: "1" # Possible values: "1" or "2"
-
- # Customization area
- ##### My customization - Start #####
- ##### My customization - End #####
-
- # Core and optional configurations
- packages:
- remote_package:
- url: https://github.com/Blackymas/NSPanel_HA_Blueprint
- ref: main
- files:
- - nspanel_esphome.yaml # Core package
- # Optional advanced and add-on configurations
- # - advanced/esphome/nspanel_esphome_advanced.yaml
- # - nspanel_esphome_addon_climate_cool.yaml
- - nspanel_esphome_addon_climate_heat.yaml
- # - nspanel_esphome_addon_climate_dual.yaml
- refresh: 300s
-
- esp32:
- framework:
- type: esp-idf
- validations:
- required: false
+ # Example YAML configuration
+ # ...
- type: textarea
attributes:
- label: ESPHome logs
- description: You can get this by clicking the **Logs** button related to your device on ESPHome Dashboard.
- render: logs
- validations:
- required: false
+ label: ESPHome Logs
+ description: >
+ Access these logs via the **Logs** button on the ESPHome Dashboard.
+ These logs are crucial for diagnosing issues with your device.
+
+ Please follow the guidelines below to ensure the logs are comprehensive:
+ - **Boot Issues**: If the problem occurs during boot, capture the logs from the start of your device to a minute or two after the boot completes.
+ Look for errors or unusual messages during this period.
+ - **TFT File Update Issues**: For problems related to TFT file updates,
+ include logs from the moment you press the **Update TFT Display** button until a few seconds after the device restarts.
+ Pay attention to any error messages or warnings during the update process.
+ - **Other Issues**: For other types of problems, include logs that encompass the issue's onset and continue for a short duration thereafter.
+ This will help in pinpointing the exact moment and nature of the issue.
+
+ Remember, the more detailed the logs, the easier it is to identify and resolve the problem.
+ validations:
+ required: false
- type: textarea
attributes:
- label: Home Assistant logs
- description: You can get this from **Settings** > **System** > [**Logs**](https://my.home-assistant.io/redirect/logs/) in your Home Assistant.
- render: logs
- validations:
- required: false
+ label: Home Assistant Logs
+ description: >
+ To access Home Assistant logs, navigate to **Settings** > **System** > [**Logs**](https://my.home-assistant.io/redirect/logs/).
+
+ When reporting an issue, please focus on providing logs specifically relevant to the problem:
+ - **NSPanel Blueprint Automation**: If your issue is related to automation using the NSPanel blueprint, include only those logs that directly pertain to this process.
+ - **Panel and ESPHome**: For issues involving your panel and ESPHome, carefully select and share logs that show interactions or errors between these components.
+ - **Relevancy is Key**: To expedite troubleshooting, avoid including logs that are not related to the issue at hand. This helps in focusing on the pertinent information.
+ Your attention to sharing targeted and relevant log data is greatly appreciated and aids in efficient problem resolution.
+ validations:
+ required: false
...
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index e01d457..2bd5810 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -1,16 +1,20 @@
---
blank_issues_enabled: false
+
contact_links:
- - name: Discussions area
+ - name: Questions & General Discussions
url: https://github.com/Blackymas/NSPanel_HA_Blueprint/discussions
- about: This is your go-to space for community conversations, questions, idea sharing, and collaboration around our project.
- - name: Troubleshooting TFT Transfer
+ about: Join our Discussions for community chats, questions, idea sharing, and collaboration. Use Issues for reporting bugs or requesting enhancements.
+
+ - name: Troubleshooting TFT Transfer Issues
url: https://github.com/Blackymas/NSPanel_HA_Blueprint/blob/main/docs/tft_upload.md
- about: Try this guide first if you are having issues to transfer a TFT file.
- - name: Compiling Errors Guide
+ about: Having trouble transferring a TFT file? Our guide might have the solution.
+
+ - name: Resolve Compiling Errors
url: https://github.com/Blackymas/NSPanel_HA_Blueprint/blob/main/docs/error_compiling.md
- about: Experiencing Compile Errors? Check This Guide!
- - name: Getting Started with NSPanel HA Blueprint
+ about: Check this guide if you're experiencing compile errors.
+
+ - name: Getting Started Guide
url: https://github.com/Blackymas/NSPanel_HA_Blueprint/blob/main/docs/install.md
- about: This is the starting poing for installing a new NSPanel HA Blueprint.
+ about: New to NSPanel HA Blueprint? Start here for installation and setup instructions.
...
diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml
deleted file mode 100644
index 07f49bc..0000000
--- a/.github/ISSUE_TEMPLATE/question.yml
+++ /dev/null
@@ -1,24 +0,0 @@
----
-name: Question
-description: Ask a question about this project
-title: "`Question` "
-labels: [Question]
-body:
- - type: markdown
- attributes:
- value: "We're here to help! Ask your question below."
-
- - type: input
- attributes:
- label: Question
- description: What do you want to ask?
- placeholder: e.g., How do I configure XYZ?
- validations:
- required: true
-
- - type: textarea
- attributes:
- label: Additional Details
- description: Provide any additional details or context for your question.
- placeholder: "Add any more details about your question here."
-...
diff --git a/.github/workflows/release_tag.yml b/.github/workflows/release_tag.yml
new file mode 100644
index 0000000..39b907f
--- /dev/null
+++ b/.github/workflows/release_tag.yml
@@ -0,0 +1,30 @@
+---
+name: Update Tags
+
+# yamllint disable-line rule:truthy
+on:
+ release:
+ types: [published]
+
+jobs:
+ update-tags:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4.1.0
+
+ - name: Set up Git
+ run: |
+ git config --local user.email "action@github.com"
+ git config --local user.name "GitHub Action"
+
+ - name: Move and push stable tag
+ run: |
+ git tag -f stable ${{ github.event.release.tag_name }}
+ git push -f origin stable
+
+ - name: Move and push latest tag
+ run: |
+ git tag -f latest ${{ github.event.release.tag_name }}
+ git push -f origin latest
+...
diff --git a/ReleaseNotes.md b/ReleaseNotes.md
index 8b45163..a548be9 100644
--- a/ReleaseNotes.md
+++ b/ReleaseNotes.md
@@ -428,6 +428,100 @@ For support, feedback, or detailed information about this update,
visit our [GitHub repository](https://github.com/Blackymas/NSPanel_HA_Blueprint)
or our [online documentation](https://github.com/Blackymas/NSPanel_HA_Blueprint/blob/main/docs/README.md).
+## Patch v4.2.5: Celebrating 1000 Stars with Enhanced Functionality and UI Improvements
+With the 1000-star milestone on GitHub, we're excited to share Patch v4.2.5, enhancing the NSPanel Firmware experience in our spare time.
+This update refines climate and cover entity interfaces, boosts hardware button responsiveness, and integrates ESPHome's `friendly_name` for easier device identification.
+We've also expanded direct TFT download capabilities from GitHub to Arduino users, previously only available for ESP-IDF users.
+This achievement, powered by community support, is a significant stride towards [simplifying user experience for NSPanel firmware](https://github.com/Blackymas/NSPanel_HA_Blueprint/discussions/1602).
+
+We highly recommend all users update their components to this latest version for an optimized and enhanced user experience.
+While this update is compatible with existing v4.2 components, fully updating ensures the best performance and usability.
+
+**Breaking Changes:**
+1. **Custom entities naming changed**.
+If your setup includes custom entities using `${device_name}` in their names, please modify these entities to omit `${device_name}`.
+ESPHome will now automatically append the `friendly_name` or `device_name` from your substitutions, simplifying the naming process.
+2. **Show while loading** input is deprecated and all pages will show components while loading as default.
+
+Additionally, we have updated our documentation to include comprehensive guidelines on memory requirements for ESPHome,
+ensuring users are well-informed for successful system setup and operation.
+
+**Overview of Changes:**
+
+| Change | Criticality | Affected Components |
+| :-- | :--: | :--: |
+| Long Click Action Bug Fix for Hardware Button (#1637) | Minor | `Blueprint` |
+| Fix Display of Climate Icons on Chips (#1675) | Minor | `Blueprint` |
+| Fix Icon's Colors on Home Page Values (#1694) | Minor | `Blueprint` |
+| Alarm Keypad Arm/Disarm Fix for US Model (#1705) | Minor | `TFT file (US model only)` |
+| LocalTuya Fan Speed Controls Fix (#1706) | Minor | `Blueprint` |
+| Fix Update of Media Player Icons on Custom Buttons (#1716) | Minor | `Blueprint` |
+| Motion Sensor for Display Wake-Up (#1687) | Enhancement | `Blueprint` |
+| Enhanced Consistency in Cover Controls (#1688) | Enhancement | `Blueprint` |
+| Support ESPHome `friendly_name` (#1719) | Enhancement | `Blueprint`
`ESPHome` |
+| Improved Blueprint Input Clarity (#1722 and #1782) | Enhancement | `Blueprint` |
+| Enhanced Memory Allocation When Uploading TFT (`esp-idf` only) | Enhancement | `ESPHome` |
+| Expanded Visualization on Chips | Enhancement | `Blueprint` |
+| Direct TFT Transfer from GitHub for Arduino Users | Enhancement | `ESPHome` |
+| Baud Rate Adjustment for TFT Uploads | Enhancement | `ESPHome` |
+| Update docs (install.md) with memory requirements (#1720) | Documentation | `Documentation` |
+
+
+**Key Improvements:**
+- **Long Click Action Bug Fix for Hardware Button**: Resolved a bug where long click actions weren't executing on hardware buttons if no entity was assigned.
+This fix ensures that custom actions linked to long presses will now run as intended, regardless of whether an entity is assigned to the button,
+offering greater flexibility and reliability in user interactions.
+- **Fix Display of Climate Icons on Chips**: Enhanced the functionality of climate entity chips.
+Now, the chip is displayed only when the climate entity has an active HVAC action.
+This change ensures that the chip is hidden in states like 'Idle' or other non-active states,
+aligning the display behavior with the operational status of the climate entity for improved accuracy and user experience.
+- **Fix Icon's Colors on Home Page Values**: Addressed an issue where icons for sensor domain entities on the home page were incorrectly displaying colors indicative of an "entity disabled" state.
+This fix ensures that the icons now reflect their correct status, enhancing the visual accuracy and user interface experience.
+- **Alarm Keypad Arm/Disarm Fix for US Model**: Resolved an issue specific to the US model, where alarms requiring a PIN to arm/disarm were not functioning correctly.
+This fix, applied through an update to the TFT file, ensures that users with these alarm systems can reliably arm and disarm their security devices.
+- **LocalTuya Fan Speed Controls Fix**: Addressed an issue with LocalTuya fan speed controls not functioning as expected.
+Users can now seamlessly adjust their fan speeds through the Blueprint interface, enhancing control and interaction with smart home devices.
+- **Fix Update of Media Player Icons on Custom Buttons**: Corrected an issue where media player icons on custom buttons were not updating in real-time to reflect the current playback status.
+This fix ensures that the icons dynamically represent the media player's state, improving the interface's responsiveness and accuracy.
+- **Motion Sensor for Display Wake-Up**: We've introduced a feature that allows users to specify a motion,
+presence, or door sensor to wake up the display, enhancing the panel's responsiveness.
+Each detected motion or sensor activation event triggers the panel to wake up, with the sleep timer resetting with every new detection.
+While the panel will still follow the pre-set sleep duration settings regardless of continuous motion or sensor activity,
+this initial implementation marks a significant step in making user interactions more dynamic and intuitive.
+- **Enhanced Consistency in Cover Controls**: Building upon the dynamic icons feature introduced in v4.2.2, we've further refined the cover controls.
+This enhancement extends the use of `device_class` to the detailed cover page,
+ensuring that the icons for opening and closing covers are more accurately representative of the cover type.
+This update is a step towards our goal of extending context-aware UI enhancements to other supported domains in future updates.
+- **Friendly Name Support in ESPHome**: Enhanced the Blueprint's compatibility with ESPHome's `friendly_name` feature.
+Previously, using `friendly_name` could disrupt communication between the Blueprint and ESPHome due to mismatches in entity and service names.
+This update resolves these issues, ensuring seamless integration.
+Users can now utilize the `friendly_name` substitution in their YAML setup to assign more intuitive and descriptive names to their devices,
+significantly improving the ease of device identification and overall user experience.
+- **Improved Blueprint Input Clarity**: Simplified the naming of Blueprint inputs for better clarity and ease of use.
+Labels such as *"Button14"* have been updated to more descriptive formats like *"Button page 2, Button 6"*.
+Additionally, terms like "LABEL COLOR" have been refined to "Text Color" to improve understanding related to sensor display customization.
+- **Enhanced Memory Allocation When Uploading TFT (esp-idf only)**: Optimized memory management for TFT uploads on systems using the `esp-idf` framework.
+This update prevents simultaneous HTTP server connections, allowing for better memory allocation and reducing the risk of system crashes due to memory shortages.
+It does not affect users on the `arduino` framework.
+Additionally, the log for the upload process now includes detailed memory usage data, providing valuable insights for troubleshooting and system performance enhancement.
+- **Expanded Visualization on Chips**: Enhanced the home page chips to display not only Media Player entities but now also Fan entities, among previously supported domains.
+This update broadens the informative visual feedback available on the home page, offering a more comprehensive and visually engaging snapshot of the device status within the user interface.
+- **Direct TFT Transfer from GitHub for Arduino Users**: Enhanced the TFT update process for Arduino users by enabling direct transfer of TFT files from GitHub to Nextion displays,
+mirroring the functionality previously available to ESP-IDF users.
+This streamlines the update workflow, removing the need for intermediate steps like using a local HTTP server, and making it easier to keep Nextion displays up-to-date.
+- **Documentation Update on Memory Requirements for ESPHome**: Enhanced the installation documentation to include detailed guidelines on memory requirements.
+This update addresses frequent user-reported compilation errors in ESPHome, attributed to insufficient memory on compiler servers.
+The updated section outlines recommended memory configurations for different installation scenarios, ensuring smoother compilation processes.
+A special acknowledgement to @andythomas for his valuable contributions to this update.
+- **Baud Rate Adjustment for TFT Uploads**: This update introduces a baud rate selector in the device's "Configuration" area,
+allowing users to lower the transfer speed from the default 921600 bps.
+This enhancement is particularly useful for troubleshooting transfer issues,
+providing a straightforward method to improve transfer reliability by adjusting the speed to accommodate different system capabilities.
+
+For support, feedback, or detailed information about this update,
+visit our [GitHub repository](https://github.com/Blackymas/NSPanel_HA_Blueprint)
+or our [online documentation](https://github.com/Blackymas/NSPanel_HA_Blueprint/blob/main/docs/README.md).
+
## What's Next?
Discover what's next and what we are working on right now in our [Milestones](https://github.com/Blackymas/NSPanel_HA_Blueprint/milestones?direction=asc&sort=title&state=open).
@@ -442,6 +536,7 @@ Discover what's next and what we are working on right now in our [Milestones](ht
- @andythomas:
- Allow to set upper and lower set points for embedded thermostat, #1573
- Bugfix for embedded climate/cool functionality, #1587
+ - Update docs (install.md) with memory requirements, #1720 - Patch v4.2.5
- @PaulAntonDeen:
- Add ISO8601 date formatting as an option, #1610 - Patch v4.2.2
- Fix Wi-Fi reference on QR code example, #1609 - Patch v4.2.2
@@ -454,6 +549,7 @@ Discover what's next and what we are working on right now in our [Milestones](ht
- And to all users who helped with the tests during development and beta.
## Previous releases
+- [v4.2.4 - Critical bug fixes](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.2.4)
- [v4.2.3 - Bug fixes and minor enhancements](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.2.3)
- [v4.2.2 - Bug fixes and minor enhancements](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.2.2)
- [v4.2.1 - Bug fixes](https://github.com/Blackymas/NSPanel_HA_Blueprint/releases/tag/v4.2.1)
diff --git a/advanced/esphome/nspanel_esphome_addon_climate_base.yaml b/advanced/esphome/nspanel_esphome_addon_climate_base.yaml
index 68a5820..3901c16 100644
--- a/advanced/esphome/nspanel_esphome_addon_climate_base.yaml
+++ b/advanced/esphome/nspanel_esphome_addon_climate_base.yaml
@@ -34,7 +34,7 @@ substitutions:
climate:
- platform: thermostat
- name: ${name} Thermostat
+ name: Thermostat
id: thermostat_embedded
sensor: temp_nspanel
min_idle_time: ${min_idle_time}s
@@ -71,7 +71,7 @@ globals:
switch:
##### PHYSICAL SWITCH 0 (Dummy) - Used when relay is not set #####
- - name: ${name} Relay 0 (dummy)
+ - name: Relay 0 (dummy)
platform: template
id: relay_0
lambda: !lambda return false;
@@ -82,26 +82,39 @@ script:
- id: !extend change_climate_state
then:
- lambda: |-
- if (embedded) {
+ if (embedded and !id(is_uploading_tft)) {
static const char *const TAG = "addon_climate_base.script.change_climate_state";
+ auto FahrenheitToCelsius = [](float fahrenheit) -> float {
+ return (fahrenheit - 32.0) * 5.0 / 9.0;
+ };
+ std::string temp_units = "${temp_units}";
+ bool temp_unit_fahrenheit = (temp_units == "°F" || temp_units == "F" || temp_units == "°f" || temp_units == "f");
+ auto call = thermostat_embedded->make_call();
+ float temperature;
+
id(is_addon_climate_visible) = true;
disp1->set_component_value("climate.embedded", 1);
- auto call = thermostat_embedded->make_call();
if (key == "temperature") {
- ESP_LOGD(TAG, "set_target_temperature(%f)", (stof(value) / 10));
- call.set_target_temperature(stof(value) / 10);
+ temperature = stof(value) / 10;
+ if (temp_unit_fahrenheit) temperature = FahrenheitToCelsius(temperature);
+ ESP_LOGD(TAG, "set_target_temperature(%f)", temperature);
+ call.set_target_temperature(temperature);
} else if (key == "target_temp_high") {
- ESP_LOGD(TAG, "set_target_temperature_high(%f)", (stof(value) / 10));
- call.set_target_temperature_high(stof(value) / 10);
+ temperature = stof(value) / 10;
+ if (temp_unit_fahrenheit) temperature = FahrenheitToCelsius(temperature);
+ ESP_LOGD(TAG, "set_target_temperature_high(%f)", temperature);
+ call.set_target_temperature_high(temperature);
} else if (key == "target_temp_low") {
- ESP_LOGD(TAG, "set_target_temperature_low(%f)", (stof(value) / 10));
- call.set_target_temperature_low(stof(value) / 10);
+ temperature = stof(value) / 10;
+ if (temp_unit_fahrenheit) temperature = FahrenheitToCelsius(temperature);
+ ESP_LOGD(TAG, "set_target_temperature_low(%f)", temperature);
+ call.set_target_temperature_low(temperature);
} else if (key == "hvac_mode") {
ESP_LOGD(TAG, "hvac_mode(%s)", value.c_str());
call.set_mode(value);
} else {
ESP_LOGE(TAG, "Invalid call:");
- ESP_LOGE(TAG, " Embedded: %s", embedded ? "True" : "False");
+ ESP_LOGE(TAG, " Embedded: %s", YESNO(embedded));
ESP_LOGE(TAG, " Key: %s", key.c_str());
ESP_LOGE(TAG, " Value: %s", value.c_str());
}
@@ -123,27 +136,49 @@ script:
then:
- lambda: |-
id(is_addon_climate_visible) = (current_page->state == "climate" and detailed_entity->state == "embedded_climate");
- if (id(is_addon_climate_visible)) {
+ if (id(is_addon_climate_visible) and !id(is_uploading_tft)) {
static const char *const TAG = "addon_climate_base.script.page_climate";
+ auto CelsiusToFahrenheit = [](float celsius) -> float {
+ return (celsius * 9 / 5) + 32;
+ };
+ std::string temp_units = "${temp_units}";
+ bool temp_unit_fahrenheit = (temp_units == "°F" || temp_units == "F" || temp_units == "°f" || temp_units == "f");
+ ClimateTraits traits = thermostat_embedded->get_traits();
+
ESP_LOGV(TAG, "Climate page constructor:");
ESP_LOGV(TAG, " Add-on mode: %s", (${addon_climate_dual}) ? "Dual" : ((${addon_climate_heat}) ? "Heat" : ((${addon_climate_cool}) ? "Cool" : "Unknown")));
+ ESP_LOGV(TAG, " Temp. units: %s", temp_unit_fahrenheit ? "Fahrenheit" : "Celsius");
disp1->set_component_text_printf("page_label", id(addon_climate_friendly_name).c_str());
- float temp_step = ${temp_step};
- float temp_offset = ${temp_min};
- float temp_max = ${temp_max};
+ float temp_step = traits.get_visual_target_temperature_step();
+ float temp_offset = traits.get_visual_min_temperature();
+ float temp_max = traits.get_visual_max_temperature();
+ float temp_target = thermostat_embedded->target_temperature;
+ float temp_target_high = thermostat_embedded->target_temperature_high;
+ float temp_target_low = thermostat_embedded->target_temperature_low;
+ float temp_current = thermostat_embedded->current_temperature;
+ if (temp_unit_fahrenheit) {
+ //temp_step = CelsiusToFahrenheit(temp_step);
+ temp_step = temp_step * 1.8;
+ temp_offset = CelsiusToFahrenheit(temp_offset);
+ temp_max = CelsiusToFahrenheit(temp_max);
+ temp_target = CelsiusToFahrenheit(temp_target);
+ temp_target_high = CelsiusToFahrenheit(temp_target_high);
+ temp_target_low = CelsiusToFahrenheit(temp_target_low);
+ temp_current = CelsiusToFahrenheit(temp_current);
+ }
float total_steps = (temp_max-temp_offset)/temp_step;
set_climate->execute
(
- thermostat_embedded->current_temperature, // current_temp
- 0, // supported_features
- ((${addon_climate_dual}) ? -999 : thermostat_embedded->target_temperature), // target_temp
- ((${addon_climate_dual}) ? thermostat_embedded->target_temperature_high : -999), // target_temp_high
- ((${addon_climate_dual}) ? thermostat_embedded->target_temperature_low : -999), // target_temp_low
- int(round(${temp_step}*10)), // temp_step
- int(round(total_steps)), // total_steps
- int(round(${temp_min}*10)), // temp_offset
- "", // climate_icon
- true // embedded_climate
+ temp_current, // current_temp
+ 0, // supported_features
+ ((${addon_climate_dual}) ? -999 : temp_target), // target_temp
+ ((${addon_climate_dual}) ? temp_target_high : -999), // target_temp_high
+ ((${addon_climate_dual}) ? temp_target_low : -999), // target_temp_low
+ int(round(temp_step*10)), // temp_step
+ int(round(total_steps)), // total_steps
+ int(round(temp_offset*10)), // temp_offset
+ "", // climate_icon
+ true // embedded_climate
);
// Update target temp icon
@@ -172,57 +207,59 @@ script:
then:
- lambda: |-
// Update chips
- if (id(is_embedded_thermostat))
+ if (id(is_embedded_thermostat) and !id(is_uploading_tft))
update_climate_icon->execute("home.icon_top_03", int(thermostat_embedded->action), int(thermostat_embedded->mode));
- id: !extend set_climate
then:
- lambda: |-
- if (current_page->state == "climate")
+ if (current_page->state == "climate" and !id(is_uploading_tft))
id(is_addon_climate_visible) = embedded_climate;
- id: !extend watchdog
then:
- lambda: |-
- static const char *const TAG = "addon_climate_base.script.watchdog";
- bool addon_climate_cool = ${addon_climate_cool};
- bool addon_climate_heat = ${addon_climate_heat};
- bool addon_climate_dual = ${addon_climate_dual};
- uint cooler_relay = ${cooler_relay};
- uint heater_relay = ${heater_relay};
- ESP_LOGI(TAG, "Add-on climate:");
- if (addon_climate_cool) {
- ESP_LOGI(TAG, " Cool: %s", addon_climate_cool ? "Enabled" : "Disabled");
- if (cooler_relay == 1 or cooler_relay == 2)
- ESP_LOGI(TAG, " Relay: %u", cooler_relay);
- else
- ESP_LOGE(TAG, " Relay: %u", cooler_relay);
- }
- if (addon_climate_heat) {
- ESP_LOGI(TAG, " Heat: %s", addon_climate_heat ? "Enabled" : "Disabled");
- if (heater_relay == 1 or heater_relay == 2)
- ESP_LOGI(TAG, " Relay: %u", heater_relay);
- else
- ESP_LOGE(TAG, " Relay: %u", heater_relay);
- }
- if (addon_climate_dual) {
- ESP_LOGI(TAG, " Dual: %s", addon_climate_dual ? "Enabled" : "Disabled");
- if (cooler_relay == 1 or cooler_relay == 2)
- ESP_LOGI(TAG, " Relay (cooler): %u", cooler_relay);
- else
- ESP_LOGE(TAG, " Relay (cooler): %u", cooler_relay);
- if (heater_relay == 1 or heater_relay == 2)
- ESP_LOGI(TAG, " Relay (heater): %u", heater_relay);
- else
- ESP_LOGE(TAG, " Relay (heater): %u", heater_relay);
- if (cooler_relay == heater_relay)
- ESP_LOGE(TAG, " Double relay assignment");
- }
+ if (!id(is_uploading_tft)) {
+ static const char *const TAG = "addon_climate_base.script.watchdog";
+ bool addon_climate_cool = ${addon_climate_cool};
+ bool addon_climate_heat = ${addon_climate_heat};
+ bool addon_climate_dual = ${addon_climate_dual};
+ uint cooler_relay = ${cooler_relay};
+ uint heater_relay = ${heater_relay};
+ ESP_LOGI(TAG, "Add-on climate:");
+ if (addon_climate_cool) {
+ ESP_LOGI(TAG, " Cool: %s", addon_climate_cool ? "Enabled" : "Disabled");
+ if (cooler_relay == 1 or cooler_relay == 2)
+ ESP_LOGI(TAG, " Relay: %u", cooler_relay);
+ else
+ ESP_LOGE(TAG, " Relay: %u", cooler_relay);
+ }
+ if (addon_climate_heat) {
+ ESP_LOGI(TAG, " Heat: %s", addon_climate_heat ? "Enabled" : "Disabled");
+ if (heater_relay == 1 or heater_relay == 2)
+ ESP_LOGI(TAG, " Relay: %u", heater_relay);
+ else
+ ESP_LOGE(TAG, " Relay: %u", heater_relay);
+ }
+ if (addon_climate_dual) {
+ ESP_LOGI(TAG, " Dual: %s", addon_climate_dual ? "Enabled" : "Disabled");
+ if (cooler_relay == 1 or cooler_relay == 2)
+ ESP_LOGI(TAG, " Relay (cooler): %u", cooler_relay);
+ else
+ ESP_LOGE(TAG, " Relay (cooler): %u", cooler_relay);
+ if (heater_relay == 1 or heater_relay == 2)
+ ESP_LOGI(TAG, " Relay (heater): %u", heater_relay);
+ else
+ ESP_LOGE(TAG, " Relay (heater): %u", heater_relay);
+ if (cooler_relay == heater_relay)
+ ESP_LOGE(TAG, " Double relay assignment");
+ }
- if ((addon_climate_cool && addon_climate_heat) ||
- (addon_climate_cool && addon_climate_dual) ||
- (addon_climate_heat && addon_climate_dual) ||
- (!addon_climate_cool && !addon_climate_heat && !addon_climate_dual)) {
- ESP_LOGE(TAG, "Invalid settings for add-on Climate");
+ if ((addon_climate_cool && addon_climate_heat) ||
+ (addon_climate_cool && addon_climate_dual) ||
+ (addon_climate_heat && addon_climate_dual) ||
+ (!addon_climate_cool && !addon_climate_heat && !addon_climate_dual)) {
+ ESP_LOGE(TAG, "Invalid settings for add-on Climate");
+ }
}
...
diff --git a/advanced/esphome/nspanel_esphome_addon_upload_tft.yaml b/advanced/esphome/nspanel_esphome_addon_upload_tft.yaml
index df71962..a5f419a 100644
--- a/advanced/esphome/nspanel_esphome_addon_upload_tft.yaml
+++ b/advanced/esphome/nspanel_esphome_addon_upload_tft.yaml
@@ -14,10 +14,15 @@ substitutions:
nextion_update_base_url: "https://raw.githubusercontent.com/Blackymas/NSPanel_HA_Blueprint/"
##############################################
- ##### DON'T CHANGE THIS #####
- upload_tft_chunk_size_max: "32768"
- upload_tft_baud_rate: "921600"
- #############################
+##### External components #####
+external_components:
+ - source:
+ type: git
+ url: https://github.com/edwardtfn/esphome
+ ref: nextion-v425
+ components:
+ - nextion # Change this when that PR#6192 gets released (2024.2?)
+ refresh: 300s
api:
on_client_connected:
@@ -50,7 +55,7 @@ api:
button:
##### UPDATE TFT DISPLAY #####
- id: tft_update
- name: ${name} Update TFT display
+ name: Update TFT display
platform: template
icon: mdi:file-sync
entity_category: config
@@ -65,46 +70,17 @@ display:
tft_url: ${nextion_update_url}
exit_reparse_on_start: true
-esphome:
- on_boot:
- - priority: 601.0
- then:
- - lambda: |-
- // Hide TFT file selectors when using arduino
- #ifdef ARDUINO
- tft_file_branch->set_internal(true);
- tft_file_model->set_internal(true);
- #elif defined(ESP_PLATFORM)
- tft_file_branch->set_internal(false);
- tft_file_model->set_internal(false);
- #endif
-
globals:
- id: baud_rate_original
type: uint
restore_value: false
initial_value: '115200'
- - id: baud_rate_target
- type: uint
- restore_value: false
- initial_value: ${upload_tft_baud_rate}
-
- - id: tft_branch
- type: uint
- restore_value: true
- initial_value: '0'
-
- id: tft_is_valid
type: bool
restore_value: false
initial_value: 'false'
- - id: tft_model
- type: uint
- restore_value: true
- initial_value: '0'
-
- id: tft_upload_attempt
type: uint
restore_value: false
@@ -115,52 +91,31 @@ globals:
restore_value: false
initial_value: '"${nextion_update_url}"'
+ - id: tft_upload_result
+ type: esphome::nextion::Nextion::TFTUploadResult
+ restore_value: false
+ initial_value: 'esphome::nextion::Nextion::TFTUploadResult::UNKNOWN'
+
script:
- - id: exit_reparse_v414
- mode: restart
- then:
- - logger.log: "Exit reparse"
- - uart.write:
- id: tf_uart
- data: "DRAKJHSUYDGBNCJHGJKSHBDN"
- - uart.write:
- id: tf_uart
- data: [0xFF, 0xFF, 0xFF]
-
- - id: nextion_uart_command
- mode: queued
- parameters:
- command: string
- then:
- - lambda: |-
- static const char *const TAG = "addon_upload_tft.script.nextion_uart_command";
- if (disp1->is_setup()) {
- ESP_LOGD(TAG, "Sending `%s` directly to Nextion", command.c_str());
- disp1->send_command_printf(command.c_str());
- } else {
- ESP_LOGD(TAG, "Sending `%s` directly to UART", command.c_str());
- tf_uart->write_str(command.c_str());
- const uint8_t to_send[3] = {0xFF, 0xFF, 0xFF};
- tf_uart->write_array(to_send, sizeof(to_send));
- }
- App.feed_wdt();
-
- id: nextion_upload
mode: single
+ parameters:
+ baud_rate: uint32_t
then:
- lambda: |-
static const char *const TAG = "addon_upload_tft.script.nextion_upload";
ESP_LOGD(TAG, "Waiting for empty UART and Nextion queues");
- wait_until:
condition:
- - lambda: !lambda return (disp1->queue_size()<=0);
- - lambda: !lambda return (tf_uart->available()<=0);
+ - lambda: return (disp1->queue_size() < 1);
+ - lambda: return (tf_uart->available() < 1);
timeout: 10s
- delay: 2s
- lambda: |-
static const char *const TAG = "addon_upload_tft.script.nextion_upload";
ESP_LOGD(TAG, "Starting TFT upload...");
- if (disp1->upload_tft()) App.safe_reboot();
+ id(tft_upload_result) = disp1->upload_tft(baud_rate, !disp1->is_setup());
+ ESP_LOGD(TAG, "TFT upload: %s", esphome::nextion::Nextion::tft_upload_result_to_string(id(tft_upload_result)));
- id: open_upload_dialog
mode: restart
@@ -173,11 +128,8 @@ script:
disp1->hide_component("bt_accept");
disp1->hide_component("bt_clear");
disp1->hide_component("bt_close");
- #ifdef ARDUINO
- disp1->set_component_text_printf("confirm.title", "Upload TFT\\rArduino");
- #elif defined(ESP_PLATFORM)
- disp1->set_component_text_printf("confirm.title", "Upload TFT\\rESP-IDF");
- #endif
+ disp1->set_component_text_printf("confirm.title", "Upload TFT\\r%s",
+ id(framework) == 1 ? "Arduino" : (id(framework) == 2 ? "ESP-IDF" : "Unknown"));
page_id->update();
- id: report_settings
@@ -190,8 +142,7 @@ script:
ESP_LOGI(TAG, "Substitutions:");
ESP_LOGI(TAG, " nextion_update_url: ${nextion_update_url}");
ESP_LOGI(TAG, " nextion_update_base_url: ${nextion_update_base_url}");
- ESP_LOGI(TAG, " upload_tft_chunk_size_max: ${upload_tft_chunk_size_max}");
- ESP_LOGI(TAG, " upload_tft_baud_rate: ${upload_tft_baud_rate}");
+ ESP_LOGI(TAG, " TFT upload baud rate: %s bps", tft_upload_baud_rate->state.c_str());
- id: report_upload_progress
mode: restart
@@ -210,48 +161,23 @@ script:
App.feed_wdt();
}
- - id: !extend restore_settings
- mode: restart
- then:
- - lambda: |-
- static const char *const TAG = "addon_upload_tft.script.restore_settings";
-
- ESP_LOGD(TAG, "Restoring TFT file branch selector to index %u", id(tft_branch));
- auto tft_file_branch_call = id(tft_file_branch).make_call();
- tft_file_branch_call.set_index(id(tft_branch));
- tft_file_branch_call.perform();
-
- ESP_LOGD(TAG, "Restoring TFT file model selector to index %u", id(tft_model));
- auto tft_file_model_call = id(tft_file_model).make_call();
- tft_file_model_call.set_index(id(tft_model));
- tft_file_model_call.perform();
-
- id: set_tft_file
mode: restart
then:
- delay: 2s
- lambda: |-
- #ifdef ARDUINO
- static const char *const TAG = "addon_upload_tft.script.set_tft_file.arduino";
- #elif defined(ESP_PLATFORM)
- static const char *const TAG = "addon_upload_tft.script.set_tft_file.esp_idf";
- #endif
- std::string branch = tft_file_branch->state;
+ static const char *const TAG = "addon_upload_tft.script.set_tft_file";
+ std::string branch = "v${version}";
+ if (branch.find("beta") != std::string::npos) branch = "beta";
+ else if (branch.find("dev") != std::string::npos) branch = "dev";
std::string model = tft_file_model->state;
ESP_LOGD(TAG, "TFT URL set:");
ESP_LOGD(TAG, " Branch: %s", branch.c_str());
ESP_LOGD(TAG, " Model: %s", model.c_str());
- if (id(is_restored_settings) and tft_file_branch->active_index().has_value())
- id(tft_branch) = tft_file_branch->active_index().value();
- if (id(is_restored_settings) and tft_file_model->active_index().has_value())
- id(tft_model) = tft_file_model->active_index().value();
if (id(is_uploading_tft))
ESP_LOGW(TAG, " TFT Upload in progress.");
else {
- #ifdef ARDUINO
- std::string url = "${nextion_update_url}";
- #elif defined(ESP_PLATFORM)
std::string url;
std::string file_name;
if (model == "NSPanel Blank") file_name = "nspanel_blank.tft";
@@ -272,7 +198,6 @@ script:
url = url.substr(0, endPos + 1);
}
}
- #endif
ESP_LOGD(TAG, " Full URL: %s", url.c_str());
id(tft_url) = url;
@@ -302,60 +227,14 @@ script:
nextion_status->execute();
- uint32_t supported_baud_rates[] = {2400, 4800, 9600, 19200, 31250, 38400, 57600, 115200, 230400, 250000, 256000, 512000, 921600};
-
- auto is_baud_rate_supported = [supported_baud_rates](uint32_t baud_rate_requested) -> bool {
- size_t size = sizeof(supported_baud_rates) / sizeof(supported_baud_rates[0]);
- for (size_t i = 0; i < size; ++i) {
- if (supported_baud_rates[i] == baud_rate_requested) {
- return true;
- }
- }
- return false; // Return false if not found
- };
-
// The upload process starts here
ESP_LOGD(TAG, "Starting the upload script");
-
- // Detect baud rates to be used
- id(baud_rate_original) = tf_uart->get_baud_rate();
- if (!is_baud_rate_supported(id(baud_rate_original))) id(baud_rate_original) = 115200;
-
- std::string upload_tft_baud_rate_string = "${upload_tft_baud_rate}";
- id(baud_rate_target) = stoi(upload_tft_baud_rate_string);
- if (!is_baud_rate_supported(id(baud_rate_target))) id(baud_rate_target) = id(baud_rate_original);
-
- ESP_LOGD(TAG, " Target upload baud rate: %d bps", id(baud_rate_target));
+ ESP_LOGD(TAG, " Valid TFT: %s", YESNO(id(tft_is_valid)));
ESP_LOGD(TAG, " Current baud rate: %" PRIu32 " bps", tf_uart->get_baud_rate());
- ESP_LOGD(TAG, " Valid TFT: %s", id(tft_is_valid) ? "True" : "False");
-
- // Upload URL
- ESP_LOGD(TAG, " Upload URL: %s", url.c_str());
- #ifdef ARDUINO
- auto startsWith = [](const std::string& str, const std::string& prefix) -> bool {
- if (str.length() < prefix.length()) return false;
-
- std::string lowerStr = str.substr(0, prefix.length());
- std::transform(lowerStr.begin(), lowerStr.end(), lowerStr.begin(),
- [](unsigned char c){ return std::tolower(c); });
-
- std::string lowerPrefix = prefix;
- std::transform(lowerPrefix.begin(), lowerPrefix.end(), lowerPrefix.begin(),
- [](unsigned char c){ return std::tolower(c); });
-
- return lowerStr == lowerPrefix;
- };
-
- if (startsWith(url, "https")) {
- ESP_LOGE(TAG, "HTTPS is not supported by Arduino framework.");
- ESP_LOGE(TAG, "This transfer will most likely fail.");
- ESP_LOGE(TAG, "Please use HTTP instead.");
- }
- #endif
+ ESP_LOGD(TAG, " Target upload baud rate: %s bps", tft_upload_baud_rate->state.c_str());
+ ESP_LOGD(TAG, " Upload URL: %s", url.c_str());
disp1->set_tft_url(url.c_str());
- nextion_uart_command->execute("bkcmd=3");
-
- lambda: if (id(tft_is_valid)) disp1->goto_page("home");
- delay: 2s
- script.execute: open_upload_dialog
@@ -363,7 +242,7 @@ script:
- lambda: page_id->update();
- wait_until:
condition:
- - lambda: !lambda return (page_id->state == 26);
+ - lambda: return (page_id->state == 26);
timeout: 2s
- script.execute:
id: report_upload_progress
@@ -380,59 +259,34 @@ script:
- script.wait: stop_all
- wait_until:
condition:
- - lambda: !lambda return (!id(tft_is_valid));
+ - lambda: return (!id(tft_is_valid));
timeout: 1s
- ### Attempt twice with upload engine from v4.1.4 (115200bps) when TFT isn't detected
- # - if:
- # condition:
- # - lambda: !lambda return (not id(tft_is_valid));
- # then:
- # - script.execute:
- # id: upload_tft_sequence_attempt_v414
- # url: !lambda return url.c_str();
- # baud_rate: 115200
- # - script.wait: upload_tft_sequence_attempt_v414
-
### Attempt twice at the target baud rate
- script.execute:
id: upload_tft_sequence_attempt
- baud_rate: !lambda return id(baud_rate_target);
+ baud_rate: !lambda return stoi(tft_upload_baud_rate->state);
- script.wait: upload_tft_sequence_attempt
### Attempt twice at the original baud rate
- - script.execute:
- id: upload_tft_sequence_attempt
- baud_rate: !lambda return id(baud_rate_original);
- - script.wait: upload_tft_sequence_attempt
+ - if:
+ condition:
+ - lambda: return (stoi(tft_upload_baud_rate->state) != tf_uart->get_baud_rate());
+ then:
+ - script.execute:
+ id: upload_tft_sequence_attempt
+ baud_rate: 0
+ - script.wait: upload_tft_sequence_attempt
### Attempt twice at the Nextion's default baud rate (115200bps)
- - script.execute:
- id: upload_tft_sequence_attempt
- baud_rate: 115200
- - script.wait: upload_tft_sequence_attempt
-
- ### Attempt twice with upload engine from v4.1.4 (115200bps)
- - script.execute:
- id: upload_tft_sequence_attempt_v414
- url: !lambda return url.c_str();
- baud_rate: 115200
- - script.wait: upload_tft_sequence_attempt_v414
-
- ### Exit reparse and attempt twice again
- - script.execute:
- id: report_upload_progress
- message: "Exiting reparse mode"
- - script.execute:
- id: upload_tft_sequence_attempt
- baud_rate: 115200
- - script.wait: upload_tft_sequence_attempt
-
- ### Then attempt twice again at 9600bps
- - script.execute:
- id: upload_tft_sequence_attempt
- baud_rate: 9600
- - script.wait: upload_tft_sequence_attempt
+ - if:
+ condition:
+ - lambda: return (stoi(tft_upload_baud_rate->state) != 115200 and tf_uart->get_baud_rate() != 115200);
+ then:
+ - script.execute:
+ id: upload_tft_sequence_attempt
+ baud_rate: 115200
+ - script.wait: upload_tft_sequence_attempt
### Restart Nextion and attempt twice again at default baud rate (115200bps)
- script.execute:
@@ -441,7 +295,7 @@ script:
- script.wait: report_upload_progress
- wait_until:
condition:
- - lambda: !lambda return (!id(tft_is_valid));
+ - lambda: return (!id(tft_is_valid));
timeout: 3s
- switch.turn_off: screen_power
- delay: 2s
@@ -459,7 +313,7 @@ script:
- script.wait: report_upload_progress
- wait_until:
condition:
- - lambda: !lambda return (!id(tft_is_valid));
+ - lambda: return (!id(tft_is_valid));
timeout: 5s
- script.execute:
id: report_upload_progress
@@ -467,12 +321,12 @@ script:
- script.wait: report_upload_progress
- wait_until:
condition:
- - lambda: !lambda return (!id(tft_is_valid));
+ - lambda: return (!id(tft_is_valid));
timeout: 5s
- switch.turn_off: screen_power
- delay: 2s
# Restart ESPHome
- - lambda: !lambda App.safe_reboot();
+ - lambda: App.safe_reboot();
### This code should never run
- delay: 2s
@@ -486,7 +340,7 @@ script:
- id: upload_tft_sequence_attempt
mode: single
parameters:
- baud_rate: uint
+ baud_rate: uint32_t
then:
- script.execute: nextion_status
- script.wait: nextion_status
@@ -500,743 +354,70 @@ script:
definitive: false
- script.wait: set_baud_rate
- delay: 2s
- # First attempt
- - script.execute: upload_tft_attempt
- - script.wait: upload_tft_attempt
- - delay: 5s
- # Backup attempt
- - script.execute: upload_tft_attempt
- - script.wait: upload_tft_attempt
- - delay: 5s
-
- - id: upload_tft_sequence_attempt_v414
- mode: single
- parameters:
- url: string
- baud_rate: uint
- then:
- - script.execute: nextion_status
- - script.wait: nextion_status
- - script.execute:
- id: report_upload_progress
- message: "Setting baud rate"
- - script.wait: report_upload_progress
- - script.execute:
- id: set_baud_rate
- baud_rate: !lambda return baud_rate;
- definitive: false
- - script.wait: set_baud_rate
- - delay: 2s
- # Attempt #7
- - script.execute:
- id: upload_tft_v414
- url: !lambda return url.c_str();
- - script.wait: upload_tft_v414
- - delay: 5s
- # Attempt #8
- - script.execute:
- id: upload_tft_v414
- url: !lambda return url.c_str();
- - script.wait: upload_tft_v414
- - delay: 5s
-
- - id: upload_tft_v414
- mode: single
- parameters:
- url: string
- then:
- - lambda: |-
- static const char *const TAG = "addon_upload_tft.script.upload_tft_v414";
- ESP_LOGD(TAG, "Attempting to upload TFT");
- id(tft_upload_attempt)++;
- char update_msg[128];
- sprintf(update_msg, "Attempt #%d at %" PRIu32 " bps", id(tft_upload_attempt), tf_uart->get_baud_rate());
- report_upload_progress->execute(update_msg);
- - script.wait: report_upload_progress
- - wait_until:
- condition:
- - lambda: !lambda return (!id(tft_is_valid));
- timeout: 1s
- - lambda: |-
- static const char *const TAG = "addon_upload_tft.script.upload_tft_v414";
- ESP_LOGD(TAG, "Starting...");
- std::vector buffer_;
-
- bool is_updating_ = false;
-
- bool upload_first_chunk_sent_ = false;
-
- int content_length_ = 0;
- int tft_size_ = 0;
-
- auto delay_seconds_ = [](int seconds) {
- ESP_LOGD(TAG, "Wait %i seconds", seconds);
- for (int i = 0; i < (seconds*4); i++) {
- #ifdef ARDUINO
- delay(250);
- #elif defined(USE_ESP_IDF)
- vTaskDelay(pdMS_TO_TICKS(250));
- #endif
- App.feed_wdt();
- }
- };
-
- auto set_baud_rate_ = [](int baud_rate) {
- #ifdef USE_ARDUINO
- auto *uart = reinterpret_cast(tf_uart);
- #endif
- #ifdef USE_ESP_IDF
- auto *uart = reinterpret_cast(tf_uart);
- #endif
- uart->set_baud_rate(baud_rate);
- uart->setup();
- };
-
- auto send_nextion_command = [](const std::string &command) -> bool
- {
- static const char *const TAG = "addon_upload_tft.script.upload_tft.send_nextion_command";
- ESP_LOGD(TAG, "Sending: %s", command.c_str());
- id(tf_uart).write_str(command.c_str());
- const uint8_t to_send[3] = {0xFF, 0xFF, 0xFF};
- id(tf_uart).write_array(to_send, sizeof(to_send));
- return true;
- };
-
- auto recv_ret_string_ = [](std::string &response, uint32_t timeout, bool recv_flag) -> uint16_t
- {
- static const char *const TAG = "script.upload_tft.recv_ret_string_";
- uint16_t ret;
- uint8_t c = 0;
- uint8_t nr_of_ff_bytes = 0;
- uint64_t start;
- bool exit_flag = false;
- bool ff_flag = false;
-
- start = millis();
-
- while ((timeout == 0 && id(tf_uart).available()) || millis() - start <= timeout)
- {
- if (!id(tf_uart).available())
- {
- App.feed_wdt();
- continue;
- }
-
- id(tf_uart).read_byte(&c);
- if (c == 0xFF)
- {
- nr_of_ff_bytes++;
- }
- else
- {
- nr_of_ff_bytes = 0;
- ff_flag = false;
- }
-
- if (nr_of_ff_bytes >= 3)
- ff_flag = true;
-
- response += (char) c;
- if (recv_flag)
- {
- if (response.find(0x05) != std::string::npos)
- {
- exit_flag = true;
- }
- }
- App.feed_wdt();
- delay(2);
-
- if (exit_flag || ff_flag)
- {
- break;
- }
- }
-
- if (ff_flag)
- response = response.substr(0, response.length() - 3); // Remove last 3 0xFF
-
- ret = response.length();
- return ret;
- };
-
- auto upload_end_ = [&](bool completed) -> bool
- {
- static const char *const TAG = "script.upload_tft.upload_end_";
- ESP_LOGD(TAG, "Completed: %s", completed ? "True" : "False");
- //ESP_LOGD(TAG, "Restarting Nextion");
- //send_nextion_command("rest");
- #ifdef ARDUINO
- delay(1500);
- #elif defined(ESP_PLATFORM)
- //vTaskDelay(pdMS_TO_TICKS(1500));
- #endif
-
- is_updating_ = false;
- if (!completed) ESP_LOGD(TAG, "Nextion TFT upload will attempt again");
- return completed;
- };
-
- #ifdef ARDUINO // arduino # To do: Move to Nextion component on ESPHome
- size_t transfer_buffer_size_ = 0;
- uint8_t *transfer_buffer_{nullptr};
- auto upload_by_chunks_arduino = [&](HTTPClient *http, const std::string &url, int range_start) -> int
- {
- static const char *const TAG = "script.upload_tft.upload_by_chunks_arduino";
- int range_end;
-
- if (range_start == 0 && transfer_buffer_size_ > 16384) { // Start small at the first run in case of a big skip
- range_end = 16384 - 1;
- } else {
- range_end = range_start + transfer_buffer_size_ - 1;
- }
-
- if (range_end > tft_size_)
- range_end = tft_size_;
-
- char range_header[64];
- sprintf(range_header, "bytes=%d-%d", range_start, range_end);
-
- ESP_LOGD(TAG, "Requesting range: %s", range_header);
-
- int tries = 1;
- int code;
- bool begin_status;
- while (tries <= 10) {
- begin_status = http->begin(url.c_str());
-
- ++tries;
- if (!begin_status) {
- ESP_LOGD(TAG, "Connection failed");
- delay(1000);
- continue;
- };
-
- http->addHeader("Range", range_header);
-
- code = http->GET();
- if (code == 200 || code == 206) {
- break;
- }
- ESP_LOGW(TAG, "HTTP Request failed; URL: %s; Error: %s, retries(%d/10)", url.c_str(),
- HTTPClient::errorToString(code).c_str(), tries);
- http->end();
- delay(1000);
- }
-
- if (tries > 10) {
- return -1;
- }
-
- std::string recv_string;
- size_t size;
- int fetched = 0;
- int range = range_end - range_start;
- int write_len;
-
- // fetch next segment from HTTP stream
- while (fetched < range) {
- size = http->getStreamPtr()->available();
- if (!size) {
- App.feed_wdt();
- delay(2);
- continue;
- }
- int c = http->getStreamPtr()->readBytes(
- &transfer_buffer_[fetched], ((size > transfer_buffer_size_) ? transfer_buffer_size_ : size));
- fetched += c;
- }
- http->end();
- ESP_LOGD(TAG, "Fetched %d bytes", fetched);
-
- // upload fetched segments to the display in 4KB chunks
- for (int i = 0; i < range; i += 4096) {
- App.feed_wdt();
- write_len = content_length_ < 4096 ? content_length_ : 4096;
- id(tf_uart).write_array(&transfer_buffer_[i], write_len);
- content_length_ -= write_len;
- ESP_LOGD(TAG, "Uploaded %0.1f %%, remaining %d bytes",
- 100.0 * (tft_size_ - content_length_) / tft_size_,
- content_length_);
-
- if (!upload_first_chunk_sent_) {
- upload_first_chunk_sent_ = true;
- delay(500);
- }
-
- recv_ret_string_(recv_string, 5000, true);
- if (recv_string[0] != 0x05) { // 0x05 == "ok"
- ESP_LOGD(TAG, "recv_string [%s]",
- format_hex_pretty(reinterpret_cast(recv_string.data()), recv_string.size()).c_str());
- }
-
- // handle partial upload request
- if (recv_string[0] == 0x08 && recv_string.size() == 5) {
- uint32_t result = 0;
- for (int j = 0; j < 4; ++j) {
- result += static_cast(recv_string[j + 1]) << (8 * j);
- }
- if (result > 0) {
- ESP_LOGD(TAG, "Nextion reported new range %d", result);
- content_length_ = tft_size_ - result;
- return result;
- }
- }
-
- recv_string.clear();
- }
- return range_end + 1;
- };
- auto upload_tft_ = [&](const std::string &url, uint32_t update_baud_rate_) -> bool
- {
- static const char *const TAG = "addon_upload_tft.script.upload_tft.upload_tft_arduino";
- ESP_LOGD(TAG, "Nextion TFT upload requested");
- ESP_LOGD(TAG, " url: %s", url.c_str());
- ESP_LOGD(TAG, " baud_rate: %" PRIu32, update_baud_rate_);
-
- if (is_updating_) {
- ESP_LOGD(TAG, "Currently updating");
- return upload_end_(false);
- }
-
- if (!network::is_connected()) {
- ESP_LOGD(TAG, "Network is not connected");
- return upload_end_(false);
- }
-
- if (!disp1->is_setup()) {
- ESP_LOGD(TAG, "Setting Nextion protocol reparse mode to passive");
- exit_reparse_v414->execute();
- delay_seconds_(5);
- }
-
- is_updating_ = true;
-
- HTTPClient http;
- http.setTimeout(15000); // Yes 15 seconds.... Helps 8266s along
- http.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS);
- bool begin_status = http.begin(url.c_str());
- if (!begin_status) {
- is_updating_ = false;
- ESP_LOGD(TAG, "Connection failed");
- ExternalRAMAllocator allocator(ExternalRAMAllocator::ALLOW_FAILURE);
- allocator.deallocate(transfer_buffer_, transfer_buffer_size_);
- return upload_end_(false);
- } else {
- ESP_LOGD(TAG, "Connected");
- }
-
- http.addHeader("Range", "bytes=0-255");
- const char *header_names[] = {"Content-Range"};
- http.collectHeaders(header_names, 1);
- ESP_LOGD(TAG, "Requesting URL: %s", url.c_str());
-
- http.setReuse(true);
- // attempt up to 5 times. DNS sometimes needs a second attempt or so
- int tries = 1;
- int code = http.GET();
- delay(100);
-
- while (code != 200 && code != 206 && tries <= 5) {
- ESP_LOGW(TAG, "HTTP Request failed; URL: %s; Error: %s, reattempting (%d/5)", url.c_str(),
- HTTPClient::errorToString(code).c_str(), tries);
-
- delay(250);
- code = http.GET();
- ++tries;
- }
-
- if ((code != 200 && code != 206) || tries > 5) {
- return upload_end_(false);
- }
-
- String content_range_string = http.header("Content-Range");
- content_range_string.remove(0, 12);
- content_length_ = content_range_string.toInt();
- tft_size_ = content_length_;
- http.end();
-
- if (content_length_ < 4096) {
- ESP_LOGE(TAG, "Failed to get file size");
- return upload_end_(false);
- }
-
- ESP_LOGD(TAG, "Updating Nextion");
- // The Nextion will ignore the update command if it is sleeping
-
- char command[128];
- // Tells the Nextion the content length of the tft file and baud rate it will be sent at
- // Once the Nextion accepts the command it will wait until the file is successfully uploaded
- // If it fails for any reason a power cycle of the display will be needed
- sprintf(command, "whmi-wris %d,%d,1", content_length_, update_baud_rate_);
-
- ESP_LOGD(TAG, "Clear serial receive buffer: %d", id(tf_uart).available());
- // Clear serial receive buffer
- uint8_t d;
- while (id(tf_uart).available()) {
- id(tf_uart).read_byte(&d);
- };
-
- send_nextion_command(command);
-
- if (update_baud_rate_ != id(tf_uart).get_baud_rate()) {
- set_baud_rate_(update_baud_rate_);
- //id(tf_uart).set_baud_rate(update_baud_rate_);
- //id(tf_uart).setup();
- //delay_seconds_(2);
- }
-
- ESP_LOGD(TAG, "Waiting for upgrade response");
- std::string response;
- recv_ret_string_(response, 5000, true); // This can take some time to return
- // The Nextion display will, if it's ready to accept data, send a 0x05 byte.
- ESP_LOGD(TAG, "Upgrade response is [%s]",
- format_hex_pretty(reinterpret_cast(response.data()), response.size()).c_str());
-
- if (response.find(0x05) != std::string::npos) {
- ESP_LOGD(TAG, "Preparation for tft update done");
- } else {
- ESP_LOGD(TAG, "Preparation for tft update failed %d \"%s\"", response[0], response.c_str());
- return upload_end_(false);
- }
-
- // Nextion wants 4096 bytes at a time. Make chunk_size a multiple of 4096
- uint32_t chunk_size = 8192;
- if (ESP.getFreeHeap() > 81920) { // Ensure some FreeHeap to other things and limit chunk size
- chunk_size = ESP.getFreeHeap() - 65536;
- chunk_size = int(chunk_size / 4096) * 4096;
- chunk_size = chunk_size > ${upload_tft_chunk_size_max} ? ${upload_tft_chunk_size_max} : chunk_size;
- } else if (ESP.getFreeHeap() < 32768) {
- chunk_size = 4096;
- }
-
- if (transfer_buffer_ == nullptr) {
- ExternalRAMAllocator allocator(ExternalRAMAllocator::ALLOW_FAILURE);
- ESP_LOGD(TAG, "Allocating buffer size %d, Heap size is %" PRIu32, chunk_size, ESP.getFreeHeap());
- transfer_buffer_ = allocator.allocate(chunk_size);
- if (transfer_buffer_ == nullptr) { // Attempt a smaller size
- ESP_LOGD(TAG, "Could not allocate buffer size: %d attempting 4096 instead", chunk_size);
- chunk_size = 4096;
- ESP_LOGD(TAG, "Allocating %d buffer", chunk_size);
- transfer_buffer_ = allocator.allocate(chunk_size);
-
- if (!transfer_buffer_)
- {
- return upload_end_(false);
- }
- }
-
- transfer_buffer_size_ = chunk_size;
- }
-
- ESP_LOGD(TAG, "Updating tft from \"%s\" with a file size of %d using %zu chunksize, Heap Size %" PRIu32,
- url.c_str(), content_length_, transfer_buffer_size_, ESP.getFreeHeap());
-
- int result = 0;
- while (content_length_ > 0) {
- result = upload_by_chunks_arduino(&http, url, result);
- if (result < 0) {
- ESP_LOGD(TAG, "Error updating Nextion!");
- return upload_end_(false);
- }
- App.feed_wdt();
- ESP_LOGD(TAG, "Heap Size %" PRIu32 ", Bytes left %d", ESP.getFreeHeap(), content_length_);
- }
- is_updating_ = false;
- ESP_LOGD(TAG, "Successfully updated Nextion!");
-
- return upload_end_(true);
- };
- #elif defined(ESP_PLATFORM) // esp-idf # To do: Move to Nextion component on ESPHome
- auto upload_range_esp_idf_ = [&](const std::string &url, int range_start) -> int {
- static const char *const TAG = "addon_upload_tft.script.upload_tft.upload_range_esp_idf_";
- ESP_LOGVV(TAG, "url: %s", url.c_str());
- uint32_t range_size_ = tft_size_ - range_start;
- ESP_LOGVV(TAG, "tft_size_: %i", tft_size_);
- ESP_LOGV(TAG, "Available heap: %" PRIu32, esp_get_free_heap_size());
- int range_end = (range_start == 0) ? std::min(tft_size_, 16383) : tft_size_;
- if (range_size_ <= 0 or range_end <= range_start) {
- ESP_LOGE(TAG, "Invalid range");
- ESP_LOGD(TAG, "Range start: %i", range_start);
- ESP_LOGD(TAG, "Range end: %i", range_end);
- ESP_LOGD(TAG, "Range size: %" PRIu32, range_size_);
- return -1;
- }
-
- esp_http_client_config_t config = {
- .url = url.c_str(),
- .cert_pem = nullptr,
- };
- esp_http_client_handle_t client = esp_http_client_init(&config);
-
- char range_header[64];
- sprintf(range_header, "bytes=%d-%d", range_start, range_end);
- ESP_LOGV(TAG, "Requesting range: %s", range_header);
- esp_http_client_set_header(client, "Range", range_header);
- ESP_LOGVV(TAG, "Available heap: %u", esp_get_free_heap_size());
- ESP_LOGV(TAG, "Opening http connetion");
- esp_err_t err;
- if ((err = esp_http_client_open(client, 0)) != ESP_OK) {
- ESP_LOGE(TAG, "Failed to open HTTP connection: %s", esp_err_to_name(err));
- esp_http_client_cleanup(client);
- return -1;
- }
-
- ESP_LOGV(TAG, "Fetch content length");
- int content_length = esp_http_client_fetch_headers(client);
- ESP_LOGV(TAG, "content_length = %d", content_length);
- if (content_length <= 0) {
- ESP_LOGE(TAG, "Failed to get content length: %d", content_length);
- esp_http_client_cleanup(client);
- return -1;
- }
-
- int total_read_len = 0, read_len;
-
- ESP_LOGV(TAG, "Allocate buffer");
- uint8_t* buffer = new uint8_t[4096];
- std::string recv_string;
- if (buffer == nullptr) {
- ESP_LOGE(TAG, "Failed to allocate memory for buffer");
- ESP_LOGV(TAG, "Available heap: %" PRIu32, esp_get_free_heap_size());
- } else {
- ESP_LOGV(TAG, "Memory for buffer allocated successfully");
-
- while (true) {
- App.feed_wdt();
- ESP_LOGVV(TAG, "Available heap: %u", esp_get_free_heap_size());
- int read_len = esp_http_client_read(client, reinterpret_cast(buffer), 4096);
- ESP_LOGVV(TAG, "Read %d bytes from HTTP client, writing to UART", read_len);
- if (read_len > 0) {
- tf_uart->write_array(buffer, read_len);
- ESP_LOGVV(TAG, "Write to UART successful");
- recv_ret_string_(recv_string, 5000, true);
- content_length_ -= read_len;
- ESP_LOGD(TAG, "Uploaded %0.2f %%, remaining %d bytes",
- 100.0 * (tft_size_ - content_length_) / tft_size_,
- content_length_);
- if (recv_string[0] != 0x05) { // 0x05 == "ok"
- ESP_LOGD(TAG, "recv_string [%s]",
- format_hex_pretty(reinterpret_cast(recv_string.data()), recv_string.size()).c_str());
- }
- // handle partial upload request
- if (recv_string[0] == 0x08 && recv_string.size() == 5) {
- uint32_t result = 0;
- for (int j = 0; j < 4; ++j) {
- result += static_cast(recv_string[j + 1]) << (8 * j);
- }
- if (result > 0) {
- ESP_LOGI(TAG, "Nextion reported new range %" PRIu32, result);
- content_length_ = tft_size_ - result;
- // Deallocate the buffer when done
- delete[] buffer;
- ESP_LOGVV(TAG, "Memory for buffer deallocated");
- esp_http_client_cleanup(client);
- esp_http_client_close(client);
- return result;
- }
- }
- recv_string.clear();
- } else if (read_len == 0) {
- ESP_LOGV(TAG, "End of HTTP response reached");
- break; // Exit the loop if there is no more data to read
- } else {
- ESP_LOGE(TAG, "Failed to read from HTTP client, error code: %d", read_len);
- break; // Exit the loop on error
- }
- }
-
- // Deallocate the buffer when done
- delete[] buffer;
- ESP_LOGVV(TAG, "Memory for buffer deallocated");
- }
- esp_http_client_cleanup(client);
- esp_http_client_close(client);
- return range_end + 1;
- };
- auto upload_tft_ = [&](const std::string &url, unsigned int update_baud_rate_) -> bool {
- static const char *const TAG = "addon_upload_tft.script.upload_tft.upload_tft_esp_idf";
- ESP_LOGD(TAG, "Nextion TFT upload requested");
- ESP_LOGD(TAG, " url: %s", url.c_str());
- ESP_LOGD(TAG, " baud_rate: %u", update_baud_rate_);
-
- if (is_updating_) {
- ESP_LOGW(TAG, "Currently updating");
- return upload_end_(false);
- }
-
- if (!network::is_connected()) {
- ESP_LOGE(TAG, "Network is not connected");
- return upload_end_(false);
- }
-
- if (!disp1->is_setup()) {
- ESP_LOGD(TAG, "Setting Nextion protocol reparse mode to passive");
- exit_reparse_v414->execute();
- delay_seconds_(5);
- }
-
- is_updating_ = true;
-
- // Define the configuration for the HTTP client
- ESP_LOGV(TAG, "Establishing connection to HTTP server");
- ESP_LOGVV(TAG, "Available heap: %u", esp_get_free_heap_size());
- esp_http_client_config_t config = {
- .url = url.c_str(),
- .cert_pem = nullptr,
- .method = HTTP_METHOD_HEAD,
- .timeout_ms = 15000,
- };
-
- // Initialize the HTTP client with the configuration
- ESP_LOGV(TAG, "Initializing HTTP client");
- ESP_LOGV(TAG, "Available heap: %" PRIu32, esp_get_free_heap_size());
- esp_http_client_handle_t http = esp_http_client_init(&config);
- if (!http) {
- ESP_LOGE(TAG, "Failed to initialize HTTP client.");
- return upload_end_(false); // return -1 to indicate an error
- }
-
- // Perform the HTTP request
- ESP_LOGV(TAG, "Check if the client could connect");
- ESP_LOGV(TAG, "Available heap: %" PRIu32, esp_get_free_heap_size());
- esp_err_t err = esp_http_client_perform(http);
- if (err != ESP_OK) {
- ESP_LOGE(TAG, "HTTP request failed: %s", esp_err_to_name(err));
- esp_http_client_cleanup(http);
- return upload_end_(false);
- }
-
- // Check the HTTP Status Code
- int status_code = esp_http_client_get_status_code(http);
- ESP_LOGV(TAG, "HTTP Status Code: %d", status_code);
- size_t tft_file_size = esp_http_client_get_content_length(http);
- ESP_LOGD(TAG, "TFT file size: %zu", tft_file_size);
-
- if (tft_file_size < 4096) {
- ESP_LOGE(TAG, "File size check failed. Size: %zu", tft_file_size);
- esp_http_client_cleanup(http);
- return upload_end_(false);
- } else {
- ESP_LOGD(TAG, "File size check passed. Proceeding...");
- }
- content_length_ = tft_file_size;
- tft_size_ = tft_file_size;
-
- ESP_LOGD(TAG, "Updating Nextion");
- // The Nextion will ignore the update command if it is sleeping
-
- char command[128];
- // Tells the Nextion the content length of the tft file and baud rate it will be sent at
- // Once the Nextion accepts the command it will wait until the file is successfully uploaded
- // If it fails for any reason a power cycle of the display will be needed
- sprintf(command, "whmi-wris %d,%d,1", content_length_, update_baud_rate_);
-
- // Clear serial receive buffer
- uint8_t d;
- while (id(tf_uart).available()) {
- id(tf_uart).read_byte(&d);
- };
-
- send_nextion_command(command);
-
- if (update_baud_rate_ != id(tf_uart).get_baud_rate()) {
- set_baud_rate_(update_baud_rate_);
- //id(tf_uart).set_baud_rate(update_baud_rate_);
- //id(tf_uart).setup();
- }
-
- std::string response;
- ESP_LOGD(TAG, "Waiting for upgrade response");
- recv_ret_string_(response, 2000, true); // This can take some time to return
-
- // The Nextion display will, if it's ready to accept data, send a 0x05 byte.
- ESP_LOGD(TAG, "Upgrade response is [%s]",
- format_hex_pretty(reinterpret_cast(response.data()), response.size()).c_str());
-
- if (response.find(0x05) != std::string::npos) {
- ESP_LOGV(TAG, "Preparation for tft update done");
- } else {
- ESP_LOGE(TAG, "Preparation for tft update failed %d \"%s\"", response[0], response.c_str());
- esp_http_client_cleanup(http);
- return upload_end_(false);
- }
-
- ESP_LOGD(TAG, "Updating tft from \"%s\" with a file size of %d, Heap Size %" PRIu32,
- url.c_str(), content_length_, esp_get_free_heap_size());
-
- ESP_LOGV(TAG, "Starting transfer by chunks loop");
- int result = 0;
- while (content_length_ > 0) {
- result = upload_range_esp_idf_(url.c_str(), result);
- if (result < 0) {
- ESP_LOGE(TAG, "Error updating Nextion!");
- esp_http_client_cleanup(http);
- return upload_end_(false);
- }
- App.feed_wdt();
- ESP_LOGV(TAG, "Heap Size %" PRIu32 ", Bytes left %d", esp_get_free_heap_size(), content_length_);
- }
-
- is_updating_ = false;
- ESP_LOGD(TAG, "Successfully updated Nextion!");
-
- ESP_LOGD(TAG, "Close HTTP connection");
- esp_http_client_close(http);
- esp_http_client_cleanup(http);
- return upload_end_(true);
- };
- #endif
-
- if (upload_tft_(url, 115200)) App.safe_reboot();
- char update_msg[128];
- sprintf(update_msg, "Attempt #%d at %" PRIu32 " bps failed!", id(tft_upload_attempt), tf_uart->get_baud_rate());
- report_upload_progress->execute(update_msg);
- ESP_LOGD(TAG, "Finished!");
- - script.wait: report_upload_progress
+ - repeat:
+ count: 2
+ then:
+ # First attempt
+ - script.execute:
+ id: upload_tft_attempt
+ baud_rate: !lambda return baud_rate;
+ - script.wait: upload_tft_attempt
+ - delay: 5s
- id: upload_tft_attempt
mode: single
+ parameters:
+ baud_rate: uint32_t
then:
- logger.log: "Attempting to upload TFT"
- - lambda: !lambda id(tft_upload_attempt)++;
+ - lambda: id(tft_upload_attempt)++;
- lambda: |-
char update_msg[128];
sprintf(update_msg, "Attempt #%d at %" PRIu32 " bps", id(tft_upload_attempt), tf_uart->get_baud_rate());
+ id(tft_upload_result) = esphome::nextion::Nextion::TFTUploadResult::UNKNOWN;
report_upload_progress->execute(update_msg);
- script.wait: report_upload_progress
- wait_until:
condition:
- - lambda: !lambda return (!id(tft_is_valid));
+ - lambda: return (!id(tft_is_valid));
timeout: 1s
- - script.execute: nextion_upload
+ - script.execute:
+ id: nextion_upload
+ baud_rate: !lambda return baud_rate;
- script.wait: nextion_upload
- lambda: |-
char update_msg[128];
- sprintf(update_msg, "Attempt #%d at %" PRIu32 " bps failed!", id(tft_upload_attempt), tf_uart->get_baud_rate());
+ sprintf(update_msg, "Attempt #%d at %" PRIu32 " bps returned: %s", id(tft_upload_attempt),
+ tf_uart->get_baud_rate(), esphome::nextion::Nextion::tft_upload_result_to_string(id(tft_upload_result)));
report_upload_progress->execute(update_msg);
- script.wait: report_upload_progress
+ - if:
+ condition:
+ - lambda: |-
+ return
+ id(tft_upload_result) != esphome::nextion::Nextion::TFTUploadResult::UNKNOWN and
+ id(tft_upload_result) != esphome::nextion::Nextion::TFTUploadResult::UPLOAD_IN_PROGRESS and
+ id(tft_upload_result) != esphome::nextion::Nextion::TFTUploadResult::NEXTION_ERROR_PREPARATION_FAILED and
+ id(tft_upload_result) != esphome::nextion::Nextion::TFTUploadResult::NEXTION_ERROR_INVALID_RESPONSE;
+ then:
+ - delay: 5s
+ - lambda: |-
+ ESP_LOGI("addon_upload_tft.script.upload_tft_attempt", "Restarting ESPHome");
+ App.safe_reboot();
+
+ - id: !extend watchdog
+ then:
+ - lambda: |-
+ if (!id(is_uploading_tft)) {
+ static const char *const TAG = "addon_upload_tft.script.watchdog";
+ ESP_LOGI(TAG, "Add-on Upload TFT:");
+ ESP_LOGI(TAG, " File model: %s", tft_file_model->state.c_str());
+ ESP_LOGI(TAG, " Valid TFT: %s", YESNO(id(tft_is_valid)));
+ }
select:
- - id: tft_file_branch
- name: ${name} Update TFT display - Branch
- platform: template
- options:
- - "main"
- - "beta"
- - "dev"
- initial_option: "main"
- optimistic: true
- restore_value: true
- internal: true
- entity_category: config
- disabled_by_default: true
- icon: mdi:file-sync
- set_action:
- - script.execute: set_tft_file
-
- id: tft_file_model
- name: ${name} Update TFT display - Model
+ name: Update TFT display - Model
platform: template
options:
- "Use nextion_update_url"
@@ -1250,13 +431,38 @@ select:
initial_option: "Use nextion_update_url"
optimistic: true
restore_value: true
- internal: true
+ internal: false
entity_category: config
disabled_by_default: false
icon: mdi:file-sync
- set_action:
+ on_value:
- script.execute: set_tft_file
+ - id: tft_upload_baud_rate
+ name: Update TFT display - Baud rate
+ platform: template
+ options:
+ - "2400"
+ - "4800"
+ - "9600"
+ - "19200"
+ - "31250"
+ - "38400"
+ - "57600"
+ - "115200"
+ - "230400"
+ - "250000"
+ - "256000"
+ - "512000"
+ - "921600"
+ initial_option: "921600"
+ optimistic: true
+ restore_value: true
+ internal: false
+ entity_category: config
+ disabled_by_default: true
+ icon: mdi:swap-horizontal
+
sensor:
- id: !extend display_mode
on_value:
diff --git a/advanced/esphome/nspanel_esphome_advanced.yaml b/advanced/esphome/nspanel_esphome_advanced.yaml
index 1b8786f..2fb8df5 100644
--- a/advanced/esphome/nspanel_esphome_advanced.yaml
+++ b/advanced/esphome/nspanel_esphome_advanced.yaml
@@ -16,37 +16,40 @@ substitutions:
button:
##### EXIT REPARSE TFT DISPLAY #####
- - name: ${name} Exit reparse
+ - name: Exit reparse
platform: template
icon: mdi:file-sync
id: tft_reparse_off
entity_category: config
+ internal: false
+ disabled_by_default: true
on_press:
- logger.log: "Button pressed: Exit reparse"
- script.execute: exit_reparse
- ##### UPDATE TFT BLANK DISPLAY #####
- - name: ${name} Update TFT display (blank)
- platform: template
- icon: mdi:file-sync
- id: tft_update_blank
- entity_category: config
- on_press:
- - lambda: |-
- static const char *const TAG = "button.tft_update_blank";
- ESP_LOGD(TAG, "Button pressed: Update TFT display (blank)");
- upload_tft->execute("${nextion_blank_url}");
-
captive_portal:
+script:
+ - id: exit_reparse
+ mode: restart
+ then:
+ - logger.log: "Exit reparse"
+ - uart.write: "DRAKJHSUYDGBNCJHGJKSHBDN"
+ - uart.write: [0xFF, 0xFF, 0xFF]
+
+ - id: !extend stop_all
+ then:
+ - lambda: |-
+ exit_reparse->stop();
+
sensor:
##### Uptime Sensors #####
- - name: ${name} Uptime seconds
+ - name: Uptime seconds
id: uptime_sec
platform: uptime
internal: true
- - name: ${name} API uptime
+ - name: API uptime
id: api_timestamp
platform: template
lambda: 'return id(time_provider).now().timestamp;'
@@ -56,7 +59,7 @@ sensor:
accuracy_decimals: 0
update_interval: never
- - name: ${name} Device uptime
+ - name: Device uptime
id: device_timestamp
platform: template
lambda: 'return (id(time_provider).now().timestamp - id(uptime_sec).state);'
@@ -68,20 +71,22 @@ sensor:
text_sensor:
##### ESPhome version used to compile the app #####
- - name: ${name} ESPhome Version
+ - name: ESPhome Version
platform: version
- disabled_by_default: true
+ disabled_by_default: false
+ internal: false
+ icon: mdi:tag-text-outline
- platform: wifi_info
ip_address:
- name: ${name} IP
+ name: IP
disabled_by_default: true
id: ip_address
ssid:
- name: ${name} SSID
+ name: SSID
disabled_by_default: true
bssid:
- name: ${name} BSSID
+ name: BSSID
disabled_by_default: true
time:
diff --git a/advanced/esphome/nspanel_esphome_core.yaml b/advanced/esphome/nspanel_esphome_core.yaml
index cd73bc6..53bd7e7 100644
--- a/advanced/esphome/nspanel_esphome_core.yaml
+++ b/advanced/esphome/nspanel_esphome_core.yaml
@@ -15,21 +15,16 @@ substitutions:
ap_password: ${wifi_password}
device_name: NSPanel
name: ${device_name}
+ friendly_name: ${device_name}
wifi_timeout: '15'
##### DON'T CHANGE THIS ######
- version: "4.2.4"
+ version: "4.2.5"
##############################
-##### External components #####
-external_components:
- - source: github://pr#6051 # Remove this and update min ver when that PR is released (Hopefully v2024.1.0)
- components:
- - nextion
- refresh: 300s
-
##### ESPHOME CONFIGURATION #####
esphome:
name: ${name}
+ friendly_name: ${friendly_name}
min_version: 2023.12.0
platformio_options:
build_flags:
@@ -38,10 +33,32 @@ esphome:
- priority: 600.0 # This is where most sensors are set up.
then:
- script.execute: restore_settings
+ - wait_until:
+ condition:
+ - lambda: return disp1->is_setup();
+ timeout: 60s
+ - if:
+ condition:
+ - lambda: return (not disp1->is_detected());
+ then:
+ - switch.turn_off: screen_power
+ - delay: 2s
+ - switch.turn_on: screen_power
+ - delay: 5s
on_shutdown:
- then:
- - switch.turn_off: screen_power
+ - priority: 0
+ then:
+ - lambda: |-
+ // Make it unavailable to blueprint calls
+ nextion_init->publish_state(false);
+ // Update Wi-Fi icon
+ disp1->set_component_text_printf("home.wifi_icon", "\uE708");
+ // Update Wi-Fi icon color
+ disp1->set_component_font_color("home.wifi_icon", 63488);
+ - priority: 600.0
+ then:
+ - switch.turn_off: screen_power
##### TYPE OF ESP BOARD #####
esp32:
@@ -133,7 +150,9 @@ api:
variables:
cmd: string
then:
- - lambda: 'disp1->send_command_printf("%s", cmd.c_str());'
+ - lambda: |-
+ if (!id(is_uploading_tft))
+ disp1->send_command_printf("%s", cmd.c_str());
##### Service to send a command "text_printf" directly to the display #####
- service: send_command_text_printf
@@ -141,7 +160,9 @@ api:
component: string
message: string
then:
- - lambda: 'disp1->set_component_text_printf(component.c_str(), "%s", message.c_str());'
+ - lambda: |-
+ if (!id(is_uploading_tft))
+ disp1->set_component_text_printf(component.c_str(), "%s", message.c_str());
##### Service to send a command "component_value (Dualstate Button)" directly to the display #####
- service: send_command_value
@@ -150,21 +171,26 @@ api:
val: int
then:
- lambda: |-
- disp1->set_component_value(component.c_str(), val);
+ if (!id(is_uploading_tft))
+ disp1->set_component_value(component.c_str(), val);
##### Service to send a command "hide componente" directly to the display #####
- service: send_command_hide
variables:
component: string
then:
- - lambda: 'disp1->hide_component(component.c_str());'
+ - lambda: |-
+ if (!id(is_uploading_tft))
+ disp1->hide_component(component.c_str());
##### Service to send a command "show componente" directly to the display #####
- service: send_command_show
variables:
component: string
then:
- - lambda: 'disp1->show_component(component.c_str());'
+ - lambda: |-
+ if (!id(is_uploading_tft))
+ disp1->show_component(component.c_str());
##### Service to send a command "font color" directly to the display #####
- service: set_component_color
@@ -172,7 +198,9 @@ api:
component: string
foreground: int[]
then:
- - lambda: set_component_color->execute(component, foreground);
+ - lambda: |-
+ if (!id(is_uploading_tft))
+ set_component_color->execute(component, foreground);
##### Service to play a rtttl tones #####
# Example tones : https://codebender.cc/sketch:109888#RTTTL%20Songs.ino
@@ -196,7 +224,7 @@ api:
then:
- lambda: |-
// Is page Alarm visible?
- if (current_page->state == "alarm") // To do: This page constructor should be moved to Blueprint
+ if (current_page->state == "alarm" and not id(is_uploading_tft)) // To do: This page constructor should be moved to Blueprint
{ // Update alarm page
detailed_entity->publish_state(entity);
@@ -297,6 +325,9 @@ api:
relay2_icon: !lambda "return relay2_icon;"
relay2_icon_color: !lambda "return relay2_icon_color;"
relay2_fallback: !lambda "return relay2_fallback;"
+ - script.wait: relay_settings
+ - lambda: |-
+ blueprint_status->publish_state(int(blueprint_status->raw_state) | (1 << 4));
##### Service for transferring global settings from the blueprint to ESPHome #####
- service: global_settings
@@ -317,10 +348,14 @@ api:
embedded_climate: !lambda "return embedded_climate;"
embedded_climate_friendly_name: !lambda "return embedded_climate_friendly_name;"
embedded_indoor_temperature: !lambda "return embedded_indoor_temperature;"
+ # temperature_unit_is_fahrenheit: !lambda "return temperature_unit_is_fahrenheit;" # Deprecated
mui_please_confirm: !lambda "return mui_please_confirm;"
mui_unavailable: !lambda "return mui_unavailable;"
screensaver_time: !lambda "return screensaver_time;"
screensaver_time_color: !lambda "return screensaver_time_color;"
+ - script.wait: global_settings
+ - lambda: |-
+ blueprint_status->publish_state(int(blueprint_status->raw_state) | (1 << 5));
##### Service to show a notification-message on the screen #####
- service: notification_show
@@ -329,19 +364,21 @@ api:
message: string
then:
- lambda: |-
- ESP_LOGV("service.notification_show", "Starting");
+ if (!id(is_uploading_tft)) {
+ ESP_LOGV("service.notification_show", "Starting");
- disp1->goto_page("notification");
- disp1->set_component_text_printf("notification.notifi_label", "%s", label.c_str());
+ disp1->goto_page("notification");
+ disp1->set_component_text_printf("notification.notifi_label", "%s", label.c_str());
- display_wrapped_text->execute("notification.notifi_text01", message.c_str(), display_mode->state == 2 ? 23 : 32);
+ display_wrapped_text->execute("notification.notifi_text01", message.c_str(), display_mode->state == 2 ? 23 : 32);
- notification_label->publish_state(label.c_str());
- notification_text->publish_state(message.c_str());
- timer_reset_all->execute(current_page->state.c_str());
- refresh_notification->execute();
- notification_unread->turn_on();
- if (notification_sound->state) buzzer->play("two short:d=4,o=5,b=100:16e6,16e6");
+ notification_label->publish_state(label.c_str());
+ notification_text->publish_state(message.c_str());
+ timer_reset_all->execute(current_page->state.c_str());
+ refresh_notification->execute();
+ notification_unread->turn_on();
+ if (notification_sound->state) buzzer->play("two short:d=4,o=5,b=100:16e6,16e6");
+ }
##### Service to clear the notification #####
- service: notification_clear
@@ -375,9 +412,12 @@ api:
show: bool
then:
- lambda: |-
- disp1->set_component_text_printf("qrcode.qrcode_label", "%s", title.c_str());
- disp1->set_component_text_printf("qrcode.qrcode_value", "%s", qrcode.c_str());
- if (show) disp1->goto_page("qrcode");
+ if (!id(is_uploading_tft)) {
+ disp1->set_component_text_printf("qrcode.qrcode_label", "%s", title.c_str());
+ disp1->set_component_text_printf("qrcode.qrcode_value", "%s", qrcode.c_str());
+ if (show) disp1->goto_page("qrcode");
+ blueprint_status->publish_state(int(blueprint_status->raw_state) | (1 << 2));
+ }
#### Service to set climate state ####
- service: set_climate
@@ -394,20 +434,24 @@ api:
embedded_climate: bool
entity: string
then:
- - lambda: |-
- if (current_page->state == "climate") detailed_entity->publish_state(entity);
- - script.execute:
- id: set_climate
- current_temp: !lambda "return current_temp;"
- supported_features: !lambda "return supported_features;"
- target_temp: !lambda "return target_temp;"
- target_temp_high: !lambda "return target_temp_high;"
- target_temp_low: !lambda "return target_temp_low;"
- temp_step: !lambda "return temp_step;"
- total_steps: !lambda "return total_steps;"
- temp_offset: !lambda "return temp_offset;"
- climate_icon: !lambda "return climate_icon;"
- embedded_climate: !lambda "return embedded_climate;"
+ - if:
+ condition:
+ lambda: 'return not id(is_uploading_tft);'
+ then:
+ - lambda: |-
+ if (current_page->state == "climate") detailed_entity->publish_state(entity);
+ - script.execute:
+ id: set_climate
+ current_temp: !lambda "return current_temp;"
+ supported_features: !lambda "return supported_features;"
+ target_temp: !lambda "return target_temp;"
+ target_temp_high: !lambda "return target_temp_high;"
+ target_temp_low: !lambda "return target_temp_low;"
+ temp_step: !lambda "return temp_step;"
+ total_steps: !lambda "return total_steps;"
+ temp_offset: !lambda "return temp_offset;"
+ climate_icon: !lambda "return climate_icon;"
+ embedded_climate: !lambda "return embedded_climate;"
#### Service to set the buttons ####
- service: set_button
@@ -422,11 +466,11 @@ api:
label: string
then:
- lambda: |-
- static const char *const TAG = "service.set_button";
- if (page == current_page->state) {
+ if (page == current_page->state and not id(is_uploading_tft)) {
std::string btnicon = id.c_str() + std::string("icon");
std::string btntext = id.c_str() + std::string("text");
std::string btnbri = id.c_str() + std::string("bri");
+ std::string btnpic = id.c_str() + std::string("pic");
uint8_t bg_pic = state ? 47 : 46;
uint16_t txt_color = state ? 10597 : 65535;
disp1->send_command_printf("%spic.picc=%u", id.c_str(), bg_pic);
@@ -443,8 +487,13 @@ api:
disp1->set_component_text_printf(btnbri.c_str(), "%s", bri.c_str());
else
disp1->set_component_text_printf(btnbri.c_str(), " ");
+ disp1->show_component(btnpic.c_str());
+ disp1->show_component(btnicon.c_str());
+ disp1->show_component(btntext.c_str());
+ disp1->show_component(btnbri.c_str());
+ disp1->show_component(id.c_str());
} else {
- ESP_LOGW(TAG, "Skipping button `%s.%s` as page has changed to %s.", page.c_str(), id.c_str(), current_page->state.c_str());
+ ESP_LOGW("service.set_button", "Skipping button `%s.%s` update.", page.c_str(), id.c_str());
}
##### SERVICE TO WAKE UP THE DISPLAY #####
@@ -453,12 +502,14 @@ api:
reset_timer: bool
then:
- lambda: |-
- if (current_page->state == "screensaver") disp1->goto_page(id(wakeup_page_id));
- if (reset_timer)
- timer_reset_all->execute(id(page_names)[id(wakeup_page_id)].c_str());
- else {
- timer_sleep->execute(id(page_names)[id(wakeup_page_id)].c_str(), int(timeout_sleep->state));
- timer_dim->execute(id(page_names)[id(wakeup_page_id)].c_str(), int(timeout_dim->state));
+ if (not id(is_uploading_tft)) {
+ if (current_page->state == "screensaver") disp1->goto_page(wakeup_page_name->state.c_str());
+ if (reset_timer)
+ timer_reset_all->execute(wakeup_page_name->state.c_str());
+ else {
+ timer_sleep->execute(wakeup_page_name->state.c_str(), int(timeout_sleep->state));
+ timer_dim->execute(wakeup_page_name->state.c_str(), int(timeout_dim->state));
+ }
}
#### Service to set the entities ####
@@ -471,14 +522,16 @@ api:
ent_value_xcen: string
then:
- lambda: |-
- std::string enticon = ent_id.c_str() + std::string("_pic");
- std::string entlabel = ent_id.c_str() + std::string("_label");
- std::string entxcen = ent_id.c_str() + std::string(".xcen=") + ent_value_xcen.c_str();
- disp1->set_component_text_printf(enticon.c_str(), "%s", ent_icon.c_str());
- if (strcmp(ent_icon.c_str(), "0") != 0) disp1->set_component_text_printf(enticon.c_str(), "%s", ent_icon.c_str());
- disp1->set_component_text_printf(entlabel.c_str(), "%s", ent_label.c_str());
- disp1->set_component_text_printf(ent_id.c_str(), "%s", ent_value.c_str());
- if (strcmp(ent_value_xcen.c_str(), "0") != 0) disp1->send_command_printf("%s", entxcen.c_str());
+ if (not id(is_uploading_tft)) {
+ std::string enticon = ent_id.c_str() + std::string("_pic");
+ std::string entlabel = ent_id.c_str() + std::string("_label");
+ std::string entxcen = ent_id.c_str() + std::string(".xcen=") + ent_value_xcen.c_str();
+ disp1->set_component_text_printf(enticon.c_str(), "%s", ent_icon.c_str());
+ if (strcmp(ent_icon.c_str(), "0") != 0) disp1->set_component_text_printf(enticon.c_str(), "%s", ent_icon.c_str());
+ disp1->set_component_text_printf(entlabel.c_str(), "%s", ent_label.c_str());
+ disp1->set_component_text_printf(ent_id.c_str(), "%s", ent_value.c_str());
+ if (strcmp(ent_value_xcen.c_str(), "0") != 0) disp1->send_command_printf("%s", entxcen.c_str());
+ }
#### Service to populate the page Home #####
- service: page_home
@@ -500,73 +553,77 @@ api:
entities_pages_icon_color: int[]
then:
- lambda: |-
- static const char *const TAG = "service.page_home";
- ESP_LOGV(TAG, "date_color: %" PRIi32, date_color);
- ESP_LOGV(TAG, "time_format: %s", time_format.c_str());
- ESP_LOGV(TAG, "time_color: %" PRIi32, time_color);
- ESP_LOGV(TAG, "meridiem: %i", meridiem.size());
- ESP_LOGV(TAG, "chip_font_size: %" PRIi32, chip_font_size);
- ESP_LOGV(TAG, "custom_buttons_font_size: %" PRIi32, custom_buttons_font_size);
- ESP_LOGV(TAG, "notification_icon: %s", notification_icon.c_str());
- ESP_LOGV(TAG, "notification_icon_color_normal: %i", notification_icon_color_normal.size());
- ESP_LOGV(TAG, "notification_icon_color_unread: %i", notification_icon_color_unread.size());
- ESP_LOGV(TAG, "qrcode: %s", qrcode ? "True" : "False");
- ESP_LOGV(TAG, "qrcode_icon: %s", qrcode_icon.c_str());
- ESP_LOGV(TAG, "qrcode_icon_color: %i", qrcode_icon_color.size());
- ESP_LOGV(TAG, "entities_pages: %s", entities_pages ? "True" : "False");
- ESP_LOGV(TAG, "entities_pages_icon: %s", entities_pages_icon.c_str());
- ESP_LOGV(TAG, "entities_pages_icon_color: %i", entities_pages_icon_color.size());
+ if (not id(is_uploading_tft)) {
+ static const char *const TAG = "service.page_home";
+ ESP_LOGV(TAG, "date_color: %" PRIi32, date_color);
+ ESP_LOGV(TAG, "time_format: %s", time_format.c_str());
+ ESP_LOGV(TAG, "time_color: %" PRIi32, time_color);
+ ESP_LOGV(TAG, "meridiem: %i", meridiem.size());
+ ESP_LOGV(TAG, "chip_font_size: %" PRIi32, chip_font_size);
+ ESP_LOGV(TAG, "custom_buttons_font_size: %" PRIi32, custom_buttons_font_size);
+ ESP_LOGV(TAG, "notification_icon: %s", notification_icon.c_str());
+ ESP_LOGV(TAG, "notification_icon_color_normal: %i", notification_icon_color_normal.size());
+ ESP_LOGV(TAG, "notification_icon_color_unread: %i", notification_icon_color_unread.size());
+ ESP_LOGV(TAG, "qrcode: %s", YESNO(qrcode));
+ ESP_LOGV(TAG, "qrcode_icon: %s", qrcode_icon.c_str());
+ ESP_LOGV(TAG, "qrcode_icon_color: %i", qrcode_icon_color.size());
+ ESP_LOGV(TAG, "entities_pages: %s", YESNO(entities_pages));
+ ESP_LOGV(TAG, "entities_pages_icon: %s", entities_pages_icon.c_str());
+ ESP_LOGV(TAG, "entities_pages_icon_color: %i", entities_pages_icon_color.size());
- // Localization
- ESP_LOGV(TAG, "Load localization");
- id(mui_time_format) = time_format;
- id(mui_meridiem) = meridiem;
+ // Localization
+ ESP_LOGV(TAG, "Load localization");
+ id(mui_time_format) = time_format;
+ id(mui_meridiem) = meridiem;
- // Date/Time colors
- ESP_LOGV(TAG, "Load date/time colors");
- disp1->set_component_font_color("home.date", date_color);
- disp1->set_component_font_color("home.time", time_color);
- id(home_date_color) = date_color;
- id(home_time_color) = time_color;
+ // Date/Time colors
+ ESP_LOGV(TAG, "Load date/time colors");
+ disp1->set_component_font_color("home.date", date_color);
+ disp1->set_component_font_color("home.time", time_color);
+ id(home_date_color) = date_color;
+ id(home_time_color) = time_color;
- // Chips icon size
- ESP_LOGV(TAG, "Chips size");
- for (int i = 1; i <= 10; ++i) {
- disp1->send_command_printf("home.icon_top_%02d.font=%" PRIu32, i, chip_font_size);
+ // Chips icon size
+ ESP_LOGV(TAG, "Chips size");
+ for (int i = 1; i <= 10; ++i) {
+ disp1->send_command_printf("home.icon_top_%02d.font=%" PRIu32, i, chip_font_size);
+ }
+ disp1->send_command_printf("home.wifi_icon.font=%" PRIu32, chip_font_size);
+ id(home_chip_font_size) = chip_font_size;
+
+ // Custom buttons icon size
+ ESP_LOGV(TAG, "Custom buttons sizes");
+ id(home_custom_buttons_font_size) = custom_buttons_font_size;
+ for (int i = 1; i <= 7; ++i) {
+ disp1->send_command_printf("home.button%02d.font=%i", i, id(home_custom_buttons_font_size));
+ }
+ disp1->send_command_printf("home.bt_notific.font=%i", id(home_custom_buttons_font_size));
+ disp1->send_command_printf("home.bt_qrcode.font=%i", id(home_custom_buttons_font_size));
+ disp1->send_command_printf("home.bt_entities.font=%i", id(home_custom_buttons_font_size));
+
+ // Notification button
+ ESP_LOGV(TAG, "Set Notification button");
+ disp1->send_command_printf("is_notification=%i", (notification_text->state.empty() and notification_label->state.empty()) ? 0 : 1);
+ disp1->set_component_text_printf("home.bt_notific", "%s", notification_icon.c_str());
+ set_component_color->execute("home.bt_notific", notification_unread->state ? notification_icon_color_unread : notification_icon_color_normal);
+ id(home_notify_icon_color_normal) = notification_icon_color_normal;
+ id(home_notify_icon_color_unread) = notification_icon_color_unread;
+
+ // QRCode button
+ ESP_LOGV(TAG, "Set QRCode button");
+ disp1->send_command_printf("is_qrcode=%i", qrcode ? 1 : 0);
+ disp1->set_component_text_printf("home.bt_qrcode", "%s", qrcode_icon.c_str());
+ set_component_color->execute("home.bt_qrcode", qrcode_icon_color);
+
+ // Entities pages button
+ ESP_LOGV(TAG, "Set Entities button");
+ disp1->send_command_printf("is_entities=%i", entities_pages ? 1 : 0);
+ disp1->set_component_text_printf("home.bt_entities", "%s", entities_pages_icon.c_str());
+ //set_component_color->execute("home.bt_entities", entities_pages_icon_color);
+ set_component_color->execute("home.bt_entities", entities_pages_icon_color);
+
+ blueprint_status->publish_state(int(blueprint_status->raw_state) | (1 << 1));
}
- disp1->send_command_printf("home.wifi_icon.font=%" PRIu32, chip_font_size);
- id(home_chip_font_size) = chip_font_size;
-
- // Custom buttons icon size
- ESP_LOGV(TAG, "Custom buttons sizes");
- id(home_custom_buttons_font_size) = custom_buttons_font_size;
- for (int i = 1; i <= 7; ++i) {
- disp1->send_command_printf("home.button%02d.font=%i", i, id(home_custom_buttons_font_size));
- }
- disp1->send_command_printf("home.bt_notific.font=%i", id(home_custom_buttons_font_size));
- disp1->send_command_printf("home.bt_qrcode.font=%i", id(home_custom_buttons_font_size));
- disp1->send_command_printf("home.bt_entities.font=%i", id(home_custom_buttons_font_size));
-
- // Notification button
- ESP_LOGV(TAG, "Set Notification button");
- disp1->send_command_printf("is_notification=%i", (notification_text->state.empty() and notification_label->state.empty()) ? 0 : 1);
- disp1->set_component_text_printf("home.bt_notific", "%s", notification_icon.c_str());
- set_component_color->execute("home.bt_notific", notification_unread->state ? notification_icon_color_unread : notification_icon_color_normal);
- id(home_notify_icon_color_normal) = notification_icon_color_normal;
- id(home_notify_icon_color_unread) = notification_icon_color_unread;
-
- // QRCode button
- ESP_LOGV(TAG, "Set QRCode button");
- disp1->send_command_printf("is_qrcode=%i", qrcode ? 1 : 0);
- disp1->set_component_text_printf("home.bt_qrcode", "%s", qrcode_icon.c_str());
- set_component_color->execute("home.bt_qrcode", qrcode_icon_color);
-
- // Entities pages button
- ESP_LOGV(TAG, "Set Entities button");
- disp1->send_command_printf("is_entities=%i", entities_pages ? 1 : 0);
- disp1->set_component_text_printf("home.bt_entities", "%s", entities_pages_icon.c_str());
- //set_component_color->execute("home.bt_entities", entities_pages_icon_color);
- set_component_color->execute("home.bt_entities", entities_pages_icon_color);
#### Service to populate the page Settings #####
- service: page_settings
@@ -577,10 +634,13 @@ api:
dim: string
then:
- lambda: |-
- if (not reboot.empty()) disp1->set_component_text_printf("settings.lbl_reboot", " %s", reboot.c_str());
- disp1->set_component_text_printf("settings.lbl_brightness", " %s", brightness.c_str());
- display_wrapped_text->execute("settings.lbl_bright", bright.c_str(), display_mode->state == 2 ? 25 : 10);
- display_wrapped_text->execute("settings.lbl_dim", dim.c_str(), display_mode->state == 2 ? 25 : 10);
+ if (not id(is_uploading_tft)) {
+ if (not reboot.empty()) disp1->set_component_text_printf("settings.lbl_reboot", " %s", reboot.c_str());
+ disp1->set_component_text_printf("settings.lbl_brightness", " %s", brightness.c_str());
+ display_wrapped_text->execute("settings.lbl_bright", bright.c_str(), display_mode->state == 2 ? 25 : 10);
+ display_wrapped_text->execute("settings.lbl_dim", dim.c_str(), display_mode->state == 2 ? 25 : 10);
+ blueprint_status->publish_state(int(blueprint_status->raw_state) | (1 << 3));
+ }
#### Service to populate the media player page #####
- service: media_player
@@ -598,106 +658,85 @@ api:
supported_features: int
then:
- lambda: |-
- if (current_page->state == "media_player")
- {
- detailed_entity->publish_state(entity);
- disp1->set_component_text_printf("page_label", "%s", friendly_name.c_str());
- display_wrapped_text->execute("track", media_title.c_str(), display_mode->state == 2 ? 16 : 27);
- display_wrapped_text->execute("artist", media_artist.c_str(), display_mode->state == 2 ? 26 : 40);
+ if (current_page->state == "media_player" and not id(is_uploading_tft)) {
+ detailed_entity->publish_state(entity);
+ disp1->set_component_text_printf("page_label", "%s", friendly_name.c_str());
+ display_wrapped_text->execute("track", media_title.c_str(), display_mode->state == 2 ? 16 : 27);
+ display_wrapped_text->execute("artist", media_artist.c_str(), display_mode->state == 2 ? 26 : 40);
- // on/off button
- if (supported_features & 128 and state == "off") //TURN_ON
- {
- disp1->set_component_foreground_color("bt_on_off", 65535);
- disp1->show_component("bt_on_off");
- }
- else if (supported_features & 256 and state != "off") //TURN_OFF
- {
- disp1->set_component_foreground_color("bt_on_off", 10597);
- disp1->show_component("bt_on_off");
- }
- else disp1->hide_component("bt_on_off");
+ // on/off button
+ if (supported_features & 128 and state == "off") { //TURN_ON
+ disp1->set_component_foreground_color("bt_on_off", 65535);
+ disp1->show_component("bt_on_off");
+ } else if (supported_features & 256 and state != "off") { //TURN_OFF
+ disp1->set_component_foreground_color("bt_on_off", 10597);
+ disp1->show_component("bt_on_off");
+ } else disp1->hide_component("bt_on_off");
- // play/pause button
- if ((supported_features & 512 or supported_features & 16384) and state != "playing" and state != "off") //PLAY_MEDIA+PLAY
- {
- disp1->set_component_text_printf("bt_play_pause", "%s", "\uE409"); // mdi:play
- disp1->show_component("bt_play_pause");
- }
- else if (supported_features & 1 and state == "playing" ) //PAUSE
- {
- disp1->set_component_text_printf("bt_play_pause", "%s", "\uE3E3"); // mdi:pause
- disp1->show_component("bt_play_pause");
- }
- else disp1->hide_component("bt_play_pause");
+ // play/pause button
+ if ((supported_features & 512 or supported_features & 16384) and state != "playing" and state != "off") { //PLAY_MEDIA+PLAY
+ disp1->set_component_text_printf("bt_play_pause", "%s", "\uE409"); // mdi:play
+ disp1->show_component("bt_play_pause");
+ } else if (supported_features & 1 and state == "playing" ) { //PAUSE
+ disp1->set_component_text_printf("bt_play_pause", "%s", "\uE3E3"); // mdi:pause
+ disp1->show_component("bt_play_pause");
+ } else disp1->hide_component("bt_play_pause");
- // bt_prev button - PREVIOUS_TRACK
- if (supported_features & 16 and state != "off") disp1->show_component("bt_prev"); else disp1->hide_component("bt_prev");
- // bt_next button - NEXT_TRACK
- if (supported_features & 32 and state != "off") disp1->show_component("bt_next"); else disp1->hide_component("bt_next");
+ // bt_prev button - PREVIOUS_TRACK
+ if (supported_features & 16 and state != "off") disp1->show_component("bt_prev"); else disp1->hide_component("bt_prev");
+ // bt_next button - NEXT_TRACK
+ if (supported_features & 32 and state != "off") disp1->show_component("bt_next"); else disp1->hide_component("bt_next");
- // Stop button - STOP
- //if (supported_features & 4096 and (state == "playing" or state == "paused")) disp1->show_component("bt_stop"); else disp1->hide_component("bt_stop");
+ // Stop button - STOP
+ //if (supported_features & 4096 and (state == "playing" or state == "paused")) disp1->show_component("bt_stop"); else disp1->hide_component("bt_stop");
- // mute/unmute button - VOLUME_MUTE
- disp1->set_component_value("is_muted", is_volume_muted ? 1 : 0);
- if (supported_features & 8 and is_volume_muted) // unmute
- {
- disp1->set_component_text_printf("bt_mute", "%s", "\uEE07"); // mdi:volume-variant-off
- disp1->show_component("bt_mute");
- }
- else if (supported_features & 8) // mute
- {
- disp1->set_component_text_printf("bt_mute", "%s", "\uE57E"); // mdi:volume-low
- disp1->show_component("bt_mute");
- }
- else disp1->hide_component("bt_mute");
+ // mute/unmute button - VOLUME_MUTE
+ disp1->set_component_value("is_muted", is_volume_muted ? 1 : 0);
+ if (supported_features & 8 and is_volume_muted) { // unmute
+ disp1->set_component_text_printf("bt_mute", "%s", "\uEE07"); // mdi:volume-variant-off
+ disp1->show_component("bt_mute");
+ } else if (supported_features & 8) { // mute
+ disp1->set_component_text_printf("bt_mute", "%s", "\uE57E"); // mdi:volume-low
+ disp1->show_component("bt_mute");
+ } else disp1->hide_component("bt_mute");
- // VOLUME_SET
- if (supported_features & 4)
- {
- if (volume_level != id(last_volume_level))
- {
- id(last_volume_level) = volume_level;
- disp1->set_component_text_printf("vol_text", "%" PRIu32 "%%", volume_level);
- disp1->set_component_value("vol_slider", volume_level);
- }
- disp1->show_component("vol_slider");
- disp1->show_component("bt_vol_down");
- disp1->show_component("bt_vol_up");
- disp1->show_component("vol_text");
- }
- else
- {
- disp1->hide_component("vol_slider");
- disp1->hide_component("bt_vol_down");
- disp1->hide_component("bt_vol_up");
- disp1->hide_component("vol_text");
- }
-
- if (media_duration > 0)
- {
- if (media_duration != id(last_media_duration) or media_position != id(last_media_position))
- {
- id(last_media_duration) = media_duration;
- id(last_media_position) = media_position;
- disp1->set_component_value("prg_current", int(round(min(media_position + media_position_delta, media_duration))));
- }
- disp1->set_component_value("prg_total", int(round(media_duration)));
- disp1->send_command_printf("prg_timer.en=%i", (state == "playing") ? 1 : 0);
- disp1->show_component("time_current");
- disp1->show_component("time_total");
- disp1->show_component("time_progress");
- }
- else
- {
- disp1->send_command_printf("prg_timer.en=0");
- disp1->hide_component("time_current");
- disp1->hide_component("time_total");
- disp1->hide_component("time_progress");
- }
+ // VOLUME_SET
+ if (supported_features & 4) {
+ if (volume_level != id(last_volume_level)) {
+ id(last_volume_level) = volume_level;
+ disp1->set_component_text_printf("vol_text", "%" PRIu32 "%%", volume_level);
+ disp1->set_component_value("vol_slider", volume_level);
+ }
+ disp1->show_component("vol_slider");
+ disp1->show_component("bt_vol_down");
+ disp1->show_component("bt_vol_up");
+ disp1->show_component("vol_text");
+ } else {
+ disp1->hide_component("vol_slider");
+ disp1->hide_component("bt_vol_down");
+ disp1->hide_component("bt_vol_up");
+ disp1->hide_component("vol_text");
}
+ if (media_duration > 0) {
+ if (media_duration != id(last_media_duration) or media_position != id(last_media_position)) {
+ id(last_media_duration) = media_duration;
+ id(last_media_position) = media_position;
+ disp1->set_component_value("prg_current", int(round(min(media_position + media_position_delta, media_duration))));
+ }
+ disp1->set_component_value("prg_total", int(round(media_duration)));
+ disp1->send_command_printf("prg_timer.en=%i", (state == "playing") ? 1 : 0);
+ disp1->show_component("time_current");
+ disp1->show_component("time_total");
+ disp1->show_component("time_progress");
+ } else {
+ disp1->send_command_printf("prg_timer.en=0");
+ disp1->hide_component("time_current");
+ disp1->hide_component("time_total");
+ disp1->hide_component("time_progress");
+ }
+ }
+
##### START - DISPLAY START CONFIGURATION #####
display:
- id: disp1
@@ -732,12 +771,6 @@ display:
##### START - GLOBALS CONFIGURATION #####
globals:
- ##### Wake-up page id #####
- - id: wakeup_page_id
- type: uint
- restore_value: true
- initial_value: '0'
-
##### Wi-Fi timeout #####
- id: wifi_timeout
type: uint
@@ -750,24 +783,6 @@ globals:
restore_value: false
initial_value: 'false'
- ##### Is blueprint updated #####
- - id: is_blueprint_updated
- type: bool
- restore_value: false
- initial_value: 'false'
-
- ##### Is global settings loaded #####
- - id: is_global_settings_loaded
- type: bool
- restore_value: false
- initial_value: 'false'
-
- ##### Is settings restored ####
- - id: is_restored_settings
- type: bool
- restore_value: false
- initial_value: 'false'
-
##### Is boot sequence completed? #####
- id: setup_sequence_completed
type: bool
@@ -903,12 +918,6 @@ globals:
restore_value: false
initial_value: '{64, 64, 64}'
- ##### Versions #####
- - id: version_blueprint
- type: std::string
- restore_value: false
- initial_value: ''
-
- id: page_names
type: std::vector
restore_value: false
@@ -943,11 +952,16 @@ globals:
"confirm"
}'
+ - id: framework
+ type: uint8_t
+ restore_value: false
+ initial_value: '0' # 0 = unknown, 1 = Arduino, 2 = ESP-IDF
+
##### START - BINARY SENSOR CONFIGURATION #####
binary_sensor:
###### LEFT BUTTON BELOW DISPLAY TO TOGGLE RELAY#####
- - name: ${name} Left Button
+ - name: Left Button
platform: gpio
id: left_button
pin:
@@ -1000,7 +1014,7 @@ binary_sensor:
- script.execute: setup_sequence
##### RIGHT BUTTON BELOW DISPLAY TO TOGGLE RELAY #####
- - name: ${name} Right Button
+ - name: Right Button
platform: gpio
id: right_button
pin:
@@ -1044,7 +1058,7 @@ binary_sensor:
- button.press: restart_nspanel
##### Restart NSPanel Button - Setting Page #####
- - name: ${name} Restart
+ - name: Restart
platform: nextion
page_id: 7
component_id: 9
@@ -1052,7 +1066,7 @@ binary_sensor:
on_click:
- button.press: restart_nspanel
##### Restart NSPanel Button - Boot Page #####
- - name: ${name} Restart
+ - name: Restart
platform: nextion
page_id: 8
component_id: 4
@@ -1061,7 +1075,7 @@ binary_sensor:
- button.press: restart_nspanel
## Delays initial info from HA to the display #####
- - name: ${name} Nextion display
+ - name: Nextion display
id: nextion_init
platform: template
device_class: connectivity
@@ -1070,7 +1084,7 @@ binary_sensor:
icon: mdi:tablet-dashboard
##### API connection status
- - name: ${name} Status
+ - name: Status
platform: status
id: api_status
on_state:
@@ -1079,15 +1093,36 @@ binary_sensor:
##### START - BUTTON CONFIGURATION #####
button:
+ ###### Factory Reset button #####
+ - name: Factory reset
+ platform: factory_reset
+ id: nspanel_factory_reset
+ internal: false
+ disabled_by_default: true
+ icon: mdi:restart-alert
+
###### REBOOT BUTTON #####
- - name: ${name} Restart
+ - name: Restart
platform: restart
id: restart_nspanel
+ ###### Power cycle Nextion Display ######
+ - name: Nextion display - Power cycle
+ id: screen_power_cycle
+ platform: template
+ internal: false
+ disabled_by_default: true
+ icon: mdi:power-cycle
+ entity_category: diagnostic
+ on_press:
+ - switch.turn_off: screen_power
+ - delay: 1s
+ - switch.turn_on: screen_power
+
##### START - NUMBER CONFIGURATION #####
number:
##### SCREEN BRIGHTNESS #####
- - name: ${name} Display Brightness
+ - name: Display Brightness
id: display_brightness
platform: template
entity_category: config
@@ -1114,7 +1149,7 @@ number:
}
##### SCREEN BRIGHTNESS DIMMED DOWN #####
- - name: ${name} Display Brightness Dimdown
+ - name: Display Brightness Dimdown
id: display_dim_brightness
platform: template
entity_category: config
@@ -1139,7 +1174,7 @@ number:
}
##### SCREEN BRIGHTNESS SLEEP #####
- - name: ${name} Display Brightness Sleep
+ - name: Display Brightness Sleep
id: display_sleep_brightness
platform: template
entity_category: config
@@ -1158,11 +1193,11 @@ number:
page_screensaver->execute();
##### Temperature Correction #####
- - name: ${name} Temperature Correction
+ - name: Temperature Correction
platform: template
id: temperature_correction
entity_category: config
- unit_of_measurement: ${temp_units}
+ unit_of_measurement: °C
min_value: -10
max_value: 10
initial_value: 0
@@ -1177,7 +1212,7 @@ number:
- lambda: temp_nspanel->publish_state(temp_nspanel->raw_state);
##### Timers settings #####
- - name: ${name} Timeout Page
+ - name: Timeout Page
platform: template
id: timeout_page
entity_category: config
@@ -1191,7 +1226,7 @@ number:
unit_of_measurement: "s"
set_action:
- lambda: timer_page->execute(current_page->state.c_str(), int(x));
- - name: ${name} Timeout Dimming
+ - name: Timeout Dimming
platform: template
id: timeout_dim
entity_category: config
@@ -1205,7 +1240,7 @@ number:
unit_of_measurement: "s"
set_action:
- lambda: timer_dim->execute(current_page->state.c_str(), int(x));
- - name: ${name} Timeout Sleep
+ - name: Timeout Sleep
platform: template
id: timeout_sleep
entity_category: config
@@ -1225,7 +1260,7 @@ number:
##### START - SELECT CONFIGURATION #####
select:
- id: baud_rate
- name: ${name} Baud rate
+ name: Baud rate
platform: template
options:
- "2400"
@@ -1248,11 +1283,11 @@ select:
entity_category: config
disabled_by_default: true
icon: mdi:swap-horizontal
- set_action:
+ on_value:
- lambda: set_baud_rate->execute(stoi(x), true);
- id: wakeup_page_name
- name: ${name} Wake-up page
+ name: Wake-up page
platform: template
options:
- buttonpage01
@@ -1272,16 +1307,44 @@ select:
internal: false
entity_category: config
icon: mdi:page-next-outline
- set_action:
+ on_value:
- lambda: |-
static const char *const TAG = "select.wakeup_page_name";
ESP_LOGD(TAG, "New wake-up page selected: %s", x.c_str());
- if (id(is_restored_settings))
- set_page_id->execute("wakeup_page_id", x.c_str());
- - script.execute: page_screensaver
+ page_screensaver->execute();
##### START - SENSOR CONFIGURATION #####
sensor:
+ ##### Blueprint status #####
+ # Bit # Settings step #
+ # 0 # reserved #
+ # 1 # page_home #
+ # 2 # qrcode #
+ # 3 # page_settings #
+ # 4 # relay_settings #
+ # 5 # global_settings #
+ # 6 # reserved #
+ # 7 # reserved #
+ ##############################
+ - name: Blueprint
+ id: blueprint_status
+ platform: template
+ unit_of_measurement: "%"
+ accuracy_decimals: 1
+ entity_category: diagnostic
+ icon: mdi:link-variant
+ internal: false
+ disabled_by_default: false
+ filters:
+ - lambda: return (x / 62) * 100.0f;
+ on_value:
+ then:
+ - lambda: |-
+ static const char *const TAG = "sensor.blueprint_status";
+ ESP_LOGD(TAG, "Blueprint progress: %i%%", int(round(x)));
+ // Update api value on Nextion
+ disp1->send_command_printf("api=%i", (x > 99) ? 1 : 0);
+
##### INTERNAL TEMPERATURE SENSOR, ADC VALUE #####
- id: ntc_source
platform: adc
@@ -1298,10 +1361,10 @@ sensor:
##### INTERNAL TEMPERATURE SENSOR, resistance to temperature (calculation) #####
- id: temp_nspanel
- name: ${name} Temperature
+ name: Temperature
platform: ntc
sensor: resistance_sensor
- unit_of_measurement: ${temp_units}
+ unit_of_measurement: °C
internal: false
calibration:
b_constant: 3950
@@ -1309,11 +1372,7 @@ sensor:
reference_resistance: 10kOhm
filters:
- lambda: |-
- std::string temp_unit = "${temp_units}";
- if (temp_unit == "°F" or temp_unit == "F" or temp_unit == "°f" or temp_unit == "f")
- return (x * (9.0/5.0)) + 32.0 + temperature_correction->state;
- else
- return x + temperature_correction->state;
+ return x + temperature_correction->state;
on_value:
then:
# Show panel's temperature if API or Wi-Fi are out
@@ -1321,7 +1380,7 @@ sensor:
###### Display Brightness GET VALUE FROM NSPanel SLIDER #####
- id: brightslider
- name: ${name} brightness Slider
+ name: brightness Slider
platform: nextion
variable_name: brightslider
internal: true
@@ -1335,7 +1394,7 @@ sensor:
###### Display DIM Brightness GET VALUE FROM NSPanel SLIDER #####
- id: dimslider
- name: ${name} dim brightness slider
+ name: dim brightness slider
platform: nextion
variable_name: dimslider
internal: true
@@ -1349,16 +1408,15 @@ sensor:
###### Display Brightness - Current value (%) #####
- id: current_brightness
- name: ${name} Display Current brightness
+ name: Display Current brightness
platform: nextion
variable_name: dim
precision: 0
accuracy_decimals: 0
unit_of_measurement: "%"
icon: mdi:brightness-percent
- #update_interval: 60s
internal: false
- disabled_by_default: true
+ disabled_by_default: false
on_value:
then:
- lambda: |-
@@ -1367,7 +1425,7 @@ sensor:
###### Page Id - Current #####
- id: page_id
- name: ${name} Page Id
+ name: Page Id
platform: nextion
variable_name: dp
precision: 0
@@ -1390,37 +1448,40 @@ sensor:
##### Display mode (1 = EU, 2 = US, 3 = US Landscape)
- id: display_mode
- name: ${name} Display mode
+ name: Display mode
platform: nextion
variable_name: display_mode
precision: 0
accuracy_decimals: 0
- internal: true
+ internal: false
+ icon: mdi:phone-rotate-portrait
entity_category: diagnostic
##### Charset (1 = International (original), 2 = CJK languages)
- - name: ${name} Display charset
+ - name: Display charset
id: display_charset
platform: nextion
variable_name: charset
precision: 0
accuracy_decimals: 0
- internal: true
+ internal: false
+ icon: mdi:translate
entity_category: diagnostic
- ##### WIFI Signal stregth
- - name: ${name} RSSI
+ ##### Wi-Fi Signal stregth
+ - name: RSSI
id: wifi_rssi
platform: wifi_signal
internal: false
- disabled_by_default: true
+ disabled_by_default: false
+ icon: mdi:wifi
entity_category: diagnostic
##### START - SWITCH CONFIGURATION #####
switch:
##### Notification unread #####
- - name: ${name} Notification unread
+ - name: Notification unread
platform: template
id: notification_unread
entity_category: config
@@ -1429,16 +1490,16 @@ switch:
on_turn_on:
- wait_until:
condition:
- - lambda: !lambda return id(is_global_settings_loaded);
+ - lambda: !lambda return (blueprint_status->state > 99);
- lambda: set_component_color->execute("home.bt_notific", id(home_notify_icon_color_unread));
on_turn_off:
- wait_until:
condition:
- - lambda: !lambda return id(is_global_settings_loaded);
+ - lambda: !lambda return (blueprint_status->state > 99);
- lambda: set_component_color->execute("home.bt_notific", id(home_notify_icon_color_normal));
##### Notification sound #####
- - name: ${name} Notification sound
+ - name: Notification sound
platform: template
id: notification_sound
entity_category: config
@@ -1446,7 +1507,7 @@ switch:
restore_mode: RESTORE_DEFAULT_OFF
##### PHYSICAL SWITCH 1 #####
- - name: ${name} Relay 1
+ - name: Relay 1
platform: gpio
id: relay_1
pin:
@@ -1459,7 +1520,7 @@ switch:
then:
- script.execute: refresh_relays
##### PHYSICAL SWITCH 2 ######
- - name: ${name} Relay 2
+ - name: Relay 2
platform: gpio
id: relay_2
pin:
@@ -1473,7 +1534,7 @@ switch:
- script.execute: refresh_relays
##### DISPLAY ALWAYS ON #####
- - name: ${name} Nextion display - Power
+ - name: Nextion display - Power
platform: gpio
id: screen_power
entity_category: diagnostic
@@ -1481,8 +1542,8 @@ switch:
number: 4
inverted: true
restore_mode: ALWAYS_ON
- internal: false
- disabled_by_default: true
+ internal: true
+ disabled_by_default: false
on_turn_on:
- wait_until:
condition:
@@ -1491,14 +1552,14 @@ switch:
- lambda: |-
if (id(setup_sequence_completed)) {
nextion_init->publish_state(disp1->is_setup());
- disp1->goto_page(id(wakeup_page_id));
+ disp1->goto_page(wakeup_page_name->state.c_str());
}
on_turn_off:
- lambda: |-
nextion_init->publish_state(false);
##### Relay Local control #####
- - name: ${name} Relay 1 Local
+ - name: Relay 1 Local
platform: template
id: relay1_local
entity_category: config
@@ -1509,7 +1570,7 @@ switch:
- logger.log: "Relay 1 Local turned On!"
on_turn_off:
- logger.log: "Relay 1 Local turned Off!"
- - name: ${name} Relay 2 Local
+ - name: Relay 2 Local
platform: template
id: relay2_local
entity_category: config
@@ -1523,9 +1584,8 @@ switch:
##### START - TEXT SENSOR CONFIGURATION #####
text_sensor:
-
##### Entity Id of the entity displayed on the detailed pages
- - name: ${name} Detailed Entity
+ - name: Detailed Entity
id: detailed_entity
platform: template
icon: mdi:tablet-dashboard
@@ -1533,23 +1593,23 @@ text_sensor:
disabled_by_default: false
##### Current page name #####
- - name: ${name} Current page
+ - name: Current page
id: current_page
platform: template
icon: mdi:tablet-dashboard
internal: false
disabled_by_default: false
- - name: ${name} Notification Label
+ - name: Notification Label
platform: template
id: notification_label
- - name: ${name} Notification Text
+ - name: Notification Text
platform: template
id: notification_text
##### NSPanel event sensor, the main action sensor - push to HA #####
- - name: ${name} NSPanel event
+ - name: NSPanel event
platform: nextion
nextion_id: disp1
id: disp1_nspanel_event
@@ -1587,7 +1647,7 @@ text_sensor:
});
##### NSPanel event - Execute actions from ESPHome - NO push to HA #####
- - name: ${name} NSPanel local event
+ - name: NSPanel local event
platform: nextion
nextion_id: disp1
id: disp1_local_event
@@ -1677,16 +1737,60 @@ text_sensor:
else if (not key.empty()) ha_call_service->execute((std::string("media_player.") + key.c_str()), "", "", entity.c_str());
}
+ ##### Versioning #####
+ - id: version_blueprint
+ name: Version Blueprint
+ platform: template
+ entity_category: diagnostic
+ icon: mdi:tag-text-outline
+ internal: false
+ update_interval: never
+ lambda: |-
+ return {"unknown"};
+ on_value:
+ - lambda: |-
+ static const char *const TAG = "text_sensor.version_blueprint";
+ ESP_LOGD(TAG, "Blueprint version: %s", x.c_str());
+ if (current_page->state == "boot") {
+ disp1->set_component_text_printf("boot.bluep_version", "%s", x.c_str());
+ disp1->send_command_printf("tm_esphome.en=0");
+ page_boot->execute();
+ timer_reset_all->execute("boot");
+ }
+ check_versions->execute();
+
+ - id: version_esphome
+ name: Version ESPHome
+ platform: template
+ entity_category: diagnostic
+ icon: mdi:tag-text-outline
+ internal: false
+ lambda: |-
+ return {"${version}"};
+ on_value:
+ - lambda: |-
+ static const char *const TAG = "text_sensor.version_esphome";
+ ESP_LOGD(TAG, "ESPHome version: %s", x.c_str());
+ if (current_page->state == "boot") {
+ disp1->set_component_text_printf("esph_version", x.c_str());
+ disp1->send_command_printf("tm_esphome.en=0");
+ page_boot->execute();
+ timer_reset_all->execute("boot");
+ }
+ check_versions->execute();
+
- id: version_tft
- name: ${name} TFT version
+ name: Version TFT
platform: nextion
component_name: tft_version
entity_category: diagnostic
- internal: true
+ icon: mdi:tag-text-outline
+ internal: false
+ update_interval: never
on_value:
- lambda: |-
static const char *const TAG = "text_sensor.version_tft";
- ESP_LOGD(TAG, "TFT version: %s", version_tft->state.c_str());
+ ESP_LOGD(TAG, "TFT version: %s", x.c_str());
if (current_page->state == "boot") {
disp1->send_command_printf("tm_esphome.en=0");
page_boot->execute();
@@ -1704,6 +1808,7 @@ script:
value: string
then:
- lambda: |-
+ if (id(is_uploading_tft)) change_climate_state->stop();
if (!embedded) {
if (key == "temperature" or key == "target_temp_high" or key == "target_temp_low")
ha_call_service->execute("climate.set_temperature", key.c_str(), to_string(stof(value) / 10), detailed_entity->state.c_str());
@@ -1727,9 +1832,10 @@ script:
return (major1 == major2) && (minor1 == minor2);
};
- return (compareVersions("${version}", version_tft->state.c_str()) and compareVersions("${version}", id(version_blueprint).c_str()));
+ return (compareVersions("${version}", version_tft->state.c_str()) and compareVersions("${version}", version_blueprint->state.c_str()));
timeout: 60s
- lambda: |-
+ if (id(is_uploading_tft)) check_versions->stop();
static const char *const TAG = "script.check_versions";
auto compareVersions = [](const char* version1, const char* version2) -> bool
{
@@ -1741,20 +1847,12 @@ script:
return (major1 == major2) && (minor1 == minor2);
};
- ESP_LOGD(TAG, "ESPHome version: ${version}");
- ESP_LOGD(TAG, "TFT version: %s", version_tft->state.c_str());
+ ESP_LOGD(TAG, "Versions:");
+ ESP_LOGD(TAG, " ESPHome: ${version}");
+ ESP_LOGD(TAG, " TFT: %s", version_tft->state.c_str());
if (not compareVersions("${version}", version_tft->state.c_str())) ESP_LOGE(TAG, "TFT version mismatch!");
- ESP_LOGD(TAG, "Blueprint version: %s", id(version_blueprint).c_str());
- if (not compareVersions("${version}", id(version_blueprint).c_str())) ESP_LOGE(TAG, "Blueprint version mismatch!");
-
- std::string framework = "unknown";
- #ifdef ARDUINO
- framework = "arduino";
- #elif defined(USE_ESP_IDF)
- framework = "esp-idf";
- #endif
- ESP_LOGD(TAG, "Framework: %s", framework.c_str());
- ESP_LOGD(TAG, "Baud rate: %" PRIu32, id(tf_uart).get_baud_rate());
+ ESP_LOGD(TAG, " Blueprint: %s", version_blueprint->state.c_str());
+ if (not compareVersions("${version}", version_blueprint->state.c_str())) ESP_LOGE(TAG, "Blueprint version mismatch!");
auto ha_event = new esphome::api::CustomAPIDevice();
ha_event->fire_homeassistant_event("esphome.nspanel_ha_blueprint",
@@ -1762,17 +1860,20 @@ script:
{"type", "version"},
{"tft", version_tft->state.c_str()},
{"esphome", "${version}"},
- {"blueprint", id(version_blueprint).c_str()},
- {"framework", framework.c_str()},
- {"baud_rate", to_string(id(tf_uart).get_baud_rate())}
+ {"blueprint", version_blueprint->state.c_str()}
});
- id: display_embedded_temp
mode: restart
then:
- lambda: |-
- if (id(embedded_indoor_temp) or (!wifi_component->is_connected()) or (!api_server->is_connected()))
- disp1->set_component_text_printf("home.current_temp", "%.1f${temp_units}", temp_nspanel->state);
+ if (id(embedded_indoor_temp) or (!wifi_component->is_connected()) or (!api_server->is_connected())) {
+ float unit_based_temperature = temp_nspanel->state;
+ std::string temp_units = "${temp_units}";
+ if (temp_units == "°F" || temp_units == "F" || temp_units == "°f" || temp_units == "f")
+ unit_based_temperature = (unit_based_temperature * 9 / 5) + 32;
+ disp1->set_component_text_printf("home.current_temp", "%.1f${temp_units}", unit_based_temperature);
+ }
- id: display_wrapped_text
mode: queued
@@ -1809,24 +1910,6 @@ script:
}
disp1->set_component_text_printf(component.c_str(), "%s", wrappedText.c_str());
- - id: exit_reparse
- mode: restart
- then:
- - logger.log: "Exit reparse"
- - uart.write: "DRAKJHSUYDGBNCJHGJKSHBDN"
- - uart.write: [0xFF, 0xFF, 0xFF]
- - uart.write: "recmod=0"
- - uart.write: [0xFF, 0xFF, 0xFF]
- - uart.write: "recmod=0"
- - uart.write: [0xFF, 0xFF, 0xFF]
- - uart.write: "connect"
- - uart.write: [0xFF, 0xFF, 0xFF]
- - uart.write: [0xFF, 0xFF]
- - uart.write: "connect"
- - uart.write: [0xFF, 0xFF, 0xFF]
- - uart.write: "bkcmd=3"
- - uart.write: [0xFF, 0xFF, 0xFF]
-
- id: global_settings
mode: restart
parameters:
@@ -1834,16 +1917,18 @@ script:
embedded_climate: bool
embedded_climate_friendly_name: string
embedded_indoor_temperature: bool
+ # temperature_unit_is_fahrenheit: bool # Deprecated
mui_please_confirm: string
mui_unavailable: string
screensaver_time: bool
screensaver_time_color: int32_t[]
then:
- lambda: |-
+ if (id(is_uploading_tft)) global_settings->stop();
static const char *const TAG = "script.global_settings";
// Blueprint version
ESP_LOGV(TAG, "Check Blueprint version");
- id(version_blueprint) = blueprint_version;
+ version_blueprint->publish_state(blueprint_version.c_str());
check_versions->execute();
// Embedded thermostat
@@ -1865,10 +1950,6 @@ script:
id(screensaver_display_time_color) = screensaver_time_color;
page_screensaver->execute();
- id(is_global_settings_loaded) = true;
- id(is_blueprint_updated) = true;
- disp1->send_command_printf("api=1");
-
if (current_page->state != "boot") {
// Update current page
ESP_LOGV(TAG, "Update current page");
@@ -1907,9 +1988,9 @@ script:
- rtttl.play:
rtttl: 'two short:d=4,o=5,b=100:16e6,16e6'
- lambda: |-
- ESP_LOGD("script.global_settings", "Jump to wake-up page: %s", id(page_names)[id(wakeup_page_id)].c_str());
- disp1->goto_page(id(wakeup_page_id));
- timer_reset_all->execute(id(page_names)[id(wakeup_page_id)].c_str());
+ ESP_LOGD("script.global_settings", "Jump to wake-up page: %s", wakeup_page_name->state.c_str());
+ disp1->goto_page(wakeup_page_name->state.c_str());
+ timer_reset_all->execute(wakeup_page_name->state.c_str());
- lambda: |-
ESP_LOGV("script.global_settings", "Finished");
@@ -1922,6 +2003,7 @@ script:
command: string
then:
- lambda: |-
+ if (id(is_uploading_tft)) ha_button->stop();
timer_reset_all->execute(page.c_str());
auto ha_event = new esphome::api::CustomAPIDevice();
ha_event->fire_homeassistant_event("esphome.nspanel_ha_blueprint",
@@ -1941,6 +2023,7 @@ script:
entity: string
then:
- lambda: |-
+ if (id(is_uploading_tft)) ha_call_service->stop();
static const char *const TAG = "script.ha_call_service";
ESP_LOGV(TAG, "Calling Home Assisant service");
ESP_LOGV(TAG, " Type: service_call");
@@ -1968,19 +2051,21 @@ script:
- lambda: |-
static const char *const TAG = "script.nextion_status";
ESP_LOGD(TAG, "Nextion status:");
- ESP_LOGD(TAG, " Is detected: %s", disp1->is_detected() ? "True" : "False");
- ESP_LOGD(TAG, " Is setup: %s", disp1->is_setup() ? "True" : "False");
+ ESP_LOGD(TAG, " Is detected: %s", YESNO(disp1->is_detected()));
+ ESP_LOGD(TAG, " Is setup: %s", YESNO(disp1->is_setup()));
ESP_LOGD(TAG, " Queue size: %d", disp1->queue_size());
- id: notification_clear
mode: restart
then:
- lambda: |-
- if (current_page->state == "notification") disp1->goto_page("home");
- notification_label->publish_state("");
- notification_text->publish_state("");
- notification_unread->turn_off();
- refresh_notification->execute();
+ if (not id(is_uploading_tft)) {
+ notification_label->publish_state("");
+ notification_text->publish_state("");
+ notification_unread->turn_off();
+ refresh_notification->execute();
+ if (current_page->state == "notification") disp1->goto_page("home");
+ }
- id: open_entity_settings_page
mode: restart
@@ -1993,22 +2078,24 @@ script:
back_page: string
then:
- lambda: |-
- detailed_entity->publish_state(entity);
- if (page == "alarm_control_panel") page = "alarm";
- std::string cmd_page = std::string("page ") + page.c_str();
- disp1->send_command_printf(cmd_page.c_str());
- if (page_label.find("\\r") != std::string::npos)
- page_label = page_label.replace(page_label.find("\\r"), 2, " ");
- disp1->set_component_text_printf("page_label", "%s", page_label.c_str());
- set_page_id->execute("back_page_id", back_page.c_str());
- if (page == "climate")
- disp1->set_component_value("embedded", (entity == "embedded_climate") ? 1 : 0);
- else
- {
- if ((page_icon != std::string()) and (page_icon != ""))
- disp1->set_component_text_printf("icon_state", "%s", page_icon.c_str());
- set_component_color->execute("icon_state", page_icon_color);
- }
+ if (not id(is_uploading_tft)) {
+ detailed_entity->publish_state(entity);
+ if (page == "alarm_control_panel") page = "alarm";
+ std::string cmd_page = std::string("page ") + page.c_str();
+ disp1->send_command_printf(cmd_page.c_str());
+ if (page_label.find("\\r") != std::string::npos)
+ page_label = page_label.replace(page_label.find("\\r"), 2, " ");
+ disp1->set_component_text_printf("page_label", "%s", page_label.c_str());
+ set_page_id->execute("back_page_id", back_page.c_str());
+ if (page == "climate")
+ disp1->set_component_value("embedded", (entity == "embedded_climate") ? 1 : 0);
+ else
+ {
+ if ((page_icon != std::string()) and (page_icon != ""))
+ disp1->set_component_text_printf("icon_state", "%s", page_icon.c_str());
+ set_component_color->execute("icon_state", page_icon_color);
+ }
+ }
- id: page_alarm
mode: restart
@@ -2020,14 +2107,9 @@ script:
- lambda: |-
static const char *const TAG = "script.page_blank";
ESP_LOGV(TAG, "Construct blank page");
- std::string framework = "unknown";
- #ifdef ARDUINO
- framework = "arduino";
- #elif defined(USE_ESP_IDF)
- framework = "esp-idf";
- #endif
disp1->set_component_text_printf("esp_version", "ESP: ${version}"); // ESPHome version
- disp1->set_component_text_printf("framework", framework.c_str()); // ESPHome framework
+ disp1->set_component_text_printf("framework", "%s", id(framework) == 1 ? "Arduino" :
+ (id(framework) == 2 ? "ESP-IDF" : "Unknown")); // ESPHome framework
disp1->send_command_printf("tm_esphome.en=0");
- id: page_boot
@@ -2038,15 +2120,11 @@ script:
ESP_LOGV(TAG, "Construct boot page");
set_brightness->execute(100);
- std::string framework = "unknown";
- #ifdef ARDUINO
- framework = "arduino";
- #elif defined(USE_ESP_IDF)
- framework = "esp-idf";
- #endif
- disp1->set_component_text_printf("esph_version", "${version}"); // ESPHome version
- disp1->set_component_text_printf("framework", framework.c_str()); // ESPHome framework
- disp1->show_component("bt_reboot");
+ disp1->set_component_text_printf("esph_version", "${version}"); // ESPHome version
+ disp1->set_component_text_printf("framework", "%s", id(framework) == 1 ? "Arduino" :
+ (id(framework) == 2 ? "ESP-IDF" : "Unknown")); // ESPHome framework
+ disp1->send_command_printf("tm_esphome.en=0");
+ // disp1->show_component("bt_reboot");
- id: page_buttonpage
mode: restart
@@ -2206,6 +2284,7 @@ script:
then:
- script.execute: refresh_relays
- script.execute: refresh_wifi_icon
+ - script.execute: refresh_notification
- id: page_keyb_num
mode: restart
@@ -2239,7 +2318,8 @@ script:
if (current_page->state == "screensaver" and not id(is_uploading_tft)) {
static const char *const TAG = "script.page_screensaver";
ESP_LOGV(TAG, "Updating screensaver page");
- disp1->send_command_printf("back_page_id=%i", id(wakeup_page_id));
+ set_page_id->execute("back_page_id", wakeup_page_name->state.c_str());
+ // disp1->send_command_printf("back_page_id=%i", id(wakeup_page_id));
if (id(screensaver_display_time)) {
disp1->show_component("text");
set_component_color->execute("screensaver.text",id(screensaver_display_time_color));
@@ -2338,9 +2418,10 @@ script:
condition:
- lambda: !lambda return id(setup_sequence_completed);
- lambda: |-
- bool is_notification = (notification_text->state.empty() and notification_label->state.empty());
+ static const char *const TAG = "script.refresh_notification";
+ bool is_notification = ((not notification_text->state.empty()) or (not notification_label->state.empty()));
+ ESP_LOGV(TAG, "Notification: %s", YESNO(is_notification));
disp1->send_command_printf("is_notification=%i", is_notification ? 0 : 1);
- set_component_color->execute("home.bt_notific", notification_unread->state ? id(home_notify_icon_color_unread) : id(home_notify_icon_color_normal));
if (current_page->state == "home") {
if (is_notification) {
disp1->show_component("bt_notific");
@@ -2348,6 +2429,11 @@ script:
disp1->hide_component("bt_notific");
}
}
+ - wait_until:
+ condition:
+ - lambda: return (blueprint_status->state > 99);
+ - lambda: |-
+ set_component_color->execute("home.bt_notific", notification_unread->state ? id(home_notify_icon_color_unread) : id(home_notify_icon_color_normal));
- id: refresh_relays
mode: restart
@@ -2366,15 +2452,15 @@ script:
- lambda: |-
if (nextion_init->state) {
// Update Wi-Fi icon color
- disp1->set_component_font_color("home.wifi_icon", (id(is_blueprint_updated)) ? (wifi_rssi->state > -70 ? 33808 : 64992) : 63488);
+ disp1->set_component_font_color("home.wifi_icon", (blueprint_status->state > 99) ? (wifi_rssi->state > -70 ? 33808 : 64992) : 63488);
// Update Wi-Fi icon
disp1->set_component_text_printf("home.wifi_icon", "%s",
wifi_component->is_connected() ?
(api_server->is_connected() ?
- (id(is_blueprint_updated) ? "\uE5A8" : // mdi:wifi - All right!
- "\uE7CF") : // mdi:home-assistant - Blueprint is out
- "\uF256") : // mdi:api-off
- "\uE5A9"); // mdi:wifi-off
+ ((blueprint_status->state > 99) ? "\uE5A8" : // mdi:wifi - All right!
+ "\uE7CF") : // mdi:home-assistant - Blueprint is out
+ "\uF256") : // mdi:api-off
+ "\uE5A9"); // mdi:wifi-off
}
- id: relay_settings
@@ -2389,6 +2475,11 @@ script:
relay2_icon_color: int
relay2_fallback: bool
then:
+ - if:
+ condition:
+ lambda: 'return id(is_uploading_tft);'
+ then:
+ - script.stop: relay_settings
- lambda: |-
static const char *const TAG = "script.relay_settings";
// Relays
@@ -2411,19 +2502,27 @@ script:
mode: restart
then:
- lambda: |-
- static const char *const TAG = "script.restore_settings";
- ESP_LOGD(TAG, "Restoring settings");
+ ESP_LOGD("script.restore_settings", "Restoring settings");
- ESP_LOGV(TAG, "Restoring baud rate");
+ #ifdef ARDUINO
+ id(framework) = 1;
+ #elif defined(USE_ESP_IDF)
+ id(framework) = 2;
+ #endif
+
+ // ESP_LOGV(TAG, "Restoring wake-up page selector");
+ // auto wakeup_page_name_call = id(wakeup_page_name).make_call();
+ // wakeup_page_name_call.set_option(id(page_names)[id(wakeup_page_id)]);
+ // wakeup_page_name_call.perform();
+
+ // id(is_restored_settings) = true;
+ - wait_until:
+ condition:
+ - lambda: return (not isnan(stoi(baud_rate->state)));
+ - lambda: |-
+ ESP_LOGV("script.restore_settings", "Restoring baud rate");
set_baud_rate->execute(stoi(baud_rate->state), true);
-
- ESP_LOGV(TAG, "Restoring wake-up page selector");
- auto wakeup_page_name_call = id(wakeup_page_name).make_call();
- wakeup_page_name_call.set_option(id(page_names)[id(wakeup_page_id)]);
- wakeup_page_name_call.perform();
-
- ESP_LOGV(TAG, "Finishing");
- id(is_restored_settings) = true;
+ ESP_LOGV("script.restore_settings", "Done!");
- id: service_call_alarm_control_panel
mode: restart
@@ -2461,7 +2560,7 @@ script:
- id: set_baud_rate
mode: restart
parameters:
- baud_rate: int
+ baud_rate: uint32_t
definitive: bool
then:
- if:
@@ -2470,29 +2569,27 @@ script:
then:
- lambda: |-
static const char *const TAG = "script.set_baud_rate";
- ESP_LOGD(TAG, "Baud rate changing from %" PRIu32 " to %i bps", tf_uart->get_baud_rate(), baud_rate);
+ ESP_LOGD(TAG, "Baud rate changing from %" PRIu32 " to %" PRIu32 " bps", tf_uart->get_baud_rate(), baud_rate);
ESP_LOGD(TAG, "Flush UART");
- wait_until:
condition:
- lambda: !lambda return (tf_uart->available() < 1);
- timeout: 3s
+ timeout: 5s
- lambda: |-
- tf_uart->flush();
static const char *const TAG = "script.set_baud_rate";
- ESP_LOGD(TAG, "Sending instruction '%s=%i' to Nextion", definitive ? "bauds" : "baud", baud_rate);
- disp1->send_command_printf("%s=%i", definitive ? "bauds" : "baud", baud_rate);
+ ESP_LOGD(TAG, "Sending instruction '%s=%" PRIu32 "' to Nextion", definitive ? "bauds" : "baud", baud_rate);
+ disp1->send_command_printf("%s=%" PRIu32, definitive ? "bauds" : "baud", baud_rate);
ESP_LOGD(TAG, "Flush UART");
- wait_until:
condition:
- lambda: !lambda return (tf_uart->available() < 1);
- timeout: 3s
+ timeout: 5s
- lambda: |-
- tf_uart->flush();
static const char *const TAG = "script.set_baud_rate";
- ESP_LOGD(TAG, "Set ESPHome new baud rate to %i bps", baud_rate);
+ ESP_LOGD(TAG, "Set ESPHome new baud rate to %" PRIu32 " bps", baud_rate);
tf_uart->set_baud_rate(baud_rate);
tf_uart->load_settings();
- ESP_LOGD(TAG, "Baud rate is changet to %i bps", baud_rate);
+ ESP_LOGD(TAG, "Current baud rate: %" PRIu32 " bps", tf_uart->get_baud_rate());
- id: set_brightness
mode: restart
@@ -2537,7 +2634,7 @@ script:
ESP_LOGD(TAG, " total_steps: %d", total_steps);
ESP_LOGD(TAG, " temp_offset: %i", temp_offset);
ESP_LOGD(TAG, " climate_icon: %s", climate_icon.c_str());
- ESP_LOGD(TAG, " embedded_climate: %s", embedded_climate ? "True" : "False");
+ ESP_LOGD(TAG, " embedded_climate: %s", YESNO(embedded_climate));
if (current_page->state == "climate") {
ESP_LOGD(TAG, "Page climate is visible");
disp1->send_command_printf("climateslider.maxval=%i", total_steps);
@@ -2604,6 +2701,7 @@ script:
foreground: int32_t[]
then:
- lambda: |-
+ if (id(is_uploading_tft)) set_component_color->stop();
static const char *const TAG = "script.set_component_color";
ESP_LOGVV(TAG, "Starting:");
ESP_LOGVV(TAG, " Component: %s", component.c_str());
@@ -2648,10 +2746,7 @@ script:
uint detected_page_id = pageIndex(page.c_str());
ESP_LOGV(TAG, "%s=%i", variable.c_str(), detected_page_id);
- if (variable == "wakeup_page_id")
- id(wakeup_page_id) = detected_page_id;
- else
- disp1->send_command_printf("%s=%i", variable.c_str(), detected_page_id);
+ disp1->send_command_printf("%s=%i", variable.c_str(), detected_page_id);
- id: setup_sequence
mode: restart
@@ -2659,19 +2754,19 @@ script:
- lambda: |-
static const char *const TAG = "script.setup_sequence";
ESP_LOGD(TAG, "Starting Nextion setup sequence");
- ESP_LOGD(TAG, "Fetching page id");
+ ESP_LOGD(TAG, "Fetching Page Id");
page_id->update();
- wait_until:
condition:
- - lambda: !lambda return (page_id->state > 0);
- timeout: 5s
+ - lambda: !lambda return (not isnan(page_id->state));
+ timeout: 15s
- lambda: |-
static const char *const TAG = "script.setup_sequence";
ESP_LOGD(TAG, "Fetching charset");
display_charset->update();
- wait_until:
condition:
- - lambda: !lambda return (display_charset->state > 0);
+ - lambda: !lambda return (not isnan(display_charset->state));
timeout: 5s
- lambda: |-
static const char *const TAG = "script.setup_sequence";
@@ -2679,11 +2774,11 @@ script:
display_mode->update();
- wait_until:
condition:
- - lambda: !lambda return (display_mode->state > 0);
+ - lambda: !lambda return (not isnan(display_mode->state));
timeout: 5s
- if:
condition:
- - lambda: !lambda return (display_mode->state > 0);
+ - lambda: !lambda return (not isnan(display_mode->state));
then: # Project's TFT detected
- lambda: |-
static const char *const TAG = "script.setup_sequence";
@@ -2798,11 +2893,11 @@ script:
state: boot
timeout: 10s
- lambda: |-
- if (current_page->state == "boot") disp1->goto_page(id(wakeup_page_id));
+ if (current_page->state == "boot") disp1->goto_page(wakeup_page_name->state.c_str());
else: # Unknown TFT
- lambda: |-
static const char *const TAG = "script.setup_sequence";
- ESP_LOGE(TAG, "A non-compatible TFT is installed");
+ ESP_LOGE(TAG, "No compatible TFT detected");
ESP_LOGE(TAG, "Display mode: %f", display_mode->state);
- lambda: |-
static const char *const TAG = "script.setup_sequence";
@@ -2818,7 +2913,6 @@ script:
check_versions->stop();
display_embedded_temp->stop();
display_wrapped_text->stop();
- exit_reparse->stop();
global_settings->stop();
ha_button->stop();
ha_call_service->stop();
@@ -3129,13 +3223,12 @@ script:
}
// report API status
- bool previous_blueprint_status = id(is_blueprint_updated);
bool api_connected = api_server->is_connected();
if (api_connected) {
ESP_LOGI(TAG, "API: Connected");
} else {
ESP_LOGW(TAG, "API: DISCONNECTED");
- id(is_blueprint_updated) = false;
+ blueprint_status->publish_state(0);
if (current_page->state != "blank" and
current_page->state != "boot" and
current_page->state != "home" and
@@ -3147,12 +3240,16 @@ script:
}
}
+ if (!wifi_connected or !api_connected) blueprint_status->publish_state(0);
+
// Report blueprint version
- id(is_blueprint_updated) = id(is_blueprint_updated) and wifi_connected and api_connected and (not id(version_blueprint).empty());
- if (id(is_blueprint_updated))
- ESP_LOGI(TAG, "Blueprint: %s", id(version_blueprint).c_str());
- else {
- ESP_LOGW(TAG, "Blueprint: %s", (wifi_connected and api_connected) ? "Pending" : "DISCONNECTED");
+ ESP_LOGI(TAG, "Blueprint:");
+ if (blueprint_status->state > 99) {
+ ESP_LOGI(TAG, " Version: %s", version_blueprint->state.c_str());
+ ESP_LOGI(TAG, " Init steps: %i (%0.1f%%)", int(blueprint_status->raw_state), blueprint_status->state);
+ } else {
+ ESP_LOGW(TAG, " Init steps: %i (%0.1f%%)", int(blueprint_status->raw_state), blueprint_status->state);
+ ESP_LOGW(TAG, " State: %s", (wifi_connected and api_connected) ? "Pending" : "DISCONNECTED");
ESP_LOGI(TAG, "Requesting blueprint settings");
auto ha_event = new esphome::api::CustomAPIDevice();
ha_event->fire_homeassistant_event("esphome.nspanel_ha_blueprint",
@@ -3167,10 +3264,17 @@ script:
ESP_LOGI(TAG, " Version: ${version}");
// Report framework
#ifdef ARDUINO
- ESP_LOGI(TAG, " Framework: arduino");
+ size_t total_heap_size = ESP.getHeapSize();
+ size_t free_heap_size = ESP.getFreeHeap();
#elif defined(USE_ESP_IDF)
- ESP_LOGI(TAG, " Framework: esp-idf");
+ size_t total_heap_size = heap_caps_get_total_size(MALLOC_CAP_DEFAULT);
+ size_t free_heap_size = esp_get_free_heap_size();
#endif
+ if (total_heap_size != 0)
+ ESP_LOGI(TAG, " Heap: %zu bytes (%d%%)", free_heap_size,
+ int(round(((float)free_heap_size / total_heap_size) * 100.0f)));
+ ESP_LOGI(TAG, " Framework: %s", id(framework) == 1 ? "Arduino" :
+ (id(framework) == 2 ? "ESP-IDF" : "Unknown")); // ESPHome framework
// Report UART
ESP_LOGI(TAG, "UART:");
@@ -3185,13 +3289,11 @@ script:
ESP_LOGI(TAG, " Is setup: True");
else {
ESP_LOGW(TAG, " Is setup: False");
- ESP_LOGW(TAG, " Is detected: %s", disp1->is_detected() ? "True" : "False");
+ ESP_LOGW(TAG, " Is detected: %s", YESNO(disp1->is_detected()));
//exit_reparse->execute();
}
if (nextion_init->state) {
ESP_LOGI(TAG, " Init: True");
- // Update api value on Nextion
- if (id(is_blueprint_updated) != previous_blueprint_status) disp1->send_command_printf("api=%i", id(is_blueprint_updated) ? 1 : 0);
} else
ESP_LOGW(TAG, " Init: False");
if (version_tft->state.empty())
diff --git a/advanced/hmi/nspanel_CJK_eu.HMI b/advanced/hmi/nspanel_CJK_eu.HMI
index d9440c6..f31717a 100644
Binary files a/advanced/hmi/nspanel_CJK_eu.HMI and b/advanced/hmi/nspanel_CJK_eu.HMI differ
diff --git a/advanced/hmi/nspanel_CJK_eu.tft b/advanced/hmi/nspanel_CJK_eu.tft
index 4859e00..0405171 100644
Binary files a/advanced/hmi/nspanel_CJK_eu.tft and b/advanced/hmi/nspanel_CJK_eu.tft differ
diff --git a/advanced/hmi/nspanel_CJK_eu_code/alarm.txt b/advanced/hmi/nspanel_CJK_eu_code/alarm.txt
index 9732c03..d4778be 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/alarm.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/alarm.txt
@@ -23,6 +23,7 @@ Page alarm
vis bt_vacat,0
vis bt_bypass,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -188,6 +189,16 @@ Text bt_disarm_icon
Text : î¦
Max. Text Size : 3
+Text unavailable
+ Attributes
+ ID : 32
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture bt_home_pic
Attributes
ID : 4
diff --git a/advanced/hmi/nspanel_CJK_eu_code/boot.txt b/advanced/hmi/nspanel_CJK_eu_code/boot.txt
index 67902b2..8285c16 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/boot.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/boot.txt
@@ -15,6 +15,7 @@ Page boot
dim=100
covx baud,baud_rate.txt,0,0
baud_rate.txt+=" bps"
+ vis unavailable,0
Postinitialize Event
sendme
@@ -102,7 +103,7 @@ Text tft_version
Dragging : 0
Send Component ID : on press and release
Associated Keyboard: none
- Text : 4.2.4
+ Text : 4.2.5
Max. Text Size : 9
Text esph_version
@@ -145,6 +146,16 @@ Text framework
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 16
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Dual-state Button bt_reboot
Attributes
ID : 4
diff --git a/advanced/hmi/nspanel_CJK_eu_code/buttonpage01.txt b/advanced/hmi/nspanel_CJK_eu_code/buttonpage01.txt
index 631f112..9446a71 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/buttonpage01.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/buttonpage01.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_eu_code/buttonpage02.txt b/advanced/hmi/nspanel_CJK_eu_code/buttonpage02.txt
index 0fc97d4..87af814 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/buttonpage02.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/buttonpage02.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_eu_code/buttonpage03.txt b/advanced/hmi/nspanel_CJK_eu_code/buttonpage03.txt
index 2740b5e..bb36625 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/buttonpage03.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/buttonpage03.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_eu_code/buttonpage04.txt b/advanced/hmi/nspanel_CJK_eu_code/buttonpage04.txt
index 96ae9e1..38c8cdd 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/buttonpage04.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/buttonpage04.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_eu_code/climate.txt b/advanced/hmi/nspanel_CJK_eu_code/climate.txt
index b3c6df4..b9f183a 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/climate.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/climate.txt
@@ -32,6 +32,7 @@ Page climate
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -530,6 +531,16 @@ Text target_low
Touch Release Event
active_slider.val=2
+Text unavailable
+ Attributes
+ ID : 54
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider slider_high
Attributes
ID : 7
diff --git a/advanced/hmi/nspanel_CJK_eu_code/confirm.txt b/advanced/hmi/nspanel_CJK_eu_code/confirm.txt
index 7c4b289..131e50e 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/confirm.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/confirm.txt
@@ -16,6 +16,7 @@ Page confirm
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -77,6 +78,16 @@ Text body
Text : Please confirm
Max. Text Size : 255
+Text unavailable
+ Attributes
+ ID : 12
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button bclose
Attributes
ID : 2
diff --git a/advanced/hmi/nspanel_CJK_eu_code/cover.txt b/advanced/hmi/nspanel_CJK_eu_code/cover.txt
index 9b0b036..b7afc34 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/cover.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/cover.txt
@@ -16,6 +16,7 @@ Page cover
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -84,6 +85,16 @@ Text battery_icon
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 14
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider coverslider
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_eu_code/entitypage01.txt b/advanced/hmi/nspanel_CJK_eu_code/entitypage01.txt
index d4cd469..7e9a7ae 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/entitypage01.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/entitypage01.txt
@@ -16,6 +16,7 @@ Page entitypage01
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—â—‹â—‹â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_CJK_eu_code/entitypage02.txt b/advanced/hmi/nspanel_CJK_eu_code/entitypage02.txt
index 19650c4..deb1259 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/entitypage02.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/entitypage02.txt
@@ -16,6 +16,7 @@ Page entitypage02
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—â—‹â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_CJK_eu_code/entitypage03.txt b/advanced/hmi/nspanel_CJK_eu_code/entitypage03.txt
index 12fb2e4..3825618 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/entitypage03.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/entitypage03.txt
@@ -16,6 +16,7 @@ Page entitypage03
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—‹â—â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 29
diff --git a/advanced/hmi/nspanel_CJK_eu_code/entitypage04.txt b/advanced/hmi/nspanel_CJK_eu_code/entitypage04.txt
index 3d05e25..b2b1238 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/entitypage04.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/entitypage04.txt
@@ -16,6 +16,7 @@ Page entitypage04
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—‹â—‹â—
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_CJK_eu_code/fan.txt b/advanced/hmi/nspanel_CJK_eu_code/fan.txt
index 2533bf7..6909a73 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/fan.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/fan.txt
@@ -16,6 +16,7 @@ Page fan
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -64,6 +65,16 @@ Text icon_state
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 16
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider fanslider
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_eu_code/home.txt b/advanced/hmi/nspanel_CJK_eu_code/home.txt
index 8950606..a6a5668 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/home.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/home.txt
@@ -21,6 +21,7 @@ Page home
vis left_bt_text,0
vis right_bt_text,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -579,6 +580,16 @@ Text button06
printh FF FF FF
}
+Text unavailable
+ Attributes
+ ID : 46
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather
Attributes
ID : 7
diff --git a/advanced/hmi/nspanel_CJK_eu_code/keyb_num.txt b/advanced/hmi/nspanel_CJK_eu_code/keyb_num.txt
index b011257..07c3562 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/keyb_num.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/keyb_num.txt
@@ -16,6 +16,7 @@ Page keyb_num
{
page page_id.val
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -84,6 +85,16 @@ Text title
Text : Alarm
Max. Text Size : 30
+Text unavailable
+ Attributes
+ ID : 24
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button b1
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_eu_code/light.txt b/advanced/hmi/nspanel_CJK_eu_code/light.txt
index 1044901..5a1d342 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/light.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/light.txt
@@ -36,6 +36,7 @@ Page light
vis color_touch,0
vis color_button,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -158,6 +159,16 @@ Text icon_state
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 33
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture light_button
Attributes
ID : 8
diff --git a/advanced/hmi/nspanel_CJK_eu_code/media_player.txt b/advanced/hmi/nspanel_CJK_eu_code/media_player.txt
index c2e2d55..7aceec7 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/media_player.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/media_player.txt
@@ -16,6 +16,7 @@ Page media_player
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -278,6 +279,16 @@ Text bt_on_off
printh 00
printh FF FF FF
+Text unavailable
+ Attributes
+ ID : 26
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Progress Bar time_progress
Attributes
ID : 9
diff --git a/advanced/hmi/nspanel_CJK_eu_code/notification.txt b/advanced/hmi/nspanel_CJK_eu_code/notification.txt
index 5e5654e..b3e282f 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/notification.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/notification.txt
@@ -16,6 +16,7 @@ Page notification
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -47,6 +48,16 @@ Text notifi_label
Text :
Max. Text Size : 100
+Text unavailable
+ Attributes
+ ID : 10
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_eu_code/qrcode.txt b/advanced/hmi/nspanel_CJK_eu_code/qrcode.txt
index 84a0acf..e9a780b 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/qrcode.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/qrcode.txt
@@ -11,6 +11,9 @@ Page qrcode
Swide right page ID: disabled
Events
+ Preinitialize Event
+ vis unavailable,0
+
Postinitialize Event
sendme
@@ -24,6 +27,16 @@ Text qrcode_label
Text :
Max. Text Size : 100
+Text unavailable
+ Attributes
+ ID : 7
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
QR Code qrcode_value
Attributes
ID : 4
diff --git a/advanced/hmi/nspanel_CJK_eu_code/screensaver.txt b/advanced/hmi/nspanel_CJK_eu_code/screensaver.txt
index ea216f1..4c0ad19 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/screensaver.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/screensaver.txt
@@ -14,6 +14,7 @@ Page screensaver
Preinitialize Event
vis text,0
dim=brightness_sleep
+ vis unavailable,0
Postinitialize Event
sendme
@@ -35,6 +36,16 @@ Text text
Touch Release Event
page back_page_id
+Text unavailable
+ Attributes
+ ID : 5
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Timer swipestore
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_eu_code/settings.txt b/advanced/hmi/nspanel_CJK_eu_code/settings.txt
index 0b83161..adaf793 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/settings.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/settings.txt
@@ -18,6 +18,7 @@ Page settings
dim_text.txt+="%"
vis lbl_sleep,0
vis bt_sleep,0
+ vis unavailable,0
Postinitialize Event
sendme
@@ -99,6 +100,16 @@ Text lbl_brightness
Text : Brightness
Max. Text Size : 25
+Text unavailable
+ Attributes
+ ID : 21
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider brightslider
Attributes
ID : 1
diff --git a/advanced/hmi/nspanel_CJK_eu_code/weather01.txt b/advanced/hmi/nspanel_CJK_eu_code/weather01.txt
index dfbe294..31c8edc 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/weather01.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/weather01.txt
@@ -16,6 +16,7 @@ Page weather01
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—â—‹â—‹â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_eu_code/weather02.txt b/advanced/hmi/nspanel_CJK_eu_code/weather02.txt
index 9f80e06..d1e703a 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/weather02.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/weather02.txt
@@ -16,6 +16,7 @@ Page weather02
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—â—‹â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_eu_code/weather03.txt b/advanced/hmi/nspanel_CJK_eu_code/weather03.txt
index 164d84e..be8be75 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/weather03.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/weather03.txt
@@ -16,6 +16,7 @@ Page weather03
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_eu_code/weather04.txt b/advanced/hmi/nspanel_CJK_eu_code/weather04.txt
index 6438372..9760d9e 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/weather04.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/weather04.txt
@@ -16,6 +16,7 @@ Page weather04
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—‹â—â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_eu_code/weather05.txt b/advanced/hmi/nspanel_CJK_eu_code/weather05.txt
index da0e71f..04ea0f0 100644
--- a/advanced/hmi/nspanel_CJK_eu_code/weather05.txt
+++ b/advanced/hmi/nspanel_CJK_eu_code/weather05.txt
@@ -16,6 +16,7 @@ Page weather05
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—‹â—‹â—
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_us.HMI b/advanced/hmi/nspanel_CJK_us.HMI
index 21a9b57..49c15ad 100644
Binary files a/advanced/hmi/nspanel_CJK_us.HMI and b/advanced/hmi/nspanel_CJK_us.HMI differ
diff --git a/advanced/hmi/nspanel_CJK_us.tft b/advanced/hmi/nspanel_CJK_us.tft
index 03fddf4..377dce8 100644
Binary files a/advanced/hmi/nspanel_CJK_us.tft and b/advanced/hmi/nspanel_CJK_us.tft differ
diff --git a/advanced/hmi/nspanel_CJK_us_code/alarm.txt b/advanced/hmi/nspanel_CJK_us_code/alarm.txt
index 489f0fd..a358203 100644
--- a/advanced/hmi/nspanel_CJK_us_code/alarm.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/alarm.txt
@@ -23,6 +23,7 @@ Page alarm
vis bt_vacat,0
vis bt_bypass,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -195,6 +196,16 @@ Text bt_disarm_icon
Text : î¦
Max. Text Size : 3
+Text unavailable
+ Attributes
+ ID : 33
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture bt_home_pic
Attributes
ID : 4
@@ -267,7 +278,7 @@ Hotspot bt_home
bt_home_icon.pco=0
Touch Release Event
- lastclick.txt="{\"page\": \"alarm\", \"key\": \"home\", \"value\": \"click\", \"entity\": \""+entity.txt+"\", \"mui\": \""+bt_home_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
+ lastclick.txt="{\"page\": \"alarm\", \"key\": \"home\", \"value\": \"click\", \"mui\": \""+bt_home_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
printh 92
prints "localevent",0
printh 00
@@ -291,7 +302,7 @@ Hotspot bt_away
bt_away_icon.pco=0
Touch Release Event
- lastclick.txt="{\"page\": \"alarm\", \"key\": \"away\", \"value\": \"click\", \"entity\": \""+entity.txt+"\", \"mui\": \""+bt_away_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
+ lastclick.txt="{\"page\": \"alarm\", \"key\": \"away\", \"value\": \"click\", \"mui\": \""+bt_away_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
printh 92
prints "localevent",0
printh 00
@@ -315,7 +326,7 @@ Hotspot bt_night
bt_night_icon.pco=0
Touch Release Event
- lastclick.txt="{\"page\": \"alarm\", \"key\": \"night\", \"value\": \"click\", \"entity\": \""+entity.txt+"\", \"mui\": \""+bt_night_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
+ lastclick.txt="{\"page\": \"alarm\", \"key\": \"night\", \"value\": \"click\", \"mui\": \""+bt_night_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
printh 92
prints "localevent",0
printh 00
@@ -339,7 +350,7 @@ Hotspot bt_vacat
bt_vacat_icon.pco=0
Touch Release Event
- lastclick.txt="{\"page\": \"alarm\", \"key\": \"vacation\", \"value\": \"click\", \"entity\": \""+entity.txt+"\", \"mui\": \""+bt_vacat_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
+ lastclick.txt="{\"page\": \"alarm\", \"key\": \"vacation\", \"value\": \"click\", \"mui\": \""+bt_vacat_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
printh 92
prints "localevent",0
printh 00
@@ -363,7 +374,7 @@ Hotspot bt_bypass
bt_bypass_icon.pco=0
Touch Release Event
- lastclick.txt="{\"page\": \"alarm\", \"key\": \"bypass\", \"value\": \"click\", \"entity\": \""+entity.txt+"\", \"mui\": \""+bt_bypass_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
+ lastclick.txt="{\"page\": \"alarm\", \"key\": \"bypass\", \"value\": \"click\", \"mui\": \""+bt_bypass_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
printh 92
prints "localevent",0
printh 00
@@ -387,7 +398,7 @@ Hotspot bt_disarm
bt_disarm_icon.pco=0
Touch Release Event
- lastclick.txt="{\"page\": \"alarm\", \"key\": \"disarm\", \"value\": \"click\", \"entity\": \""+entity.txt+"\", \"mui\": \""+bt_disarm_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
+ lastclick.txt="{\"page\": \"alarm\", \"key\": \"disarm\", \"value\": \"click\", \"mui\": \""+bt_disarm_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
printh 92
prints "localevent",0
printh 00
diff --git a/advanced/hmi/nspanel_CJK_us_code/boot.txt b/advanced/hmi/nspanel_CJK_us_code/boot.txt
index 34e18cf..cc191cb 100644
--- a/advanced/hmi/nspanel_CJK_us_code/boot.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/boot.txt
@@ -15,6 +15,7 @@ Page boot
dim=100
covx baud,baud_rate.txt,0,0
baud_rate.txt+=" bps"
+ vis unavailable,0
Postinitialize Event
sendme
@@ -102,7 +103,7 @@ Text tft_version
Dragging : 0
Send Component ID : on press and release
Associated Keyboard: none
- Text : 4.2.4
+ Text : 4.2.5
Max. Text Size : 9
Events
@@ -152,6 +153,16 @@ Text framework
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 16
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Dual-state Button bt_reboot
Attributes
ID : 4
diff --git a/advanced/hmi/nspanel_CJK_us_code/buttonpage01.txt b/advanced/hmi/nspanel_CJK_us_code/buttonpage01.txt
index 631f112..9446a71 100644
--- a/advanced/hmi/nspanel_CJK_us_code/buttonpage01.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/buttonpage01.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_us_code/buttonpage02.txt b/advanced/hmi/nspanel_CJK_us_code/buttonpage02.txt
index 0fc97d4..87af814 100644
--- a/advanced/hmi/nspanel_CJK_us_code/buttonpage02.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/buttonpage02.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_us_code/buttonpage03.txt b/advanced/hmi/nspanel_CJK_us_code/buttonpage03.txt
index 2740b5e..bb36625 100644
--- a/advanced/hmi/nspanel_CJK_us_code/buttonpage03.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/buttonpage03.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_us_code/buttonpage04.txt b/advanced/hmi/nspanel_CJK_us_code/buttonpage04.txt
index 96ae9e1..38c8cdd 100644
--- a/advanced/hmi/nspanel_CJK_us_code/buttonpage04.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/buttonpage04.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_us_code/climate.txt b/advanced/hmi/nspanel_CJK_us_code/climate.txt
index cfd6503..2d3bc7c 100644
--- a/advanced/hmi/nspanel_CJK_us_code/climate.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/climate.txt
@@ -32,6 +32,7 @@ Page climate
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -530,6 +531,16 @@ Text target_low
Touch Release Event
active_slider.val=2
+Text unavailable
+ Attributes
+ ID : 54
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider slider_high
Attributes
ID : 7
diff --git a/advanced/hmi/nspanel_CJK_us_code/confirm.txt b/advanced/hmi/nspanel_CJK_us_code/confirm.txt
index 7c4b289..131e50e 100644
--- a/advanced/hmi/nspanel_CJK_us_code/confirm.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/confirm.txt
@@ -16,6 +16,7 @@ Page confirm
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -77,6 +78,16 @@ Text body
Text : Please confirm
Max. Text Size : 255
+Text unavailable
+ Attributes
+ ID : 12
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button bclose
Attributes
ID : 2
diff --git a/advanced/hmi/nspanel_CJK_us_code/cover.txt b/advanced/hmi/nspanel_CJK_us_code/cover.txt
index 718e467..d2d624e 100644
--- a/advanced/hmi/nspanel_CJK_us_code/cover.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/cover.txt
@@ -16,6 +16,7 @@ Page cover
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -84,6 +85,16 @@ Text battery_icon
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 14
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider coverslider
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_us_code/entitypage01.txt b/advanced/hmi/nspanel_CJK_us_code/entitypage01.txt
index d4cd469..7e9a7ae 100644
--- a/advanced/hmi/nspanel_CJK_us_code/entitypage01.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/entitypage01.txt
@@ -16,6 +16,7 @@ Page entitypage01
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—â—‹â—‹â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_CJK_us_code/entitypage02.txt b/advanced/hmi/nspanel_CJK_us_code/entitypage02.txt
index 19650c4..deb1259 100644
--- a/advanced/hmi/nspanel_CJK_us_code/entitypage02.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/entitypage02.txt
@@ -16,6 +16,7 @@ Page entitypage02
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—â—‹â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_CJK_us_code/entitypage03.txt b/advanced/hmi/nspanel_CJK_us_code/entitypage03.txt
index 19da4ec..1a14754 100644
--- a/advanced/hmi/nspanel_CJK_us_code/entitypage03.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/entitypage03.txt
@@ -16,6 +16,7 @@ Page entitypage03
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—‹â—â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_CJK_us_code/entitypage04.txt b/advanced/hmi/nspanel_CJK_us_code/entitypage04.txt
index 3d05e25..b2b1238 100644
--- a/advanced/hmi/nspanel_CJK_us_code/entitypage04.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/entitypage04.txt
@@ -16,6 +16,7 @@ Page entitypage04
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—‹â—‹â—
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_CJK_us_code/fan.txt b/advanced/hmi/nspanel_CJK_us_code/fan.txt
index 2533bf7..6909a73 100644
--- a/advanced/hmi/nspanel_CJK_us_code/fan.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/fan.txt
@@ -16,6 +16,7 @@ Page fan
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -64,6 +65,16 @@ Text icon_state
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 16
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider fanslider
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_us_code/home.txt b/advanced/hmi/nspanel_CJK_us_code/home.txt
index 8950606..a6a5668 100644
--- a/advanced/hmi/nspanel_CJK_us_code/home.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/home.txt
@@ -21,6 +21,7 @@ Page home
vis left_bt_text,0
vis right_bt_text,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -579,6 +580,16 @@ Text button06
printh FF FF FF
}
+Text unavailable
+ Attributes
+ ID : 46
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather
Attributes
ID : 7
diff --git a/advanced/hmi/nspanel_CJK_us_code/keyb_num.txt b/advanced/hmi/nspanel_CJK_us_code/keyb_num.txt
index b8c3a2d..aea6a3e 100644
--- a/advanced/hmi/nspanel_CJK_us_code/keyb_num.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/keyb_num.txt
@@ -16,6 +16,7 @@ Page keyb_num
{
page page_id.val
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -84,6 +85,16 @@ Text title
Text : Alarm
Max. Text Size : 30
+Text unavailable
+ Attributes
+ ID : 24
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button b1
Attributes
ID : 3
@@ -265,6 +276,12 @@ Button benter
Events
Touch Release Event
aux.txt="{\"page\": \"keyb_num\", \"key\": \""+key.txt+"\", \"value\": \""+value.txt+"\", \"pin\": \""+pin.txt+"\", \"base_domain\": \""+domain.txt+"\"}"
+ printh 92
+ prints "localevent",0
+ printh 00
+ prints aux.txt,0
+ printh 00
+ printh FF FF FF
Button bview
Attributes
diff --git a/advanced/hmi/nspanel_CJK_us_code/light.txt b/advanced/hmi/nspanel_CJK_us_code/light.txt
index 660e23a..25a940f 100644
--- a/advanced/hmi/nspanel_CJK_us_code/light.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/light.txt
@@ -36,6 +36,7 @@ Page light
vis color_touch,0
vis color_button,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -158,6 +159,16 @@ Text icon_state
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 33
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture light_button
Attributes
ID : 8
diff --git a/advanced/hmi/nspanel_CJK_us_code/media_player.txt b/advanced/hmi/nspanel_CJK_us_code/media_player.txt
index 3cd1ed6..a0d7d1d 100644
--- a/advanced/hmi/nspanel_CJK_us_code/media_player.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/media_player.txt
@@ -16,6 +16,7 @@ Page media_player
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -277,6 +278,16 @@ Text bt_on_off
printh 00
printh FF FF FF
+Text unavailable
+ Attributes
+ ID : 26
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Progress Bar time_progress
Attributes
ID : 9
diff --git a/advanced/hmi/nspanel_CJK_us_code/notification.txt b/advanced/hmi/nspanel_CJK_us_code/notification.txt
index 5907e7f..089013e 100644
--- a/advanced/hmi/nspanel_CJK_us_code/notification.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/notification.txt
@@ -16,6 +16,7 @@ Page notification
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -47,6 +48,16 @@ Text notifi_label
Text :
Max. Text Size : 100
+Text unavailable
+ Attributes
+ ID : 10
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_us_code/qrcode.txt b/advanced/hmi/nspanel_CJK_us_code/qrcode.txt
index 84a0acf..e9a780b 100644
--- a/advanced/hmi/nspanel_CJK_us_code/qrcode.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/qrcode.txt
@@ -11,6 +11,9 @@ Page qrcode
Swide right page ID: disabled
Events
+ Preinitialize Event
+ vis unavailable,0
+
Postinitialize Event
sendme
@@ -24,6 +27,16 @@ Text qrcode_label
Text :
Max. Text Size : 100
+Text unavailable
+ Attributes
+ ID : 7
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
QR Code qrcode_value
Attributes
ID : 4
diff --git a/advanced/hmi/nspanel_CJK_us_code/screensaver.txt b/advanced/hmi/nspanel_CJK_us_code/screensaver.txt
index ea216f1..4c0ad19 100644
--- a/advanced/hmi/nspanel_CJK_us_code/screensaver.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/screensaver.txt
@@ -14,6 +14,7 @@ Page screensaver
Preinitialize Event
vis text,0
dim=brightness_sleep
+ vis unavailable,0
Postinitialize Event
sendme
@@ -35,6 +36,16 @@ Text text
Touch Release Event
page back_page_id
+Text unavailable
+ Attributes
+ ID : 5
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Timer swipestore
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_us_code/settings.txt b/advanced/hmi/nspanel_CJK_us_code/settings.txt
index 1644740..501cdd2 100644
--- a/advanced/hmi/nspanel_CJK_us_code/settings.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/settings.txt
@@ -18,6 +18,7 @@ Page settings
dim_text.txt+="%"
vis lbl_sleep,0
vis bt_sleep,0
+ vis unavailable,0
Postinitialize Event
sendme
@@ -195,6 +196,16 @@ Text t3
printh FF FF FF
}
+Text unavailable
+ Attributes
+ ID : 25
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider brightslider
Attributes
ID : 1
diff --git a/advanced/hmi/nspanel_CJK_us_code/weather01.txt b/advanced/hmi/nspanel_CJK_us_code/weather01.txt
index dfbe294..31c8edc 100644
--- a/advanced/hmi/nspanel_CJK_us_code/weather01.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/weather01.txt
@@ -16,6 +16,7 @@ Page weather01
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—â—‹â—‹â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_us_code/weather02.txt b/advanced/hmi/nspanel_CJK_us_code/weather02.txt
index 9f80e06..d1e703a 100644
--- a/advanced/hmi/nspanel_CJK_us_code/weather02.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/weather02.txt
@@ -16,6 +16,7 @@ Page weather02
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—â—‹â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_us_code/weather03.txt b/advanced/hmi/nspanel_CJK_us_code/weather03.txt
index 164d84e..be8be75 100644
--- a/advanced/hmi/nspanel_CJK_us_code/weather03.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/weather03.txt
@@ -16,6 +16,7 @@ Page weather03
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_us_code/weather04.txt b/advanced/hmi/nspanel_CJK_us_code/weather04.txt
index 6438372..9760d9e 100644
--- a/advanced/hmi/nspanel_CJK_us_code/weather04.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/weather04.txt
@@ -16,6 +16,7 @@ Page weather04
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—‹â—â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_us_code/weather05.txt b/advanced/hmi/nspanel_CJK_us_code/weather05.txt
index da0e71f..04ea0f0 100644
--- a/advanced/hmi/nspanel_CJK_us_code/weather05.txt
+++ b/advanced/hmi/nspanel_CJK_us_code/weather05.txt
@@ -16,6 +16,7 @@ Page weather05
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—‹â—‹â—
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_us_land.HMI b/advanced/hmi/nspanel_CJK_us_land.HMI
index d8a0891..5139408 100644
Binary files a/advanced/hmi/nspanel_CJK_us_land.HMI and b/advanced/hmi/nspanel_CJK_us_land.HMI differ
diff --git a/advanced/hmi/nspanel_CJK_us_land.tft b/advanced/hmi/nspanel_CJK_us_land.tft
index 1d17078..8b1dfc3 100644
Binary files a/advanced/hmi/nspanel_CJK_us_land.tft and b/advanced/hmi/nspanel_CJK_us_land.tft differ
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/alarm.txt b/advanced/hmi/nspanel_CJK_us_land_code/alarm.txt
index 9732c03..d4778be 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/alarm.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/alarm.txt
@@ -23,6 +23,7 @@ Page alarm
vis bt_vacat,0
vis bt_bypass,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -188,6 +189,16 @@ Text bt_disarm_icon
Text : î¦
Max. Text Size : 3
+Text unavailable
+ Attributes
+ ID : 32
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture bt_home_pic
Attributes
ID : 4
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/boot.txt b/advanced/hmi/nspanel_CJK_us_land_code/boot.txt
index 67902b2..8285c16 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/boot.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/boot.txt
@@ -15,6 +15,7 @@ Page boot
dim=100
covx baud,baud_rate.txt,0,0
baud_rate.txt+=" bps"
+ vis unavailable,0
Postinitialize Event
sendme
@@ -102,7 +103,7 @@ Text tft_version
Dragging : 0
Send Component ID : on press and release
Associated Keyboard: none
- Text : 4.2.4
+ Text : 4.2.5
Max. Text Size : 9
Text esph_version
@@ -145,6 +146,16 @@ Text framework
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 16
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Dual-state Button bt_reboot
Attributes
ID : 4
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/buttonpage01.txt b/advanced/hmi/nspanel_CJK_us_land_code/buttonpage01.txt
index 631f112..9446a71 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/buttonpage01.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/buttonpage01.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/buttonpage02.txt b/advanced/hmi/nspanel_CJK_us_land_code/buttonpage02.txt
index 0fc97d4..87af814 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/buttonpage02.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/buttonpage02.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/buttonpage03.txt b/advanced/hmi/nspanel_CJK_us_land_code/buttonpage03.txt
index 2740b5e..bb36625 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/buttonpage03.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/buttonpage03.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/buttonpage04.txt b/advanced/hmi/nspanel_CJK_us_land_code/buttonpage04.txt
index 96ae9e1..38c8cdd 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/buttonpage04.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/buttonpage04.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/climate.txt b/advanced/hmi/nspanel_CJK_us_land_code/climate.txt
index b3c6df4..b9f183a 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/climate.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/climate.txt
@@ -32,6 +32,7 @@ Page climate
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -530,6 +531,16 @@ Text target_low
Touch Release Event
active_slider.val=2
+Text unavailable
+ Attributes
+ ID : 54
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider slider_high
Attributes
ID : 7
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/confirm.txt b/advanced/hmi/nspanel_CJK_us_land_code/confirm.txt
index 7c4b289..131e50e 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/confirm.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/confirm.txt
@@ -16,6 +16,7 @@ Page confirm
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -77,6 +78,16 @@ Text body
Text : Please confirm
Max. Text Size : 255
+Text unavailable
+ Attributes
+ ID : 12
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button bclose
Attributes
ID : 2
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/cover.txt b/advanced/hmi/nspanel_CJK_us_land_code/cover.txt
index 9b0b036..b7afc34 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/cover.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/cover.txt
@@ -16,6 +16,7 @@ Page cover
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -84,6 +85,16 @@ Text battery_icon
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 14
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider coverslider
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/entitypage01.txt b/advanced/hmi/nspanel_CJK_us_land_code/entitypage01.txt
index d4cd469..7e9a7ae 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/entitypage01.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/entitypage01.txt
@@ -16,6 +16,7 @@ Page entitypage01
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—â—‹â—‹â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/entitypage02.txt b/advanced/hmi/nspanel_CJK_us_land_code/entitypage02.txt
index 19650c4..deb1259 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/entitypage02.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/entitypage02.txt
@@ -16,6 +16,7 @@ Page entitypage02
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—â—‹â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/entitypage03.txt b/advanced/hmi/nspanel_CJK_us_land_code/entitypage03.txt
index 12fb2e4..3825618 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/entitypage03.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/entitypage03.txt
@@ -16,6 +16,7 @@ Page entitypage03
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—‹â—â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 29
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/entitypage04.txt b/advanced/hmi/nspanel_CJK_us_land_code/entitypage04.txt
index 3d05e25..b2b1238 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/entitypage04.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/entitypage04.txt
@@ -16,6 +16,7 @@ Page entitypage04
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—‹â—‹â—
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/fan.txt b/advanced/hmi/nspanel_CJK_us_land_code/fan.txt
index 2533bf7..6909a73 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/fan.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/fan.txt
@@ -16,6 +16,7 @@ Page fan
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -64,6 +65,16 @@ Text icon_state
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 16
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider fanslider
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/home.txt b/advanced/hmi/nspanel_CJK_us_land_code/home.txt
index 8950606..a6a5668 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/home.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/home.txt
@@ -21,6 +21,7 @@ Page home
vis left_bt_text,0
vis right_bt_text,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -579,6 +580,16 @@ Text button06
printh FF FF FF
}
+Text unavailable
+ Attributes
+ ID : 46
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather
Attributes
ID : 7
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/keyb_num.txt b/advanced/hmi/nspanel_CJK_us_land_code/keyb_num.txt
index b011257..07c3562 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/keyb_num.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/keyb_num.txt
@@ -16,6 +16,7 @@ Page keyb_num
{
page page_id.val
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -84,6 +85,16 @@ Text title
Text : Alarm
Max. Text Size : 30
+Text unavailable
+ Attributes
+ ID : 24
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button b1
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/light.txt b/advanced/hmi/nspanel_CJK_us_land_code/light.txt
index 1044901..5a1d342 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/light.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/light.txt
@@ -36,6 +36,7 @@ Page light
vis color_touch,0
vis color_button,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -158,6 +159,16 @@ Text icon_state
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 33
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture light_button
Attributes
ID : 8
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/media_player.txt b/advanced/hmi/nspanel_CJK_us_land_code/media_player.txt
index c2e2d55..7aceec7 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/media_player.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/media_player.txt
@@ -16,6 +16,7 @@ Page media_player
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -278,6 +279,16 @@ Text bt_on_off
printh 00
printh FF FF FF
+Text unavailable
+ Attributes
+ ID : 26
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Progress Bar time_progress
Attributes
ID : 9
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/notification.txt b/advanced/hmi/nspanel_CJK_us_land_code/notification.txt
index 5e5654e..b3e282f 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/notification.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/notification.txt
@@ -16,6 +16,7 @@ Page notification
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -47,6 +48,16 @@ Text notifi_label
Text :
Max. Text Size : 100
+Text unavailable
+ Attributes
+ ID : 10
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/qrcode.txt b/advanced/hmi/nspanel_CJK_us_land_code/qrcode.txt
index 84a0acf..e9a780b 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/qrcode.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/qrcode.txt
@@ -11,6 +11,9 @@ Page qrcode
Swide right page ID: disabled
Events
+ Preinitialize Event
+ vis unavailable,0
+
Postinitialize Event
sendme
@@ -24,6 +27,16 @@ Text qrcode_label
Text :
Max. Text Size : 100
+Text unavailable
+ Attributes
+ ID : 7
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
QR Code qrcode_value
Attributes
ID : 4
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/screensaver.txt b/advanced/hmi/nspanel_CJK_us_land_code/screensaver.txt
index ea216f1..4c0ad19 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/screensaver.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/screensaver.txt
@@ -14,6 +14,7 @@ Page screensaver
Preinitialize Event
vis text,0
dim=brightness_sleep
+ vis unavailable,0
Postinitialize Event
sendme
@@ -35,6 +36,16 @@ Text text
Touch Release Event
page back_page_id
+Text unavailable
+ Attributes
+ ID : 5
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Timer swipestore
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/settings.txt b/advanced/hmi/nspanel_CJK_us_land_code/settings.txt
index 0b83161..adaf793 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/settings.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/settings.txt
@@ -18,6 +18,7 @@ Page settings
dim_text.txt+="%"
vis lbl_sleep,0
vis bt_sleep,0
+ vis unavailable,0
Postinitialize Event
sendme
@@ -99,6 +100,16 @@ Text lbl_brightness
Text : Brightness
Max. Text Size : 25
+Text unavailable
+ Attributes
+ ID : 21
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider brightslider
Attributes
ID : 1
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/weather01.txt b/advanced/hmi/nspanel_CJK_us_land_code/weather01.txt
index dfbe294..31c8edc 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/weather01.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/weather01.txt
@@ -16,6 +16,7 @@ Page weather01
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—â—‹â—‹â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/weather02.txt b/advanced/hmi/nspanel_CJK_us_land_code/weather02.txt
index 9f80e06..d1e703a 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/weather02.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/weather02.txt
@@ -16,6 +16,7 @@ Page weather02
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—â—‹â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/weather03.txt b/advanced/hmi/nspanel_CJK_us_land_code/weather03.txt
index 164d84e..be8be75 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/weather03.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/weather03.txt
@@ -16,6 +16,7 @@ Page weather03
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/weather04.txt b/advanced/hmi/nspanel_CJK_us_land_code/weather04.txt
index 6438372..9760d9e 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/weather04.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/weather04.txt
@@ -16,6 +16,7 @@ Page weather04
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—‹â—â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_CJK_us_land_code/weather05.txt b/advanced/hmi/nspanel_CJK_us_land_code/weather05.txt
index da0e71f..04ea0f0 100644
--- a/advanced/hmi/nspanel_CJK_us_land_code/weather05.txt
+++ b/advanced/hmi/nspanel_CJK_us_land_code/weather05.txt
@@ -16,6 +16,7 @@ Page weather05
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—‹â—‹â—
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_eu.HMI b/advanced/hmi/nspanel_eu.HMI
index 50a925d..8fff721 100644
Binary files a/advanced/hmi/nspanel_eu.HMI and b/advanced/hmi/nspanel_eu.HMI differ
diff --git a/advanced/hmi/nspanel_eu_code/alarm.txt b/advanced/hmi/nspanel_eu_code/alarm.txt
index 9732c03..d4778be 100644
--- a/advanced/hmi/nspanel_eu_code/alarm.txt
+++ b/advanced/hmi/nspanel_eu_code/alarm.txt
@@ -23,6 +23,7 @@ Page alarm
vis bt_vacat,0
vis bt_bypass,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -188,6 +189,16 @@ Text bt_disarm_icon
Text : î¦
Max. Text Size : 3
+Text unavailable
+ Attributes
+ ID : 32
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture bt_home_pic
Attributes
ID : 4
diff --git a/advanced/hmi/nspanel_eu_code/boot.txt b/advanced/hmi/nspanel_eu_code/boot.txt
index 67902b2..8285c16 100644
--- a/advanced/hmi/nspanel_eu_code/boot.txt
+++ b/advanced/hmi/nspanel_eu_code/boot.txt
@@ -15,6 +15,7 @@ Page boot
dim=100
covx baud,baud_rate.txt,0,0
baud_rate.txt+=" bps"
+ vis unavailable,0
Postinitialize Event
sendme
@@ -102,7 +103,7 @@ Text tft_version
Dragging : 0
Send Component ID : on press and release
Associated Keyboard: none
- Text : 4.2.4
+ Text : 4.2.5
Max. Text Size : 9
Text esph_version
@@ -145,6 +146,16 @@ Text framework
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 16
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Dual-state Button bt_reboot
Attributes
ID : 4
diff --git a/advanced/hmi/nspanel_eu_code/buttonpage01.txt b/advanced/hmi/nspanel_eu_code/buttonpage01.txt
index 631f112..9446a71 100644
--- a/advanced/hmi/nspanel_eu_code/buttonpage01.txt
+++ b/advanced/hmi/nspanel_eu_code/buttonpage01.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_eu_code/buttonpage02.txt b/advanced/hmi/nspanel_eu_code/buttonpage02.txt
index 0fc97d4..87af814 100644
--- a/advanced/hmi/nspanel_eu_code/buttonpage02.txt
+++ b/advanced/hmi/nspanel_eu_code/buttonpage02.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_eu_code/buttonpage03.txt b/advanced/hmi/nspanel_eu_code/buttonpage03.txt
index 2740b5e..bb36625 100644
--- a/advanced/hmi/nspanel_eu_code/buttonpage03.txt
+++ b/advanced/hmi/nspanel_eu_code/buttonpage03.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_eu_code/buttonpage04.txt b/advanced/hmi/nspanel_eu_code/buttonpage04.txt
index 96ae9e1..38c8cdd 100644
--- a/advanced/hmi/nspanel_eu_code/buttonpage04.txt
+++ b/advanced/hmi/nspanel_eu_code/buttonpage04.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_eu_code/climate.txt b/advanced/hmi/nspanel_eu_code/climate.txt
index b3c6df4..b9f183a 100644
--- a/advanced/hmi/nspanel_eu_code/climate.txt
+++ b/advanced/hmi/nspanel_eu_code/climate.txt
@@ -32,6 +32,7 @@ Page climate
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -530,6 +531,16 @@ Text target_low
Touch Release Event
active_slider.val=2
+Text unavailable
+ Attributes
+ ID : 54
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider slider_high
Attributes
ID : 7
diff --git a/advanced/hmi/nspanel_eu_code/confirm.txt b/advanced/hmi/nspanel_eu_code/confirm.txt
index 7c4b289..131e50e 100644
--- a/advanced/hmi/nspanel_eu_code/confirm.txt
+++ b/advanced/hmi/nspanel_eu_code/confirm.txt
@@ -16,6 +16,7 @@ Page confirm
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -77,6 +78,16 @@ Text body
Text : Please confirm
Max. Text Size : 255
+Text unavailable
+ Attributes
+ ID : 12
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button bclose
Attributes
ID : 2
diff --git a/advanced/hmi/nspanel_eu_code/cover.txt b/advanced/hmi/nspanel_eu_code/cover.txt
index 9b0b036..b7afc34 100644
--- a/advanced/hmi/nspanel_eu_code/cover.txt
+++ b/advanced/hmi/nspanel_eu_code/cover.txt
@@ -16,6 +16,7 @@ Page cover
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -84,6 +85,16 @@ Text battery_icon
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 14
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider coverslider
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_eu_code/entitypage01.txt b/advanced/hmi/nspanel_eu_code/entitypage01.txt
index d4cd469..7e9a7ae 100644
--- a/advanced/hmi/nspanel_eu_code/entitypage01.txt
+++ b/advanced/hmi/nspanel_eu_code/entitypage01.txt
@@ -16,6 +16,7 @@ Page entitypage01
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—â—‹â—‹â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_eu_code/entitypage02.txt b/advanced/hmi/nspanel_eu_code/entitypage02.txt
index 19650c4..deb1259 100644
--- a/advanced/hmi/nspanel_eu_code/entitypage02.txt
+++ b/advanced/hmi/nspanel_eu_code/entitypage02.txt
@@ -16,6 +16,7 @@ Page entitypage02
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—â—‹â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_eu_code/entitypage03.txt b/advanced/hmi/nspanel_eu_code/entitypage03.txt
index 12fb2e4..3825618 100644
--- a/advanced/hmi/nspanel_eu_code/entitypage03.txt
+++ b/advanced/hmi/nspanel_eu_code/entitypage03.txt
@@ -16,6 +16,7 @@ Page entitypage03
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—‹â—â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 29
diff --git a/advanced/hmi/nspanel_eu_code/entitypage04.txt b/advanced/hmi/nspanel_eu_code/entitypage04.txt
index 3d05e25..b2b1238 100644
--- a/advanced/hmi/nspanel_eu_code/entitypage04.txt
+++ b/advanced/hmi/nspanel_eu_code/entitypage04.txt
@@ -16,6 +16,7 @@ Page entitypage04
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—‹â—‹â—
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_eu_code/fan.txt b/advanced/hmi/nspanel_eu_code/fan.txt
index 2533bf7..6909a73 100644
--- a/advanced/hmi/nspanel_eu_code/fan.txt
+++ b/advanced/hmi/nspanel_eu_code/fan.txt
@@ -16,6 +16,7 @@ Page fan
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -64,6 +65,16 @@ Text icon_state
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 16
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider fanslider
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_eu_code/home.txt b/advanced/hmi/nspanel_eu_code/home.txt
index 8950606..a6a5668 100644
--- a/advanced/hmi/nspanel_eu_code/home.txt
+++ b/advanced/hmi/nspanel_eu_code/home.txt
@@ -21,6 +21,7 @@ Page home
vis left_bt_text,0
vis right_bt_text,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -579,6 +580,16 @@ Text button06
printh FF FF FF
}
+Text unavailable
+ Attributes
+ ID : 46
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather
Attributes
ID : 7
diff --git a/advanced/hmi/nspanel_eu_code/keyb_num.txt b/advanced/hmi/nspanel_eu_code/keyb_num.txt
index b011257..07c3562 100644
--- a/advanced/hmi/nspanel_eu_code/keyb_num.txt
+++ b/advanced/hmi/nspanel_eu_code/keyb_num.txt
@@ -16,6 +16,7 @@ Page keyb_num
{
page page_id.val
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -84,6 +85,16 @@ Text title
Text : Alarm
Max. Text Size : 30
+Text unavailable
+ Attributes
+ ID : 24
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button b1
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_eu_code/light.txt b/advanced/hmi/nspanel_eu_code/light.txt
index 1044901..5a1d342 100644
--- a/advanced/hmi/nspanel_eu_code/light.txt
+++ b/advanced/hmi/nspanel_eu_code/light.txt
@@ -36,6 +36,7 @@ Page light
vis color_touch,0
vis color_button,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -158,6 +159,16 @@ Text icon_state
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 33
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture light_button
Attributes
ID : 8
diff --git a/advanced/hmi/nspanel_eu_code/media_player.txt b/advanced/hmi/nspanel_eu_code/media_player.txt
index c2e2d55..7aceec7 100644
--- a/advanced/hmi/nspanel_eu_code/media_player.txt
+++ b/advanced/hmi/nspanel_eu_code/media_player.txt
@@ -16,6 +16,7 @@ Page media_player
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -278,6 +279,16 @@ Text bt_on_off
printh 00
printh FF FF FF
+Text unavailable
+ Attributes
+ ID : 26
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Progress Bar time_progress
Attributes
ID : 9
diff --git a/advanced/hmi/nspanel_eu_code/notification.txt b/advanced/hmi/nspanel_eu_code/notification.txt
index 5e5654e..b3e282f 100644
--- a/advanced/hmi/nspanel_eu_code/notification.txt
+++ b/advanced/hmi/nspanel_eu_code/notification.txt
@@ -16,6 +16,7 @@ Page notification
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -47,6 +48,16 @@ Text notifi_label
Text :
Max. Text Size : 100
+Text unavailable
+ Attributes
+ ID : 10
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_eu_code/qrcode.txt b/advanced/hmi/nspanel_eu_code/qrcode.txt
index 84a0acf..e9a780b 100644
--- a/advanced/hmi/nspanel_eu_code/qrcode.txt
+++ b/advanced/hmi/nspanel_eu_code/qrcode.txt
@@ -11,6 +11,9 @@ Page qrcode
Swide right page ID: disabled
Events
+ Preinitialize Event
+ vis unavailable,0
+
Postinitialize Event
sendme
@@ -24,6 +27,16 @@ Text qrcode_label
Text :
Max. Text Size : 100
+Text unavailable
+ Attributes
+ ID : 7
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
QR Code qrcode_value
Attributes
ID : 4
diff --git a/advanced/hmi/nspanel_eu_code/screensaver.txt b/advanced/hmi/nspanel_eu_code/screensaver.txt
index ea216f1..4c0ad19 100644
--- a/advanced/hmi/nspanel_eu_code/screensaver.txt
+++ b/advanced/hmi/nspanel_eu_code/screensaver.txt
@@ -14,6 +14,7 @@ Page screensaver
Preinitialize Event
vis text,0
dim=brightness_sleep
+ vis unavailable,0
Postinitialize Event
sendme
@@ -35,6 +36,16 @@ Text text
Touch Release Event
page back_page_id
+Text unavailable
+ Attributes
+ ID : 5
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Timer swipestore
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_eu_code/settings.txt b/advanced/hmi/nspanel_eu_code/settings.txt
index 0b83161..adaf793 100644
--- a/advanced/hmi/nspanel_eu_code/settings.txt
+++ b/advanced/hmi/nspanel_eu_code/settings.txt
@@ -18,6 +18,7 @@ Page settings
dim_text.txt+="%"
vis lbl_sleep,0
vis bt_sleep,0
+ vis unavailable,0
Postinitialize Event
sendme
@@ -99,6 +100,16 @@ Text lbl_brightness
Text : Brightness
Max. Text Size : 25
+Text unavailable
+ Attributes
+ ID : 21
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider brightslider
Attributes
ID : 1
diff --git a/advanced/hmi/nspanel_eu_code/weather01.txt b/advanced/hmi/nspanel_eu_code/weather01.txt
index dfbe294..31c8edc 100644
--- a/advanced/hmi/nspanel_eu_code/weather01.txt
+++ b/advanced/hmi/nspanel_eu_code/weather01.txt
@@ -16,6 +16,7 @@ Page weather01
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—â—‹â—‹â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_eu_code/weather02.txt b/advanced/hmi/nspanel_eu_code/weather02.txt
index 9f80e06..d1e703a 100644
--- a/advanced/hmi/nspanel_eu_code/weather02.txt
+++ b/advanced/hmi/nspanel_eu_code/weather02.txt
@@ -16,6 +16,7 @@ Page weather02
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—â—‹â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_eu_code/weather03.txt b/advanced/hmi/nspanel_eu_code/weather03.txt
index 164d84e..be8be75 100644
--- a/advanced/hmi/nspanel_eu_code/weather03.txt
+++ b/advanced/hmi/nspanel_eu_code/weather03.txt
@@ -16,6 +16,7 @@ Page weather03
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_eu_code/weather04.txt b/advanced/hmi/nspanel_eu_code/weather04.txt
index 6438372..9760d9e 100644
--- a/advanced/hmi/nspanel_eu_code/weather04.txt
+++ b/advanced/hmi/nspanel_eu_code/weather04.txt
@@ -16,6 +16,7 @@ Page weather04
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—‹â—â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_eu_code/weather05.txt b/advanced/hmi/nspanel_eu_code/weather05.txt
index da0e71f..04ea0f0 100644
--- a/advanced/hmi/nspanel_eu_code/weather05.txt
+++ b/advanced/hmi/nspanel_eu_code/weather05.txt
@@ -16,6 +16,7 @@ Page weather05
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—‹â—‹â—
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_us.HMI b/advanced/hmi/nspanel_us.HMI
index 2735cca..e2df797 100644
Binary files a/advanced/hmi/nspanel_us.HMI and b/advanced/hmi/nspanel_us.HMI differ
diff --git a/advanced/hmi/nspanel_us_code/alarm.txt b/advanced/hmi/nspanel_us_code/alarm.txt
index 489f0fd..a358203 100644
--- a/advanced/hmi/nspanel_us_code/alarm.txt
+++ b/advanced/hmi/nspanel_us_code/alarm.txt
@@ -23,6 +23,7 @@ Page alarm
vis bt_vacat,0
vis bt_bypass,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -195,6 +196,16 @@ Text bt_disarm_icon
Text : î¦
Max. Text Size : 3
+Text unavailable
+ Attributes
+ ID : 33
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture bt_home_pic
Attributes
ID : 4
@@ -267,7 +278,7 @@ Hotspot bt_home
bt_home_icon.pco=0
Touch Release Event
- lastclick.txt="{\"page\": \"alarm\", \"key\": \"home\", \"value\": \"click\", \"entity\": \""+entity.txt+"\", \"mui\": \""+bt_home_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
+ lastclick.txt="{\"page\": \"alarm\", \"key\": \"home\", \"value\": \"click\", \"mui\": \""+bt_home_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
printh 92
prints "localevent",0
printh 00
@@ -291,7 +302,7 @@ Hotspot bt_away
bt_away_icon.pco=0
Touch Release Event
- lastclick.txt="{\"page\": \"alarm\", \"key\": \"away\", \"value\": \"click\", \"entity\": \""+entity.txt+"\", \"mui\": \""+bt_away_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
+ lastclick.txt="{\"page\": \"alarm\", \"key\": \"away\", \"value\": \"click\", \"mui\": \""+bt_away_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
printh 92
prints "localevent",0
printh 00
@@ -315,7 +326,7 @@ Hotspot bt_night
bt_night_icon.pco=0
Touch Release Event
- lastclick.txt="{\"page\": \"alarm\", \"key\": \"night\", \"value\": \"click\", \"entity\": \""+entity.txt+"\", \"mui\": \""+bt_night_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
+ lastclick.txt="{\"page\": \"alarm\", \"key\": \"night\", \"value\": \"click\", \"mui\": \""+bt_night_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
printh 92
prints "localevent",0
printh 00
@@ -339,7 +350,7 @@ Hotspot bt_vacat
bt_vacat_icon.pco=0
Touch Release Event
- lastclick.txt="{\"page\": \"alarm\", \"key\": \"vacation\", \"value\": \"click\", \"entity\": \""+entity.txt+"\", \"mui\": \""+bt_vacat_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
+ lastclick.txt="{\"page\": \"alarm\", \"key\": \"vacation\", \"value\": \"click\", \"mui\": \""+bt_vacat_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
printh 92
prints "localevent",0
printh 00
@@ -363,7 +374,7 @@ Hotspot bt_bypass
bt_bypass_icon.pco=0
Touch Release Event
- lastclick.txt="{\"page\": \"alarm\", \"key\": \"bypass\", \"value\": \"click\", \"entity\": \""+entity.txt+"\", \"mui\": \""+bt_bypass_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
+ lastclick.txt="{\"page\": \"alarm\", \"key\": \"bypass\", \"value\": \"click\", \"mui\": \""+bt_bypass_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
printh 92
prints "localevent",0
printh 00
@@ -387,7 +398,7 @@ Hotspot bt_disarm
bt_disarm_icon.pco=0
Touch Release Event
- lastclick.txt="{\"page\": \"alarm\", \"key\": \"disarm\", \"value\": \"click\", \"entity\": \""+entity.txt+"\", \"mui\": \""+bt_disarm_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
+ lastclick.txt="{\"page\": \"alarm\", \"key\": \"disarm\", \"value\": \"click\", \"mui\": \""+bt_disarm_text.txt+"\", \"code_format\": \""+code_format.txt+"\", \"code_arm_req\": \""+code_arm_req.txt+"\"}"
printh 92
prints "localevent",0
printh 00
diff --git a/advanced/hmi/nspanel_us_code/boot.txt b/advanced/hmi/nspanel_us_code/boot.txt
index 34e18cf..cc191cb 100644
--- a/advanced/hmi/nspanel_us_code/boot.txt
+++ b/advanced/hmi/nspanel_us_code/boot.txt
@@ -15,6 +15,7 @@ Page boot
dim=100
covx baud,baud_rate.txt,0,0
baud_rate.txt+=" bps"
+ vis unavailable,0
Postinitialize Event
sendme
@@ -102,7 +103,7 @@ Text tft_version
Dragging : 0
Send Component ID : on press and release
Associated Keyboard: none
- Text : 4.2.4
+ Text : 4.2.5
Max. Text Size : 9
Events
@@ -152,6 +153,16 @@ Text framework
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 16
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Dual-state Button bt_reboot
Attributes
ID : 4
diff --git a/advanced/hmi/nspanel_us_code/buttonpage01.txt b/advanced/hmi/nspanel_us_code/buttonpage01.txt
index 631f112..9446a71 100644
--- a/advanced/hmi/nspanel_us_code/buttonpage01.txt
+++ b/advanced/hmi/nspanel_us_code/buttonpage01.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_us_code/buttonpage02.txt b/advanced/hmi/nspanel_us_code/buttonpage02.txt
index 0fc97d4..87af814 100644
--- a/advanced/hmi/nspanel_us_code/buttonpage02.txt
+++ b/advanced/hmi/nspanel_us_code/buttonpage02.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_us_code/buttonpage03.txt b/advanced/hmi/nspanel_us_code/buttonpage03.txt
index 2740b5e..bb36625 100644
--- a/advanced/hmi/nspanel_us_code/buttonpage03.txt
+++ b/advanced/hmi/nspanel_us_code/buttonpage03.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_us_code/buttonpage04.txt b/advanced/hmi/nspanel_us_code/buttonpage04.txt
index 96ae9e1..38c8cdd 100644
--- a/advanced/hmi/nspanel_us_code/buttonpage04.txt
+++ b/advanced/hmi/nspanel_us_code/buttonpage04.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_us_code/climate.txt b/advanced/hmi/nspanel_us_code/climate.txt
index cfd6503..2d3bc7c 100644
--- a/advanced/hmi/nspanel_us_code/climate.txt
+++ b/advanced/hmi/nspanel_us_code/climate.txt
@@ -32,6 +32,7 @@ Page climate
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -530,6 +531,16 @@ Text target_low
Touch Release Event
active_slider.val=2
+Text unavailable
+ Attributes
+ ID : 54
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider slider_high
Attributes
ID : 7
diff --git a/advanced/hmi/nspanel_us_code/confirm.txt b/advanced/hmi/nspanel_us_code/confirm.txt
index 7c4b289..131e50e 100644
--- a/advanced/hmi/nspanel_us_code/confirm.txt
+++ b/advanced/hmi/nspanel_us_code/confirm.txt
@@ -16,6 +16,7 @@ Page confirm
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -77,6 +78,16 @@ Text body
Text : Please confirm
Max. Text Size : 255
+Text unavailable
+ Attributes
+ ID : 12
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button bclose
Attributes
ID : 2
diff --git a/advanced/hmi/nspanel_us_code/cover.txt b/advanced/hmi/nspanel_us_code/cover.txt
index 718e467..d2d624e 100644
--- a/advanced/hmi/nspanel_us_code/cover.txt
+++ b/advanced/hmi/nspanel_us_code/cover.txt
@@ -16,6 +16,7 @@ Page cover
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -84,6 +85,16 @@ Text battery_icon
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 14
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider coverslider
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_us_code/entitypage01.txt b/advanced/hmi/nspanel_us_code/entitypage01.txt
index d4cd469..7e9a7ae 100644
--- a/advanced/hmi/nspanel_us_code/entitypage01.txt
+++ b/advanced/hmi/nspanel_us_code/entitypage01.txt
@@ -16,6 +16,7 @@ Page entitypage01
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—â—‹â—‹â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_us_code/entitypage02.txt b/advanced/hmi/nspanel_us_code/entitypage02.txt
index 19650c4..deb1259 100644
--- a/advanced/hmi/nspanel_us_code/entitypage02.txt
+++ b/advanced/hmi/nspanel_us_code/entitypage02.txt
@@ -16,6 +16,7 @@ Page entitypage02
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—â—‹â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_us_code/entitypage03.txt b/advanced/hmi/nspanel_us_code/entitypage03.txt
index 19da4ec..1a14754 100644
--- a/advanced/hmi/nspanel_us_code/entitypage03.txt
+++ b/advanced/hmi/nspanel_us_code/entitypage03.txt
@@ -16,6 +16,7 @@ Page entitypage03
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—‹â—â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_us_code/entitypage04.txt b/advanced/hmi/nspanel_us_code/entitypage04.txt
index 3d05e25..b2b1238 100644
--- a/advanced/hmi/nspanel_us_code/entitypage04.txt
+++ b/advanced/hmi/nspanel_us_code/entitypage04.txt
@@ -16,6 +16,7 @@ Page entitypage04
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—‹â—‹â—
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_us_code/fan.txt b/advanced/hmi/nspanel_us_code/fan.txt
index 2533bf7..6909a73 100644
--- a/advanced/hmi/nspanel_us_code/fan.txt
+++ b/advanced/hmi/nspanel_us_code/fan.txt
@@ -16,6 +16,7 @@ Page fan
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -64,6 +65,16 @@ Text icon_state
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 16
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider fanslider
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_us_code/home.txt b/advanced/hmi/nspanel_us_code/home.txt
index 8950606..a6a5668 100644
--- a/advanced/hmi/nspanel_us_code/home.txt
+++ b/advanced/hmi/nspanel_us_code/home.txt
@@ -21,6 +21,7 @@ Page home
vis left_bt_text,0
vis right_bt_text,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -579,6 +580,16 @@ Text button06
printh FF FF FF
}
+Text unavailable
+ Attributes
+ ID : 46
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather
Attributes
ID : 7
diff --git a/advanced/hmi/nspanel_us_code/keyb_num.txt b/advanced/hmi/nspanel_us_code/keyb_num.txt
index b8c3a2d..aea6a3e 100644
--- a/advanced/hmi/nspanel_us_code/keyb_num.txt
+++ b/advanced/hmi/nspanel_us_code/keyb_num.txt
@@ -16,6 +16,7 @@ Page keyb_num
{
page page_id.val
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -84,6 +85,16 @@ Text title
Text : Alarm
Max. Text Size : 30
+Text unavailable
+ Attributes
+ ID : 24
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button b1
Attributes
ID : 3
@@ -265,6 +276,12 @@ Button benter
Events
Touch Release Event
aux.txt="{\"page\": \"keyb_num\", \"key\": \""+key.txt+"\", \"value\": \""+value.txt+"\", \"pin\": \""+pin.txt+"\", \"base_domain\": \""+domain.txt+"\"}"
+ printh 92
+ prints "localevent",0
+ printh 00
+ prints aux.txt,0
+ printh 00
+ printh FF FF FF
Button bview
Attributes
diff --git a/advanced/hmi/nspanel_us_code/light.txt b/advanced/hmi/nspanel_us_code/light.txt
index 660e23a..25a940f 100644
--- a/advanced/hmi/nspanel_us_code/light.txt
+++ b/advanced/hmi/nspanel_us_code/light.txt
@@ -36,6 +36,7 @@ Page light
vis color_touch,0
vis color_button,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -158,6 +159,16 @@ Text icon_state
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 33
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture light_button
Attributes
ID : 8
diff --git a/advanced/hmi/nspanel_us_code/media_player.txt b/advanced/hmi/nspanel_us_code/media_player.txt
index 3cd1ed6..a0d7d1d 100644
--- a/advanced/hmi/nspanel_us_code/media_player.txt
+++ b/advanced/hmi/nspanel_us_code/media_player.txt
@@ -16,6 +16,7 @@ Page media_player
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -277,6 +278,16 @@ Text bt_on_off
printh 00
printh FF FF FF
+Text unavailable
+ Attributes
+ ID : 26
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Progress Bar time_progress
Attributes
ID : 9
diff --git a/advanced/hmi/nspanel_us_code/notification.txt b/advanced/hmi/nspanel_us_code/notification.txt
index 5907e7f..089013e 100644
--- a/advanced/hmi/nspanel_us_code/notification.txt
+++ b/advanced/hmi/nspanel_us_code/notification.txt
@@ -16,6 +16,7 @@ Page notification
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -47,6 +48,16 @@ Text notifi_label
Text :
Max. Text Size : 100
+Text unavailable
+ Attributes
+ ID : 10
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_us_code/qrcode.txt b/advanced/hmi/nspanel_us_code/qrcode.txt
index 84a0acf..e9a780b 100644
--- a/advanced/hmi/nspanel_us_code/qrcode.txt
+++ b/advanced/hmi/nspanel_us_code/qrcode.txt
@@ -11,6 +11,9 @@ Page qrcode
Swide right page ID: disabled
Events
+ Preinitialize Event
+ vis unavailable,0
+
Postinitialize Event
sendme
@@ -24,6 +27,16 @@ Text qrcode_label
Text :
Max. Text Size : 100
+Text unavailable
+ Attributes
+ ID : 7
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
QR Code qrcode_value
Attributes
ID : 4
diff --git a/advanced/hmi/nspanel_us_code/screensaver.txt b/advanced/hmi/nspanel_us_code/screensaver.txt
index ea216f1..4c0ad19 100644
--- a/advanced/hmi/nspanel_us_code/screensaver.txt
+++ b/advanced/hmi/nspanel_us_code/screensaver.txt
@@ -14,6 +14,7 @@ Page screensaver
Preinitialize Event
vis text,0
dim=brightness_sleep
+ vis unavailable,0
Postinitialize Event
sendme
@@ -35,6 +36,16 @@ Text text
Touch Release Event
page back_page_id
+Text unavailable
+ Attributes
+ ID : 5
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Timer swipestore
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_us_code/settings.txt b/advanced/hmi/nspanel_us_code/settings.txt
index 1644740..501cdd2 100644
--- a/advanced/hmi/nspanel_us_code/settings.txt
+++ b/advanced/hmi/nspanel_us_code/settings.txt
@@ -18,6 +18,7 @@ Page settings
dim_text.txt+="%"
vis lbl_sleep,0
vis bt_sleep,0
+ vis unavailable,0
Postinitialize Event
sendme
@@ -195,6 +196,16 @@ Text t3
printh FF FF FF
}
+Text unavailable
+ Attributes
+ ID : 25
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider brightslider
Attributes
ID : 1
diff --git a/advanced/hmi/nspanel_us_code/weather01.txt b/advanced/hmi/nspanel_us_code/weather01.txt
index dfbe294..31c8edc 100644
--- a/advanced/hmi/nspanel_us_code/weather01.txt
+++ b/advanced/hmi/nspanel_us_code/weather01.txt
@@ -16,6 +16,7 @@ Page weather01
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—â—‹â—‹â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_us_code/weather02.txt b/advanced/hmi/nspanel_us_code/weather02.txt
index 9f80e06..d1e703a 100644
--- a/advanced/hmi/nspanel_us_code/weather02.txt
+++ b/advanced/hmi/nspanel_us_code/weather02.txt
@@ -16,6 +16,7 @@ Page weather02
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—â—‹â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_us_code/weather03.txt b/advanced/hmi/nspanel_us_code/weather03.txt
index 164d84e..be8be75 100644
--- a/advanced/hmi/nspanel_us_code/weather03.txt
+++ b/advanced/hmi/nspanel_us_code/weather03.txt
@@ -16,6 +16,7 @@ Page weather03
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_us_code/weather04.txt b/advanced/hmi/nspanel_us_code/weather04.txt
index 6438372..9760d9e 100644
--- a/advanced/hmi/nspanel_us_code/weather04.txt
+++ b/advanced/hmi/nspanel_us_code/weather04.txt
@@ -16,6 +16,7 @@ Page weather04
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—‹â—â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_us_code/weather05.txt b/advanced/hmi/nspanel_us_code/weather05.txt
index da0e71f..04ea0f0 100644
--- a/advanced/hmi/nspanel_us_code/weather05.txt
+++ b/advanced/hmi/nspanel_us_code/weather05.txt
@@ -16,6 +16,7 @@ Page weather05
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—‹â—‹â—
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_us_land.HMI b/advanced/hmi/nspanel_us_land.HMI
index 72aad06..530897c 100644
Binary files a/advanced/hmi/nspanel_us_land.HMI and b/advanced/hmi/nspanel_us_land.HMI differ
diff --git a/advanced/hmi/nspanel_us_land_code/alarm.txt b/advanced/hmi/nspanel_us_land_code/alarm.txt
index 9732c03..d4778be 100644
--- a/advanced/hmi/nspanel_us_land_code/alarm.txt
+++ b/advanced/hmi/nspanel_us_land_code/alarm.txt
@@ -23,6 +23,7 @@ Page alarm
vis bt_vacat,0
vis bt_bypass,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -188,6 +189,16 @@ Text bt_disarm_icon
Text : î¦
Max. Text Size : 3
+Text unavailable
+ Attributes
+ ID : 32
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture bt_home_pic
Attributes
ID : 4
diff --git a/advanced/hmi/nspanel_us_land_code/boot.txt b/advanced/hmi/nspanel_us_land_code/boot.txt
index 67902b2..8285c16 100644
--- a/advanced/hmi/nspanel_us_land_code/boot.txt
+++ b/advanced/hmi/nspanel_us_land_code/boot.txt
@@ -15,6 +15,7 @@ Page boot
dim=100
covx baud,baud_rate.txt,0,0
baud_rate.txt+=" bps"
+ vis unavailable,0
Postinitialize Event
sendme
@@ -102,7 +103,7 @@ Text tft_version
Dragging : 0
Send Component ID : on press and release
Associated Keyboard: none
- Text : 4.2.4
+ Text : 4.2.5
Max. Text Size : 9
Text esph_version
@@ -145,6 +146,16 @@ Text framework
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 16
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Dual-state Button bt_reboot
Attributes
ID : 4
diff --git a/advanced/hmi/nspanel_us_land_code/buttonpage01.txt b/advanced/hmi/nspanel_us_land_code/buttonpage01.txt
index 631f112..9446a71 100644
--- a/advanced/hmi/nspanel_us_land_code/buttonpage01.txt
+++ b/advanced/hmi/nspanel_us_land_code/buttonpage01.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_us_land_code/buttonpage02.txt b/advanced/hmi/nspanel_us_land_code/buttonpage02.txt
index 0fc97d4..87af814 100644
--- a/advanced/hmi/nspanel_us_land_code/buttonpage02.txt
+++ b/advanced/hmi/nspanel_us_land_code/buttonpage02.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_us_land_code/buttonpage03.txt b/advanced/hmi/nspanel_us_land_code/buttonpage03.txt
index 2740b5e..bb36625 100644
--- a/advanced/hmi/nspanel_us_land_code/buttonpage03.txt
+++ b/advanced/hmi/nspanel_us_land_code/buttonpage03.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_us_land_code/buttonpage04.txt b/advanced/hmi/nspanel_us_land_code/buttonpage04.txt
index 96ae9e1..38c8cdd 100644
--- a/advanced/hmi/nspanel_us_land_code/buttonpage04.txt
+++ b/advanced/hmi/nspanel_us_land_code/buttonpage04.txt
@@ -392,6 +392,16 @@ Text button08bri
Text :
Max. Text Size : 4
+Text unavailable
+ Attributes
+ ID : 52
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_us_land_code/climate.txt b/advanced/hmi/nspanel_us_land_code/climate.txt
index b3c6df4..b9f183a 100644
--- a/advanced/hmi/nspanel_us_land_code/climate.txt
+++ b/advanced/hmi/nspanel_us_land_code/climate.txt
@@ -32,6 +32,7 @@ Page climate
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -530,6 +531,16 @@ Text target_low
Touch Release Event
active_slider.val=2
+Text unavailable
+ Attributes
+ ID : 54
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider slider_high
Attributes
ID : 7
diff --git a/advanced/hmi/nspanel_us_land_code/confirm.txt b/advanced/hmi/nspanel_us_land_code/confirm.txt
index 7c4b289..131e50e 100644
--- a/advanced/hmi/nspanel_us_land_code/confirm.txt
+++ b/advanced/hmi/nspanel_us_land_code/confirm.txt
@@ -16,6 +16,7 @@ Page confirm
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -77,6 +78,16 @@ Text body
Text : Please confirm
Max. Text Size : 255
+Text unavailable
+ Attributes
+ ID : 12
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button bclose
Attributes
ID : 2
diff --git a/advanced/hmi/nspanel_us_land_code/cover.txt b/advanced/hmi/nspanel_us_land_code/cover.txt
index 9b0b036..b7afc34 100644
--- a/advanced/hmi/nspanel_us_land_code/cover.txt
+++ b/advanced/hmi/nspanel_us_land_code/cover.txt
@@ -16,6 +16,7 @@ Page cover
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -84,6 +85,16 @@ Text battery_icon
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 14
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider coverslider
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_us_land_code/entitypage01.txt b/advanced/hmi/nspanel_us_land_code/entitypage01.txt
index d4cd469..7e9a7ae 100644
--- a/advanced/hmi/nspanel_us_land_code/entitypage01.txt
+++ b/advanced/hmi/nspanel_us_land_code/entitypage01.txt
@@ -16,6 +16,7 @@ Page entitypage01
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—â—‹â—‹â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_us_land_code/entitypage02.txt b/advanced/hmi/nspanel_us_land_code/entitypage02.txt
index 19650c4..deb1259 100644
--- a/advanced/hmi/nspanel_us_land_code/entitypage02.txt
+++ b/advanced/hmi/nspanel_us_land_code/entitypage02.txt
@@ -16,6 +16,7 @@ Page entitypage02
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—â—‹â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_us_land_code/entitypage03.txt b/advanced/hmi/nspanel_us_land_code/entitypage03.txt
index 12fb2e4..3825618 100644
--- a/advanced/hmi/nspanel_us_land_code/entitypage03.txt
+++ b/advanced/hmi/nspanel_us_land_code/entitypage03.txt
@@ -16,6 +16,7 @@ Page entitypage03
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—‹â—â—‹
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 29
diff --git a/advanced/hmi/nspanel_us_land_code/entitypage04.txt b/advanced/hmi/nspanel_us_land_code/entitypage04.txt
index 3d05e25..b2b1238 100644
--- a/advanced/hmi/nspanel_us_land_code/entitypage04.txt
+++ b/advanced/hmi/nspanel_us_land_code/entitypage04.txt
@@ -16,6 +16,7 @@ Page entitypage04
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -280,6 +281,16 @@ Text page_index
Text : â—‹â—‹â—‹â—
Max. Text Size : 12
+Text unavailable
+ Attributes
+ ID : 31
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 28
diff --git a/advanced/hmi/nspanel_us_land_code/fan.txt b/advanced/hmi/nspanel_us_land_code/fan.txt
index 2533bf7..6909a73 100644
--- a/advanced/hmi/nspanel_us_land_code/fan.txt
+++ b/advanced/hmi/nspanel_us_land_code/fan.txt
@@ -16,6 +16,7 @@ Page fan
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -64,6 +65,16 @@ Text icon_state
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 16
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider fanslider
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_us_land_code/home.txt b/advanced/hmi/nspanel_us_land_code/home.txt
index 8950606..a6a5668 100644
--- a/advanced/hmi/nspanel_us_land_code/home.txt
+++ b/advanced/hmi/nspanel_us_land_code/home.txt
@@ -21,6 +21,7 @@ Page home
vis left_bt_text,0
vis right_bt_text,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -579,6 +580,16 @@ Text button06
printh FF FF FF
}
+Text unavailable
+ Attributes
+ ID : 46
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather
Attributes
ID : 7
diff --git a/advanced/hmi/nspanel_us_land_code/keyb_num.txt b/advanced/hmi/nspanel_us_land_code/keyb_num.txt
index b011257..07c3562 100644
--- a/advanced/hmi/nspanel_us_land_code/keyb_num.txt
+++ b/advanced/hmi/nspanel_us_land_code/keyb_num.txt
@@ -16,6 +16,7 @@ Page keyb_num
{
page page_id.val
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -84,6 +85,16 @@ Text title
Text : Alarm
Max. Text Size : 30
+Text unavailable
+ Attributes
+ ID : 24
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button b1
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_us_land_code/light.txt b/advanced/hmi/nspanel_us_land_code/light.txt
index 1044901..5a1d342 100644
--- a/advanced/hmi/nspanel_us_land_code/light.txt
+++ b/advanced/hmi/nspanel_us_land_code/light.txt
@@ -36,6 +36,7 @@ Page light
vis color_touch,0
vis color_button,0
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -158,6 +159,16 @@ Text icon_state
Text :
Max. Text Size : 10
+Text unavailable
+ Attributes
+ ID : 33
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture light_button
Attributes
ID : 8
diff --git a/advanced/hmi/nspanel_us_land_code/media_player.txt b/advanced/hmi/nspanel_us_land_code/media_player.txt
index c2e2d55..7aceec7 100644
--- a/advanced/hmi/nspanel_us_land_code/media_player.txt
+++ b/advanced/hmi/nspanel_us_land_code/media_player.txt
@@ -16,6 +16,7 @@ Page media_player
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -278,6 +279,16 @@ Text bt_on_off
printh 00
printh FF FF FF
+Text unavailable
+ Attributes
+ ID : 26
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Progress Bar time_progress
Attributes
ID : 9
diff --git a/advanced/hmi/nspanel_us_land_code/notification.txt b/advanced/hmi/nspanel_us_land_code/notification.txt
index 5e5654e..b3e282f 100644
--- a/advanced/hmi/nspanel_us_land_code/notification.txt
+++ b/advanced/hmi/nspanel_us_land_code/notification.txt
@@ -16,6 +16,7 @@ Page notification
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -47,6 +48,16 @@ Text notifi_label
Text :
Max. Text Size : 100
+Text unavailable
+ Attributes
+ ID : 10
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Button button_back
Attributes
ID : 6
diff --git a/advanced/hmi/nspanel_us_land_code/qrcode.txt b/advanced/hmi/nspanel_us_land_code/qrcode.txt
index 84a0acf..e9a780b 100644
--- a/advanced/hmi/nspanel_us_land_code/qrcode.txt
+++ b/advanced/hmi/nspanel_us_land_code/qrcode.txt
@@ -11,6 +11,9 @@ Page qrcode
Swide right page ID: disabled
Events
+ Preinitialize Event
+ vis unavailable,0
+
Postinitialize Event
sendme
@@ -24,6 +27,16 @@ Text qrcode_label
Text :
Max. Text Size : 100
+Text unavailable
+ Attributes
+ ID : 7
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
QR Code qrcode_value
Attributes
ID : 4
diff --git a/advanced/hmi/nspanel_us_land_code/screensaver.txt b/advanced/hmi/nspanel_us_land_code/screensaver.txt
index ea216f1..4c0ad19 100644
--- a/advanced/hmi/nspanel_us_land_code/screensaver.txt
+++ b/advanced/hmi/nspanel_us_land_code/screensaver.txt
@@ -14,6 +14,7 @@ Page screensaver
Preinitialize Event
vis text,0
dim=brightness_sleep
+ vis unavailable,0
Postinitialize Event
sendme
@@ -35,6 +36,16 @@ Text text
Touch Release Event
page back_page_id
+Text unavailable
+ Attributes
+ ID : 5
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Timer swipestore
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_us_land_code/settings.txt b/advanced/hmi/nspanel_us_land_code/settings.txt
index 0b83161..adaf793 100644
--- a/advanced/hmi/nspanel_us_land_code/settings.txt
+++ b/advanced/hmi/nspanel_us_land_code/settings.txt
@@ -18,6 +18,7 @@ Page settings
dim_text.txt+="%"
vis lbl_sleep,0
vis bt_sleep,0
+ vis unavailable,0
Postinitialize Event
sendme
@@ -99,6 +100,16 @@ Text lbl_brightness
Text : Brightness
Max. Text Size : 25
+Text unavailable
+ Attributes
+ ID : 21
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Slider brightslider
Attributes
ID : 1
diff --git a/advanced/hmi/nspanel_us_land_code/weather01.txt b/advanced/hmi/nspanel_us_land_code/weather01.txt
index dfbe294..31c8edc 100644
--- a/advanced/hmi/nspanel_us_land_code/weather01.txt
+++ b/advanced/hmi/nspanel_us_land_code/weather01.txt
@@ -16,6 +16,7 @@ Page weather01
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—â—‹â—‹â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_us_land_code/weather02.txt b/advanced/hmi/nspanel_us_land_code/weather02.txt
index 9f80e06..d1e703a 100644
--- a/advanced/hmi/nspanel_us_land_code/weather02.txt
+++ b/advanced/hmi/nspanel_us_land_code/weather02.txt
@@ -16,6 +16,7 @@ Page weather02
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—â—‹â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_us_land_code/weather03.txt b/advanced/hmi/nspanel_us_land_code/weather03.txt
index 164d84e..be8be75 100644
--- a/advanced/hmi/nspanel_us_land_code/weather03.txt
+++ b/advanced/hmi/nspanel_us_land_code/weather03.txt
@@ -16,6 +16,7 @@ Page weather03
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—â—‹â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_us_land_code/weather04.txt b/advanced/hmi/nspanel_us_land_code/weather04.txt
index 6438372..9760d9e 100644
--- a/advanced/hmi/nspanel_us_land_code/weather04.txt
+++ b/advanced/hmi/nspanel_us_land_code/weather04.txt
@@ -16,6 +16,7 @@ Page weather04
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—‹â—â—‹
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/advanced/hmi/nspanel_us_land_code/weather05.txt b/advanced/hmi/nspanel_us_land_code/weather05.txt
index da0e71f..04ea0f0 100644
--- a/advanced/hmi/nspanel_us_land_code/weather05.txt
+++ b/advanced/hmi/nspanel_us_land_code/weather05.txt
@@ -16,6 +16,7 @@ Page weather05
{
page home
}
+ vis unavailable,0
Postinitialize Event
sendme
@@ -160,6 +161,16 @@ Text page_index
Text : â—‹â—‹â—‹â—‹â—
Max. Text Size : 15
+Text unavailable
+ Attributes
+ ID : 20
+ Scope : local
+ Dragging : 0
+ Send Component ID : disabled
+ Associated Keyboard: none
+ Text :
+ Max. Text Size : 1
+
Picture weather_icon
Attributes
ID : 3
diff --git a/dev/ui/eu/pics/1.png b/dev/ui/eu/pics/1.png
new file mode 100644
index 0000000..6fcfab9
Binary files /dev/null and b/dev/ui/eu/pics/1.png differ
diff --git a/dev/ui/eu/pics/10.png b/dev/ui/eu/pics/10.png
new file mode 100644
index 0000000..10b33a7
Binary files /dev/null and b/dev/ui/eu/pics/10.png differ
diff --git a/dev/ui/eu/pics/11.png b/dev/ui/eu/pics/11.png
new file mode 100644
index 0000000..d1dd38d
Binary files /dev/null and b/dev/ui/eu/pics/11.png differ
diff --git a/dev/ui/eu/pics/12.png b/dev/ui/eu/pics/12.png
new file mode 100644
index 0000000..8ce5dfd
Binary files /dev/null and b/dev/ui/eu/pics/12.png differ
diff --git a/dev/ui/eu/pics/13.png b/dev/ui/eu/pics/13.png
new file mode 100644
index 0000000..9e7f579
Binary files /dev/null and b/dev/ui/eu/pics/13.png differ
diff --git a/dev/ui/eu/pics/14.png b/dev/ui/eu/pics/14.png
new file mode 100644
index 0000000..8c8e057
Binary files /dev/null and b/dev/ui/eu/pics/14.png differ
diff --git a/dev/ui/eu/pics/15.png b/dev/ui/eu/pics/15.png
new file mode 100644
index 0000000..e0a99a9
Binary files /dev/null and b/dev/ui/eu/pics/15.png differ
diff --git a/dev/ui/eu/pics/16.png b/dev/ui/eu/pics/16.png
new file mode 100644
index 0000000..cb908bc
Binary files /dev/null and b/dev/ui/eu/pics/16.png differ
diff --git a/dev/ui/eu/pics/17.png b/dev/ui/eu/pics/17.png
new file mode 100644
index 0000000..1656cb5
Binary files /dev/null and b/dev/ui/eu/pics/17.png differ
diff --git a/dev/ui/eu/pics/18.png b/dev/ui/eu/pics/18.png
new file mode 100644
index 0000000..392651a
Binary files /dev/null and b/dev/ui/eu/pics/18.png differ
diff --git a/dev/ui/eu/pics/19.png b/dev/ui/eu/pics/19.png
new file mode 100644
index 0000000..03fb75f
Binary files /dev/null and b/dev/ui/eu/pics/19.png differ
diff --git a/dev/ui/eu/pics/2.png b/dev/ui/eu/pics/2.png
new file mode 100644
index 0000000..54d6caa
Binary files /dev/null and b/dev/ui/eu/pics/2.png differ
diff --git a/dev/ui/eu/pics/20.png b/dev/ui/eu/pics/20.png
new file mode 100644
index 0000000..e9eb44c
Binary files /dev/null and b/dev/ui/eu/pics/20.png differ
diff --git a/dev/ui/eu/pics/21.png b/dev/ui/eu/pics/21.png
new file mode 100644
index 0000000..704687e
Binary files /dev/null and b/dev/ui/eu/pics/21.png differ
diff --git a/dev/ui/eu/pics/22.png b/dev/ui/eu/pics/22.png
new file mode 100644
index 0000000..7a11aec
Binary files /dev/null and b/dev/ui/eu/pics/22.png differ
diff --git a/dev/ui/eu/pics/23.png b/dev/ui/eu/pics/23.png
new file mode 100644
index 0000000..73678ed
Binary files /dev/null and b/dev/ui/eu/pics/23.png differ
diff --git a/dev/ui/eu/pics/24.png b/dev/ui/eu/pics/24.png
new file mode 100644
index 0000000..bd08d4c
Binary files /dev/null and b/dev/ui/eu/pics/24.png differ
diff --git a/dev/ui/eu/pics/25.png b/dev/ui/eu/pics/25.png
new file mode 100644
index 0000000..0eafd04
Binary files /dev/null and b/dev/ui/eu/pics/25.png differ
diff --git a/dev/ui/eu/pics/26.png b/dev/ui/eu/pics/26.png
new file mode 100644
index 0000000..33e2d99
Binary files /dev/null and b/dev/ui/eu/pics/26.png differ
diff --git a/dev/ui/eu/pics/27.png b/dev/ui/eu/pics/27.png
new file mode 100644
index 0000000..7f63f94
Binary files /dev/null and b/dev/ui/eu/pics/27.png differ
diff --git a/dev/ui/eu/pics/28.png b/dev/ui/eu/pics/28.png
new file mode 100644
index 0000000..b327162
Binary files /dev/null and b/dev/ui/eu/pics/28.png differ
diff --git a/dev/ui/eu/pics/29.png b/dev/ui/eu/pics/29.png
new file mode 100644
index 0000000..5e3ec77
Binary files /dev/null and b/dev/ui/eu/pics/29.png differ
diff --git a/dev/ui/eu/pics/3.png b/dev/ui/eu/pics/3.png
new file mode 100644
index 0000000..20d32f4
Binary files /dev/null and b/dev/ui/eu/pics/3.png differ
diff --git a/dev/ui/eu/pics/32.jpg b/dev/ui/eu/pics/32.jpg
new file mode 100644
index 0000000..26377bf
Binary files /dev/null and b/dev/ui/eu/pics/32.jpg differ
diff --git a/dev/ui/eu/pics/33.png b/dev/ui/eu/pics/33.png
new file mode 100644
index 0000000..cdc7600
Binary files /dev/null and b/dev/ui/eu/pics/33.png differ
diff --git a/dev/ui/eu/pics/34.png b/dev/ui/eu/pics/34.png
new file mode 100644
index 0000000..78f138a
Binary files /dev/null and b/dev/ui/eu/pics/34.png differ
diff --git a/dev/ui/eu/pics/37.png b/dev/ui/eu/pics/37.png
new file mode 100644
index 0000000..ea7832f
Binary files /dev/null and b/dev/ui/eu/pics/37.png differ
diff --git a/dev/ui/eu/pics/38.png b/dev/ui/eu/pics/38.png
new file mode 100644
index 0000000..fa95a55
Binary files /dev/null and b/dev/ui/eu/pics/38.png differ
diff --git a/dev/ui/eu/pics/39.png b/dev/ui/eu/pics/39.png
new file mode 100644
index 0000000..b327162
Binary files /dev/null and b/dev/ui/eu/pics/39.png differ
diff --git a/dev/ui/eu/pics/4.png b/dev/ui/eu/pics/4.png
new file mode 100644
index 0000000..5ec3dba
Binary files /dev/null and b/dev/ui/eu/pics/4.png differ
diff --git a/dev/ui/eu/pics/40.png b/dev/ui/eu/pics/40.png
new file mode 100644
index 0000000..5e3ec77
Binary files /dev/null and b/dev/ui/eu/pics/40.png differ
diff --git a/dev/ui/eu/pics/41.png b/dev/ui/eu/pics/41.png
new file mode 100644
index 0000000..3f56d7a
Binary files /dev/null and b/dev/ui/eu/pics/41.png differ
diff --git a/dev/ui/eu/pics/42.png b/dev/ui/eu/pics/42.png
new file mode 100644
index 0000000..5f813b2
Binary files /dev/null and b/dev/ui/eu/pics/42.png differ
diff --git a/dev/ui/eu/pics/43.png b/dev/ui/eu/pics/43.png
new file mode 100644
index 0000000..3ab4886
Binary files /dev/null and b/dev/ui/eu/pics/43.png differ
diff --git a/dev/ui/eu/pics/44.png b/dev/ui/eu/pics/44.png
new file mode 100644
index 0000000..e6d24ae
Binary files /dev/null and b/dev/ui/eu/pics/44.png differ
diff --git a/dev/ui/eu/pics/45.png b/dev/ui/eu/pics/45.png
new file mode 100644
index 0000000..fee4c31
Binary files /dev/null and b/dev/ui/eu/pics/45.png differ
diff --git a/dev/ui/eu/pics/5.png b/dev/ui/eu/pics/5.png
new file mode 100644
index 0000000..d7ece59
Binary files /dev/null and b/dev/ui/eu/pics/5.png differ
diff --git a/dev/ui/eu/pics/6.png b/dev/ui/eu/pics/6.png
new file mode 100644
index 0000000..e0bf94f
Binary files /dev/null and b/dev/ui/eu/pics/6.png differ
diff --git a/dev/ui/eu/pics/7.png b/dev/ui/eu/pics/7.png
new file mode 100644
index 0000000..94221e5
Binary files /dev/null and b/dev/ui/eu/pics/7.png differ
diff --git a/dev/ui/eu/pics/8.png b/dev/ui/eu/pics/8.png
new file mode 100644
index 0000000..7d5246a
Binary files /dev/null and b/dev/ui/eu/pics/8.png differ
diff --git a/dev/ui/eu/pics/9.png b/dev/ui/eu/pics/9.png
new file mode 100644
index 0000000..036761f
Binary files /dev/null and b/dev/ui/eu/pics/9.png differ
diff --git a/dev/ui/eu/pics/NSPanel - EU.pptx b/dev/ui/eu/pics/NSPanel - EU.pptx
index 8663357..6a0bdf9 100644
Binary files a/dev/ui/eu/pics/NSPanel - EU.pptx and b/dev/ui/eu/pics/NSPanel - EU.pptx differ
diff --git a/dev/ui/fonts/2248-International-charset.txt b/dev/ui/fonts/2248-International-charset.txt
deleted file mode 100644
index 4d652be..0000000
--- a/dev/ui/fonts/2248-International-charset.txt
+++ /dev/null
@@ -1 +0,0 @@
-!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſƀƁƂƃƄƅƆƇƈƉƊƋƌƍƎƏƐƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿǀǁǂǃDŽDždžLJLjljNJNjnjǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǝǞǟǠǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯǰDZDzdzǴǵǶǷǸǹǺǻǼǽǾǿȀȁȂȃȄȅȆȇȈȉȊȋȌȍȎȏȐȑȒȓȔȕȖȗȘșȚțȜȝȞȟȠȡȢȣȤȥȦȧȨȩȪȫȬȭȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀɁɂɃɄɅɆɇɈɉɊɋɌɍɎɏ̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼͇͈͉͍͎̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿̀́͂̓̈́͆͊͋͌̕̚ͅ͏͓͔͕͖͙͚͐͑͒͗͛ͣͤͥͦͧͨͩͪͫͬͭͮͯ͘͜͟͢͝͞͠͡ͰͱͲͳʹ͵Ͷͷͺͻͼͽ;Ϳ΄΅Ά·ΈΉΊΌΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώϏϐϑϒϓϔϕϖϗϘϙϚϛϜϝϞϟϠϡϢϣϤϥϦϧϨϩϪϫϬϭϮϯϰϱϲϳϴϵ϶ϷϸϹϺϻϼϽϾϿЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяѐёђѓєѕіїјљњћќѝўџѠѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀҁ҂҃҄҅҆҇҈҉ҊҋҌҍҎҏҐґҒғҔҕҖҗҘҙҚқҜҝҞҟҠҡҢңҤҥҦҧҨҩҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽҾҿӀӁӂӃӄӅӆӇӈӉӊӋӌӍӎӏӐӑӒӓӔӕӖӗӘәӚӛӜӝӞӟӠӡӢӣӤӥӦӧӨөӪӫӬӭӮӯӰӱӲӳӴӵӶӷӸӹӺӻӼӽӾӿԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖՙ՚՛՜՝՞՟ՠաբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆևֈ։֊֍֎֏ְֱֲֳִֵֶַָֹֺֻּֽ֑֖֛֢֣֤֥֦֧֪֚֭֮֒֓֔֕֗֘֙֜֝֞֟֠֡֨֩֫֬֯־ֿ׀ׁׂ׃ׅׄ׆ׇאבגדהוזחטיךכלםמןנסעףפץצקרשתׯװױײ׳״؆؇؈؉؊؋،؍؎؏ؘؙؚؐؑؒؓؔؕؖؗ؛؝؞؟ؠءآأؤإئابةتثجحخدذرزسشصضطظعغػؼؽؾؿـفقكلمنهوىيًٌٍَُِّْٕٖٜٟٓٔٗ٘ٙٚٛٝٞ٠١٢٣٤٥٦٧٨٩٪٫٬٭ٮٯٰٱٲٳٴٵٶٷٸٹٺٻټٽپٿڀځڂڃڄڅچڇڈډڊڋڌڍڎڏڐڑڒړڔڕږڗژڙښڛڜڝڞڟڠڡڢڣڤڥڦڧڨکڪګڬڭڮگڰڱڲڳڴڵڶڷڸڹںڻڼڽھڿۀہۂۃۄۅۆۇۈۉۊۋیۍێۏېۑےۓ۔ەۖۗۘۙۚۛۜ۞ۣ۟۠ۡۢۤۥۦۧۨ۩۪ۭ۫۬ۮۯ۰۱۲۳۴۵۶۷۸۹ۺۻۼ۽۾ۿกขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛ႠႡႢႣႤႥႦႧႨႩႪႫႬႭႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀჁჂჃჄჅჇჍაბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶჷჸჹჺ჻ჼჽჾჿḀḁḂḃḄḅḆḇḈḉḊḋḌḍḎḏḐḑḒḓḔḕḖḗḘḙḚḛḜḝḞḟḠḡḢḣḤḥḦḧḨḩḪḫḬḭḮḯḰḱḲḳḴḵḶḷḸḹḺḻḼḽḾḿṀṁṂṃṄṅṆṇṈṉṊṋṌṍṎṏṐṑṒṓṔṕṖṗṘṙṚṛṜṝṞṟṠṡṢṣṤṥṦṧṨṩṪṫṬṭṮṯṰṱṲṳṴṵṶṷṸṹṺṻṼṽṾṿẀẁẂẃẄẅẆẇẈẉẊẋẌẍẎẏẐẑẒẓẔẕẖẗẘẙẚẛẜẝẞẟẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặẸẹẺẻẼẽẾếỀềỂểỄễỆệỈỉỊịỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợỤụỦủỨứỪừỬửỮữỰựỲỳỴỵỶỷỸỹỺỻỼỽỾỿ₠₡₢₣₤₥₦₧₨₩₪₫€₭₮₯₰₱₲₳₴₵₶₷₸₹₺₻₼₽₾₿⃀一七三上下东中串主义九书乾二五亮人件位低假偵像全八六关冷出分判制前助北十南卧危厅厨发台右后启周啟器四在地執壁外多夜大头安定客室家密小少层層左已帘常干年度廚廳开异式当後态態戒房扇手扫按掃接控摄播攝放断斷日时星時暖書月有期未机条東柜模機橱櫃櫥正气氣水泵洗活浴润清温測湿溫潤激濕灯热無熱燈燥状狀用电略異發百目码確碼离秒空窗簾組網線组网置群臥自色落行西解触觸調警讀读调輔轉辅过运连送速連運量鎖鏡锁镜門閉開閒間閱關门闭闲间阅阳除陽險離電頭風风高
\ No newline at end of file
diff --git a/dev/ui/fonts/2271-International-charset.txt b/dev/ui/fonts/2271-International-charset.txt
new file mode 100644
index 0000000..c815421
--- /dev/null
+++ b/dev/ui/fonts/2271-International-charset.txt
@@ -0,0 +1 @@
+!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſƀƁƂƃƄƅƆƇƈƉƊƋƌƍƎƏƐƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿǀǁǂǃDŽDždžLJLjljNJNjnjǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǝǞǟǠǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯǰDZDzdzǴǵǶǷǸǹǺǻǼǽǾǿȀȁȂȃȄȅȆȇȈȉȊȋȌȍȎȏȐȑȒȓȔȕȖȗȘșȚțȜȝȞȟȠȡȢȣȤȥȦȧȨȩȪȫȬȭȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿɀɁɂɃɄɅɆɇɈɉɊɋɌɍɎɏ̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼͇͈͉͍͎̀́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾̿͂͆͊͋͌̕̚ͅ͏͓͔͕͖͙͚͐͑͒͗͛ͣͤͥͦͧͨͩͪͫͬͭͮͯ͘͜͟͢͝͞͠͡ͰͱͲͳʹ͵Ͷͷͺͻͼͽ;Ϳ΄΅Ά·ΈΉΊΌΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώϏϐϑϒϓϔϕϖϗϘϙϚϛϜϝϞϟϠϡϢϣϤϥϦϧϨϩϪϫϬϭϮϯϰϱϲϳϴϵ϶ϷϸϹϺϻϼϽϾϿЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяѐёђѓєѕіїјљњћќѝўџѠѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀҁ҂҃҄҅҆҇҈҉ҊҋҌҍҎҏҐґҒғҔҕҖҗҘҙҚқҜҝҞҟҠҡҢңҤҥҦҧҨҩҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽҾҿӀӁӂӃӄӅӆӇӈӉӊӋӌӍӎӏӐӑӒӓӔӕӖӗӘәӚӛӜӝӞӟӠӡӢӣӤӥӦӧӨөӪӫӬӭӮӯӰӱӲӳӴӵӶӷӸӹӺӻӼӽӾӿԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖՙ՚՛՜՝՞՟ՠաբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆևֈ։֊֍֎֏ְֱֲֳִֵֶַָֹֺֻּֽ֑֖֛֢֣֤֥֦֧֪֚֭֮֒֓֔֕֗֘֙֜֝֞֟֠֡֨֩֫֬֯־ֿ׀ׁׂ׃ׅׄ׆ׇאבגדהוזחטיךכלםמןנסעףפץצקרשתׯװױײ׳״؆؇؈؉؊؋،؍؎؏ؘؙؚؐؑؒؓؔؕؖؗ؛؝؞؟ؠءآأؤإئابةتثجحخدذرزسشصضطظعغػؼؽؾؿـفقكلمنهوىيًٌٍَُِّْٕٖٜٟٓٔٗ٘ٙٚٛٝٞ٠١٢٣٤٥٦٧٨٩٪٫٬٭ٮٯٰٱٲٳٴٵٶٷٸٹٺٻټٽپٿڀځڂڃڄڅچڇڈډڊڋڌڍڎڏڐڑڒړڔڕږڗژڙښڛڜڝڞڟڠڡڢڣڤڥڦڧڨکڪګڬڭڮگڰڱڲڳڴڵڶڷڸڹںڻڼڽھڿۀہۂۃۄۅۆۇۈۉۊۋیۍێۏېۑےۓ۔ەۖۗۘۙۚۛۜ۞ۣ۟۠ۡۢۤۥۦۧۨ۩۪ۭ۫۬ۮۯ۰۱۲۳۴۵۶۷۸۹ۺۻۼ۽۾ۿกขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛ႠႡႢႣႤႥႦႧႨႩႪႫႬႭႮႯႰႱႲႳႴႵႶႷႸႹႺႻႼႽႾႿჀჁჂჃჄჅჇჍაბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶჷჸჹჺ჻ჼჽჾჿḀḁḂḃḄḅḆḇḈḉḊḋḌḍḎḏḐḑḒḓḔḕḖḗḘḙḚḛḜḝḞḟḠḡḢḣḤḥḦḧḨḩḪḫḬḭḮḯḰḱḲḳḴḵḶḷḸḹḺḻḼḽḾḿṀṁṂṃṄṅṆṇṈṉṊṋṌṍṎṏṐṑṒṓṔṕṖṗṘṙṚṛṜṝṞṟṠṡṢṣṤṥṦṧṨṩṪṫṬṭṮṯṰṱṲṳṴṵṶṷṸṹṺṻṼṽṾṿẀẁẂẃẄẅẆẇẈẉẊẋẌẍẎẏẐẑẒẓẔẕẖẗẘẙẚẛẜẝẞẟẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặẸẹẺẻẼẽẾếỀềỂểỄễỆệỈỉỊịỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợỤụỦủỨứỪừỬửỮữỰựỲỳỴỵỶỷỸỹỺỻỼỽỾỿ₠₡₢₣₤₥₦₧₨₩₪₫€₭₮₯₰₱₲₳₴₵₶₷₸₹₺₻₼₽₾₿⃀一七三上下东中串主义九书乾二五亮人件位低假偵像全八六关冷出分判制前助北十午南卧危厅厨发台右后启周啟器四在地執壁外多夜大头安定客室家密小少层層左已帘常干年度廚廳开异式当後态態戒房扇手扫按掃接控摄播攝放断斷日时星時暖書月有期未机条東柜模機橱櫃櫥正气氣水泵洗活浴润清温測湿溫潤激濕灯热無熱燈燥状狀用电略異發百目码確碼离秒空窗簾組網線组网置群臥自色落行西解触觸調警讀读调輔轉辅过运连送速連運量鎖鏡锁镜門閉開閒間閱關门闭闲间阅阳除陽險離電頭風风高法使未知命名利不可明なし사용 불가알수없음이름
diff --git a/dev/ui/fonts/CJK/ubuntu48_language.zi b/dev/ui/fonts/CJK/ubuntu48_language.zi
index fa91aef..7258be0 100644
Binary files a/dev/ui/fonts/CJK/ubuntu48_language.zi and b/dev/ui/fonts/CJK/ubuntu48_language.zi differ
diff --git a/dev/ui/us/pics/NSPanel - US.pptx b/dev/ui/us/pics/NSPanel - US.pptx
index a4d1fee..baa032a 100644
Binary files a/dev/ui/us/pics/NSPanel - US.pptx and b/dev/ui/us/pics/NSPanel - US.pptx differ
diff --git a/docs/README.md b/docs/README.md
index 8f66de4..88ea727 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -3,6 +3,7 @@
- [First Steps | Installation and Setup](install.md)
- [Blueprint | Setup and explanation of the Blueprint](blueprint.md)
- [HowTo | All important things you should know](howto.md)
+- [Version compatibility matrix](version_compatibility.md)
## Common issues
- [TFT Upload](tft_upload.md)
@@ -13,6 +14,7 @@
- [Customization](customization.md)
- [Add-on climate](addon_climate.md)
- [Alarm Control Panel](alarm.md)
+- [Using Different Versions of This Project](different_version.md)
## Setup and overview videos:
- **_[Overview and features](https://www.youtube.com/watch?v=b7vW4YtUaTs) - Mark Watt Tech_**
diff --git a/docs/addon_climate.md b/docs/addon_climate.md
index da089ed..273c7c0 100644
--- a/docs/addon_climate.md
+++ b/docs/addon_climate.md
@@ -23,7 +23,8 @@ and after the `remote_package` (base code), as shown bellow (for `heat` in this
```yaml
substitutions:
# Settings - Editable values
- device_name: "YOUR_NSPANEL_NAME"
+ device_name: "YOUR_NSPANEL_NAME"
+ friendly_name: "Your panel's friendly name"
wifi_ssid: !secret wifi_ssid
wifi_password: !secret wifi_password
@@ -90,7 +91,8 @@ and [ESPHome Climate Thermostat - Additional actions behavior](https://esphome.i
```yaml
substitutions:
# Settings - Editable values
- device_name: "YOUR_NSPANEL_NAME"
+ device_name: "YOUR_NSPANEL_NAME"
+ friendly_name: "Your panel's friendly name"
wifi_ssid: !secret wifi_ssid
wifi_password: !secret wifi_password
@@ -132,7 +134,8 @@ esp32:
```yaml
substitutions:
# Settings - Editable values
- device_name: "YOUR_NSPANEL_NAME"
+ device_name: "YOUR_NSPANEL_NAME"
+ friendly_name: "Your panel's friendly name"
wifi_ssid: !secret wifi_ssid
wifi_password: !secret wifi_password
@@ -174,7 +177,8 @@ esp32:
```yaml
substitutions:
# Settings - Editable values
- device_name: "YOUR_NSPANEL_NAME"
+ device_name: "YOUR_NSPANEL_NAME"
+ friendly_name: "Your panel's friendly name"
wifi_ssid: !secret wifi_ssid
wifi_password: !secret wifi_password
diff --git a/docs/alarm.md b/docs/alarm.md
index 1dc0151..b4ff61c 100644
--- a/docs/alarm.md
+++ b/docs/alarm.md
@@ -1,76 +1,75 @@
# Alarm Control Panel
-You can control an Alarm Control Panel from your NSPanel,
-which will allow you to set the alarm mode between the standard modes supported by
-Home Assistant (Home, Away, Night, Vacation or Custom bypass) or disarm the alarm.
+You can control an Alarm Control Panel from your NSPanel, which allows you to set the alarm mode to standard
+modes supported by Home Assistant (Home, Away, Night, Vacation, or Custom bypass) or disarm the alarm.
-Currently, only alarms without a code or alarms with a numeric code will be supported.
-If your alarm requires a text code, you will still be able to display it on your NSPanel,
-however, when you click in any button it will send services calls to Home Assistant
-without the code and it will fail for the calls where a code is required.
+Currently, the NSPanel supports alarms without a code or with a numeric code. For alarms using a text code,
+the NSPanel will display it, but interactions (like button clicks) will send service calls to Home Assistant
+without the code, leading to failed operations that require a code.
> [!IMPORTANT]
> **Security advisory**
-> By default, the communication between your NSPanel (ESPHome) and Home Assistant (HA) is not encrypted,
-> which means a person with access to your network could potentially monitor the communication between your panel and HA and replicate the service calls.
-> Although this is not a big issue for most of the service calls (turn-on a light,
-close a curtain, etc.), it can be a problem when controlling your alarm system.
+> The default communication between your NSPanel (ESPHome) and Home Assistant (HA) is not encrypted. This
+> could allow someone with network access to monitor and replicate the service calls. This risk is
+> particularly relevant when controlling your alarm system.
>
-> Based on that, we hardly reccoment the use of API encryption for all users controlling an Alarm system via a NSPanel.
-> You can easily enable this by following the ["API encryption" example available here](customization.md#api-encryption).
-
+> To enhance security, we strongly recommend enabling API encryption for NSPanel users managing an Alarm
+> system. Follow the instructions in the ["API encryption" example here](customization.md#api-encryption)
+> to implement this security measure.
## Configuration
### Allow the device to make Home Assistant service calls
-First, you have to configure your Home Assistant to allow your panel to make service calls.
-All other services are called from the Blueprint, however this requires the ESPHome to send
-an event containing in plain text all the information needed to the service call,
-which could be a security issue, so all the alarm calls will be driven by the panel to ensure a safer environment.
+First, you need to configure your Home Assistant to permit your NSPanel to make service calls. While
+most services are handled via the Blueprint, ESPHome needs to send events with all necessary data in
+plain text for these service calls. To mitigate any security risks, alarm-related calls are managed
+directly by the panel.
-To enable this option, go to your ESPHome integrations panel (Settings > Devices and Services > ESPHome)
-and click "Configure" next to the entry related to your panel:
+To enable this:
+1. Go to your ESPHome integrations panel (Settings > Devices and Services > ESPHome).
+2. Click "Configure" next to your panel's entry.
-
+ 
-Then check the option "Allow the device to make Home Assistant service calls":
+3. Select the "Allow the device to make Home Assistant service calls" option.
-
+ 
### Blueprint settings
-Open the automation based on the NSPanel Blueprint and look for a section related to "Alarm Control Panel".
+To assign Alarm Control Panel entities to buttons:
+1. Open the NSPanel Blueprint automation.
+2. Find the button configuration section.
+3. Choose a button and select your alarm control panel entity.
+4. Click "Save" to complete setup.
-Select your alarm control panel entity, click "Save", and your are done. :sunglasses:
-
-
+ 
+Follow these steps to ensure your NSPanel is correctly configured for controlling your alarm system.
## Controlling your alarm from your panel
-When an alarm control panel is set in your Blueprint automation,
-you will see the alarm icon on your panel's Home page.
-This icon will change following the alarm state as described in the table below.
+When an alarm control panel is configured in your Blueprint automation, the alarm icon appears on your
+NSPanel's Home page or the respective button page. This icon changes based on the alarm state, detailed
+in the following table.
-A click on that icon will show the Alarm Control Panel page:
-
-
-
-
-You can change your alarm settings with a single click on the button related to the new state
-you want to set your alarm to, or close the page to go back to Home page.
+Clicking this button opens the Alarm Control Panel page. Here, you can adjust alarm settings with a
+single click or return to the Home page.
+
### Description of states shown with the alarm icon
-State | Color | Icon | Icon name | Description
+
+State | Color | Icon | Icon Name | Description
-- | -- | -- | -- | --
-disarmed | White ||mdi:shield-off-outline | The alarm is disarmed (off).
-armed_home | Green || mdi:shield-home-outline | The alarm is armed in home mode.
-armed_away | Green || mdi:shield-lock-outline | The alarm is armed in away mode.
-armed_night | Green || mdi:shield-moon-outline | The alarm is armed in night mode.
-armed_vacation | Green || mdi:shield-airplane-outline | The alarm is armed in vacation mode.
-armed_custom_bypass | Green || mdi:shield-half-full | The alarm is armed in bypass mode.
-pending | Amber || mdi:shield-outline | The alarm is pending (towards triggered).
-arming | Amber || mdi:shield-outline | The alarm is arming.
-disarming | Amber || mdi:shield-off-outline | The alarm is disarming.
-triggered | Red || mdi:shield-alert-outline | The alarm is triggered.
-unknown / unavailable | White || mdi:shield-alert-outline | The alarm state is unknown or unavailable.
+disarmed | White |  | mdi:shield-off-outline | The alarm is disarmed (off).
+armed_home | Green |  | mdi:shield-home-outline | The alarm is armed in home mode.
+armed_away | Green |  | mdi:shield-lock-outline | The alarm is armed in away mode.
+armed_night | Green |  | mdi:shield-moon-outline | The alarm is armed in night mode.
+armed_vacation | Green |  | mdi:shield-airplane-outline | The alarm is armed in vacation mode.
+armed_custom_bypass | Green |  | mdi:shield-half-full | The alarm is armed in bypass mode.
+pending | Amber |  | mdi:shield-outline | The alarm is pending (towards triggered).
+arming | Amber |  | mdi:shield-outline | The alarm is arming.
+disarming | Amber |  | mdi:shield-off-outline | The alarm is disarming.
+triggered | Red |  | mdi:shield-alert-outline | The alarm is triggered.
+unknown/unavailable | White |  | mdi:shield-alert-outline | The alarm state is unknown or unavailable.
+
diff --git a/docs/customization.md b/docs/customization.md
index 8047bbf..1bc4e89 100644
--- a/docs/customization.md
+++ b/docs/customization.md
@@ -21,12 +21,15 @@ Table of contents:
- [Scheduled actions](#scheduled-actions)
- [Scheduled relay](#scheduled-relay)
- [Scheduled climate](#scheduled-climate)
- - [Framework `esp-idf`](#framework-esp-idf)
+ - [Frameworks](#frameworks)
+ - [Framework `arduino`](#framework-arduino)
+ - [Framework `esp-idf`](#framework-esp-idf)
- [Bluetooth proxy](#bluetooth-proxy)
- [Logger via UART](#logger-via-uart)
- [Climate custom presets](#climate-custom-presets)
- [Push button / Momentary switch](#push-button--momentary-switch)
- [Expose relay fallback switch](#expose-relay-fallback-switch)
+ - [Relay Interlocking](#relay-interlocking)
@@ -55,7 +58,8 @@ You should add your customizations at the end of your ESPHome yaml, as in the ex
```yaml
substitutions:
# Settings - Editable values
- device_name: "YOUR_NSPANEL_NAME"
+ device_name: "YOUR_NSPANEL_NAME"
+ friendly_name: "Your panel's friendly name"
wifi_ssid: !secret wifi_ssid
wifi_password: !secret wifi_password
@@ -225,7 +229,7 @@ Creates a binary sensor to indicate either when the display is showing some page
```yaml
# Is display awake?
binary_sensor:
- - name: ${device_name} Display state
+ - name: Display state
id: display_state
platform: template
lambda: |-
@@ -237,7 +241,7 @@ You can easily invert the meaning to have a sensor for display sleeping:
```yaml
# Is display sleeping?
binary_sensor:
- - name: ${device_name} Display sleeping
+ - name: Display sleeping
id: display_sleeping
platform: template
lambda: |-
@@ -306,7 +310,7 @@ There are several ways to wake-up or put your panel to sleep, but in this exampl
```yaml
button:
# Adds a button to put the panel to sleep
- - name: ${device_name} Sleep
+ - name: Sleep
id: force_sleep
platform: template
icon: mdi:sleep
@@ -317,7 +321,7 @@ button:
if (id(current_page).state != "screensaver") id(disp1).goto_page("screensaver");
# Adds a button to wake-up the panel (similar to the existing service)
- - name: ${device_name} Wake-up
+ - name: Wake-up
id: force_wake_up
platform: template
icon: mdi:alarm
@@ -338,7 +342,7 @@ and even use this in your automation to control when your panel is on with the s
```yaml
light:
# Add the display as a light in Home Assistant
- - name: ${device_name} Display
+ - name: Display
id: display_light
icon: mdi:tablet-dashboard
platform: monochromatic
@@ -474,7 +478,7 @@ time:
target_temperature: 18°C
```
-### Framework `esp-idf`
+### Frameworks
> [!IMPORTANT]
> When switching from `arduino` to `esp-idf`, make sure to update the device with a serial cable as the partition table is different between the two frameworks
as [OTA Update Component](https://esphome.io/components/ota) updates will not change the partition table.
@@ -489,6 +493,14 @@ In any case, you can overlap the settings with this customization.
> [!NOTE]
> For more info about frameworks, please visit [ESPHome docs](https://esphome.io/components/esp32).
+#### Framework `arduino`
+```yaml
+# Change framework to `arduino`
+esp32:
+ framework:
+ type: arduino
+```
+#### Framework `esp-idf`
```yaml
# Change framework to `esp-idf`
esp32:
@@ -592,3 +604,22 @@ switch:
- id: !extend relay2_local
internal: false
```
+
+### Relay Interlocking
+This is using ESPHome capability to prevents the two relays to be active at the same time, which could be useful in some cases,
+like to control a cover like discussed in [#965](https://github.com/Blackymas/NSPanel_HA_Blueprint/issues/965).
+
+> [!ATTENTION]
+> There are some considerations about using software interlocking on the [ESPHome GPIO Switch documentation](https://esphome.io/components/switch/gpio.html#interlocking).
+Please read that carefully to understand what this is doing.
+
+```yaml
+switch:
+ # Prevents the two relays to be on simultaneously
+ - id: !extend relay_1
+ interlock: [relay_1, relay_2]
+ interlock_wait_time: 500ms # Please adjust this accordingly
+ - id: !extend relay_2
+ interlock: [relay_1, relay_2]
+ interlock_wait_time: 500ms # Please adjust this accordingly
+```
\ No newline at end of file
diff --git a/docs/different_version.md b/docs/different_version.md
new file mode 100644
index 0000000..009ee3c
--- /dev/null
+++ b/docs/different_version.md
@@ -0,0 +1,103 @@
+# Guide to Using Different Versions of This Project
+
+## Introduction
+This guide provides instructions on how to switch between different versions for each component of this project:
+Blueprint, ESPHome, and Nextion TFT, allowing users to access development (`dev`), beta, or previous versions.
+
+
+> [!WARNING]
+> Use non-main versions at your own risk. Only the `main`/latest release is officially supported.
+
+> [!IMPORTANT]
+> Ensure all three components (Blueprint, ESPHome, TFT) are synchronized at the same version for system stability.
+
+
+## Suggested Update Order
+1. **ESPHome**: Start with ESPHome for its straightforward update process.
+2. **TFT**: Then proceed with Nextion TFT.
+3. **Blueprint**: Finally, update Blueprint, as it requires more manual effort and careful handling.
+
+## Finding Available Versions
+For available versions and branches, visit: [NSPanel_HA_Blueprint Tags](https://github.com/Blackymas/NSPanel_HA_Blueprint/tags).
+Take note of the branch (`dev`, `beta`, or `main`) or version name exactly as it is published, as this is case-sensitive.
+
+> [!NOTE]
+> **Understanding Tags in GitHub**
+> Tags on GitHub mark specific versions of a project, akin to bookmarks.
+They're created for each new release, allowing easy access to different project stages.
+
+### Special Versions
+- **dev**: The development version, containing the latest code but potentially unstable.
+- **beta**: The pre-release version, more stable than `dev` but still undergoing final testing.
+- **main**: The default latest version, where you will find the most recent release code.
+
+> [!NOTE]
+> When using `dev` or `beta`, report findings in the [issues](https://github.com/Blackymas/NSPanel_HA_Blueprint/issues) section, clearly stating the version.
+>
+> **Please do not report issues related to old released versions.**
+
+## Instructions
+
+### For ESPHome Component
+1. Open your device's YAML config and find the key `ref:`, which is under `remote_package:` in the `packages:` area:
+
+ 
+
+2. Change the value of `ref:` to the version you want to install, like `ref: dev` or `ref: v4.1.4`:
+
+ 
+
+3. Save your settings and then install it.
+
+
+> [!IMPORTANT]
+> Older versions may require `arduino` framework.
+> Please refer to this guide for setting the framework properly: [Change framework](customization.md#frameworks)
+
+> [!WARNING]
+> Older versions of the components may not be compatible with the latest ESPHome compiler or Home Assistant.
+>
+> Ensure you are using a compatible version of Home Assistant and the compiler when working with older project versions to avoid potential issues.
+> You can use our [Version compatibility matrix](version_compatibility.md) to identify the minimum requirement per version as a reference for possible version incompatibility,
+> although we don't have a register of the "Maximum version" supported.
+
+
+### For Nextion TFT Component
+The instructions to upload TFT will vary depending on the version you are installing and the framework you are using.
+
+#### v4.2 or later (ESP-IDF) or v4.2.5 or later (Arduino)
+1. Go to your device's page under **Settings** > **Devices & Services** > **ESPHome**.
+2. On the **Configuration** group, select your option for **Update TFT display - Branch** (either the version you want or `dev`/`beta`).
+If that option is not visible, please expand the **+n entities not shown** and enable it.
+
+ 
+3. Press **Update TFT display** and wait for the upload to complete.
+
+#### v4.1 or earlier, or v4.2.4 or earlier for Arduino framework
+1. On the GitHub repository, click on your chosen version name on the [NSPanel_HA_Blueprint Tags](https://github.com/Blackymas/NSPanel_HA_Blueprint/tags) list, then select the tab **Code**.
+2. Double-check that the correct version is shown below the repository name:
+
+ 
+3. Locate the TFT file related to your model and download it to your local http server.
+4. Double check your `nextion_update_url` substitution is pointing to the right URL where the file you just downloaded is available.
+
+ 
+5. Go to your device's page under **Settings** > **Devices & Services** > **ESPHome**.
+6. On the **Configuration** group, press **Update TFT display** and wait for the upload to complete.
+
+### For Blueprint Component
+1. Use your preferred code editor to edit the blueprint file under `/homeassistant/blueprints/automation/Blackymas/nspanel_blueprint.yaml`.
+2. In the `source_url` key, change the URL replacing `main` by the version you want to install.
+3. Go to **Developer Tools**, select the tab **YAML** and click the button to reload **AUTOMATIONS**.
+4. Go to the [Blueprints dashboard](https://my.home-assistant.io/redirect/blueprints/) (under **Settings** > **Automations & Scenes**, then select tab **Blueprints**).
+5. Find the Blueprint named **NSPanel Configuration** and click on the 3-dot menu related to that.
+6. Click **Re-import blueprint**.
+7. Go back to **Developer Tools**, select the tab **YAML** and click the button to reload **AUTOMATIONS**.
+
+## Additional Notes
+- Please note that the images provided in this guide might become outdated as the project evolves.
+It's always a good idea to refer to the latest version of the project for current details.
+- For the most up-to-date information and updates,
+refer to the [project's documents](README.md)
+and check the [issues](https://github.com/Blackymas/NSPanel_HA_Blueprint/issues)
+and [discussions](https://github.com/Blackymas/NSPanel_HA_Blueprint/discussions) sections on our GitHub repository.
diff --git a/docs/howto.md b/docs/howto.md
index 7684906..d908cf0 100644
--- a/docs/howto.md
+++ b/docs/howto.md
@@ -70,9 +70,6 @@ use_blueprint:
accuweather: home_wetter
outdoortemp: sensor.terrasse_garage_motion_sensor_temperature
humidity: sensor.kinderzimmer_lea_temperatur_sensor_humidity
- hotwatertemp: sensor.hotwater_temp
- hotwatercharge: switch.charge
- heatingsystemflame: binary_sensor.flamestatus
climate: climate.nspanel_buro
left_button_entity: light.haustur_spot_2
right_button_entity: light.haustur_spot_1
@@ -135,11 +132,10 @@ The new firmware will be built and then flashed to your panel, which will restar
> [!IMPORTANT]
> These instructions are for updating a panel where an older version of these files are already installed.
-1. (**Arduino only**) Download from our [GitHub repository](https://github.com/Blackymas/NSPanel_HA_Blueprint/) the latest version of the TFT file relative to your panel's model.
-2. (**Arduino only**) Upload this file to your local www (http) server. Please use the same URL as indicated by the substitution `nextion_update_url` in your device's YAML.
-3. Go to ***Settings --> Devices & Services --> Integrations***, select the display under the ESPHome integration.
-4. Press the switch "**Update TFT Display**" under **Configuration**.
-5. The display starts the update process and then restarts.
+1. Go to ***Settings --> Devices & Services --> Integrations***, select the display under the ESPHome integration.
+2. Select the "**Update TFT Display - Model**" accordingly, under **Configuration**.
+3. Press the button "**Update TFT Display**".
+4. The display starts the update process and then restarts.
## Notification via HA
To show a notification on the NSPAnel, the following service call can be used:
diff --git a/docs/install.md b/docs/install.md
index 1e56bc3..78acedb 100644
--- a/docs/install.md
+++ b/docs/install.md
@@ -8,7 +8,7 @@ Let’s embark on this journey together to create a smart home that’s uniquely
> [!TIP]
-> For troubleshooting TFT transfer issues, the most popular topic for new sers, please consult our [TFT Transfer Troubleshooting Guide](tft_upload.md).
+> For troubleshooting TFT transfer issues, the most popular topic for new users, please consult our [TFT Transfer Troubleshooting Guide](tft_upload.md).
> [!NOTE]
> We encourage users with absolute beginner-level knowledge in Home Assistant, ESPHome, or YAML editing to familiarize themselves with the basics of these platforms.
@@ -60,6 +60,12 @@ To flash your NSPanel, ESPHome firmware is required.
ESPHome can be integrated into your setup in various ways, including as a Home Assistant add-on or through a local installation on your computer.
This guide is based on using the ESPHome dashboard, which is available in all standard implementations.
+> [!NOTE]
+> 4GB of memory are recommended if you are installing ESPHome as a Home Assistant add-on.
+Therefore, a RasPi 4 with 4GB RAM is the minimum if you are using a Raspberry Pi.
+A manual installation requires at least 2GB of memory and 500MB of swap space or 3GB of memory.
+With less memory the compiler will crash!
+
- **Installing ESPHome as a Home Assistant Add-On**: For seamless integration with Home Assistant, ESPHome can be installed as an add-on.
This method provides an easy-to-navigate interface and direct integration with your Home Assistant setup.
For detailed instructions on this installation method, refer to [Getting Started with ESPHome and Home Assistant](https://esphome.io/guides/getting_started_hassio).
@@ -90,10 +96,11 @@ Follow these steps to add a new device in the ESPHome Dashboard:
```yaml
substitutions:
# Settings - Editable values
- device_name: "YOUR_NSPANEL_NAME"
+ device_name: "YOUR_NSPANEL_NAME"
+ friendly_name: "Your panel's friendly name"
wifi_ssid: !secret wifi_ssid
wifi_password: !secret wifi_password
- nextion_update_url: "http://homeassistant.local:8123/local/nspanel_eu.tft" # Optional for `esp-idf` framework
+ nextion_update_url: "http://homeassistant.local:8123/local/nspanel_eu.tft" # Optional
# Add-on configuration (if needed)
# heater_relay: "1" # Possible values: "1" or "2"
@@ -125,7 +132,7 @@ Follow these steps to add a new device in the ESPHome Dashboard:

10. For Wi-Fi credentials, use `!secret` for added security or input them directly.
Learn about secrets in ESPHome: [Home Assistant Secrets in ESPHome](https://www.youtube.com/watch?v=eW4vKDeHh7Y).
-11. (Optionally when using `esp-idf`) Adjust `nextion_update_url` to the URL of a TFT file hosted on an HTTP or HTTPS server,
+11. (Optional) Adjust `nextion_update_url` to the URL of a TFT file hosted on an HTTP or HTTPS server,
ensuring that the file is accessible to the NSPanel.
This URL will be used by ESPHome to download the TFT file to your panel.
For more information on hosting the TFT file and setting up the URL, see the [Upload TFT](#upload-tft) section.
@@ -437,10 +444,11 @@ To use a local copy of `nspanel_esphome.yaml`, copy the file from GitHub to your
```yaml
substitutions:
# Editable settings
- device_name: "YOUR_NSPANEL_NAME"
+ device_name: "YOUR_NSPANEL_NAME"
+ friendly_name: "Your panel's friendly name"
wifi_ssid: !secret wifi_ssid
wifi_password: !secret wifi_password
- nextion_update_url: "http://homeassistant.local:8123/local/nspanel_eu.tft"
+ nextion_update_url: "http://homeassistant.local:8123/local/nspanel_eu.tft" # Optional
# Add-on configuration
# heater_relay: "1" - possible values: 1/2
diff --git a/docs/nspanel_blank.md b/docs/nspanel_blank.md
index 6814916..5cb1436 100644
--- a/docs/nspanel_blank.md
+++ b/docs/nspanel_blank.md
@@ -18,55 +18,9 @@ please refeer to the [Troubleshooting TFT transfer](tft_upload.md) guide.
## How to install a different `tft` file?
-**v4.2 or later and `esp-idf` framework:**
-
Just go to your devices's page (under **Settings** > **Devices and Services** > **ESPHome**),
select your **Upload TFT display - Model** and then press **Upload TFT display**.
-**Older versions or `arduino` framework:**
-
-On your ESPHome settings, you have entered a url for `nextion_update_url`, in the substitutions, like this:
-
-```yaml
-substitutions:
- ###### CHANGE ME START ######
- device_name: "YOUR_NSPANEL_NAME"
- wifi_ssid: !secret wifi_ssid
- wifi_password: !secret wifi_password
-
- nextion_update_url: "http://homeassistant.local:8123/local/nspanel_eu.tft"
- nextion_blank_url: "http://homeassistant.local:8123/local/nspanel_blank.tft"
-
- ##### addon-configuration #####
- ## addon_climate ##
- # addon_climate_heater_relay: "1" # possible values: 1/2
-
- ##### CHANGE ME END #####
-
-packages:
- remote_package:
- url: https://github.com/Blackymas/NSPanel_HA_Blueprint
- ref: main
- files:
- - nspanel_esphome.yaml # Core package
- # - nspanel_esphome_addon_climate_cool.yaml # activate for local climate (cooling) control
- # - nspanel_esphome_addon_climate_heat.yaml # activate for local climate (heater) control
- # - nspanel_esphome_addon_climate_dual.yaml # activate for local climate (dual) control
- refresh: 300s
-
-esp32:
- framework:
- type: esp-idf
-```
-
-This url will indicate where your panel will look for the `tft` file when you click the "Upload TFT" button (under device's page)
-or call the service `esphome.xxxxx_upload_tft`.
-
-The most popular way to switch between the `nspanel_blank.tft` and `nspanel_xx.tft` is replacing the URL on the ESPHome settings
-and flashing the device again, however, you can also do this calling the service `esphome.xxxxx_upload_tft_url`
-adding the URL of the alternative file as a parameter.
-It's up to you, as both ways will give the same result.
-
## What to do after installing `nspanel_blank.tft`?

@@ -74,21 +28,9 @@ It's up to you, as both ways will give the same result.
Once you have sucessfully installed any of the `tft` files from this project,
the `nspanel_blank.tft` file shouldn't be necessary anymore and you should be able to always install the final `tft` file.
-**v4.2 or later and `esp-idf` framework:**
-
Just go to your devices's page (under **Settings** > **Devices and Services** > **ESPHome**),
select your **Upload TFT display - Model** and then press **Upload TFT display**.
-**Older versions or `arduino` framework:**
-
-Make sure you have one of the following final TFT files in your local http server (typically Home Assistant on ***www*** folder):
-- [`nspanel_eu.tft`](../nspanel_eu.tft)
-- [`nspanel_us.tft`](../nspanel_us.tft)
-- [`nspanel_us_land.tft`](../nspanel_us_land.tft)
-
-Now Flash your panel with `nextion_update_url` pointing to one of the final TFT files and
-press **Upload TFT** in the device's page (**Settings** > **Devices & Services** > **ESPHome**).
-
## Additional Tips and Resources
We have an useful guide for [troubleshooting TFT transfer issues](tft_upload.md).
Please take a look there first.
diff --git a/docs/pics/GitHub_repo_select_tag_tft_files.png b/docs/pics/GitHub_repo_select_tag_tft_files.png
new file mode 100644
index 0000000..44e710c
Binary files /dev/null and b/docs/pics/GitHub_repo_select_tag_tft_files.png differ
diff --git a/docs/pics/esphome_dashboard_yaml_nextion_update_url.png b/docs/pics/esphome_dashboard_yaml_nextion_update_url.png
new file mode 100644
index 0000000..31b88b3
Binary files /dev/null and b/docs/pics/esphome_dashboard_yaml_nextion_update_url.png differ
diff --git a/docs/pics/esphome_dashboard_yaml_ref_main.png b/docs/pics/esphome_dashboard_yaml_ref_main.png
new file mode 100644
index 0000000..74ccbcd
Binary files /dev/null and b/docs/pics/esphome_dashboard_yaml_ref_main.png differ
diff --git a/docs/pics/esphome_dashboard_yaml_ref_v414.png b/docs/pics/esphome_dashboard_yaml_ref_v414.png
new file mode 100644
index 0000000..fc75a7b
Binary files /dev/null and b/docs/pics/esphome_dashboard_yaml_ref_v414.png differ
diff --git a/docs/pics/ha_blueprint_home_custom_buttons_alarm.png b/docs/pics/ha_blueprint_home_custom_buttons_alarm.png
new file mode 100644
index 0000000..197de2b
Binary files /dev/null and b/docs/pics/ha_blueprint_home_custom_buttons_alarm.png differ
diff --git a/docs/pics/ha_device_configuration_tft_update_branch_selector.png b/docs/pics/ha_device_configuration_tft_update_branch_selector.png
new file mode 100644
index 0000000..8b54cf2
Binary files /dev/null and b/docs/pics/ha_device_configuration_tft_update_branch_selector.png differ
diff --git a/docs/pics/ha_file_editor_blueprint_source_url_v414.png b/docs/pics/ha_file_editor_blueprint_source_url_v414.png
new file mode 100644
index 0000000..e3dc696
Binary files /dev/null and b/docs/pics/ha_file_editor_blueprint_source_url_v414.png differ
diff --git a/docs/version_compatibility.md b/docs/version_compatibility.md
new file mode 100644
index 0000000..2c0bf83
--- /dev/null
+++ b/docs/version_compatibility.md
@@ -0,0 +1,11 @@
+# Version compatibility matrix
+
+
+| NSPanel_HA_Blueprint
Version | Home Assistant
Min version | ESPHome
Min version |
+| :--: | :--: | :--: |
+| v4.2.2+ | 2023.12.0 | 2023.12.0 |
+| v4.2.1
v4.2 | 2023.9.0 | 2023.12.0 |
+| v4.1 | 2023.9.0 | 2023.5.0 |
+| v4.0 | 2023.5.0 | 2023.5.0 |
+| Older | 2022.11.1 | 2022.10.2 |
+
diff --git a/nspanel_blueprint.yaml b/nspanel_blueprint.yaml
index cfc3f7f..ceba515 100644
--- a/nspanel_blueprint.yaml
+++ b/nspanel_blueprint.yaml
@@ -4,7 +4,6 @@
##### PLEASE only make changes if it is necessary and also the required knowledge is available. #####
##### For normal use with the Blueprint, no changes are necessary. #####
#######################################################################################################
-
---
blueprint:
name: NSPanel Configuration
@@ -37,7 +36,7 @@ blueprint:
🎉 Roadmap can be found here: [Roadmap](https://github.com/Blackymas/NSPanel_HA_Blueprint/labels/roadmap)
- ℹ️ Version: v4.2.4
+ ℹ️ Version: v4.2.5
source_url: https://github.com/Blackymas/NSPanel_HA_Blueprint/blob/main/nspanel_blueprint.yaml
domain: automation
@@ -47,7 +46,7 @@ blueprint:
# yamllint disable rule:indentation rule:comments-indentation
input:
##### MAIN NAME #####
- nspanel_name:
+ nspanel_name: # This key was kept with this name to support inputs from legacy versions where the panel name was used
name: NSPanel device (REQUIRED)
description: >
*SYSTEM settings*
@@ -173,11 +172,11 @@ blueprint:
device_class:
- temperature
home_outdoor_temp_label_color:
- name: Outdoor Temperature Sensor - LABEL COLOR (Optional)
+ name: Outdoor Temperature Sensor - Text Color (Optional)
description: >
*HOME page*
- *Label color which should be displayed*
+ *Choose a color for the sensor's display text.*
default: [255, 255, 255] # 65535 White
selector: &color_selector
color_rgb:
@@ -237,11 +236,11 @@ blueprint:
default: [255, 255, 255] # 65535 White
selector: *color_selector
home_indoor_temp_label_color:
- name: Indoor Temperature Sensor - LABEL COLOR (Optional)
+ name: Indoor Temperature Sensor - Text Color (Optional)
description: >
*HOME page*
- *Label color which should be displayed*
+ *Choose a color for the sensor's display text.*
default: [255, 255, 255] # 65535 White
selector: *color_selector
##### Sensors - Page Home #####
@@ -264,13 +263,20 @@ blueprint:
filter:
domain:
- sensor
+ home_value01_label_color:
+ name: Sensor 01 - Text Color (Optional)
+ description: >
+ *HOME page*
+
+ *Choose a color for the sensor's display text.*
+ default: [200, 204, 200] # 52857 Grey super light
+ selector: *color_selector
home_value01_icon:
name: Sensor 01 - ICON (Optional)
description: >
*HOME page*
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ ***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*
default: []
selector: *icon-selector
home_value01_icon_color:
@@ -281,14 +287,6 @@ blueprint:
*Icon color which should be displayed*
default: [200, 204, 200] # 52857 Grey super light
selector: *color_selector
- home_value01_label_color:
- name: Sensor 01 - LABEL COLOR (Optional)
- description: >
- *HOME page*
-
- *Label color which should be displayed*
- default: [200, 204, 200] # 52857 Grey super light
- selector: *color_selector
home_value02:
name: Sensor 02 - ENTITY (Optional)
description: >
@@ -297,13 +295,20 @@ blueprint:
*Entity which should be displayed*
default: []
selector: *entity_sensor-selector
+ home_value02_label_color:
+ name: Sensor 02 - Text Color (Optional)
+ description: >
+ *HOME page*
+
+ *Choose a color for the sensor's display text.*
+ default: [200, 204, 200] # 52857 Grey super light
+ selector: *color_selector
home_value02_icon:
name: Sensor 02 - ICON (Optional)
description: >
*HOME page*
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ ***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*
default: []
selector: *icon-selector
home_value02_icon_color:
@@ -314,14 +319,6 @@ blueprint:
*Icon color which should be displayed*
default: [200, 204, 200] # 52857 Grey super light
selector: *color_selector
- home_value02_label_color:
- name: Sensor 02 - LABEL COLOR (Optional)
- description: >
- *HOME page*
-
- *Label color which should be displayed*
- default: [200, 204, 200] # 52857 Grey super light
- selector: *color_selector
home_value03:
name: Sensor 03 - ENTITY (Optional)
description: >
@@ -330,13 +327,20 @@ blueprint:
*Entity which should be displayed*
default: []
selector: *entity_sensor-selector
+ home_value03_label_color:
+ name: Sensor 03 - Text Color (Optional)
+ description: >
+ *HOME page*
+
+ *Choose a color for the sensor's display text.*
+ default: [200, 204, 200] # 52857 Grey super light
+ selector: *color_selector
home_value03_icon:
name: Sensor 03 - ICON (Optional)
description: >
*HOME page*
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ ***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*
default: []
selector: *icon-selector
home_value03_icon_color:
@@ -347,14 +351,6 @@ blueprint:
*Icon color which should be displayed*
default: [200, 204, 200] # 52857 Grey super light
selector: *color_selector
- home_value03_label_color:
- name: Sensor 03 - LABEL COLOR (Optional)
- description: >
- *HOME page*
-
- *Label color which should be displayed*
- default: [200, 204, 200] # 52857 Grey super light
- selector: *color_selector
##### Chips - Page Home #####
##### PLACEHOLDER ######################################################################
placeholder03:
@@ -393,8 +389,10 @@ blueprint:
- binary_sensor
- climate
- cover
+ - fan
- input_boolean
- light
+ - media_player
- sensor
- switch
chip01_inverted:
@@ -782,7 +780,7 @@ blueprint:
default: []
selector: *icon-selector
## Page Home - Custom button 07
- alarm:
+ alarm: # This key was kept with this name to support inputs from legacy versions where the alarm was the only option at that button
name: Custom button 07 - ENTITY (Optional)
description: >
*HOME page*
@@ -926,8 +924,7 @@ blueprint:
description: >
*CLIMATE page*
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ ***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*
default: []
selector: *icon-selector
climate_value01_icon_color:
@@ -939,11 +936,11 @@ blueprint:
default: [200, 204, 200] # 52857 Grey super light
selector: *color_selector
climate_value01_label_color:
- name: Sensor 01 - LABEL COLOR (Optional)
+ name: Sensor 01 - Text Color (Optional)
description: >
*CLIMATE page*
- *Label color which should be displayed*
+ *Choose a color for the sensor's display text.*
default: [200, 204, 200] # 52857 Grey super light
selector: *color_selector
## Climate page - Sensor 02
@@ -960,8 +957,7 @@ blueprint:
description: >
*CLIMATE page*
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ ***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*
default: []
selector: *icon-selector
climate_value02_icon_color:
@@ -973,11 +969,11 @@ blueprint:
default: [200, 204, 200] # 52857 Grey super light
selector: *color_selector
climate_value02_label_color:
- name: Sensor 02 - LABEL COLOR (Optional)
+ name: Sensor 02 - Text Color (Optional)
description: >
*CLIMATE page*
- *Label color which should be displayed*
+ *Choose a color for the sensor's display text.*
default: [200, 204, 200] # 52857 Grey super light
selector: *color_selector
## Climate page - Sensor 03
@@ -994,8 +990,7 @@ blueprint:
description: >
*CLIMATE page*
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ ***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*
default: []
selector: *icon-selector
climate_value03_icon_color:
@@ -1007,11 +1002,11 @@ blueprint:
default: [200, 204, 200] # 52857 Grey super light
selector: *color_selector
climate_value03_label_color:
- name: Sensor 03 - LABEL COLOR (Optional)
+ name: Sensor 03 - Text Color (Optional)
description: >
*CLIMATE page*
- *Label color which should be displayed*
+ *Choose a color for the sensor's display text.*
default: [200, 204, 200] # 52857 Grey super light
selector: *color_selector
## Climate page - Sensor 04
@@ -1028,8 +1023,7 @@ blueprint:
description: >
*CLIMATE page*
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ ***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*
default: []
selector: *icon-selector
climate_value04_icon_color:
@@ -1041,11 +1035,11 @@ blueprint:
default: [200, 204, 200] # 52857 Grey super light
selector: *color_selector
climate_value04_label_color:
- name: Sensor 04 - LABEL COLOR (Optional)
+ name: Sensor 04 - Text Color (Optional)
description: >
*CLIMATE page*
- *Label color which should be displayed*
+ *Choose a color for the sensor's display text.*
default: [200, 204, 200] # 52857 Grey super light
selector: *color_selector
@@ -1067,7 +1061,7 @@ blueprint:
selector:
boolean:
qrcode_label:
- name: QR Code page name - LABEL (Optional)
+ name: QR Code page - LABEL (Optional)
description: >
*QRCODE page*
@@ -1146,7 +1140,7 @@ blueprint:
- script
- switch
left_button_name:
- name: Left hardware button name - LABEL (Optional)
+ name: Left hardware button - LABEL (Optional)
description: >
*HOME page*
@@ -1178,11 +1172,11 @@ blueprint:
selector:
action:
left_button_color:
- name: Left hardware button - LABEL COLOR (Optional)
+ name: Left hardware button - Text Color (Optional)
description: >
*HOME page*
- *LABEL color which should be displayed*
+ *Choose a color for the button's display text.*
default: [200, 204, 200] # 52857 Grey super light
selector: *color_selector
relay_2_local_fallback:
@@ -1205,7 +1199,7 @@ blueprint:
default: []
selector: *hardware-button-selector
right_button_name:
- name: Right hardware button name - LABEL (Optional)
+ name: Right hardware button - LABEL (Optional)
description: >
*HOME page*
@@ -1233,11 +1227,11 @@ blueprint:
selector:
action:
right_button_color:
- name: Right hardware button - LABEL COLOR (Optional)
+ name: Right hardware button - Text Color (Optional)
description: >
*HOME page*
- *LABEL color which should be displayed*
+ *Choose a color for the button's display text.*
default: [200, 204, 200] # 52857 Grey super light
selector: *color_selector
@@ -1277,19 +1271,15 @@ blueprint:
selector: *placeholder-selector
##### PLACEHOLDER ######################################################################
button_page01_label:
- name: Button page 01 name - LABEL (Optional)
+ name: Button page 01 - LABEL (Optional)
description: >
- *ButtonPage01*
-
*Label which should be displayed*
default: []
selector:
text: {}
entity01:
- name: Button 01 - ENTITY (Optional)
+ name: Button page 1, Button 1 - ENTITY (Optional)
description: >
- *ButtonPage01*
-
*Entity which should be switched*
default: []
selector: &button-entity-selector
@@ -1313,339 +1303,261 @@ blueprint:
- script
- switch
entity01_name:
- name: Button 01 name - LABEL (Optional)
+ name: Button page 1, Button 1 - LABEL (Optional)
description: >
- *ButtonPage01*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity01_icon:
- name: Button 01 - ICON (Optional)
+ name: Button page 1, Button 1 - ICON (Optional)
description: >
- *ButtonPage01*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity01_icon_color:
- name: Button 01 - ICON COLOR (Optional)
+ name: Button page 1, Button 1 - ICON COLOR (Optional)
description: >
- *ButtonPage01*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity01_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 1, Button 1 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage01*
-
- *Ask for confirmation to execute **Button01** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity02:
- name: Button 02 - ENTITY (Optional)
+ name: Button page 1, Button 2 - ENTITY (Optional)
description: >
- *ButtonPage01*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity02_name:
- name: Button 02 name - LABEL (Optional)
+ name: Button page 1, Button 2 - LABEL (Optional)
description: >
- *ButtonPage01*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity02_icon:
- name: Button 02 - ICON (Optional)
+ name: Button page 1, Button 2 - ICON (Optional)
description: >
- *ButtonPage01*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity02_icon_color:
- name: Button 02 - ICON COLOR (Optional)
+ name: Button page 1, Button 2 - ICON COLOR (Optional)
description: >
- *ButtonPage01*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity02_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 1, Button 2 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage01*
-
- *Ask for confirmation to execute **Button02** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity03:
- name: Button 03 - ENTITY (Optional)
+ name: Button page 1, Button 3 - ENTITY (Optional)
description: >
- *ButtonPage01*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity03_name:
- name: Button 03 name - LABEL (Optional)
+ name: Button page 1, Button 3 - LABEL (Optional)
description: >
- *ButtonPage01*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity03_icon:
- name: Button 03 - ICON (Optional)
+ name: Button page 1, Button 3 - ICON (Optional)
description: >
- *ButtonPage01*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity03_icon_color:
- name: Button 03 - ICON COLOR (Optional)
+ name: Button page 1, Button 3 - ICON COLOR (Optional)
description: >
- *ButtonPage01*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity03_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 1, Button 3 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage01*
-
- *Ask for confirmation to execute **Button03** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity04:
- name: Button 04 - ENTITY (Optional)
+ name: Button page 1, Button 4 - ENTITY (Optional)
description: >
- *ButtonPage01*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity04_name:
- name: Button 04 name - LABEL (Optional)
+ name: Button page 1, Button 4 - LABEL (Optional)
description: >
- *ButtonPage01*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity04_icon:
- name: Button 04 - ICON (Optional)
+ name: Button page 1, Button 4 - ICON (Optional)
description: >
- *ButtonPage01*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity04_icon_color:
- name: Button 04 - ICON COLOR (Optional)
+ name: Button page 1, Button 4 - ICON COLOR (Optional)
description: >
- *ButtonPage01*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity04_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 1, Button 4 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage01*
-
- *Ask for confirmation to execute **Button04** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity05:
- name: Button 05 - ENTITY (Optional)
+ name: Button page 1, Button 5 - ENTITY (Optional)
description: >
- *ButtonPage01*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity05_name:
- name: Button 05 name - LABEL (Optional)
+ name: Button page 1, Button 5 - LABEL (Optional)
description: >
- *ButtonPage01*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity05_icon:
- name: Button 05 - ICON (Optional)
+ name: Button page 1, Button 5 - ICON (Optional)
description: >
- *ButtonPage01*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity05_icon_color:
- name: Button 05 - ICON COLOR (Optional)
+ name: Button page 1, Button 5 - ICON COLOR (Optional)
description: >
- *ButtonPage01*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity05_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 1, Button 5 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage01*
-
- *Ask for confirmation to execute **Button05** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity06:
- name: Button 06 - ENTITY (Optional)
+ name: Button page 1, Button 6 - ENTITY (Optional)
description: >
- *ButtonPage01*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity06_name:
- name: Button 06 name - LABEL (Optional)
+ name: Button page 1, Button 6 - LABEL (Optional)
description: >
- *ButtonPage01*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity06_icon:
- name: Button 06 - ICON (Optional)
+ name: Button page 1, Button 6 - ICON (Optional)
description: >
- *ButtonPage01*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity06_icon_color:
- name: Button 06 - ICON COLOR (Optional)
+ name: Button page 1, Button 6 - ICON COLOR (Optional)
description: >
- *ButtonPage01*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity06_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 1, Button 6 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage01*
-
- *Ask for confirmation to execute **Button06** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity07:
- name: Button 07 - ENTITY (Optional)
+ name: Button page 1, Button 7 - ENTITY (Optional)
description: >
- *ButtonPage01*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity07_name:
- name: Button 07 name - LABEL (Optional)
+ name: Button page 1, Button 7 - LABEL (Optional)
description: >
- *ButtonPage01*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity07_icon:
- name: Button 07 - ICON (Optional)
+ name: Button page 1, Button 7 - ICON (Optional)
description: >
- *ButtonPage01*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity07_icon_color:
- name: Button 07 - ICON COLOR (Optional)
+ name: Button page 1, Button 7 - ICON COLOR (Optional)
description: >
- *ButtonPage01*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity07_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 1, Button 7 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage01*
-
- *Ask for confirmation to execute **Button07** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity08:
- name: Button 08 - ENTITY (Optional)
+ name: Button page 1, Button 8 - ENTITY (Optional)
description: >
- *ButtonPage01*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity08_name:
- name: Button 08 name - LABEL (Optional)
+ name: Button page 1, Button 8 - LABEL (Optional)
description: >
- *ButtonPage01*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity08_icon:
- name: Button 08 - ICON (Optional)
+ name: Button page 1, Button 8 - ICON (Optional)
description: >
- *ButtonPage01*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity08_icon_color:
- name: Button 08 - ICON COLOR (Optional)
+ name: Button page 1, Button 8 - ICON COLOR (Optional)
description: >
- *ButtonPage01*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity08_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 1, Button 8 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage01*
-
- *Ask for confirmation to execute **Button08** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
##### Button page 02 #####
@@ -1657,356 +1569,274 @@ blueprint:
selector: *placeholder-selector
##### PLACEHOLDER ######################################################################
button_page02_label:
- name: Button page 02 name - LABEL (Optional)
+ name: Button page 02 - LABEL (Optional)
description: >
- *ButtonPage02*
-
*Label which should be displayed*
default: []
selector:
text: {}
entity09:
- name: Button 09 - ENTITY (Optional)
+ name: Button page 2, Button 1 - ENTITY (Optional)
description: >
- *ButtonPage02*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity09_name:
- name: Button 09 name - LABEL (Optional)
+ name: Button page 2, Button 1 - LABEL (Optional)
description: >
- *ButtonPage02*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity09_icon:
- name: Button 09 - ICON (Optional)
+ name: Button page 2, Button 1 - ICON (Optional)
description: >
- *ButtonPage02*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity09_icon_color:
- name: Button 09 - ICON COLOR (Optional)
+ name: Button page 2, Button 1 - ICON COLOR (Optional)
description: >
- *ButtonPage02*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity09_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 2, Button 1 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage02*
-
- *Ask for confirmation to execute **Button09** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity10:
- name: Button 10 - ENTITY (Optional)
+ name: Button page 2, Button 2 - ENTITY (Optional)
description: >
- *ButtonPage02*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity10_name:
- name: Button 10 name - LABEL (Optional)
+ name: Button page 2, Button 2 - LABEL (Optional)
description: >
- *ButtonPage02*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity10_icon:
- name: Button 10 - ICON (Optional)
+ name: Button page 2, Button 2 - ICON (Optional)
description: >
- *ButtonPage02*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity10_icon_color:
- name: Button 10 - ICON COLOR (Optional)
+ name: Button page 2, Button 2 - ICON COLOR (Optional)
description: >
- *ButtonPage02*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity10_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 2, Button 2 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage02*
-
- *Ask for confirmation to execute **Button10** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity11:
- name: Button 11 - ENTITY (Optional)
+ name: Button page 2, Button 3 - ENTITY (Optional)
description: >
- *ButtonPage02*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity11_name:
- name: Button 11 name - LABEL (Optional)
+ name: Button page 2, Button 3 - LABEL (Optional)
description: >
- *ButtonPage02*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity11_icon:
- name: Button 11 - ICON (Optional)
+ name: Button page 2, Button 3 - ICON (Optional)
description: >
- *ButtonPage02*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity11_icon_color:
- name: Button 11 - ICON COLOR (Optional)
+ name: Button page 2, Button 3 - ICON COLOR (Optional)
description: >
- *ButtonPage02*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity11_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 2, Button 3 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage02*
-
- *Ask for confirmation to execute **Button11** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity12:
- name: Button 12 - ENTITY (Optional)
+ name: Button page 2, Button 4 - ENTITY (Optional)
description: >
- *ButtonPage02*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity12_name:
- name: Button 12 name - LABEL (Optional)
+ name: Button page 2, Button 4 - LABEL (Optional)
description: >
- *ButtonPage02*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity12_icon:
- name: Button 12 - ICON (Optional)
+ name: Button page 2, Button 4 - ICON (Optional)
description: >
- *ButtonPage02*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity12_icon_color:
- name: Button 12 - ICON COLOR (Optional)
+ name: Button page 2, Button 4 - ICON COLOR (Optional)
description: >
- *ButtonPage02*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity12_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 2, Button 4 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage02*
-
- *Ask for confirmation to execute **Button12** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity13:
- name: Button 13 - ENTITY (Optional)
+ name: Button page 2, Button 5 - ENTITY (Optional)
description: >
- *ButtonPage02*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity13_name:
- name: Button 13 name - LABEL (Optional)
+ name: Button page 2, Button 5 - LABEL (Optional)
description: >
- *ButtonPage02*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity13_icon:
- name: Button 13 - ICON (Optional)
+ name: Button page 2, Button 5 - ICON (Optional)
description: >
- *ButtonPage02*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity13_icon_color:
- name: Button 13 - ICON COLOR (Optional)
+ name: Button page 2, Button 5 - ICON COLOR (Optional)
description: >
- *ButtonPage02*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity13_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 2, Button 5 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage02*
-
- *Ask for confirmation to execute **Button13** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity14:
- name: Button 14 - ENTITY (Optional)
+ name: Button page 2, Button 6 - ENTITY (Optional)
description: >
- *ButtonPage02*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity14_name:
- name: Button 14 name - LABEL (Optional)
+ name: Button page 2, Button 6 - LABEL (Optional)
description: >
- *ButtonPage02*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity14_icon:
- name: Button 14 - ICON (Optional)
+ name: Button page 2, Button 6 - ICON (Optional)
description: >
- *ButtonPage02*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity14_icon_color:
- name: Button 14 - ICON COLOR (Optional)
+ name: Button page 2, Button 6 - ICON COLOR (Optional)
description: >
- *ButtonPage02*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity14_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 2, Button 6 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage02*
-
- *Ask for confirmation to execute **Button14** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity15:
- name: Button 15 - ENTITY (Optional)
+ name: Button page 2, Button 7 - ENTITY (Optional)
description: >
- *ButtonPage02*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity15_name:
- name: Button 15 name - LABEL (Optional)
+ name: Button page 2, Button 7 - LABEL (Optional)
description: >
- *ButtonPage02*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity15_icon:
- name: Button 15 - ICON (Optional)
+ name: Button page 2, Button 7 - ICON (Optional)
description: >
- *ButtonPage02*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity15_icon_color:
- name: Button 15 - ICON COLOR (Optional)
+ name: Button page 2, Button 7 - ICON COLOR (Optional)
description: >
- *ButtonPage02*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity15_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 2, Button 7 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage02*
-
- *Ask for confirmation to execute **Button15** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity16:
- name: Button 16 - ENTITY (Optional)
+ name: Button page 2, Button 8 - ENTITY (Optional)
description: >
- *ButtonPage02*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity16_name:
- name: Button 16 name - LABEL (Optional)
+ name: Button page 2, Button 8 - LABEL (Optional)
description: >
- *ButtonPage02*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity16_icon:
- name: Button 16 - ICON (Optional)
+ name: Button page 2, Button 8 - ICON (Optional)
description: >
- *ButtonPage02*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity16_icon_color:
- name: Button 16 - ICON COLOR (Optional)
+ name: Button page 2, Button 8 - ICON COLOR (Optional)
description: >
- *ButtonPage02*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity16_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 2, Button 8 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage02*
-
- *Ask for confirmation to execute **Button16** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
##### Button page 03 #####
@@ -2018,356 +1848,274 @@ blueprint:
selector: *placeholder-selector
##### PLACEHOLDER ######################################################################
button_page03_label:
- name: Button page 03 name - LABEL (Optional)
+ name: Button page 03 - LABEL (Optional)
description: >
- *ButtonPage03*
-
*Label which should be displayed*
default: []
selector:
text: {}
entity17:
- name: Button 17 - ENTITY (Optional)
+ name: Button page 3, Button 1 - ENTITY (Optional)
description: >
- *ButtonPage03*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity17_name:
- name: Button 17 name - LABEL (Optional)
+ name: Button page 3, Button 1 - LABEL (Optional)
description: >
- *ButtonPage03*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity17_icon:
- name: Button 17 - ICON (Optional)
+ name: Button page 3, Button 1 - ICON (Optional)
description: >
- *ButtonPage03*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity17_icon_color:
- name: Button 17 - ICON COLOR (Optional)
+ name: Button page 3, Button 1 - ICON COLOR (Optional)
description: >
- *ButtonPage03*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity17_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 3, Button 1 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage03*
-
- *Ask for confirmation to execute **Button17** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity18:
- name: Button 18 - ENTITY (Optional)
+ name: Button page 3, Button 2 - ENTITY (Optional)
description: >
- *ButtonPage03*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity18_name:
- name: Button 18 name - LABEL (Optional)
+ name: Button page 3, Button 2 - LABEL (Optional)
description: >
- *ButtonPage03*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity18_icon:
- name: Button 18 - ICON (Optional)
+ name: Button page 3, Button 2 - ICON (Optional)
description: >
- *ButtonPage03*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity18_icon_color:
- name: Button 18 - ICON COLOR (Optional)
+ name: Button page 3, Button 2 - ICON COLOR (Optional)
description: >
- *ButtonPage03*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity18_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 3, Button 2 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage03*
-
- *Ask for confirmation to execute **Button18** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity19:
- name: Button 19 - ENTITY (Optional)
+ name: Button page 3, Button 3 - ENTITY (Optional)
description: >
- *ButtonPage03*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity19_name:
- name: Button 19 name - LABEL (Optional)
+ name: Button page 3, Button 3 - LABEL (Optional)
description: >
- *ButtonPage03*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity19_icon:
- name: Button 19 - ICON (Optional)
+ name: Button page 3, Button 3 - ICON (Optional)
description: >
- *ButtonPage03*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity19_icon_color:
- name: Button 19 - ICON COLOR (Optional)
+ name: Button page 3, Button 3 - ICON COLOR (Optional)
description: >
- *ButtonPage03*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity19_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 3, Button 3 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage03*
-
- *Ask for confirmation to execute **Button19** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity20:
- name: Button 20 - ENTITY (Optional)
+ name: Button page 3, Button 4 - ENTITY (Optional)
description: >
- *ButtonPage03*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity20_name:
- name: Button 20 name - LABEL (Optional)
+ name: Button page 3, Button 4 - LABEL (Optional)
description: >
- *ButtonPage03*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity20_icon:
- name: Button 20 - ICON (Optional)
+ name: Button page 3, Button 4 - ICON (Optional)
description: >
- *ButtonPage03*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity20_icon_color:
- name: Button 20 - ICON COLOR (Optional)
+ name: Button page 3, Button 4 - ICON COLOR (Optional)
description: >
- *ButtonPage03*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity20_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 3, Button 4 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage03*
-
- *Ask for confirmation to execute **Button20** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity21:
- name: Button 21 - ENTITY (Optional)
+ name: Button page 3, Button 5 - ENTITY (Optional)
description: >
- *ButtonPage03*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity21_name:
- name: Button 21 name - LABEL (Optional)
+ name: Button page 3, Button 5 - LABEL (Optional)
description: >
- *ButtonPage03*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity21_icon:
- name: Button 21 - ICON (Optional)
+ name: Button page 3, Button 5 - ICON (Optional)
description: >
- *ButtonPage03*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity21_icon_color:
- name: Button 21 - ICON COLOR (Optional)
+ name: Button page 3, Button 5 - ICON COLOR (Optional)
description: >
- *ButtonPage03*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity21_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 3, Button 5 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage03*
-
- *Ask for confirmation to execute **Button21** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity22:
- name: Button 22 - ENTITY (Optional)
+ name: Button page 3, Button 6 - ENTITY (Optional)
description: >
- *ButtonPage03*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity22_name:
- name: Button 22 name - LABEL (Optional)
+ name: Button page 3, Button 6 - LABEL (Optional)
description: >
- *ButtonPage03*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity22_icon:
- name: Button 22 - ICON (Optional)
+ name: Button page 3, Button 6 - ICON (Optional)
description: >
- *ButtonPage03*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity22_icon_color:
- name: Button 22 - ICON COLOR (Optional)
+ name: Button page 3, Button 6 - ICON COLOR (Optional)
description: >
- *ButtonPage03*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity22_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 3, Button 6 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage03*
-
- *Ask for confirmation to execute **Button22** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity23:
- name: Button 23 - ENTITY (Optional)
+ name: Button page 3, Button 7 - ENTITY (Optional)
description: >
- *ButtonPage03*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity23_name:
- name: Button 23 name - LABEL (Optional)
+ name: Button page 3, Button 7 - LABEL (Optional)
description: >
- *ButtonPage03*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity23_icon:
- name: Button 23 - ICON (Optional)
+ name: Button page 3, Button 7 - ICON (Optional)
description: >
- *ButtonPage03*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity23_icon_color:
- name: Button 23 - ICON COLOR (Optional)
+ name: Button page 3, Button 7 - ICON COLOR (Optional)
description: >
- *ButtonPage03*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity23_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 3, Button 7 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage03*
-
- *Ask for confirmation to execute **Button23** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity24:
- name: Button 24 - ENTITY (Optional)
+ name: Button page 3, Button 8 - ENTITY (Optional)
description: >
- *ButtonPage03*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity24_name:
- name: Button 24 name - LABEL (Optional)
+ name: Button page 3, Button 8 - LABEL (Optional)
description: >
- *ButtonPage03*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity24_icon:
- name: Button 24 - ICON (Optional)
+ name: Button page 3, Button 8 - ICON (Optional)
description: >
- *ButtonPage03*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity24_icon_color:
- name: Button 24 - ICON COLOR (Optional)
+ name: Button page 3, Button 8 - ICON COLOR (Optional)
description: >
- *ButtonPage03*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity24_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 3, Button 8 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage03*
-
- *Ask for confirmation to execute **Button24** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
##### Button page 04 #####
@@ -2379,356 +2127,274 @@ blueprint:
selector: *placeholder-selector
##### PLACEHOLDER ######################################################################
button_page04_label:
- name: Button page 04 name - LABEL (Optional)
+ name: Button page 04 - LABEL (Optional)
description: >
- *ButtonPage04*
-
*Label which should be displayed*
default: []
selector:
text: {}
entity25:
- name: Button 25 - ENTITY (Optional)
+ name: Button page 4, Button 1 - ENTITY (Optional)
description: >
- *ButtonPage04*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity25_name:
- name: Button 25 name - LABEL (Optional)
+ name: Button page 4, Button 1 - LABEL (Optional)
description: >
- *ButtonPage04*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity25_icon:
- name: Button 25 - ICON (Optional)
+ name: Button page 4, Button 1 - ICON (Optional)
description: >
- *ButtonPage04*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity25_icon_color:
- name: Button 25 - ICON COLOR (Optional)
+ name: Button page 4, Button 1 - ICON COLOR (Optional)
description: >
- *ButtonPage04*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity25_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 4, Button 1 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage04*
-
- *Ask for confirmation to execute **Button25** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity26:
- name: Button 26 - ENTITY (Optional)
+ name: Button page 4, Button 2 - ENTITY (Optional)
description: >
- *ButtonPage04*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity26_name:
- name: Button 26 name - LABEL (Optional)
+ name: Button page 4, Button 2 - LABEL (Optional)
description: >
- *ButtonPage04*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity26_icon:
- name: Button 26 - ICON (Optional)
+ name: Button page 4, Button 2 - ICON (Optional)
description: >
- *ButtonPage04*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity26_icon_color:
- name: Button 26 - ICON COLOR (Optional)
+ name: Button page 4, Button 2 - ICON COLOR (Optional)
description: >
- *ButtonPage04*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity26_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 4, Button 2 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage04*
-
- *Ask for confirmation to execute **Button26** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity27:
- name: Button 27 - ENTITY (Optional)
+ name: Button page 4, Button 3 - ENTITY (Optional)
description: >
- *ButtonPage04*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity27_name:
- name: Button 27 name - LABEL (Optional)
+ name: Button page 4, Button 3 - LABEL (Optional)
description: >
- *ButtonPage04*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity27_icon:
- name: Button 27 - ICON (Optional)
+ name: Button page 4, Button 3 - ICON (Optional)
description: >
- *ButtonPage04*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity27_icon_color:
- name: Button 27 - ICON COLOR (Optional)
+ name: Button page 4, Button 3 - ICON COLOR (Optional)
description: >
- *ButtonPage04*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity27_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 4, Button 3 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage04*
-
- *Ask for confirmation to execute **Button27** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity28:
- name: Button 28 - ENTITY (Optional)
+ name: Button page 4, Button 4 - ENTITY (Optional)
description: >
- *ButtonPage04*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity28_name:
- name: Button 28 name - LABEL (Optional)
+ name: Button page 4, Button 4 - LABEL (Optional)
description: >
- *ButtonPage04*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity28_icon:
- name: Button 28 - ICON (Optional)
+ name: Button page 4, Button 4 - ICON (Optional)
description: >
- *ButtonPage04*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity28_icon_color:
- name: Button 28 - ICON COLOR (Optional)
+ name: Button page 4, Button 4 - ICON COLOR (Optional)
description: >
- *ButtonPage04*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity28_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 4, Button 4 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage04*
-
- *Ask for confirmation to execute **Button28** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity29:
- name: Button 29 - ENTITY (Optional)
+ name: Button page 4, Button 5 - ENTITY (Optional)
description: >
- *ButtonPage04*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity29_name:
- name: Button 29 name - LABEL (Optional)
+ name: Button page 4, Button 5 - LABEL (Optional)
description: >
- *ButtonPage04*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity29_icon:
- name: Button 29 - ICON (Optional)
+ name: Button page 4, Button 5 - ICON (Optional)
description: >
- *ButtonPage04*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity29_icon_color:
- name: Button 29 - ICON COLOR (Optional)
+ name: Button page 4, Button 5 - ICON COLOR (Optional)
description: >
- *ButtonPage04*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity29_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 4, Button 5 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage04*
-
- *Ask for confirmation to execute **Button29** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity30:
- name: Button 30 - ENTITY (Optional)
+ name: Button page 4, Button 6 - ENTITY (Optional)
description: >
- *ButtonPage04*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity30_name:
- name: Button 30 name - LABEL (Optional)
+ name: Button page 4, Button 6 - LABEL (Optional)
description: >
- *ButtonPage04*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity30_icon:
- name: Button 30 - ICON (Optional)
+ name: Button page 4, Button 6 - ICON (Optional)
description: >
- *ButtonPage04*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity30_icon_color:
- name: Button 30 - ICON COLOR (Optional)
+ name: Button page 4, Button 6 - ICON COLOR (Optional)
description: >
- *ButtonPage04*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity30_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 4, Button 6 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage04*
-
- *Ask for confirmation to execute **Button30** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity31:
- name: Button 31 - ENTITY (Optional)
+ name: Button page 4, Button 7 - ENTITY (Optional)
description: >
- *ButtonPage04*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity31_name:
- name: Button 31 name - LABEL (Optional)
+ name: Button page 4, Button 7 - LABEL (Optional)
description: >
- *ButtonPage04*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity31_icon:
- name: Button 31 - ICON (Optional)
+ name: Button page 4, Button 7 - ICON (Optional)
description: >
- *ButtonPage04*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity31_icon_color:
- name: Button 31 - ICON COLOR (Optional)
+ name: Button page 4, Button 7 - ICON COLOR (Optional)
description: >
- *ButtonPage04*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity31_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 4, Button 7 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage04*
-
- *Ask for confirmation to execute **Button31** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
entity32:
- name: Button 32 - ENTITY (Optional)
+ name: Button page 4, Button 8 - ENTITY (Optional)
description: >
- *ButtonPage04*
-
*Entity which should be switched*
default: []
selector: *button-entity-selector
entity32_name:
- name: Button 32 name - LABEL (Optional)
+ name: Button page 4, Button 8 - LABEL (Optional)
description: >
- *ButtonPage04*
-
*Label which should be displayed (10 characters are supported)*
default: []
selector:
text: {}
entity32_icon:
- name: Button 32 - ICON (Optional)
+ name: Button page 4, Button 8 - ICON (Optional)
description: >
- *ButtonPage04*
-
*Icon which should be displayed
(Default - an icon matching the entity will be set automatically)*
default: []
selector: *icon-selector
entity32_icon_color:
- name: Button 32 - ICON COLOR (Optional)
+ name: Button page 4, Button 8 - ICON COLOR (Optional)
description: >
- *ButtonPage04*
-
*Icon color which should be displayed when button is on*
default: [0, 128, 248] # 1055 Blue
selector: *color_selector
entity32_confirm:
- name: Confirm execution of the button press - TRUE/FALSE (Optional)
+ name: Button page 4, Button 8 - Confirm execution of the button press (Optional)
default: false
description: >
- *ButtonPage04*
-
- *Ask for confirmation to execute **Button32** action*
+ *Ask for confirmation to execute action*
selector:
boolean:
@@ -2791,228 +2457,146 @@ blueprint:
selector: *placeholder-selector
##### PLACEHOLDER ######################################################################
entity_page01_label:
- name: Entity page 01 name - LABEL (Optional)
+ name: Entity page 01 - LABEL (Optional)
description: >
- *EntityPage01*
-
*Label which should be displayed*
default: []
selector:
text: {}
entities_entity01:
- name: Entity 01 - ENTITY (Optional)
- description: >
- *EntityPage01*
-
- *Entity which should be displayed*
+ name: Entity page 1, Row 1 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity01_name:
- name: Entity 01 name - LABEL (Optional)
- description: >
- *EntityPage01*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 1, Row 1 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity01_icon:
- name: Entity 01 - ICON (Optional)
- description: >
- *EntityPage01*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 1, Row 1 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity02:
- name: Entity 02 - ENTITY (Optional)
- description: >
- *EntityPage01*
-
- *Entity which should be displayed*
+ name: Entity page 1, Row 2 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity02_name:
- name: Entity 02 name - LABEL (Optional)
- description: >
- *EntityPage01*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 1, Row 2 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity02_icon:
- name: Entity 02 - ICON (Optional)
- description: >
- *EntityPage01*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 1, Row 2 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity03:
- name: Entity 03 - ENTITY (Optional)
- description: >
- *EntityPage01*
-
- *Entity which should be displayed*
+ name: Entity page 1, Row 3 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity03_name:
- name: Entity 03 name - LABEL (Optional)
- description: >
- *EntityPage01*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 1, Row 3 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity03_icon:
- name: Entity 03 - ICON (Optional)
- description: >
- *EntityPage01*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 1, Row 3 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity04:
- name: Entity 04 - ENTITY (Optional)
- description: >
- *EntityPage01*
-
- *Entity which should be displayed*
+ name: Entity page 1, Row 4 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity04_name:
- name: Entity 04 name - LABEL (Optional)
- description: >
- *EntityPage01*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 1, Row 4 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity04_icon:
- name: Entity 04 - ICON (Optional)
- description: >
- *EntityPage01*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 1, Row 4 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity05:
- name: Entity 05 - ENTITY (Optional)
- description: >
- *EntityPage01*
-
- *Entity which should be displayed*
+ name: Entity page 1, Row 5 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity05_name:
- name: Entity 05 name - LABEL (Optional)
- description: >
- *EntityPage01*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 1, Row 5 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity05_icon:
- name: Entity 05 - ICON (Optional)
- description: >
- *EntityPage01*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 1, Row 5 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity06:
- name: Entity 06 - ENTITY (Optional)
- description: >
- *EntityPage01*
-
- *Entity which should be displayed*
+ name: Entity page 1, Row 6 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity06_name:
- name: Entity 06 name - LABEL (Optional)
- description: >
- *EntityPage01*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 1, Row 6 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity06_icon:
- name: Entity 06 - ICON (Optional)
- description: >
- *EntityPage01*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 1, Row 6 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity07:
- name: Entity 07 - ENTITY (Optional)
- description: >
- *EntityPage01*
-
- *Entity which should be displayed*
+ name: Entity page 1, Row 7 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity07_name:
- name: Entity 07 name - LABEL (Optional)
- description: >
- *EntityPage01*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 1, Row 7 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity07_icon:
- name: Entity 07 - ICON (Optional)
- description: >
- *EntityPage01*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 1, Row 7 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity08:
- name: Entity 08 - ENTITY (Optional)
- description: >
- *EntityPage01*
-
- *Entity which should be displayed*
+ name: Entity page 1, Row 8 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity08_name:
- name: Entity 08 name - LABEL (Optional)
- description: >
- *EntityPage01*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 1, Row 8 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity08_icon:
- name: Entity 08 - ICON (Optional)
- description: >
- *EntityPage01*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 1, Row 8 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
##### Entity page 02 - Entities #####
@@ -3024,228 +2608,146 @@ blueprint:
selector: *placeholder-selector
##### PLACEHOLDER ######################################################################
entity_page02_label:
- name: Entity page 02 name - LABEL (Optional)
+ name: Entity page 02 - LABEL (Optional)
description: >
- *EntityPage02*
-
*Label which should be displayed*
default: []
selector:
text: {}
entities_entity09:
- name: Entity 09 - ENTITY (Optional)
- description: >
- *EntityPage02*
-
- *Entity which should be displayed*
+ name: Entity page 2, Row 1 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity09_name:
- name: Entity 09 name - LABEL (Optional)
- description: >
- *EntityPage02*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 2, Row 1 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity09_icon:
- name: Entity 09 - ICON (Optional)
- description: >
- *EntityPage02*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 2, Row 1 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity10:
- name: Entity 10 - ENTITY (Optional)
- description: >
- *EntityPage02*
-
- *Entity which should be displayed*
+ name: Entity page 2, Row 2 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity10_name:
- name: Entity 10 name - LABEL (Optional)
- description: >
- *EntityPage02*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 2, Row 2 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity10_icon:
- name: Entity 10 - ICON (Optional)
- description: >
- *EntityPage02*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 2, Row 2 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity11:
- name: Entity 11 - ENTITY (Optional)
- description: >
- *EntityPage02*
-
- *Entity which should be displayed*
+ name: Entity page 2, Row 3 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity11_name:
- name: Entity 11 name - LABEL (Optional)
- description: >
- *EntityPage02*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 2, Row 3 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity11_icon:
- name: Entity 11 - ICON (Optional)
- description: >
- *EntityPage02*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 2, Row 3 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity12:
- name: Entity 12 - ENTITY (Optional)
- description: >
- *EntityPage02*
-
- *Entity which should be displayed*
+ name: Entity page 2, Row 4 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity12_name:
- name: Entity 12 name - LABEL (Optional)
- description: >
- *EntityPage02*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 2, Row 4 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity12_icon:
- name: Entity 12 - ICON (Optional)
- description: >
- *EntityPage02*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 2, Row 4 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity13:
- name: Entity 13 - ENTITY (Optional)
- description: >
- *EntityPage02*
-
- *Entity which should be displayed*
+ name: Entity page 2, Row 5 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity13_name:
- name: Entity 13 name - LABEL (Optional)
- description: >
- *EntityPage02*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 2, Row 5 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity13_icon:
- name: Entity 13 - ICON (Optional)
- description: >
- *EntityPage02*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 2, Row 5 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity14:
- name: Entity 14 - ENTITY (Optional)
- description: >
- *EntityPage02*
-
- *Entity which should be displayed*
+ name: Entity page 2, Row 6 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity14_name:
- name: Entity 14 name - LABEL (Optional)
- description: >
- *EntityPage02*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 2, Row 6 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity14_icon:
- name: Entity 14 - ICON (Optional)
- description: >
- *EntityPage02*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 2, Row 6 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity15:
- name: Entity 15 - ENTITY (Optional)
- description: >
- *EntityPage02*
-
- *Entity which should be displayed*
+ name: Entity page 2, Row 7 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity15_name:
- name: Entity 15 name - LABEL (Optional)
- description: >
- *EntityPage02*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 2, Row 7 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity15_icon:
- name: Entity 15 - ICON (Optional)
- description: >
- *EntityPage02*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 2, Row 7 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity16:
- name: Entity 16 - ENTITY (Optional)
- description: >
- *EntityPage02*
-
- *Entity which should be displayed*
+ name: Entity page 2, Row 8 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity16_name:
- name: Entity 16 name - LABEL (Optional)
- description: >
- *EntityPage02*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 2, Row 8 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity16_icon:
- name: Entity 16 - ICON (Optional)
- description: >
- *EntityPage02*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 2, Row 8 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
##### Entity page 03 - Entities #####
@@ -3257,228 +2759,146 @@ blueprint:
selector: *placeholder-selector
##### PLACEHOLDER ######################################################################
entity_page03_label:
- name: Entity page 03 name - LABEL (Optional)
+ name: Entity page 03 - LABEL (Optional)
description: >
- *EntityPage03*
-
*Label which should be displayed*
default: []
selector:
text: {}
entities_entity17:
- name: Entity 17 - ENTITY (Optional)
- description: >
- *EntityPage03*
-
- *Entity which should be displayed*
+ name: Entity page 3, Row 1 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity17_name:
- name: Entity 17 name - LABEL (Optional)
- description: >
- *EntityPage03*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 3, Row 1 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity17_icon:
- name: Entity 17 - ICON (Optional)
- description: >
- *EntityPage03*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 3, Row 1 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity18:
- name: Entity 18 - ENTITY (Optional)
- description: >
- *EntityPage03*
-
- *Entity which should be displayed*
+ name: Entity page 3, Row 2 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity18_name:
- name: Entity 18 name - LABEL (Optional)
- description: >
- *EntityPage03*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 3, Row 2 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity18_icon:
- name: Entity 18 - ICON (Optional)
- description: >
- *EntityPage03*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 3, Row 2 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity19:
- name: Entity 19 - ENTITY (Optional)
- description: >
- *EntityPage03*
-
- *Entity which should be displayed*
+ name: Entity page 3, Row 3 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity19_name:
- name: Entity 19 name - LABEL (Optional)
- description: >
- *EntityPage03*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 3, Row 3 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity19_icon:
- name: Entity 19 - ICON (Optional)
- description: >
- *EntityPage03*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 3, Row 3 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity20:
- name: Entity 20 - ENTITY (Optional)
- description: >
- *EntityPage03*
-
- *Entity which should be displayed*
+ name: Entity page 3, Row 4 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity20_name:
- name: Entity 20 name - LABEL (Optional)
- description: >
- *EntityPage03*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 3, Row 4 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity20_icon:
- name: Entity 20 - ICON (Optional)
- description: >
- *EntityPage03*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 3, Row 4 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity21:
- name: Entity 21 - ENTITY (Optional)
- description: >
- *EntityPage03*
-
- *Entity which should be displayed*
+ name: Entity page 3, Row 5 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity21_name:
- name: Entity 21 name - LABEL (Optional)
- description: >
- *EntityPage03*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 3, Row 5 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity21_icon:
- name: Entity 21 - ICON (Optional)
- description: >
- *EntityPage03*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 3, Row 5 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity22:
- name: Entity 22 - ENTITY (Optional)
- description: >
- *EntityPage03*
-
- *Entity which should be displayed*
+ name: Entity page 3, Row 6 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity22_name:
- name: Entity 22 name - LABEL (Optional)
- description: >
- *EntityPage03*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 3, Row 6 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity22_icon:
- name: Entity 22 - ICON (Optional)
- description: >
- *EntityPage03*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 3, Row 6 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity23:
- name: Entity 23 - ENTITY (Optional)
- description: >
- *EntityPage03*
-
- *Entity which should be displayed*
+ name: Entity page 3, Row 7 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity23_name:
- name: Entity 23 name - LABEL (Optional)
- description: >
- *EntityPage03*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 3, Row 7 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity23_icon:
- name: Entity 23 - ICON (Optional)
- description: >
- *EntityPage03*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 3, Row 7 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity24:
- name: Entity 24 - ENTITY (Optional)
- description: >
- *EntityPage03*
-
- *Entity which should be displayed*
+ name: Entity page 3, Row 8 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity24_name:
- name: Entity 24 name - LABEL (Optional)
- description: >
- *EntityPage03*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 3, Row 8 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity24_icon:
- name: Entity 24 - ICON (Optional)
- description: >
- *EntityPage03*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 3, Row 8 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
##### Entity page 04 - Entities #####
@@ -3490,228 +2910,146 @@ blueprint:
selector: *placeholder-selector
##### PLACEHOLDER ######################################################################
entity_page04_label:
- name: Entity page 04 name - LABEL (Optional)
+ name: Entity page 04 - LABEL (Optional)
description: >
- *EntityPage04*
-
*Label which should be displayed*
default: []
selector:
text: {}
entities_entity25:
- name: Entity 25 - ENTITY (Optional)
- description: >
- *EntityPage04*
-
- *Entity which should be displayed*
+ name: Entity page 4, Row 1 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity25_name:
- name: Entity 25 name - LABEL (Optional)
- description: >
- *EntityPage04*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 4, Row 1 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity25_icon:
- name: Entity 25 - ICON (Optional)
- description: >
- *EntityPage04*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 4, Row 1 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity26:
- name: Entity 26 - ENTITY (Optional)
- description: >
- *EntityPage04*
-
- *Entity which should be displayed*
+ name: Entity page 4, Row 2 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity26_name:
- name: Entity 26 name - LABEL (Optional)
- description: >
- *EntityPage04*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 4, Row 2 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity26_icon:
- name: Entity 26 - ICON (Optional)
- description: >
- *EntityPage04*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 4, Row 2 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity27:
- name: Entity 27 - ENTITY (Optional)
- description: >
- *EntityPage04*
-
- *Entity which should be displayed*
+ name: Entity page 4, Row 3 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity27_name:
- name: Entity 27 name - LABEL (Optional)
- description: >
- *EntityPage04*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 4, Row 3 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity27_icon:
- name: Entity 27 - ICON (Optional)
- description: >
- *EntityPage04*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 4, Row 3 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity28:
- name: Entity 28 - ENTITY (Optional)
- description: >
- *EntityPage04*
-
- *Entity which should be displayed*
+ name: Entity page 4, Row 4 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity28_name:
- name: Entity 28 name - LABEL (Optional)
- description: >
- *EntityPage04*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 4, Row 4 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity28_icon:
- name: Entity 28 - ICON (Optional)
- description: >
- *EntityPage04*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 4, Row 4 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity29:
- name: Entity 29 - ENTITY (Optional)
- description: >
- *EntityPage04*
-
- *Entity which should be displayed*
+ name: Entity page 4, Row 5 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity29_name:
- name: Entity 29 name - LABEL (Optional)
- description: >
- *EntityPage04*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 4, Row 5 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity29_icon:
- name: Entity 29 - ICON (Optional)
- description: >
- *EntityPage04*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 4, Row 5 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity30:
- name: Entity 30 - ENTITY (Optional)
- description: >
- *EntityPage04*
-
- *Entity which should be displayed*
+ name: Entity page 4, Row 6 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity30_name:
- name: Entity 30 name - LABEL (Optional)
- description: >
- *EntityPage04*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 4, Row 6 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity30_icon:
- name: Entity 30 - ICON (Optional)
- description: >
- *EntityPage04*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 4, Row 6 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity31:
- name: Entity 31 - ENTITY (Optional)
- description: >
- *EntityPage04*
-
- *Entity which should be displayed*
+ name: Entity page 4, Row 7 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity31_name:
- name: Entity 31 name - LABEL (Optional)
- description: >
- *EntityPage04*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 4, Row 7 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity31_icon:
- name: Entity 31 - ICON (Optional)
- description: >
- *EntityPage04*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 4, Row 7 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
entities_entity32:
- name: Entity 32 - ENTITY (Optional)
- description: >
- *EntityPage04*
-
- *Entity which should be displayed*
+ name: Entity page 4, Row 8 - ENTITY (Optional)
+ description: '*Entity which should be displayed*'
default: []
selector:
entity:
entities_entity32_name:
- name: Entity 32 name - LABEL (Optional)
- description: >
- *EntityPage04*
-
- *Label which should be displayed (replaces the **"friendly_name"** of the entity)*
+ name: Entity page 4, Row 8 - LABEL (Optional)
+ description: '*Label Display Name (Replaces the "**friendly_name**" Attribute of the Entity).*'
default: []
selector:
text: {}
entities_entity32_icon:
- name: Entity 32 - ICON (Optional)
- description: >
- *EntityPage04*
-
- *Icon which should be displayed
- (if not set, it would be used an icon from attributes, if available, or no icon is shown)*
+ name: Entity page 4, Row 8 - ICON (Optional)
+ description: '***Icon Display:** If not specified, an attribute-defined icon will be used, if available. Otherwise, no icon will be shown.*'
default: []
selector: *icon-selector
@@ -3784,20 +3122,20 @@ blueprint:
selector: *color_selector
##### Time label ######
time_label_color:
- name: Time - LABEL COLOR (Optional)
+ name: Time - Text Color (Optional)
description: >
*HOME page*
- *Label color which should be displayed (default color is set)*
+ *Choose a color for the time's display text.*
default: [255, 255, 255] # 65535 White
selector: *color_selector
##### Date label ######
date_label_color:
- name: Date - LABEL COLOR (Optional)
+ name: Date - Text Color (Optional)
description: >
*HOME page*
- *Label color which should be displayed (default color is set)*
+ *Choose a color for the date's display text.*
default: [255, 255, 255] # 65535 White
selector: *color_selector
##### Screensaver #####
@@ -3873,19 +3211,6 @@ blueprint:
default: []
selector:
text: {}
- ##### Show while loading #####
- show_while_loading:
- name: Show pages while loading?
- description: >
- *SYSTEM settings*
-
- *When this is enable, the pages will be shown earlier, but some information might not be visible from the begining and will be shown when available.*
- *When disabled (default), the pages will be shown when all the data is loaded and ready to be displayed.*
-
- **This may be useful when your pages takes too long to load and can help you identifying the elements slowing down the page construction.**
- default: false
- selector:
- boolean:
##### Media player update #####
media_player_update_interval:
name: Media player - Update interval
@@ -3927,6 +3252,26 @@ blueprint:
value: "toggle"
- label: "Trigger"
value: "trigger"
+ ##### Wake-up sensors #####
+ wake_up_sensors:
+ name: Wake-up sensors
+ description: >
+ *SYSTEM settings*
+
+ *Select a sensors to wake-up the panel when the sensor turns **ON**.*
+
+ default: []
+ selector:
+ entity:
+ multiple: true
+ filter:
+ domain:
+ - binary_sensor
+ device_class:
+ - motion
+ - occupancy
+ - door
+
# yamllint enable rule:indentation rule:comments-indentation
#############################################################
##### CLOSE - INPUT #####
@@ -3946,31 +3291,89 @@ trigger_variables:
nspanel_deviceid: !input 'nspanel_name'
nspanel_entities: '{{ device_entities(nspanel_deviceid) }}'
nspanel_name: >
- {% if nspanel_entities | count > 0 %}{{ (nspanel_entities | selectattr(None, "search", "_nextion_display") | list | first).split(".")[1].split("_nextion_display")[0] }}
- {% elif nspanel_deviceid is string %}{{ nspanel_deviceid | replace("-","_") | replace(" ","_") | replace("___","_") | replace("__","_") }}
- {% endif %}
- left_button: 'binary_sensor.{{ nspanel_name }}_left_button'
- right_button: 'binary_sensor.{{ nspanel_name }}_right_button'
- nextion_inited: 'binary_sensor.{{ nspanel_name }}_nextion_display'
- currentpage: 'sensor.{{ nspanel_name }}_current_page'
- relay01_entity: 'switch.{{ nspanel_name }}_relay_1'
- relay02_entity: 'switch.{{ nspanel_name }}_relay_2'
- nspaneltemp: 'sensor.{{ nspanel_name }}_temperature'
- thermostat_embedded: 'climate.{{ nspanel_name }}_thermostat'
- detailed_entity: 'sensor.{{ nspanel_name }}_detailed_entity'
- notification_unread: 'switch.{{ nspanel_name }}_notification_unread'
+ {%- if nspanel_entities | count > 0 %}
+ {{ (nspanel_entities | selectattr(None, "search", "_nextion_display") | list | first).split(".")[1].split("_nextion_display")[0] }}
+ {%- elif nspanel_deviceid is string %}
+ {{ nspanel_deviceid | regex_replace("[^a-zA-Z0-9]", "_") | regex_replace("_+", "_") | lower }}
+ {%- endif %}
+
+ left_button: >
+ {{
+ nspanel_entities | selectattr(None, "search", "binary_sensor.*_left_button") | list | last
+ if nspanel_entities | selectattr(None, "search", "binary_sensor.*_left_button") | list | count > 0
+ else ("binary_sensor." ~ nspanel_name ~ "_left_button")
+ }}
+ right_button: >
+ {{
+ nspanel_entities | selectattr(None, "search", "binary_sensor.*_right_button") | list | last
+ if nspanel_entities | selectattr(None, "search", "binary_sensor.*_right_button") | list | count > 0
+ else ("binary_sensor." ~ nspanel_name ~ "_right_button")
+ }}
+
+ relay01_entity: >
+ {{
+ nspanel_entities | selectattr(None, "search", "switch.*_relay_1") | list | last
+ if nspanel_entities | selectattr(None, "search", "switch.*_relay_1") | list | count > 0
+ else ("switch." ~ nspanel_name ~ "_relay_1")
+ }}
+ relay02_entity: >
+ {{
+ nspanel_entities | selectattr(None, "search", "switch.*_relay_2") | list | last
+ if nspanel_entities | selectattr(None, "search", "switch.*_relay_2") | list | count > 0
+ else ("switch." ~ nspanel_name ~ "_relay_2")
+ }}
+
+ blueprint_entity: >
+ {{
+ nspanel_entities | selectattr(None, "search", "binary_sensor.*_blueprint") | list | last
+ if nspanel_entities | selectattr(None, "search", "binary_sensor.*_blueprint") | list | count > 0
+ else ("binary_sensor." ~ nspanel_name ~ "_blueprint")
+ }}
+ currentpage: >
+ {{
+ nspanel_entities | selectattr(None, "search", "sensor.*_current_page") | list | last
+ if nspanel_entities | selectattr(None, "search", "sensor.*_current_page") | list | count > 0
+ else ("sensor." ~ nspanel_name ~ "_current_page")
+ }}
+ detailed_entity: >
+ {{
+ nspanel_entities | selectattr(None, "search", "sensor.*_detailed_entity") | list | last
+ if nspanel_entities | selectattr(None, "search", "sensor.*_detailed_entity") | list | count > 0
+ else ("sensor." ~ nspanel_name ~ "_detailed_entity")
+ }}
+ nextion_inited: >
+ {{
+ nspanel_entities | selectattr(None, "search", "binary_sensor.*_nextion_display") | list | last
+ if nspanel_entities | selectattr(None, "search", "binary_sensor.*_nextion_display") | list | count > 0
+ else ("binary_sensor." ~ nspanel_name ~ "_nextion_display")
+ }}
+
+ nspaneltemp: >
+ {{
+ nspanel_entities | selectattr(None, "search", "sensor.*_temperature") | list | last
+ if nspanel_entities | selectattr(None, "search", "sensor.*_temperature") | list | count > 0
+ else ("sensor." ~ nspanel_name ~ "_temperature")
+ }}
+ notification_unread: >
+ {{
+ nspanel_entities | selectattr(None, "search", "switch.*_notification_unread") | list | last
+ if nspanel_entities | selectattr(None, "search", "switch.*_notification_unread") | list | count > 0
+ else ("switch." ~ nspanel_name ~ "_notification_unread")
+ }}
+
+ thermostat_embedded: >
+ {{
+ nspanel_entities | selectattr(None, "search", "climate.*_thermostat") | list | last
+ if nspanel_entities | selectattr(None, "search", "climate.*_thermostat") | list | count > 0
+ else ("climate." ~ nspanel_name ~ "_thermostat")
+ }}
variables:
##### GENERAL #####
- blueprint_version: '4.2.4'
+ blueprint_version: '4.2.5'
date_format_temp: !input 'date_format'
# Avoid breaking change for existing users with legacy type format
- date_format: >
- {{
- date_format_temp
- if date_format_temp not in ["%d.%m", "%d/%m", "%-d/%-m", "%-m/%-d"]
- else "%A, " ~ date_format_temp
- }}
+ date_format: '{{ date_format_temp if date_format_temp not in ["%d.%m", "%d/%m", "%-d/%-m", "%-m/%-d"] else "%A, " ~ date_format_temp }}'
sun_is_up: '{{ is_state("sun.sun", "above_horizon") }}'
@@ -3983,6 +3386,8 @@ variables:
all_icons: { blank: "\uFFFF", unknown: "\uE027", unavailable: "\uE027", ab-testing: "\uE1C8", abacus: "\uF6DF", abjad-arabic: "\uF327", abjad-hebrew: "\uF328", abugida-devanagari: "\uF329", abugida-thai: "\uF32A", access-point: "\uE002", access-point-check: "\uF537", access-point-minus: "\uF538", access-point-network: "\uE001", access-point-network-off: "\uEBE0", access-point-off: "\uF510", access-point-plus: "\uF539", access-point-remove: "\uF53A", account: "\uE003", account-alert: "\uE004", account-alert-outline: "\uEB4F", account-arrow-down: "\uF867", account-arrow-down-outline: "\uF868", account-arrow-left: "\uEB50", account-arrow-left-outline: "\uEB51", account-arrow-right: "\uEB52", account-arrow-right-outline: "\uEB53", account-arrow-up: "\uF866", account-arrow-up-outline: "\uF869", account-box: "\uE005", account-box-multiple: "\uE933", account-box-multiple-outline: "\uF009", account-box-outline: "\uE006", account-cancel: "\uF2DE", account-cancel-outline: "\uF2DF", account-cash: "\uF096", account-cash-outline: "\uF097", account-check: "\uE007", account-check-outline: "\uEBE1", account-child: "\uEA88", account-child-circle: "\uEA89", account-child-outline: "\uF0C7", account-circle: "\uE008", account-circle-outline: "\uEB54", account-clock: "\uEB55", account-clock-outline: "\uEB56", account-cog: "\uF36F", account-cog-outline: "\uF370", account-convert: "\uE009", account-convert-outline: "\uF300", account-cowboy-hat: "\uEE9A", account-cowboy-hat-outline: "\uF7F2", account-details: "\uE630", account-details-outline: "\uF371", account-edit: "\uE6BB", account-edit-outline: "\uEFFA", account-eye: "\uE41F", account-eye-outline: "\uF27A", account-filter: "\uE935", account-filter-outline: "\uEF9C", account-group: "\uE848", account-group-outline: "\uEB57", account-hard-hat: "\uE5B4", account-hard-hat-outline: "\uFA1E", account-heart: "\uE898", account-heart-outline: "\uEBE2", account-injury: "\uF814", account-injury-outline: "\uF815", account-key: "\uE00A", account-key-outline: "\uEBE3", account-lock: "\uF15D", account-lock-open: "\uF95F", account-lock-open-outline: "\uF960", account-lock-outline: "\uF15E", account-minus: "\uE00C", account-minus-outline: "\uEAEB", account-multiple: "\uE00D", account-multiple-check: "\uE8C4", account-multiple-check-outline: "\uF1FD", account-multiple-minus: "\uE5D2", account-multiple-minus-outline: "\uEBE4", account-multiple-outline: "\uE00E", account-multiple-plus: "\uE00F", account-multiple-plus-outline: "\uE7FF", account-multiple-remove: "\uF209", account-multiple-remove-outline: "\uF20A", account-music: "\uE802", account-music-outline: "\uECE8", account-network: "\uE010", account-network-outline: "\uEBE5", account-off: "\uE011", account-off-outline: "\uEBE6", account-outline: "\uE012", account-plus: "\uE013", account-plus-outline: "\uE800", account-question: "\uEB58", account-question-outline: "\uEB59", account-reactivate: "\uF52A", account-reactivate-outline: "\uF52B", account-remove: "\uE014", account-remove-outline: "\uEAEC", account-school: "\uFA1F", account-school-outline: "\uFA20", account-search: "\uE015", account-search-outline: "\uE934", account-settings: "\uE62F", account-settings-outline: "\uF0C8", account-star: "\uE016", account-star-outline: "\uEBE7", account-supervisor: "\uEA8A", account-supervisor-circle: "\uEA8B", account-supervisor-circle-outline: "\uF4EB", account-supervisor-outline: "\uF12C", account-switch: "\uE018", account-switch-outline: "\uE4CA", account-sync: "\uF91A", account-sync-outline: "\uF91B", account-tie: "\uECE2", account-tie-hat: "\uF897", account-tie-hat-outline: "\uF898", account-tie-outline: "\uF0C9", account-tie-voice: "\uF307", account-tie-voice-off: "\uF309", account-tie-voice-off-outline: "\uF30A", account-tie-voice-outline: "\uF308", account-tie-woman: "\uFA8B", account-voice: "\uE5CA", account-voice-off: "\uEED3", account-wrench: "\uF899", account-wrench-outline: "\uF89A", adjust: "\uE019", advertisements: "\uF929", advertisements-off: "\uF92A", air-conditioner: "\uE01A", air-filter: "\uED42", air-horn: "\uEDAB", air-humidifier: "\uF098", air-humidifier-off: "\uF465", air-purifier: "\uED43", airbag: "\uEBE8", airballoon: "\uE01B", airballoon-outline: "\uF00A", airplane: "\uE01C", airplane-alert: "\uF879", airplane-check: "\uF87A", airplane-clock: "\uF87B", airplane-cog: "\uF87C", airplane-edit: "\uF87D", airplane-landing: "\uE5D3", airplane-marker: "\uF87E", airplane-minus: "\uF87F", airplane-off: "\uE01D", airplane-plus: "\uF880", airplane-remove: "\uF881", airplane-search: "\uF882", airplane-settings: "\uF883", airplane-takeoff: "\uE5D4", airport: "\uE84A", alarm: "\uE01F", alarm-bell: "\uE78D", alarm-check: "\uE020", alarm-light: "\uE78E", alarm-light-off: "\uF71D", alarm-light-off-outline: "\uF71E", alarm-light-outline: "\uEBE9", alarm-multiple: "\uE021", alarm-note: "\uEE70", alarm-note-off: "\uEE71", alarm-off: "\uE022", alarm-panel: "\uF5C3", alarm-panel-outline: "\uF5C4", alarm-plus: "\uE023", alarm-snooze: "\uE68D", album: "\uE024", alert: "\uE025", alert-box: "\uE026", alert-box-outline: "\uECE3", alert-circle: "\uE027", alert-circle-check: "\uF1EC", alert-circle-check-outline: "\uF1ED", alert-circle-outline: "\uE5D5", alert-decagram: "\uE6BC", alert-decagram-outline: "\uECE4", alert-minus: "\uF4BA", alert-minus-outline: "\uF4BD", alert-octagon: "\uE028", alert-octagon-outline: "\uECE5", alert-octagram: "\uE766", alert-octagram-outline: "\uECE6", alert-outline: "\uE029", alert-plus: "\uF4B9", alert-plus-outline: "\uF4BC", alert-remove: "\uF4BB", alert-remove-outline: "\uF4BE", alert-rhombus: "\uF1CD", alert-rhombus-outline: "\uF1CE", alien: "\uE899", alien-outline: "\uF0CA", align-horizontal-center: "\uF1C2", align-horizontal-distribute: "\uF961", align-horizontal-left: "\uF1C1", align-horizontal-right: "\uF1C3", align-vertical-bottom: "\uF1C4", align-vertical-center: "\uF1C5", align-vertical-distribute: "\uF962", align-vertical-top: "\uF1C6", all-inclusive: "\uE6BD", all-inclusive-box: "\uF88C", all-inclusive-box-outline: "\uF88D", allergy: "\uF257", alpha: "\uE02A", alpha-a: "\uEAED", alpha-a-box: "\uEB07", alpha-a-box-outline: "\uEBEA", alpha-a-circle: "\uEBEB", alpha-a-circle-outline: "\uEBEC", alpha-b: "\uEAEE", alpha-b-box: "\uEB08", alpha-b-box-outline: "\uEBED", alpha-b-circle: "\uEBEE", alpha-b-circle-outline: "\uEBEF", alpha-c: "\uEAEF", alpha-c-box: "\uEB09", alpha-c-box-outline: "\uEBF0", alpha-c-circle: "\uEBF1", alpha-c-circle-outline: "\uEBF2", alpha-d: "\uEAF0", alpha-d-box: "\uEB0A", alpha-d-box-outline: "\uEBF3", alpha-d-circle: "\uEBF4", alpha-d-circle-outline: "\uEBF5", alpha-e: "\uEAF1", alpha-e-box: "\uEB0B", alpha-e-box-outline: "\uEBF6", alpha-e-circle: "\uEBF7", alpha-e-circle-outline: "\uEBF8", alpha-f: "\uEAF2", alpha-f-box: "\uEB0C", alpha-f-box-outline: "\uEBF9", alpha-f-circle: "\uEBFA", alpha-f-circle-outline: "\uEBFB", alpha-g: "\uEAF3", alpha-g-box: "\uEB0D", alpha-g-box-outline: "\uEBFC", alpha-g-circle: "\uEBFD", alpha-g-circle-outline: "\uEBFE", alpha-h: "\uEAF4", alpha-h-box: "\uEB0E", alpha-h-box-outline: "\uEBFF", alpha-h-circle: "\uEC00", alpha-h-circle-outline: "\uEC01", alpha-i: "\uEAF5", alpha-i-box: "\uEB0F", alpha-i-box-outline: "\uEC02", alpha-i-circle: "\uEC03", alpha-i-circle-outline: "\uEC04", alpha-j: "\uEAF6", alpha-j-box: "\uEB10", alpha-j-box-outline: "\uEC05", alpha-j-circle: "\uEC06", alpha-j-circle-outline: "\uEC07", alpha-k: "\uEAF7", alpha-k-box: "\uEB11", alpha-k-box-outline: "\uEC08", alpha-k-circle: "\uEC09", alpha-k-circle-outline: "\uEC0A", alpha-l: "\uEAF8", alpha-l-box: "\uEB12", alpha-l-box-outline: "\uEC0B", alpha-l-circle: "\uEC0C", alpha-l-circle-outline: "\uEC0D", alpha-m: "\uEAF9", alpha-m-box: "\uEB13", alpha-m-box-outline: "\uEC0E", alpha-m-circle: "\uEC0F", alpha-m-circle-outline: "\uEC10", alpha-n: "\uEAFA", alpha-n-box: "\uEB14", alpha-n-box-outline: "\uEC11", alpha-n-circle: "\uEC12", alpha-n-circle-outline: "\uEC13", alpha-o: "\uEAFB", alpha-o-box: "\uEB15", alpha-o-box-outline: "\uEC14", alpha-o-circle: "\uEC15", alpha-o-circle-outline: "\uEC16", alpha-p: "\uEAFC", alpha-p-box: "\uEB16", alpha-p-box-outline: "\uEC17", alpha-p-circle: "\uEC18", alpha-p-circle-outline: "\uEC19", alpha-q: "\uEAFD", alpha-q-box: "\uEB17", alpha-q-box-outline: "\uEC1A", alpha-q-circle: "\uEC1B", alpha-q-circle-outline: "\uEC1C", alpha-r: "\uEAFE", alpha-r-box: "\uEB18", alpha-r-box-outline: "\uEC1D", alpha-r-circle: "\uEC1E", alpha-r-circle-outline: "\uEC1F", alpha-s: "\uEAFF", alpha-s-box: "\uEB19", alpha-s-box-outline: "\uEC20", alpha-s-circle: "\uEC21", alpha-s-circle-outline: "\uEC22", alpha-t: "\uEB00", alpha-t-box: "\uEB1A", alpha-t-box-outline: "\uEC23", alpha-t-circle: "\uEC24", alpha-t-circle-outline: "\uEC25", alpha-u: "\uEB01", alpha-u-box: "\uEB1B", alpha-u-box-outline: "\uEC26", alpha-u-circle: "\uEC27", alpha-u-circle-outline: "\uEC28", alpha-v: "\uEB02", alpha-v-box: "\uEB1C", alpha-v-box-outline: "\uEC29", alpha-v-circle: "\uEC2A", alpha-v-circle-outline: "\uEC2B", alpha-w: "\uEB03", alpha-w-box: "\uEB1D", alpha-w-box-outline: "\uEC2C", alpha-w-circle: "\uEC2D", alpha-w-circle-outline: "\uEC2E", alpha-x: "\uEB04", alpha-x-box: "\uEB1E", alpha-x-box-outline: "\uEC2F", alpha-x-circle: "\uEC30", alpha-x-circle-outline: "\uEC31", alpha-y: "\uEB05", alpha-y-box: "\uEB1F", alpha-y-box-outline: "\uEC32", alpha-y-circle: "\uEC33", alpha-y-circle-outline: "\uEC34", alpha-z: "\uEB06", alpha-z-box: "\uEB20", alpha-z-box-outline: "\uEC35", alpha-z-circle: "\uEC36", alpha-z-circle-outline: "\uEC37", alphabet-aurebesh: "\uF32B", alphabet-cyrillic: "\uF32C", alphabet-greek: "\uF32D", alphabet-latin: "\uF32E", alphabet-piqad: "\uF32F", alphabet-tengwar: "\uF336", alphabetical: "\uE02B", alphabetical-off: "\uF00B", alphabetical-variant: "\uF00C", alphabetical-variant-off: "\uF00D", altimeter: "\uE5D6", ambulance: "\uE02E", ammunition: "\uECE7", ampersand: "\uEA8C", amplifier: "\uE02F", amplifier-off: "\uF1B4", anchor: "\uE030", android: "\uE031", android-messages: "\uED44", android-studio: "\uE033", angle-acute: "\uE936", angle-obtuse: "\uE937", angle-right: "\uE938", angular: "\uE6B1", angularjs: "\uE6BE", animation: "\uE5D7", animation-outline: "\uEA8E", animation-play: "\uE939", animation-play-outline: "\uEA8F", ansible: "\uF099", antenna: "\uF118", anvil: "\uE89A", apache-kafka: "\uF00E", api: "\uF09A", api-off: "\uF256", apple: "\uE034", apple-finder: "\uE035", apple-icloud: "\uE037", apple-ios: "\uE036", apple-keyboard-caps: "\uE631", apple-keyboard-command: "\uE632", apple-keyboard-control: "\uE633", apple-keyboard-option: "\uE634", apple-keyboard-shift: "\uE635", apple-safari: "\uE038", application: "\uE8C5", application-array: "\uF0F4", application-array-outline: "\uF0F5", application-braces: "\uF0F6", application-braces-outline: "\uF0F7", application-brackets: "\uEC8A", application-brackets-outline: "\uEC8B", application-cog: "\uE674", application-cog-outline: "\uF576", application-edit: "\uE0AD", application-edit-outline: "\uE618", application-export: "\uEDAC", application-import: "\uEDAD", application-outline: "\uE613", application-parentheses: "\uF0F8", application-parentheses-outline: "\uF0F9", application-settings: "\uEB5F", application-settings-outline: "\uF554", application-variable: "\uF0FA", application-variable-outline: "\uF0FB", approximately-equal: "\uEF9D", approximately-equal-box: "\uEF9E", apps: "\uE03A", apps-box: "\uED45", arch: "\uE8C6", archive: "\uE03B", archive-alert: "\uF4FC", archive-alert-outline: "\uF4FD", archive-arrow-down: "\uF258", archive-arrow-down-outline: "\uF259", archive-arrow-up: "\uF25A", archive-arrow-up-outline: "\uF25B", archive-cancel: "\uF74A", archive-cancel-outline: "\uF74B", archive-check: "\uF74C", archive-check-outline: "\uF74D", archive-clock: "\uF74E", archive-clock-outline: "\uF74F", archive-cog: "\uF750", archive-cog-outline: "\uF751", archive-edit: "\uF752", archive-edit-outline: "\uF753", archive-eye: "\uF754", archive-eye-outline: "\uF755", archive-lock: "\uF756", archive-lock-open: "\uF757", archive-lock-open-outline: "\uF758", archive-lock-outline: "\uF759", archive-marker: "\uF75A", archive-marker-outline: "\uF75B", archive-minus: "\uF75C", archive-minus-outline: "\uF75D", archive-music: "\uF75E", archive-music-outline: "\uF75F", archive-off: "\uF760", archive-off-outline: "\uF761", archive-outline: "\uF20D", archive-plus: "\uF762", archive-plus-outline: "\uF763", archive-refresh: "\uF764", archive-refresh-outline: "\uF765", archive-remove: "\uF766", archive-remove-outline: "\uF767", archive-search: "\uF768", archive-search-outline: "\uF769", archive-settings: "\uF76A", archive-settings-outline: "\uF76B", archive-star: "\uF76C", archive-star-outline: "\uF76D", archive-sync: "\uF76E", archive-sync-outline: "\uF76F", arm-flex: "\uEFD6", arm-flex-outline: "\uEFD5", arrange-bring-forward: "\uE03C", arrange-bring-to-front: "\uE03D", arrange-send-backward: "\uE03E", arrange-send-to-back: "\uE03F", arrow-all: "\uE040", arrow-bottom-left: "\uE041", arrow-bottom-left-bold-box: "\uF963", arrow-bottom-left-bold-box-outline: "\uF964", arrow-bottom-left-bold-outline: "\uE9B6", arrow-bottom-left-thick: "\uE9B7", arrow-bottom-left-thin: "\uF9B5", arrow-bottom-left-thin-circle-outline: "\uF595", arrow-bottom-right: "\uE042", arrow-bottom-right-bold-box: "\uF965", arrow-bottom-right-bold-box-outline: "\uF966", arrow-bottom-right-bold-outline: "\uE9B8", arrow-bottom-right-thick: "\uE9B9", arrow-bottom-right-thin: "\uF9B6", arrow-bottom-right-thin-circle-outline: "\uF594", arrow-collapse: "\uE614", arrow-collapse-all: "\uE043", arrow-collapse-down: "\uE791", arrow-collapse-horizontal: "\uE84B", arrow-collapse-left: "\uE792", arrow-collapse-right: "\uE793", arrow-collapse-up: "\uE794", arrow-collapse-vertical: "\uE84C", arrow-decision: "\uE9BA", arrow-decision-auto: "\uE9BB", arrow-decision-auto-outline: "\uE9BC", arrow-decision-outline: "\uE9BD", arrow-down: "\uE044", arrow-down-bold: "\uE72D", arrow-down-bold-box: "\uE72E", arrow-down-bold-box-outline: "\uE72F", arrow-down-bold-circle: "\uE046", arrow-down-bold-circle-outline: "\uE047", arrow-down-bold-hexagon-outline: "\uE048", arrow-down-bold-outline: "\uE9BE", arrow-down-box: "\uE6BF", arrow-down-circle: "\uECDA", arrow-down-circle-outline: "\uECDB", arrow-down-drop-circle: "\uE049", arrow-down-drop-circle-outline: "\uE04A", arrow-down-left: "\uF7A0", arrow-down-left-bold: "\uF7A1", arrow-down-right: "\uF7A2", arrow-down-right-bold: "\uF7A3", arrow-down-thick: "\uE045", arrow-down-thin: "\uF9B2", arrow-down-thin-circle-outline: "\uF598", arrow-expand: "\uE615", arrow-expand-all: "\uE04B", arrow-expand-down: "\uE795", arrow-expand-horizontal: "\uE84D", arrow-expand-left: "\uE796", arrow-expand-right: "\uE797", arrow-expand-up: "\uE798", arrow-expand-vertical: "\uE84E", arrow-horizontal-lock: "\uF15A", arrow-left: "\uE04C", arrow-left-bold: "\uE730", arrow-left-bold-box: "\uE731", arrow-left-bold-box-outline: "\uE732", arrow-left-bold-circle: "\uE04E", arrow-left-bold-circle-outline: "\uE04F", arrow-left-bold-hexagon-outline: "\uE050", arrow-left-bold-outline: "\uE9BF", arrow-left-bottom: "\uF7A4", arrow-left-bottom-bold: "\uF7A5", arrow-left-box: "\uE6C0", arrow-left-circle: "\uECDC", arrow-left-circle-outline: "\uECDD", arrow-left-drop-circle: "\uE051", arrow-left-drop-circle-outline: "\uE052", arrow-left-right: "\uEE72", arrow-left-right-bold: "\uEE73", arrow-left-right-bold-outline: "\uE9C0", arrow-left-thick: "\uE04D", arrow-left-thin: "\uF9B0", arrow-left-thin-circle-outline: "\uF599", arrow-left-top: "\uF7A6", arrow-left-top-bold: "\uF7A7", arrow-projectile: "\uF83F", arrow-projectile-multiple: "\uF83E", arrow-right: "\uE053", arrow-right-bold: "\uE733", arrow-right-bold-box: "\uE734", arrow-right-bold-box-outline: "\uE735", arrow-right-bold-circle: "\uE055", arrow-right-bold-circle-outline: "\uE056", arrow-right-bold-hexagon-outline: "\uE057", arrow-right-bold-outline: "\uE9C1", arrow-right-bottom: "\uF7A8", arrow-right-bottom-bold: "\uF7A9", arrow-right-box: "\uE6C1", arrow-right-circle: "\uECDE", arrow-right-circle-outline: "\uECDF", arrow-right-drop-circle: "\uE058", arrow-right-drop-circle-outline: "\uE059", arrow-right-thick: "\uE054", arrow-right-thin: "\uF9AF", arrow-right-thin-circle-outline: "\uF597", arrow-right-top: "\uF7AA", arrow-right-top-bold: "\uF7AB", arrow-split-horizontal: "\uE93A", arrow-split-vertical: "\uE93B", arrow-top-left: "\uE05A", arrow-top-left-bold-box: "\uF967", arrow-top-left-bold-box-outline: "\uF968", arrow-top-left-bold-outline: "\uE9C2", arrow-top-left-bottom-right: "\uEE74", arrow-top-left-bottom-right-bold: "\uEE75", arrow-top-left-thick: "\uE9C3", arrow-top-left-thin: "\uF9B4", arrow-top-left-thin-circle-outline: "\uF592", arrow-top-right: "\uE05B", arrow-top-right-bold-box: "\uF969", arrow-top-right-bold-box-outline: "\uF96A", arrow-top-right-bold-outline: "\uE9C4", arrow-top-right-bottom-left: "\uEE76", arrow-top-right-bottom-left-bold: "\uEE77", arrow-top-right-thick: "\uE9C5", arrow-top-right-thin: "\uF9B3", arrow-top-right-thin-circle-outline: "\uF593", arrow-u-down-left: "\uF7AC", arrow-u-down-left-bold: "\uF7AD", arrow-u-down-right: "\uF7AE", arrow-u-down-right-bold: "\uF7AF", arrow-u-left-bottom: "\uF7B0", arrow-u-left-bottom-bold: "\uF7B1", arrow-u-left-top: "\uF7B2", arrow-u-left-top-bold: "\uF7B3", arrow-u-right-bottom: "\uF7B4", arrow-u-right-bottom-bold: "\uF7B5", arrow-u-right-top: "\uF7B6", arrow-u-right-top-bold: "\uF7B7", arrow-u-up-left: "\uF7B8", arrow-u-up-left-bold: "\uF7B9", arrow-u-up-right: "\uF7BA", arrow-u-up-right-bold: "\uF7BB", arrow-up: "\uE05C", arrow-up-bold: "\uE736", arrow-up-bold-box: "\uE737", arrow-up-bold-box-outline: "\uE738", arrow-up-bold-circle: "\uE05E", arrow-up-bold-circle-outline: "\uE05F", arrow-up-bold-hexagon-outline: "\uE060", arrow-up-bold-outline: "\uE9C6", arrow-up-box: "\uE6C2", arrow-up-circle: "\uECE0", arrow-up-circle-outline: "\uECE1", arrow-up-down: "\uEE78", arrow-up-down-bold: "\uEE79", arrow-up-down-bold-outline: "\uE9C7", arrow-up-drop-circle: "\uE061", arrow-up-drop-circle-outline: "\uE062", arrow-up-left: "\uF7BC", arrow-up-left-bold: "\uF7BD", arrow-up-right: "\uF7BE", arrow-up-right-bold: "\uF7BF", arrow-up-thick: "\uE05D", arrow-up-thin: "\uF9B1", arrow-up-thin-circle-outline: "\uF596", arrow-vertical-lock: "\uF15B", artstation: "\uEB5A", aspect-ratio: "\uEA23", assistant: "\uE063", asterisk: "\uE6C3", asterisk-circle-outline: "\uFA26", at: "\uE064", atlassian: "\uE803", atm: "\uED46", atom: "\uE767", atom-variant: "\uEE7A", attachment: "\uE065", attachment-check: "\uFAC0", attachment-lock: "\uF9C3", attachment-minus: "\uFAC1", attachment-off: "\uFAC2", attachment-plus: "\uFAC3", attachment-remove: "\uFAC4", audio-input-rca: "\uF86A", audio-input-stereo-minijack: "\uF86B", audio-input-xlr: "\uF86C", audio-video: "\uE93C", audio-video-off: "\uF1B5", augmented-reality: "\uE84F", auto-download: "\uF37D", auto-fix: "\uE067", auto-upload: "\uE068", autorenew: "\uE069", autorenew-off: "\uF9E6", av-timer: "\uE06A", aws: "\uEE0E", axe: "\uE8C7", axe-battle: "\uF841", axis: "\uED47", axis-arrow: "\uED48", axis-arrow-info: "\uF40D", axis-arrow-lock: "\uED49", axis-lock: "\uED4A", axis-x-arrow: "\uED4B", axis-x-arrow-lock: "\uED4C", axis-x-rotate-clockwise: "\uED4D", axis-x-rotate-counterclockwise: "\uED4E", axis-x-y-arrow-lock: "\uED4F", axis-y-arrow: "\uED50", axis-y-arrow-lock: "\uED51", axis-y-rotate-clockwise: "\uED52", axis-y-rotate-counterclockwise: "\uED53", axis-z-arrow: "\uED54", axis-z-arrow-lock: "\uED55", axis-z-rotate-clockwise: "\uED56", axis-z-rotate-counterclockwise: "\uED57", babel: "\uEA24", baby: "\uE06B", baby-bottle: "\uEF38", baby-bottle-outline: "\uEF39", baby-buggy: "\uF3DF", baby-carriage: "\uE68E", baby-carriage-off: "\uEF9F", baby-face: "\uEE7B", baby-face-outline: "\uEE7C", backburger: "\uE06C", backspace: "\uE06D", backspace-outline: "\uEB5B", backspace-reverse: "\uEE7D", backspace-reverse-outline: "\uEE7E", backup-restore: "\uE06E", bacteria: "\uEED4", bacteria-outline: "\uEED5", badge-account: "\uEDA6", badge-account-alert: "\uEDA7", badge-account-alert-outline: "\uEDA8", badge-account-horizontal: "\uEE0C", badge-account-horizontal-outline: "\uEE0D", badge-account-outline: "\uEDA9", badminton: "\uE850", bag-carry-on: "\uEF3A", bag-carry-on-check: "\uED64", bag-carry-on-off: "\uEF3B", bag-checked: "\uEF3C", bag-personal: "\uEE0F", bag-personal-off: "\uEE10", bag-personal-off-outline: "\uEE11", bag-personal-outline: "\uEE12", bag-suitcase: "\uF58A", bag-suitcase-off: "\uF58C", bag-suitcase-off-outline: "\uF58D", bag-suitcase-outline: "\uF58B", baguette: "\uEF3D", balcony: "\uF816", balloon: "\uEA25", ballot: "\uE9C8", ballot-outline: "\uE9C9", ballot-recount: "\uEC38", ballot-recount-outline: "\uEC39", bandage: "\uEDAE", bank: "\uE06F", bank-check: "\uF654", bank-minus: "\uEDAF", bank-off: "\uF655", bank-off-outline: "\uF656", bank-outline: "\uEE7F", bank-plus: "\uEDB0", bank-remove: "\uEDB1", bank-transfer: "\uEA26", bank-transfer-in: "\uEA27", bank-transfer-out: "\uEA28", barcode: "\uE070", barcode-off: "\uF235", barcode-scan: "\uE071", barley: "\uE072", barley-off: "\uEB5C", barn: "\uEB5D", barrel: "\uE073", barrel-outline: "\uFA27", baseball: "\uE851", baseball-bat: "\uE852", baseball-diamond: "\uF5EB", baseball-diamond-outline: "\uF5EC", bash: "\uF182", basket: "\uE075", basket-check: "\uF8E4", basket-check-outline: "\uF8E5", basket-fill: "\uE076", basket-minus: "\uF522", basket-minus-outline: "\uF523", basket-off: "\uF524", basket-off-outline: "\uF525", basket-outline: "\uF180", basket-plus: "\uF526", basket-plus-outline: "\uF527", basket-remove: "\uF528", basket-remove-outline: "\uF529", basket-unfill: "\uE077", basketball: "\uE805", basketball-hoop: "\uEC3A", basketball-hoop-outline: "\uEC3B", bat: "\uEB5E", bathtub: "\uF817", bathtub-outline: "\uF818", battery: "\uE078", battery-10: "\uE079", battery-10-bluetooth: "\uE93D", battery-20: "\uE07A", battery-20-bluetooth: "\uE93E", battery-30: "\uE07B", battery-30-bluetooth: "\uE93F", battery-40: "\uE07C", battery-40-bluetooth: "\uE940", battery-50: "\uE07D", battery-50-bluetooth: "\uE941", battery-60: "\uE07E", battery-60-bluetooth: "\uE942", battery-70: "\uE07F", battery-70-bluetooth: "\uE943", battery-80: "\uE080", battery-80-bluetooth: "\uE944", battery-90: "\uE081", battery-90-bluetooth: "\uE945", battery-alert: "\uE082", battery-alert-bluetooth: "\uE946", battery-alert-variant: "\uF0CB", battery-alert-variant-outline: "\uF0CC", battery-arrow-down: "\uF7DD", battery-arrow-down-outline: "\uF7DE", battery-arrow-up: "\uF7DF", battery-arrow-up-outline: "\uF7E0", battery-bluetooth: "\uE947", battery-bluetooth-variant: "\uE948", battery-charging: "\uE083", battery-charging-10: "\uE89B", battery-charging-100: "\uE084", battery-charging-20: "\uE085", battery-charging-30: "\uE086", battery-charging-40: "\uE087", battery-charging-50: "\uE89C", battery-charging-60: "\uE088", battery-charging-70: "\uE89D", battery-charging-80: "\uE089", battery-charging-90: "\uE08A", battery-charging-high: "\uF2A5", battery-charging-low: "\uF2A3", battery-charging-medium: "\uF2A4", battery-charging-outline: "\uE89E", battery-charging-wireless: "\uE806", battery-charging-wireless-10: "\uE807", battery-charging-wireless-20: "\uE808", battery-charging-wireless-30: "\uE809", battery-charging-wireless-40: "\uE80A", battery-charging-wireless-50: "\uE80B", battery-charging-wireless-60: "\uE80C", battery-charging-wireless-70: "\uE80D", battery-charging-wireless-80: "\uE80E", battery-charging-wireless-90: "\uE80F", battery-charging-wireless-alert: "\uE810", battery-charging-wireless-outline: "\uE811", battery-check: "\uF7E1", battery-check-outline: "\uF7E2", battery-clock: "\uF9E4", battery-clock-outline: "\uF9E5", battery-heart: "\uF20E", battery-heart-outline: "\uF20F", battery-heart-variant: "\uF210", battery-high: "\uF2A2", battery-lock: "\uF79B", battery-lock-open: "\uF79C", battery-low: "\uF2A0", battery-medium: "\uF2A1", battery-minus: "\uF7E3", battery-minus-outline: "\uF7E4", battery-minus-variant: "\uE08B", battery-negative: "\uE08C", battery-off: "\uF25C", battery-off-outline: "\uF25D", battery-outline: "\uE08D", battery-plus: "\uF7E5", battery-plus-outline: "\uF7E6", battery-plus-variant: "\uE08E", battery-positive: "\uE08F", battery-remove: "\uF7E7", battery-remove-outline: "\uF7E8", battery-sync: "\uF833", battery-sync-outline: "\uF834", battery-unknown: "\uE090", battery-unknown-bluetooth: "\uE949", beach: "\uE091", beaker: "\uECE9", beaker-alert: "\uF228", beaker-alert-outline: "\uF229", beaker-check: "\uF22A", beaker-check-outline: "\uF22B", beaker-minus: "\uF22C", beaker-minus-outline: "\uF22D", beaker-outline: "\uE68F", beaker-plus: "\uF22E", beaker-plus-outline: "\uF22F", beaker-question: "\uF230", beaker-question-outline: "\uF231", beaker-remove: "\uF232", beaker-remove-outline: "\uF233", bed: "\uE2E2", bed-double: "\uEFD3", bed-double-outline: "\uEFD2", bed-empty: "\uE89F", bed-king: "\uEFD1", bed-king-outline: "\uEFD0", bed-outline: "\uE098", bed-queen: "\uEFCF", bed-queen-outline: "\uEFDA", bed-single: "\uF06C", bed-single-outline: "\uF06D", bee: "\uEFA0", bee-flower: "\uEFA1", beehive-off-outline: "\uF3EC", beehive-outline: "\uF0CD", beekeeper: "\uF4E1", beer: "\uE097", beer-outline: "\uF30B", bell: "\uE099", bell-alert: "\uED58", bell-alert-outline: "\uEE80", bell-badge: "\uF16A", bell-badge-outline: "\uE177", bell-cancel: "\uF3E6", bell-cancel-outline: "\uF3E7", bell-check: "\uF1E4", bell-check-outline: "\uF1E5", bell-circle: "\uED59", bell-circle-outline: "\uED5A", bell-cog: "\uFA28", bell-cog-outline: "\uFA29", bell-minus: "\uF3E8", bell-minus-outline: "\uF3E9", bell-off: "\uE09A", bell-off-outline: "\uEA90", bell-outline: "\uE09B", bell-plus: "\uE09C", bell-plus-outline: "\uEA91", bell-remove: "\uF3EA", bell-remove-outline: "\uF3EB", bell-ring: "\uE09D", bell-ring-outline: "\uE09E", bell-sleep: "\uE09F", bell-sleep-outline: "\uEA92", beta: "\uE0A0", betamax: "\uE9CA", biathlon: "\uEE13", bicycle: "\uF09B", bicycle-basket: "\uF234", bicycle-cargo: "\uF89B", bicycle-electric: "\uF5B3", bicycle-penny-farthing: "\uF5E8", bike: "\uE0A2", bike-fast: "\uF11E", billboard: "\uF00F", billiards: "\uEB60", billiards-rack: "\uEB61", binoculars: "\uE0A4", bio: "\uE0A5", biohazard: "\uE0A6", bird: "\uF5C5", bitbucket: "\uE0A7", bitcoin: "\uE812", black-mesa: "\uE0A8", blender: "\uECEA", blender-outline: "\uF819", blender-software: "\uE0AA", blinds: "\uE0AB", blinds-horizontal: "\uFA2A", blinds-horizontal-closed: "\uFA2B", blinds-open: "\uF010", blinds-vertical: "\uFA2C", blinds-vertical-closed: "\uFA2D", block-helper: "\uE0AC", blood-bag: "\uECEB", bluetooth: "\uE0AE", bluetooth-audio: "\uE0AF", bluetooth-connect: "\uE0B0", bluetooth-off: "\uE0B1", bluetooth-settings: "\uE0B2", bluetooth-transfer: "\uE0B3", blur: "\uE0B4", blur-linear: "\uE0B5", blur-off: "\uE0B6", blur-radial: "\uE0B7", bolt: "\uEDB2", bomb: "\uE690", bomb-off: "\uE6C4", bone: "\uE0B8", bone-off: "\uF9DF", book: "\uE0B9", book-account: "\uF3AC", book-account-outline: "\uF3AD", book-alert: "\uF67B", book-alert-outline: "\uF67C", book-alphabet: "\uE61C", book-arrow-down: "\uF67D", book-arrow-down-outline: "\uF67E", book-arrow-left: "\uF67F", book-arrow-left-outline: "\uF680", book-arrow-right: "\uF681", book-arrow-right-outline: "\uF682", book-arrow-up: "\uF683", book-arrow-up-outline: "\uF684", book-cancel: "\uF685", book-cancel-outline: "\uF686", book-check: "\uF4F2", book-check-outline: "\uF4F3", book-clock: "\uF687", book-clock-outline: "\uF688", book-cog: "\uF689", book-cog-outline: "\uF68A", book-cross: "\uE0A1", book-edit: "\uF68B", book-edit-outline: "\uF68C", book-education: "\uF6C8", book-education-outline: "\uF6C9", book-heart: "\uFA1C", book-heart-outline: "\uFA1D", book-information-variant: "\uF06E", book-lock: "\uE799", book-lock-open: "\uE79A", book-lock-open-outline: "\uF68D", book-lock-outline: "\uF68E", book-marker: "\uF68F", book-marker-outline: "\uF690", book-minus: "\uE5D8", book-minus-multiple: "\uEA93", book-minus-multiple-outline: "\uE90A", book-minus-outline: "\uF691", book-multiple: "\uE0BA", book-multiple-outline: "\uE435", book-music: "\uE066", book-music-outline: "\uF692", book-off: "\uF693", book-off-outline: "\uF694", book-open: "\uE0BC", book-open-blank-variant: "\uE0BD", book-open-outline: "\uEB62", book-open-page-variant: "\uE5D9", book-open-page-variant-outline: "\uF5D5", book-open-variant: "\uF4F6", book-outline: "\uEB63", book-play: "\uEE81", book-play-outline: "\uEE82", book-plus: "\uE5DA", book-plus-multiple: "\uEA94", book-plus-multiple-outline: "\uEADD", book-plus-outline: "\uF695", book-refresh: "\uF696", book-refresh-outline: "\uF697", book-remove: "\uEA96", book-remove-multiple: "\uEA95", book-remove-multiple-outline: "\uE4C9", book-remove-outline: "\uF698", book-search: "\uEE83", book-search-outline: "\uEE84", book-settings: "\uF699", book-settings-outline: "\uF69A", book-sync: "\uF69B", book-sync-outline: "\uF6C7", book-variant: "\uE0BE", book-variant-multiple: "\uE0BB", bookmark: "\uE0BF", bookmark-box-multiple: "\uF96B", bookmark-box-multiple-outline: "\uF96C", bookmark-check: "\uE0C0", bookmark-check-outline: "\uF37A", bookmark-minus: "\uE9CB", bookmark-minus-outline: "\uE9CC", bookmark-multiple: "\uEE14", bookmark-multiple-outline: "\uEE15", bookmark-music: "\uE0C1", bookmark-music-outline: "\uF378", bookmark-off: "\uE9CD", bookmark-off-outline: "\uE9CE", bookmark-outline: "\uE0C2", bookmark-plus: "\uE0C4", bookmark-plus-outline: "\uE0C3", bookmark-remove: "\uE0C5", bookmark-remove-outline: "\uF379", bookshelf: "\uF25E", boom-gate: "\uEE85", boom-gate-alert: "\uEE86", boom-gate-alert-outline: "\uEE87", boom-gate-arrow-down: "\uEE88", boom-gate-arrow-down-outline: "\uEE89", boom-gate-arrow-up: "\uEE8B", boom-gate-arrow-up-outline: "\uEE8C", boom-gate-outline: "\uEE8A", boom-gate-up: "\uF7F8", boom-gate-up-outline: "\uF7F9", boombox: "\uE5DB", boomerang: "\uF0CE", bootstrap: "\uE6C5", border-all: "\uE0C6", border-all-variant: "\uE8A0", border-bottom: "\uE0C7", border-bottom-variant: "\uE8A1", border-color: "\uE0C8", border-horizontal: "\uE0C9", border-inside: "\uE0CA", border-left: "\uE0CB", border-left-variant: "\uE8A2", border-none: "\uE0CC", border-none-variant: "\uE8A3", border-outside: "\uE0CD", border-right: "\uE0CE", border-right-variant: "\uE8A4", border-style: "\uE0CF", border-top: "\uE0D0", border-top-variant: "\uE8A5", border-vertical: "\uE0D1", bottle-soda: "\uF06F", bottle-soda-classic: "\uF070", bottle-soda-classic-outline: "\uF362", bottle-soda-outline: "\uF071", bottle-tonic: "\uF12D", bottle-tonic-outline: "\uF12E", bottle-tonic-plus: "\uF12F", bottle-tonic-plus-outline: "\uF130", bottle-tonic-skull: "\uF131", bottle-tonic-skull-outline: "\uF132", bottle-wine: "\uE853", bottle-wine-outline: "\uF30F", bow-arrow: "\uF840", bow-tie: "\uE677", bowl: "\uE28D", bowl-mix: "\uE616", bowl-mix-outline: "\uE2E3", bowl-outline: "\uE2A8", bowling: "\uE0D2", box: "\uE0D3", box-cutter: "\uE0D4", box-cutter-off: "\uEB49", box-shadow: "\uE636", boxing-glove: "\uEB64", braille: "\uE9CF", brain: "\uE9D0", bread-slice: "\uECED", bread-slice-outline: "\uECEE", bridge: "\uE617", briefcase: "\uE0D5", briefcase-account: "\uECEF", briefcase-account-outline: "\uECF0", briefcase-arrow-left-right: "\uFA8C", briefcase-arrow-left-right-outline: "\uFA8D", briefcase-arrow-up-down: "\uFA8E", briefcase-arrow-up-down-outline: "\uFA8F", briefcase-check: "\uE0D6", briefcase-check-outline: "\uF31D", briefcase-clock: "\uF0CF", briefcase-clock-outline: "\uF0D0", briefcase-download: "\uE0D7", briefcase-download-outline: "\uEC3C", briefcase-edit: "\uEA97", briefcase-edit-outline: "\uEC3D", briefcase-eye: "\uF7D8", briefcase-eye-outline: "\uF7D9", briefcase-minus: "\uEA29", briefcase-minus-outline: "\uEC3E", briefcase-off: "\uF657", briefcase-off-outline: "\uF658", briefcase-outline: "\uE813", briefcase-plus: "\uEA2A", briefcase-plus-outline: "\uEC3F", briefcase-remove: "\uEA2B", briefcase-remove-outline: "\uEC40", briefcase-search: "\uEA2C", briefcase-search-outline: "\uEC41", briefcase-upload: "\uE0D8", briefcase-upload-outline: "\uEC42", briefcase-variant: "\uF493", briefcase-variant-off: "\uF659", briefcase-variant-off-outline: "\uF65A", briefcase-variant-outline: "\uF494", brightness-1: "\uE0D9", brightness-2: "\uE0DA", brightness-3: "\uE0DB", brightness-4: "\uE0DC", brightness-5: "\uE0DD", brightness-6: "\uE0DE", brightness-7: "\uE0DF", brightness-auto: "\uE0E0", brightness-percent: "\uECF1", broadcast: "\uF71F", broadcast-off: "\uF720", broom: "\uE0E1", brush: "\uE0E2", brush-off: "\uF770", brush-outline: "\uFA0C", brush-variant: "\uF812", bucket: "\uF414", bucket-outline: "\uF415", buffet: "\uE577", bug: "\uE0E3", bug-check: "\uEA2D", bug-check-outline: "\uEA2E", bug-outline: "\uEA2F", bugle: "\uEDB3", bulkhead-light: "\uFA2E", bulldozer: "\uEB21", bullet: "\uECF2", bulletin-board: "\uE0E4", bullhorn: "\uE0E5", bullhorn-outline: "\uEB22", bullhorn-variant: "\uF96D", bullhorn-variant-outline: "\uF96E", bullseye: "\uE5DC", bullseye-arrow: "\uE8C8", bulma: "\uF2E6", bunk-bed: "\uF301", bunk-bed-outline: "\uE096", bus: "\uE0E6", bus-alert: "\uEA98", bus-articulated-end: "\uE79B", bus-articulated-front: "\uE79C", bus-clock: "\uE8C9", bus-double-decker: "\uE79D", bus-electric: "\uF91C", bus-marker: "\uF211", bus-multiple: "\uEF3E", bus-school: "\uE79E", bus-side: "\uE79F", bus-stop: "\uF011", bus-stop-covered: "\uF012", bus-stop-uncovered: "\uF013", butterfly: "\uF588", butterfly-outline: "\uF589", cabin-a-frame: "\uF88B", cable-data: "\uF393", cached: "\uE0E7", cactus: "\uEDB4", cake: "\uE0E8", cake-layered: "\uE0E9", cake-variant: "\uE0EA", cake-variant-outline: "\uF7EF", calculator: "\uE0EB", calculator-variant: "\uEA99", calculator-variant-outline: "\uF5A5", calendar: "\uE0EC", calendar-account: "\uEED6", calendar-account-outline: "\uEED7", calendar-alert: "\uEA30", calendar-arrow-left: "\uF133", calendar-arrow-right: "\uF134", calendar-blank: "\uE0ED", calendar-blank-multiple: "\uF072", calendar-blank-outline: "\uEB65", calendar-check: "\uE0EE", calendar-check-outline: "\uEC43", calendar-clock: "\uE0EF", calendar-clock-outline: "\uF6E0", calendar-collapse-horizontal: "\uF89C", calendar-cursor: "\uF57A", calendar-edit: "\uE8A6", calendar-end: "\uF66B", calendar-expand-horizontal: "\uF89D", calendar-export: "\uEB23", calendar-heart: "\uE9D1", calendar-import: "\uEB24", calendar-lock: "\uF640", calendar-lock-outline: "\uF641", calendar-minus: "\uED5B", calendar-month: "\uEE16", calendar-month-outline: "\uEE17", calendar-multiple: "\uE0F0", calendar-multiple-check: "\uE0F1", calendar-multiselect: "\uEA31", calendar-outline: "\uEB66", calendar-plus: "\uE0F2", calendar-question: "\uE691", calendar-range: "\uE678", calendar-range-outline: "\uEB67", calendar-refresh: "\uE1E0", calendar-refresh-outline: "\uE202", calendar-remove: "\uE0F3", calendar-remove-outline: "\uEC44", calendar-search: "\uE94B", calendar-star: "\uE9D2", calendar-start: "\uF66C", calendar-sync: "\uEE8D", calendar-sync-outline: "\uEE8E", calendar-text: "\uE0F4", calendar-text-outline: "\uEC45", calendar-today: "\uE0F5", calendar-today-outline: "\uFA2F", calendar-week: "\uEA32", calendar-week-begin: "\uEA33", calendar-week-begin-outline: "\uFA30", calendar-week-end: "\uFA31", calendar-week-end-outline: "\uFA32", calendar-week-outline: "\uFA33", calendar-weekend: "\uEED8", calendar-weekend-outline: "\uEED9", call-made: "\uE0F6", call-merge: "\uE0F7", call-missed: "\uE0F8", call-received: "\uE0F9", call-split: "\uE0FA", camcorder: "\uE0FB", camcorder-off: "\uE0FE", camera: "\uE0FF", camera-account: "\uE8CA", camera-burst: "\uE692", camera-control: "\uEB68", camera-document: "\uF870", camera-document-off: "\uF871", camera-enhance: "\uE100", camera-enhance-outline: "\uEB69", camera-flip: "\uF5D8", camera-flip-outline: "\uF5D9", camera-front: "\uE101", camera-front-variant: "\uE102", camera-gopro: "\uE7A0", camera-image: "\uE8CB", camera-iris: "\uE103", camera-lock: "\uFA13", camera-lock-outline: "\uFA14", camera-marker: "\uF9A6", camera-marker-outline: "\uF9A7", camera-metering-center: "\uE7A1", camera-metering-matrix: "\uE7A2", camera-metering-partial: "\uE7A3", camera-metering-spot: "\uE7A4", camera-off: "\uE5DE", camera-off-outline: "\uF9BE", camera-outline: "\uED5C", camera-party-mode: "\uE104", camera-plus: "\uEEDA", camera-plus-outline: "\uEEDB", camera-rear: "\uE105", camera-rear-variant: "\uE106", camera-retake: "\uEE18", camera-retake-outline: "\uEE19", camera-switch: "\uE107", camera-switch-outline: "\uE849", camera-timer: "\uE108", camera-wireless: "\uEDB5", camera-wireless-outline: "\uEDB6", campfire: "\uEEDC", cancel: "\uE739", candelabra: "\uF7D1", candelabra-fire: "\uF7D2", candle: "\uE5E1", candy: "\uF96F", candy-off: "\uF970", candy-off-outline: "\uF971", candy-outline: "\uF972", candycane: "\uE109", cannabis: "\uE7A5", cannabis-off: "\uF66D", caps-lock: "\uEA9A", car: "\uE10A", car-2-plus: "\uF014", car-3-plus: "\uF015", car-arrow-left: "\uF3B1", car-arrow-right: "\uF3B2", car-back: "\uEE1A", car-battery: "\uE10B", car-brake-abs: "\uEC46", car-brake-alert: "\uEC47", car-brake-fluid-level: "\uF908", car-brake-hold: "\uED5D", car-brake-low-pressure: "\uF909", car-brake-parking: "\uED5E", car-brake-retarder: "\uF016", car-brake-temperature: "\uF90A", car-brake-worn-linings: "\uF90B", car-child-seat: "\uEFA2", car-clock: "\uF973", car-clutch: "\uF017", car-cog: "\uF3CB", car-connected: "\uE10C", car-convertible: "\uE7A6", car-coolant-level: "\uF018", car-cruise-control: "\uED5F", car-defrost-front: "\uED60", car-defrost-rear: "\uED61", car-door: "\uEB6A", car-door-lock: "\uF09C", car-electric: "\uEB6B", car-electric-outline: "\uF5B4", car-emergency: "\uF60E", car-esp: "\uEC48", car-estate: "\uE7A7", car-hatchback: "\uE7A8", car-info: "\uF1BD", car-key: "\uEB6C", car-lifted-pickup: "\uF52C", car-light-alert: "\uF90C", car-light-dimmed: "\uEC49", car-light-fog: "\uEC4A", car-light-high: "\uEC4B", car-limousine: "\uE8CC", car-multiple: "\uEB6D", car-off: "\uEE1B", car-outline: "\uF4EC", car-parking-lights: "\uED62", car-pickup: "\uE7A9", car-seat: "\uEFA3", car-seat-cooler: "\uEFA4", car-seat-heater: "\uEFA5", car-select: "\uF878", car-settings: "\uF3CC", car-shift-pattern: "\uEF3F", car-side: "\uE7AA", car-speed-limiter: "\uF90D", car-sports: "\uE7AB", car-tire-alert: "\uEC4C", car-traction-control: "\uED63", car-turbocharger: "\uF019", car-wash: "\uE10D", car-windshield: "\uF01A", car-windshield-outline: "\uF01B", car-wireless: "\uF877", car-wrench: "\uF813", carabiner: "\uF4BF", caravan: "\uE7AC", card: "\uEB6E", card-account-details: "\uE5D1", card-account-details-outline: "\uEDAA", card-account-details-star: "\uE2A2", card-account-details-star-outline: "\uE6DA", card-account-mail: "\uE18D", card-account-mail-outline: "\uEE97", card-account-phone: "\uEE98", card-account-phone-outline: "\uEE99", card-bulleted: "\uEB6F", card-bulleted-off: "\uEB70", card-bulleted-off-outline: "\uEB71", card-bulleted-outline: "\uEB72", card-bulleted-settings: "\uEB73", card-bulleted-settings-outline: "\uEB74", card-minus: "\uF5FF", card-minus-outline: "\uF600", card-multiple: "\uF7F0", card-multiple-outline: "\uF7F1", card-off: "\uF601", card-off-outline: "\uF602", card-outline: "\uEB75", card-plus: "\uF1FE", card-plus-outline: "\uF1FF", card-remove: "\uF603", card-remove-outline: "\uF604", card-search: "\uF073", card-search-outline: "\uF074", card-text: "\uEB76", card-text-outline: "\uEB77", cards: "\uE637", cards-club: "\uE8CD", cards-club-outline: "\uF89E", cards-diamond: "\uE8CE", cards-diamond-outline: "\uF01C", cards-heart: "\uE8CF", cards-heart-outline: "\uF89F", cards-outline: "\uE638", cards-playing: "\uF8A0", cards-playing-club: "\uF8A1", cards-playing-club-multiple: "\uF8A2", cards-playing-club-multiple-outline: "\uF8A3", cards-playing-club-outline: "\uF8A4", cards-playing-diamond: "\uF8A5", cards-playing-diamond-multiple: "\uF8A6", cards-playing-diamond-multiple-outline: "\uF8A7", cards-playing-diamond-outline: "\uF8A8", cards-playing-heart: "\uF8A9", cards-playing-heart-multiple: "\uF8AA", cards-playing-heart-multiple-outline: "\uF8AB", cards-playing-heart-outline: "\uF8AC", cards-playing-outline: "\uE639", cards-playing-spade: "\uF8AD", cards-playing-spade-multiple: "\uF8AE", cards-playing-spade-multiple-outline: "\uF8AF", cards-playing-spade-outline: "\uF8B0", cards-spade: "\uE8D0", cards-spade-outline: "\uF8B1", cards-variant: "\uE6C6", carrot: "\uE10E", cart: "\uE10F", cart-arrow-down: "\uED65", cart-arrow-right: "\uEC4D", cart-arrow-up: "\uED66", cart-check: "\uF5E9", cart-heart: "\uF8DF", cart-minus: "\uED67", cart-off: "\uE66A", cart-outline: "\uE110", cart-plus: "\uE111", cart-remove: "\uED68", cart-variant: "\uF5EA", case-sensitive-alt: "\uE112", cash: "\uE113", cash-100: "\uE114", cash-check: "\uF4ED", cash-clock: "\uFA90", cash-fast: "\uF85B", cash-lock: "\uF4E9", cash-lock-open: "\uF4EA", cash-marker: "\uEDB7", cash-minus: "\uF25F", cash-multiple: "\uE115", cash-plus: "\uF260", cash-refund: "\uEA9B", cash-register: "\uECF3", cash-remove: "\uF261", cash-sync: "\uFA91", cassette: "\uE9D3", cast: "\uE117", cast-audio: "\uF01D", cast-audio-variant: "\uF748", cast-connected: "\uE118", cast-education: "\uEE1C", cast-off: "\uE789", cast-variant: "\uE01E", castle: "\uE119", cat: "\uE11A", cctv: "\uE7AD", cctv-off: "\uF85E", ceiling-fan: "\uF796", ceiling-fan-light: "\uF797", ceiling-light: "\uE768", ceiling-light-multiple: "\uF8DC", ceiling-light-multiple-outline: "\uF8DD", ceiling-light-outline: "\uF7C6", cellphone: "\uE11B", cellphone-arrow-down: "\uE9D4", cellphone-arrow-down-variant: "\uF9C4", cellphone-basic: "\uE11D", cellphone-charging: "\uF396", cellphone-check: "\uF7FC", cellphone-cog: "\uE950", cellphone-dock: "\uE11E", cellphone-information: "\uEF40", cellphone-key: "\uE94D", cellphone-link: "\uE120", cellphone-link-off: "\uE121", cellphone-lock: "\uE94E", cellphone-marker: "\uF839", cellphone-message: "\uE8D2", cellphone-message-off: "\uF0D1", cellphone-nfc: "\uEE8F", cellphone-nfc-off: "\uF2D7", cellphone-off: "\uE94F", cellphone-play: "\uF01E", cellphone-remove: "\uE94C", cellphone-screenshot: "\uEA34", cellphone-settings: "\uE122", cellphone-sound: "\uE951", cellphone-text: "\uE8D1", cellphone-wireless: "\uE814", centos: "\uF119", certificate: "\uE123", certificate-outline: "\uF187", chair-rolling: "\uEF47", chair-school: "\uE124", chandelier: "\uF792", charity: "\uEC4E", chart-arc: "\uE125", chart-areaspline: "\uE126", chart-areaspline-variant: "\uEE90", chart-bar: "\uE127", chart-bar-stacked: "\uE769", chart-bell-curve: "\uEC4F", chart-bell-curve-cumulative: "\uEFA6", chart-box: "\uF54C", chart-box-outline: "\uF54D", chart-box-plus-outline: "\uF54E", chart-bubble: "\uE5E2", chart-donut: "\uE7AE", chart-donut-variant: "\uE7AF", chart-gantt: "\uE66B", chart-histogram: "\uE128", chart-line: "\uE129", chart-line-stacked: "\uE76A", chart-line-variant: "\uE7B0", chart-multiline: "\uE8D3", chart-multiple: "\uF212", chart-pie: "\uE12A", chart-ppf: "\uF37F", chart-sankey: "\uF1DE", chart-sankey-variant: "\uF1DF", chart-scatter-plot: "\uEE91", chart-scatter-plot-hexbin: "\uE66C", chart-timeline: "\uE66D", chart-timeline-variant: "\uEE92", chart-timeline-variant-shimmer: "\uF5B5", chart-tree: "\uEE93", chart-waterfall: "\uF917", chat: "\uEB78", chat-alert: "\uEB79", chat-alert-outline: "\uF2C8", chat-minus: "\uF40F", chat-minus-outline: "\uF412", chat-outline: "\uEEDD", chat-plus: "\uF40E", chat-plus-outline: "\uF411", chat-processing: "\uEB7A", chat-processing-outline: "\uF2C9", chat-question: "\uF737", chat-question-outline: "\uF738", chat-remove: "\uF410", chat-remove-outline: "\uF413", chat-sleep: "\uF2D0", chat-sleep-outline: "\uF2D1", check: "\uE12B", check-all: "\uE12C", check-bold: "\uEE1D", check-circle: "\uE5DF", check-circle-outline: "\uE5E0", check-decagram: "\uE790", check-decagram-outline: "\uF73F", check-network: "\uEC52", check-network-outline: "\uEC53", check-outline: "\uE854", check-underline: "\uEE1E", check-underline-circle: "\uEE1F", check-underline-circle-outline: "\uEE20", checkbook: "\uEA9C", checkbox-blank: "\uE12D", checkbox-blank-badge: "\uF175", checkbox-blank-badge-outline: "\uE116", checkbox-blank-circle: "\uE12E", checkbox-blank-circle-outline: "\uE12F", checkbox-blank-off: "\uF2EB", checkbox-blank-off-outline: "\uF2EC", checkbox-blank-outline: "\uE130", checkbox-intermediate: "\uE855", checkbox-marked: "\uE131", checkbox-marked-circle: "\uE132", checkbox-marked-circle-outline: "\uE133", checkbox-marked-circle-plus-outline: "\uF926", checkbox-marked-outline: "\uE134", checkbox-multiple-blank: "\uE135", checkbox-multiple-blank-circle: "\uE63A", checkbox-multiple-blank-circle-outline: "\uE63B", checkbox-multiple-blank-outline: "\uE136", checkbox-multiple-marked: "\uE137", checkbox-multiple-marked-circle: "\uE63C", checkbox-multiple-marked-circle-outline: "\uE63D", checkbox-multiple-marked-outline: "\uE138", checkbox-multiple-outline: "\uEC50", checkbox-outline: "\uEC51", checkerboard: "\uE139", checkerboard-minus: "\uF201", checkerboard-plus: "\uF200", checkerboard-remove: "\uF202", cheese: "\uF2B8", cheese-off: "\uF3ED", chef-hat: "\uEB7B", chemical-weapon: "\uE13A", chess-bishop: "\uE85B", chess-king: "\uE856", chess-knight: "\uE857", chess-pawn: "\uE858", chess-queen: "\uE859", chess-rook: "\uE85A", chevron-double-down: "\uE13B", chevron-double-left: "\uE13C", chevron-double-right: "\uE13D", chevron-double-up: "\uE13E", chevron-down: "\uE13F", chevron-down-box: "\uE9D5", chevron-down-box-outline: "\uE9D6", chevron-down-circle: "\uEB25", chevron-down-circle-outline: "\uEB26", chevron-left: "\uE140", chevron-left-box: "\uE9D7", chevron-left-box-outline: "\uE9D8", chevron-left-circle: "\uEB27", chevron-left-circle-outline: "\uEB28", chevron-right: "\uE141", chevron-right-box: "\uE9D9", chevron-right-box-outline: "\uE9DA", chevron-right-circle: "\uEB29", chevron-right-circle-outline: "\uEB2A", chevron-triple-down: "\uEDB8", chevron-triple-left: "\uEDB9", chevron-triple-right: "\uEDBA", chevron-triple-up: "\uEDBB", chevron-up: "\uE142", chevron-up-box: "\uE9DB", chevron-up-box-outline: "\uE9DC", chevron-up-circle: "\uEB2B", chevron-up-circle-outline: "\uEB2C", chili-alert: "\uF7E9", chili-alert-outline: "\uF7EA", chili-hot: "\uE7B1", chili-hot-outline: "\uF7EB", chili-medium: "\uE7B2", chili-medium-outline: "\uF7EC", chili-mild: "\uE7B3", chili-mild-outline: "\uF7ED", chili-off: "\uF466", chili-off-outline: "\uF7EE", chip: "\uE619", church: "\uE143", cigar: "\uF188", cigar-off: "\uF41A", circle: "\uE764", circle-box: "\uF5DB", circle-box-outline: "\uF5DC", circle-double: "\uEE94", circle-edit-outline: "\uE8D4", circle-expand: "\uEE95", circle-half: "\uF394", circle-half-full: "\uF395", circle-medium: "\uE9DD", circle-multiple: "\uEB37", circle-multiple-outline: "\uE694", circle-off-outline: "\uF0D2", circle-opacity: "\uF852", circle-outline: "\uE765", circle-slice-1: "\uEA9D", circle-slice-2: "\uEA9E", circle-slice-3: "\uEA9F", circle-slice-4: "\uEAA0", circle-slice-5: "\uEAA1", circle-slice-6: "\uEAA2", circle-slice-7: "\uEAA3", circle-slice-8: "\uEAA4", circle-small: "\uE9DE", circular-saw: "\uEE21", city: "\uE145", city-variant: "\uEA35", city-variant-outline: "\uEA36", clipboard: "\uE146", clipboard-account: "\uE147", clipboard-account-outline: "\uEC54", clipboard-alert: "\uE148", clipboard-alert-outline: "\uECF6", clipboard-arrow-down: "\uE149", clipboard-arrow-down-outline: "\uEC55", clipboard-arrow-left: "\uE14A", clipboard-arrow-left-outline: "\uECF7", clipboard-arrow-right: "\uECF8", clipboard-arrow-right-outline: "\uECF9", clipboard-arrow-up: "\uEC56", clipboard-arrow-up-outline: "\uEC57", clipboard-check: "\uE14D", clipboard-check-multiple: "\uF262", clipboard-check-multiple-outline: "\uF263", clipboard-check-outline: "\uE8A7", clipboard-clock: "\uF6E1", clipboard-clock-outline: "\uF6E2", clipboard-edit: "\uF4E4", clipboard-edit-outline: "\uF4E5", clipboard-file: "\uF264", clipboard-file-outline: "\uF265", clipboard-flow: "\uE6C7", clipboard-flow-outline: "\uF116", clipboard-list: "\uF0D3", clipboard-list-outline: "\uF0D4", clipboard-minus: "\uF617", clipboard-minus-outline: "\uF618", clipboard-multiple: "\uF266", clipboard-multiple-outline: "\uF267", clipboard-off: "\uF619", clipboard-off-outline: "\uF61A", clipboard-outline: "\uE14B", clipboard-play: "\uEC58", clipboard-play-multiple: "\uF268", clipboard-play-multiple-outline: "\uF269", clipboard-play-outline: "\uEC59", clipboard-plus: "\uE750", clipboard-plus-outline: "\uF31E", clipboard-pulse: "\uE85C", clipboard-pulse-outline: "\uE85D", clipboard-remove: "\uF61B", clipboard-remove-outline: "\uF61C", clipboard-search: "\uF61D", clipboard-search-outline: "\uF61E", clipboard-text: "\uE14C", clipboard-text-clock: "\uF8F8", clipboard-text-clock-outline: "\uF8F9", clipboard-text-multiple: "\uF26A", clipboard-text-multiple-outline: "\uF26B", clipboard-text-off: "\uF61F", clipboard-text-off-outline: "\uF620", clipboard-text-outline: "\uEA37", clipboard-text-play: "\uEC5A", clipboard-text-play-outline: "\uEC5B", clipboard-text-search: "\uF621", clipboard-text-search-outline: "\uF622", clippy: "\uE14E", clock: "\uE953", clock-alert: "\uE954", clock-alert-outline: "\uE5CD", clock-check: "\uEFA7", clock-check-outline: "\uEFA8", clock-digital: "\uEE96", clock-edit: "\uF9B9", clock-edit-outline: "\uF9BA", clock-end: "\uE150", clock-fast: "\uE151", clock-in: "\uE152", clock-minus: "\uF862", clock-minus-outline: "\uF863", clock-out: "\uE153", clock-outline: "\uE14F", clock-plus: "\uF860", clock-plus-outline: "\uF861", clock-remove: "\uF864", clock-remove-outline: "\uF865", clock-start: "\uE154", clock-time-eight: "\uF445", clock-time-eight-outline: "\uF451", clock-time-eleven: "\uF448", clock-time-eleven-outline: "\uF454", clock-time-five: "\uF442", clock-time-five-outline: "\uF44E", clock-time-four: "\uF441", clock-time-four-outline: "\uF44D", clock-time-nine: "\uF446", clock-time-nine-outline: "\uF452", clock-time-one: "\uF43E", clock-time-one-outline: "\uF44A", clock-time-seven: "\uF444", clock-time-seven-outline: "\uF450", clock-time-six: "\uF443", clock-time-six-outline: "\uF44F", clock-time-ten: "\uF447", clock-time-ten-outline: "\uF453", clock-time-three: "\uF440", clock-time-three-outline: "\uF44C", clock-time-twelve: "\uF449", clock-time-twelve-outline: "\uF455", clock-time-two: "\uF43F", clock-time-two-outline: "\uF44B", close: "\uE155", close-box: "\uE156", close-box-multiple: "\uEC5C", close-box-multiple-outline: "\uEC5D", close-box-outline: "\uE157", close-circle: "\uE158", close-circle-multiple: "\uE629", close-circle-multiple-outline: "\uE882", close-circle-outline: "\uE159", close-network: "\uE15A", close-network-outline: "\uEC5E", close-octagon: "\uE15B", close-octagon-outline: "\uE15C", close-outline: "\uE6C8", close-thick: "\uF397", closed-caption: "\uE15D", closed-caption-outline: "\uEDBC", cloud: "\uE15E", cloud-alert: "\uE9DF", cloud-braces: "\uE7B4", cloud-check: "\uE15F", cloud-check-outline: "\uF2CB", cloud-circle: "\uE160", cloud-download: "\uE161", cloud-download-outline: "\uEB7C", cloud-lock: "\uF1F0", cloud-lock-outline: "\uF1F1", cloud-off-outline: "\uE163", cloud-outline: "\uE162", cloud-percent: "\uFA34", cloud-percent-outline: "\uFA35", cloud-print: "\uE164", cloud-print-outline: "\uE165", cloud-question: "\uEA38", cloud-refresh: "\uE529", cloud-search: "\uE955", cloud-search-outline: "\uE956", cloud-sync: "\uE63E", cloud-sync-outline: "\uF2D5", cloud-tags: "\uE7B5", cloud-upload: "\uE166", cloud-upload-outline: "\uEB7D", clover: "\uE815", coach-lamp: "\uF01F", coach-lamp-variant: "\uFA36", coat-rack: "\uF09D", code-array: "\uE167", code-braces: "\uE168", code-braces-box: "\uF0D5", code-brackets: "\uE169", code-equal: "\uE16A", code-greater-than: "\uE16B", code-greater-than-or-equal: "\uE16C", code-json: "\uE625", code-less-than: "\uE16D", code-less-than-or-equal: "\uE16E", code-not-equal: "\uE16F", code-not-equal-variant: "\uE170", code-parentheses: "\uE171", code-parentheses-box: "\uF0D6", code-string: "\uE172", code-tags: "\uE173", code-tags-check: "\uE693", codepen: "\uE174", coffee: "\uE175", coffee-maker: "\uF09E", coffee-maker-check: "\uF930", coffee-maker-check-outline: "\uF931", coffee-maker-outline: "\uF81A", coffee-off: "\uEFA9", coffee-off-outline: "\uEFAA", coffee-outline: "\uE6C9", coffee-to-go: "\uE176", coffee-to-go-outline: "\uF30D", coffin: "\uEB7E", cog: "\uE492", cog-box: "\uE493", cog-clockwise: "\uF1DC", cog-counterclockwise: "\uF1DD", cog-off: "\uF3CD", cog-off-outline: "\uF3CE", cog-outline: "\uE8BA", cog-pause: "\uF932", cog-pause-outline: "\uF933", cog-play: "\uF934", cog-play-outline: "\uF935", cog-refresh: "\uF45D", cog-refresh-outline: "\uF45E", cog-stop: "\uF936", cog-stop-outline: "\uF937", cog-sync: "\uF45F", cog-sync-outline: "\uF460", cog-transfer: "\uF05A", cog-transfer-outline: "\uF05B", cogs: "\uE8D5", collage: "\uE63F", collapse-all: "\uEAA5", collapse-all-outline: "\uEAA6", color-helper: "\uE178", comma: "\uEE22", comma-box: "\uEE2A", comma-box-outline: "\uEE23", comma-circle: "\uEE24", comma-circle-outline: "\uEE25", comment: "\uE179", comment-account: "\uE17A", comment-account-outline: "\uE17B", comment-alert: "\uE17C", comment-alert-outline: "\uE17D", comment-arrow-left: "\uE9E0", comment-arrow-left-outline: "\uE9E1", comment-arrow-right: "\uE9E2", comment-arrow-right-outline: "\uE9E3", comment-bookmark: "\uF5AD", comment-bookmark-outline: "\uF5AE", comment-check: "\uE17E", comment-check-outline: "\uE17F", comment-edit: "\uF1BE", comment-edit-outline: "\uF2C3", comment-eye: "\uEA39", comment-eye-outline: "\uEA3A", comment-flash: "\uF5AF", comment-flash-outline: "\uF5B0", comment-minus: "\uF5DE", comment-minus-outline: "\uF5DF", comment-multiple: "\uE85E", comment-multiple-outline: "\uE180", comment-off: "\uF5E0", comment-off-outline: "\uF5E1", comment-outline: "\uE181", comment-plus: "\uE9E4", comment-plus-outline: "\uE182", comment-processing: "\uE183", comment-processing-outline: "\uE184", comment-question: "\uE816", comment-question-outline: "\uE185", comment-quote: "\uF020", comment-quote-outline: "\uF021", comment-remove: "\uE5DD", comment-remove-outline: "\uE186", comment-search: "\uEA3B", comment-search-outline: "\uEA3C", comment-text: "\uE187", comment-text-multiple: "\uE85F", comment-text-multiple-outline: "\uE860", comment-text-outline: "\uE188", compare: "\uE189", compare-horizontal: "\uF491", compare-remove: "\uF8B2", compare-vertical: "\uF492", compass: "\uE18A", compass-off: "\uEB7F", compass-off-outline: "\uEB80", compass-outline: "\uE18B", compass-rose: "\uF381", compost: "\uFA37", cone: "\uF94B", cone-off: "\uF94C", connection: "\uF615", console: "\uE18C", console-line: "\uE7B6", console-network: "\uE8A8", console-network-outline: "\uEC5F", consolidate: "\uF0D7", contactless-payment: "\uED69", contactless-payment-circle: "\uE320", contactless-payment-circle-outline: "\uE407", contacts: "\uE6CA", contacts-outline: "\uE5B7", contain: "\uEA3D", contain-end: "\uEA3E", contain-start: "\uEA3F", content-copy: "\uE18E", content-cut: "\uE18F", content-duplicate: "\uE190", content-paste: "\uE191", content-save: "\uE192", content-save-alert: "\uEF41", content-save-alert-outline: "\uEF42", content-save-all: "\uE193", content-save-all-outline: "\uEF43", content-save-check: "\uF8E9", content-save-check-outline: "\uF8EA", content-save-cog: "\uF45A", content-save-cog-outline: "\uF45B", content-save-edit: "\uECFA", content-save-edit-outline: "\uECFB", content-save-move: "\uEE26", content-save-move-outline: "\uEE27", content-save-off: "\uF642", content-save-off-outline: "\uF643", content-save-outline: "\uE817", content-save-settings: "\uE61A", content-save-settings-outline: "\uEB2D", contrast: "\uE194", contrast-box: "\uE195", contrast-circle: "\uE196", controller-classic: "\uEB81", controller-classic-outline: "\uEB82", cookie: "\uE197", cookie-alert: "\uF6CF", cookie-alert-outline: "\uF6D0", cookie-check: "\uF6D1", cookie-check-outline: "\uF6D2", cookie-clock: "\uF6E3", cookie-clock-outline: "\uF6E4", cookie-cog: "\uF6D3", cookie-cog-outline: "\uF6D4", cookie-edit: "\uF6E5", cookie-edit-outline: "\uF6E6", cookie-lock: "\uF6E7", cookie-lock-outline: "\uF6E8", cookie-minus: "\uF6D9", cookie-minus-outline: "\uF6DA", cookie-off: "\uF6E9", cookie-off-outline: "\uF6EA", cookie-outline: "\uF6DD", cookie-plus: "\uF6D5", cookie-plus-outline: "\uF6D6", cookie-refresh: "\uF6EB", cookie-refresh-outline: "\uF6EC", cookie-remove: "\uF6D7", cookie-remove-outline: "\uF6D8", cookie-settings: "\uF6DB", cookie-settings-outline: "\uF6DC", coolant-temperature: "\uE3C7", copyleft: "\uF938", copyright: "\uE5E5", cordova: "\uE957", corn: "\uE7B7", corn-off: "\uF3EE", cosine-wave: "\uF478", counter: "\uE198", countertop: "\uF81B", countertop-outline: "\uF81C", cow: "\uE199", cow-off: "\uF8FB", cpu-32-bit: "\uEEDE", cpu-64-bit: "\uEEDF", cradle: "\uF98A", cradle-outline: "\uF990", crane: "\uE861", creation: "\uE673", creative-commons: "\uED6A", credit-card: "\uEFEE", credit-card-check: "\uF3CF", credit-card-check-outline: "\uF3D0", credit-card-chip: "\uF90E", credit-card-chip-outline: "\uF90F", credit-card-clock: "\uEEE0", credit-card-clock-outline: "\uEEE1", credit-card-edit: "\uF7D6", credit-card-edit-outline: "\uF7D7", credit-card-fast: "\uF910", credit-card-fast-outline: "\uF911", credit-card-lock: "\uF8E6", credit-card-lock-outline: "\uF8E7", credit-card-marker: "\uE6A7", credit-card-marker-outline: "\uEDBD", credit-card-minus: "\uEFAB", credit-card-minus-outline: "\uEFAC", credit-card-multiple: "\uEFEF", credit-card-multiple-outline: "\uE19B", credit-card-off: "\uEFF0", credit-card-off-outline: "\uE5E3", credit-card-outline: "\uE19A", credit-card-plus: "\uEFF1", credit-card-plus-outline: "\uE675", credit-card-refresh: "\uF644", credit-card-refresh-outline: "\uF645", credit-card-refund: "\uEFF2", credit-card-refund-outline: "\uEAA7", credit-card-remove: "\uEFAD", credit-card-remove-outline: "\uEFAE", credit-card-scan: "\uEFF3", credit-card-scan-outline: "\uE19C", credit-card-search: "\uF646", credit-card-search-outline: "\uF647", credit-card-settings: "\uEFF4", credit-card-settings-outline: "\uE8D6", credit-card-sync: "\uF648", credit-card-sync-outline: "\uF649", credit-card-wireless: "\uE801", credit-card-wireless-off: "\uE579", credit-card-wireless-off-outline: "\uE57A", credit-card-wireless-outline: "\uED6B", cricket: "\uED6C", crop: "\uE19D", crop-free: "\uE19E", crop-landscape: "\uE19F", crop-portrait: "\uE1A0", crop-rotate: "\uE695", crop-square: "\uE1A1", cross: "\uE952", cross-bolnisi: "\uECEC", cross-celtic: "\uECF4", cross-outline: "\uECF5", crosshairs: "\uE1A2", crosshairs-gps: "\uE1A3", crosshairs-off: "\uEF44", crosshairs-question: "\uF135", crowd: "\uF974", crown: "\uE1A4", crown-circle: "\uF7DB", crown-circle-outline: "\uF7DC", crown-outline: "\uF1CF", cryengine: "\uE958", crystal-ball: "\uEB2E", cube: "\uE1A5", cube-off: "\uF41B", cube-off-outline: "\uF41C", cube-outline: "\uE1A6", cube-scan: "\uEB83", cube-send: "\uE1A7", cube-unfolded: "\uE1A8", cup: "\uE1A9", cup-off: "\uE5E4", cup-off-outline: "\uF37C", cup-outline: "\uF30E", cup-water: "\uE1AA", cupboard: "\uEF45", cupboard-outline: "\uEF46", cupcake: "\uE959", curling: "\uE862", currency-bdt: "\uE863", currency-brl: "\uEB84", currency-btc: "\uE1AB", currency-cny: "\uE7B9", currency-eth: "\uE7BA", currency-eur: "\uE1AC", currency-eur-off: "\uF314", currency-fra: "\uFA38", currency-gbp: "\uE1AD", currency-ils: "\uEC60", currency-inr: "\uE1AE", currency-jpy: "\uE7BB", currency-krw: "\uE7BC", currency-kzt: "\uE864", currency-mnt: "\uF511", currency-ngn: "\uE1AF", currency-php: "\uE9E5", currency-rial: "\uEE9B", currency-rub: "\uE1B0", currency-rupee: "\uF975", currency-sign: "\uE7BD", currency-try: "\uE1B1", currency-twd: "\uE7BE", currency-usd: "\uE1C0", currency-usd-off: "\uE679", current-ac: "\uF47F", current-dc: "\uE95B", cursor-default: "\uE1BF", cursor-default-click: "\uECFC", cursor-default-click-outline: "\uECFD", cursor-default-gesture: "\uF126", cursor-default-gesture-outline: "\uF127", cursor-default-outline: "\uE1BE", cursor-move: "\uE1BD", cursor-pointer: "\uE1BC", cursor-text: "\uE5E6", curtains: "\uF845", curtains-closed: "\uF846", cylinder: "\uF94D", cylinder-off: "\uF94E", dance-ballroom: "\uF5FA", dance-pole: "\uF577", data-matrix: "\uF53B", data-matrix-edit: "\uF53C", data-matrix-minus: "\uF53D", data-matrix-plus: "\uF53E", data-matrix-remove: "\uF53F", data-matrix-scan: "\uF540", database: "\uE1BB", database-alert: "\uF639", database-alert-outline: "\uF623", database-arrow-down: "\uF63A", database-arrow-down-outline: "\uF624", database-arrow-left: "\uF63B", database-arrow-left-outline: "\uF625", database-arrow-right: "\uF63C", database-arrow-right-outline: "\uF626", database-arrow-up: "\uF63D", database-arrow-up-outline: "\uF627", database-check: "\uEAA8", database-check-outline: "\uF628", database-clock: "\uF63E", database-clock-outline: "\uF629", database-cog: "\uF64A", database-cog-outline: "\uF64B", database-edit: "\uEB85", database-edit-outline: "\uF62A", database-export: "\uE95D", database-export-outline: "\uF62B", database-eye: "\uF91E", database-eye-off: "\uF91F", database-eye-off-outline: "\uF920", database-eye-outline: "\uF921", database-import: "\uE95C", database-import-outline: "\uF62C", database-lock: "\uEAA9", database-lock-outline: "\uF62D", database-marker: "\uF2F5", database-marker-outline: "\uF62E", database-minus: "\uE1BA", database-minus-outline: "\uF62F", database-off: "\uF63F", database-off-outline: "\uF630", database-outline: "\uF631", database-plus: "\uE1B9", database-plus-outline: "\uF632", database-refresh: "\uE5C1", database-refresh-outline: "\uF633", database-remove: "\uECFF", database-remove-outline: "\uF634", database-search: "\uE865", database-search-outline: "\uF635", database-settings: "\uED00", database-settings-outline: "\uF636", database-sync: "\uECFE", database-sync-outline: "\uF637", death-star: "\uE8D7", death-star-variant: "\uE8D8", deathly-hallows: "\uEB86", debian: "\uE8D9", debug-step-into: "\uE1B8", debug-step-out: "\uE1B7", debug-step-over: "\uE1B6", decagram: "\uE76B", decagram-outline: "\uE76C", decimal: "\uF0A0", decimal-comma: "\uF0A1", decimal-comma-decrease: "\uF0A2", decimal-comma-increase: "\uF0A3", decimal-decrease: "\uE1B5", decimal-increase: "\uE1B4", delete: "\uE1B3", delete-alert: "\uF0A4", delete-alert-outline: "\uF0A5", delete-circle: "\uE682", delete-circle-outline: "\uEB87", delete-clock: "\uF555", delete-clock-outline: "\uF556", delete-empty: "\uE6CB", delete-empty-outline: "\uEE9C", delete-forever: "\uE5E7", delete-forever-outline: "\uEB88", delete-off: "\uF0A6", delete-off-outline: "\uF0A7", delete-outline: "\uE9E6", delete-restore: "\uE818", delete-sweep: "\uE5E8", delete-sweep-outline: "\uEC61", delete-variant: "\uE1B2", delta: "\uE1C1", desk: "\uF238", desk-lamp: "\uE95E", deskphone: "\uE1C2", desktop-classic: "\uE7BF", desktop-mac: "\uE1C3", desktop-mac-dashboard: "\uE9E7", desktop-tower: "\uE1C4", desktop-tower-monitor: "\uEAAA", details: "\uE1C5", dev-to: "\uED6D", developer-board: "\uE696", deviantart: "\uE1C6", devices: "\uEFAF", dharmachakra: "\uE94A", diabetes: "\uF125", dialpad: "\uE61B", diameter: "\uEC62", diameter-outline: "\uEC63", diameter-variant: "\uEC64", diamond: "\uEB89", diamond-outline: "\uEB8A", diamond-stone: "\uE1C7", dice-1: "\uE1C9", dice-1-outline: "\uF149", dice-2: "\uE1CA", dice-2-outline: "\uF14A", dice-3: "\uE1CB", dice-3-outline: "\uF14B", dice-4: "\uE1CC", dice-4-outline: "\uF14C", dice-5: "\uE1CD", dice-5-outline: "\uF14D", dice-6: "\uE1CE", dice-6-outline: "\uF14E", dice-d10: "\uF152", dice-d10-outline: "\uE76E", dice-d12: "\uF153", dice-d12-outline: "\uE866", dice-d20: "\uF154", dice-d20-outline: "\uE5E9", dice-d4: "\uF14F", dice-d4-outline: "\uE5EA", dice-d6: "\uF150", dice-d6-outline: "\uE5EC", dice-d8: "\uF151", dice-d8-outline: "\uE5EB", dice-multiple: "\uE76D", dice-multiple-outline: "\uF155", digital-ocean: "\uF236", dip-switch: "\uE7C0", directions: "\uE1CF", directions-fork: "\uE640", disc: "\uE5ED", disc-alert: "\uE1D0", disc-player: "\uE95F", discord: "\uE66E", dishwasher: "\uEAAB", dishwasher-alert: "\uF1B7", dishwasher-off: "\uF1B8", disqus: "\uE1D1", distribute-horizontal-center: "\uF1C8", distribute-horizontal-left: "\uF1C7", distribute-horizontal-right: "\uF1C9", distribute-vertical-bottom: "\uF1CA", distribute-vertical-center: "\uF1CB", distribute-vertical-top: "\uF1CC", diversify: "\uF876", diving: "\uF976", diving-flippers: "\uEDBE", diving-helmet: "\uEDBF", diving-scuba: "\uEDC0", diving-scuba-flag: "\uEDC1", diving-scuba-tank: "\uEDC2", diving-scuba-tank-multiple: "\uEDC3", diving-snorkel: "\uEDC4", division: "\uE1D3", division-box: "\uE1D4", dlna: "\uEA40", dna: "\uE683", dns: "\uE1D5", dns-outline: "\uEB8B", dock-bottom: "\uF0A8", dock-left: "\uF0A9", dock-right: "\uF0AA", dock-top: "\uF512", dock-window: "\uF0AB", docker: "\uE867", doctor: "\uEA41", dog: "\uEA42", dog-service: "\uEAAC", dog-side: "\uEA43", dog-side-off: "\uF6ED", dolby: "\uE6B2", dolly: "\uEE9D", dolphin: "\uF8B3", domain: "\uE1D6", domain-off: "\uED6E", domain-plus: "\uF0AC", domain-remove: "\uF0AD", dome-light: "\uF41D", domino-mask: "\uF022", donkey: "\uE7C1", door: "\uE819", door-closed: "\uE81A", door-closed-lock: "\uF0AE", door-open: "\uE81B", door-sliding: "\uF81D", door-sliding-lock: "\uF81E", door-sliding-open: "\uF81F", doorbell: "\uF2E5", doorbell-video: "\uE868", dot-net: "\uEAAD", dots-circle: "\uF977", dots-grid: "\uF5FB", dots-hexagon: "\uF5FE", dots-horizontal: "\uE1D7", dots-horizontal-circle: "\uE7C2", dots-horizontal-circle-outline: "\uEB8C", dots-square: "\uF5FC", dots-triangle: "\uF5FD", dots-vertical: "\uE1D8", dots-vertical-circle: "\uE7C3", dots-vertical-circle-outline: "\uEB8D", download: "\uE1D9", download-box: "\uF461", download-box-outline: "\uF462", download-circle: "\uF463", download-circle-outline: "\uF464", download-lock: "\uF31F", download-lock-outline: "\uF320", download-multiple: "\uE9E8", download-network: "\uE6F3", download-network-outline: "\uEC65", download-off: "\uF0AF", download-off-outline: "\uF0B0", download-outline: "\uEB8E", drag: "\uE1DA", drag-horizontal: "\uE1DB", drag-horizontal-variant: "\uF2EF", drag-variant: "\uEB8F", drag-vertical: "\uE1DC", drag-vertical-variant: "\uF2F0", drama-masks: "\uED01", draw: "\uEF48", draw-pen: "\uF9B8", drawing: "\uE1DD", drawing-box: "\uE1DE", dresser: "\uEF49", dresser-outline: "\uEF4A", drone: "\uE1E1", dropbox: "\uE1E2", drupal: "\uE1E3", duck: "\uE1E4", dumbbell: "\uE1E5", dump-truck: "\uEC66", ear-hearing: "\uE7C4", ear-hearing-loop: "\uFAED", ear-hearing-off: "\uEA44", earbuds: "\uF84E", earbuds-off: "\uF84F", earbuds-off-outline: "\uF850", earbuds-outline: "\uF851", earth: "\uE1E6", earth-arrow-right: "\uF310", earth-box: "\uE6CC", earth-box-minus: "\uF406", earth-box-off: "\uE6CD", earth-box-plus: "\uF405", earth-box-remove: "\uF407", earth-minus: "\uF403", earth-off: "\uE1E7", earth-plus: "\uF402", earth-remove: "\uF404", egg: "\uEAAE", egg-easter: "\uEAAF", egg-fried: "\uF849", egg-off: "\uF3EF", egg-off-outline: "\uF3F0", egg-outline: "\uF3F1", eiffel-tower: "\uF56A", eight-track: "\uE9E9", eject: "\uE1E9", eject-outline: "\uEB90", electric-switch: "\uEE9E", electric-switch-closed: "\uF0D8", electron-framework: "\uF023", elephant: "\uE7C5", elevation-decline: "\uE1EA", elevation-rise: "\uE1EB", elevator: "\uE1EC", elevator-down: "\uF2C1", elevator-passenger: "\uF380", elevator-passenger-off: "\uF978", elevator-passenger-off-outline: "\uF979", elevator-passenger-outline: "\uF97A", elevator-up: "\uF2C0", ellipse: "\uEE9F", ellipse-outline: "\uEEA0", email: "\uE1ED", email-alert: "\uE6CE", email-alert-outline: "\uED41", email-box: "\uED02", email-check: "\uEAB0", email-check-outline: "\uEAB1", email-edit: "\uEEE2", email-edit-outline: "\uEEE3", email-fast: "\uF86E", email-fast-outline: "\uF86F", email-lock: "\uE1F0", email-mark-as-unread: "\uEB91", email-minus: "\uEEE4", email-minus-outline: "\uEEE5", email-multiple: "\uEEE6", email-multiple-outline: "\uEEE7", email-newsletter: "\uEFB0", email-off: "\uF3E2", email-off-outline: "\uF3E3", email-open: "\uE1EE", email-open-multiple: "\uEEE8", email-open-multiple-outline: "\uEEE9", email-open-outline: "\uE5EE", email-outline: "\uE1EF", email-plus: "\uE9EA", email-plus-outline: "\uE9EB", email-receive: "\uF0D9", email-receive-outline: "\uF0DA", email-remove: "\uF660", email-remove-outline: "\uF661", email-seal: "\uF95A", email-seal-outline: "\uF95B", email-search: "\uE960", email-search-outline: "\uE961", email-send: "\uF0DB", email-send-outline: "\uF0DC", email-sync: "\uF2C6", email-sync-outline: "\uF2C7", email-variant: "\uE5EF", ember: "\uEB2F", emby: "\uE6B3", emoticon: "\uEC67", emoticon-angry: "\uEC68", emoticon-angry-outline: "\uEC69", emoticon-confused: "\uF0DD", emoticon-confused-outline: "\uF0DE", emoticon-cool: "\uEC6A", emoticon-cool-outline: "\uE1F2", emoticon-cry: "\uEC6B", emoticon-cry-outline: "\uEC6C", emoticon-dead: "\uEC6D", emoticon-dead-outline: "\uE69A", emoticon-devil: "\uEC6E", emoticon-devil-outline: "\uE1F3", emoticon-excited: "\uEC6F", emoticon-excited-outline: "\uE69B", emoticon-frown: "\uEF4B", emoticon-frown-outline: "\uEF4C", emoticon-happy: "\uEC70", emoticon-happy-outline: "\uE1F4", emoticon-kiss: "\uEC71", emoticon-kiss-outline: "\uEC72", emoticon-lol: "\uF213", emoticon-lol-outline: "\uF214", emoticon-neutral: "\uEC73", emoticon-neutral-outline: "\uE1F5", emoticon-outline: "\uE1F1", emoticon-poop: "\uE1F6", emoticon-poop-outline: "\uEC74", emoticon-sad: "\uEC75", emoticon-sad-outline: "\uE1F7", emoticon-sick: "\uF57B", emoticon-sick-outline: "\uF57C", emoticon-tongue: "\uE1F8", emoticon-tongue-outline: "\uEC76", emoticon-wink: "\uEC77", emoticon-wink-outline: "\uEC78", engine: "\uE1F9", engine-off: "\uEA45", engine-off-outline: "\uEA46", engine-outline: "\uE1FA", epsilon: "\uF0DF", equal: "\uE1FB", equal-box: "\uE1FC", equalizer: "\uEEA1", equalizer-outline: "\uEEA2", eraser: "\uE1FD", eraser-variant: "\uE641", escalator: "\uE1FE", escalator-box: "\uF398", escalator-down: "\uF2BF", escalator-up: "\uF2BE", eslint: "\uEC79", et: "\uEAB2", ethereum: "\uE869", ethernet: "\uE1FF", ethernet-cable: "\uE200", ethernet-cable-off: "\uE201", ev-plug-ccs1: "\uF518", ev-plug-ccs2: "\uF519", ev-plug-chademo: "\uF51A", ev-plug-tesla: "\uF51B", ev-plug-type1: "\uF51C", ev-plug-type2: "\uF51D", ev-station: "\uE5F0", evernote: "\uE203", excavator: "\uF024", exclamation: "\uE204", exclamation-thick: "\uF237", exit-run: "\uEA47", exit-to-app: "\uE205", expand-all: "\uEAB3", expand-all-outline: "\uEAB4", expansion-card: "\uE8AD", expansion-card-variant: "\uEFB1", exponent: "\uE962", exponent-box: "\uE963", export: "\uE206", export-variant: "\uEB92", eye: "\uE207", eye-arrow-left: "\uF8FC", eye-arrow-left-outline: "\uF8FD", eye-arrow-right: "\uF8FE", eye-arrow-right-outline: "\uF8FF", eye-check: "\uED03", eye-check-outline: "\uED04", eye-circle: "\uEB93", eye-circle-outline: "\uEB94", eye-minus: "\uF025", eye-minus-outline: "\uF026", eye-off: "\uE208", eye-off-outline: "\uE6D0", eye-outline: "\uE6CF", eye-plus: "\uE86A", eye-plus-outline: "\uE86B", eye-refresh: "\uF97B", eye-refresh-outline: "\uF97C", eye-remove: "\uF5E2", eye-remove-outline: "\uF5E3", eye-settings: "\uE86C", eye-settings-outline: "\uE86D", eyedropper: "\uE209", eyedropper-minus: "\uF3DC", eyedropper-off: "\uF3DE", eyedropper-plus: "\uF3DB", eyedropper-remove: "\uF3DD", eyedropper-variant: "\uE20A", face-agent: "\uED6F", face-man: "\uE642", face-man-outline: "\uEB95", face-man-profile: "\uE643", face-man-shimmer: "\uF5CB", face-man-shimmer-outline: "\uF5CC", face-mask: "\uF585", face-mask-outline: "\uF586", face-recognition: "\uEC7A", face-woman: "\uF076", face-woman-outline: "\uF077", face-woman-profile: "\uF075", face-woman-shimmer: "\uF5CD", face-woman-shimmer-outline: "\uF5CE", facebook: "\uE20B", facebook-gaming: "\uE7DC", facebook-messenger: "\uE20D", facebook-workplace: "\uEB30", factory: "\uE20E", family-tree: "\uF60D", fan: "\uE20F", fan-alert: "\uF46B", fan-auto: "\uF71C", fan-chevron-down: "\uF46C", fan-chevron-up: "\uF46D", fan-clock: "\uFA39", fan-minus: "\uF46F", fan-off: "\uE81C", fan-plus: "\uF46E", fan-remove: "\uF470", fan-speed-1: "\uF471", fan-speed-2: "\uF472", fan-speed-3: "\uF473", fast-forward: "\uE210", fast-forward-10: "\uED70", fast-forward-15: "\uF939", fast-forward-30: "\uED05", fast-forward-5: "\uF1F7", fast-forward-60: "\uF60A", fast-forward-outline: "\uE6D1", fax: "\uE211", feather: "\uE6D2", feature-search: "\uEA48", feature-search-outline: "\uEA49", fedora: "\uE8DA", fence: "\uF799", fence-electric: "\uF7F5", fencing: "\uF4C0", ferris-wheel: "\uEEA3", ferry: "\uE212", file: "\uE213", file-account: "\uE73A", file-account-outline: "\uF027", file-alert: "\uEA4A", file-alert-outline: "\uEA4B", file-arrow-left-right: "\uFA92", file-arrow-left-right-outline: "\uFA93", file-arrow-up-down: "\uFA94", file-arrow-up-down-outline: "\uFA95", file-cabinet: "\uEAB5", file-cad: "\uEEEA", file-cad-box: "\uEEEB", file-cancel: "\uEDC5", file-cancel-outline: "\uEDC6", file-certificate: "\uF185", file-certificate-outline: "\uF186", file-chart: "\uE214", file-chart-check: "\uF9C5", file-chart-check-outline: "\uF9C6", file-chart-outline: "\uF028", file-check: "\uE215", file-check-outline: "\uEE28", file-clock: "\uF2E0", file-clock-outline: "\uF2E1", file-cloud: "\uE216", file-cloud-outline: "\uF029", file-code: "\uE22D", file-code-outline: "\uF02A", file-cog: "\uF07A", file-cog-outline: "\uF07B", file-compare: "\uE8A9", file-delimited: "\uE217", file-delimited-outline: "\uEEA4", file-document: "\uE218", file-document-alert: "\uFA96", file-document-alert-outline: "\uFA97", file-document-check: "\uFA98", file-document-check-outline: "\uFA99", file-document-edit: "\uEDC7", file-document-edit-outline: "\uEDC8", file-document-minus: "\uFA9A", file-document-minus-outline: "\uFA9B", file-document-multiple: "\uF516", file-document-multiple-outline: "\uF517", file-document-outline: "\uE9ED", file-document-plus: "\uFA9C", file-document-plus-outline: "\uFA9D", file-document-remove: "\uFA9E", file-document-remove-outline: "\uFA9F", file-download: "\uE964", file-download-outline: "\uE965", file-edit: "\uF1E6", file-edit-outline: "\uF1E7", file-excel: "\uE21A", file-excel-box: "\uE21B", file-excel-box-outline: "\uF02B", file-excel-outline: "\uF02C", file-export: "\uE21C", file-export-outline: "\uF02D", file-eye: "\uEDC9", file-eye-outline: "\uEDCA", file-find: "\uE21D", file-find-outline: "\uEB96", file-gif-box: "\uED77", file-hidden: "\uE612", file-image: "\uE21E", file-image-marker: "\uF771", file-image-marker-outline: "\uF772", file-image-minus: "\uF93A", file-image-minus-outline: "\uF93B", file-image-outline: "\uEEAF", file-image-plus: "\uF93C", file-image-plus-outline: "\uF93D", file-image-remove: "\uF93E", file-image-remove-outline: "\uF93F", file-import: "\uE21F", file-import-outline: "\uF02E", file-jpg-box: "\uE224", file-key: "\uF183", file-key-outline: "\uF184", file-link: "\uF176", file-link-outline: "\uF177", file-lock: "\uE220", file-lock-open: "\uF9C7", file-lock-open-outline: "\uF9C8", file-lock-outline: "\uF02F", file-marker: "\uF773", file-marker-outline: "\uF774", file-minus: "\uFAA0", file-minus-outline: "\uFAA1", file-move: "\uEAB8", file-move-outline: "\uF030", file-multiple: "\uE221", file-multiple-outline: "\uF031", file-music: "\uE222", file-music-outline: "\uEE29", file-outline: "\uE223", file-pdf-box: "\uE225", file-percent: "\uE81D", file-percent-outline: "\uF032", file-phone: "\uF178", file-phone-outline: "\uF179", file-plus: "\uE751", file-plus-outline: "\uEEEC", file-png-box: "\uEE2C", file-powerpoint: "\uE226", file-powerpoint-box: "\uE227", file-powerpoint-box-outline: "\uF033", file-powerpoint-outline: "\uF034", file-presentation-box: "\uE228", file-question: "\uE86E", file-question-outline: "\uF035", file-refresh: "\uE917", file-refresh-outline: "\uE540", file-remove: "\uEB97", file-remove-outline: "\uF036", file-replace: "\uEB31", file-replace-outline: "\uEB32", file-restore: "\uE66F", file-restore-outline: "\uF037", file-rotate-left: "\uFA3A", file-rotate-left-outline: "\uFA3B", file-rotate-right: "\uFA3C", file-rotate-right-outline: "\uFA3D", file-search: "\uEC7B", file-search-outline: "\uEC7C", file-send: "\uE229", file-send-outline: "\uF038", file-settings: "\uF078", file-settings-outline: "\uF079", file-sign: "\uF9C2", file-star: "\uF039", file-star-outline: "\uF03A", file-swap: "\uEFB3", file-swap-outline: "\uEFB4", file-sync: "\uF215", file-sync-outline: "\uF216", file-table: "\uEC7D", file-table-box: "\uF0E0", file-table-box-multiple: "\uF0E1", file-table-box-multiple-outline: "\uF0E2", file-table-box-outline: "\uF0E3", file-table-outline: "\uEC7E", file-tree: "\uE644", file-tree-outline: "\uF3D1", file-undo: "\uE8DB", file-undo-outline: "\uF03B", file-upload: "\uEA4C", file-upload-outline: "\uEA4D", file-video: "\uE22A", file-video-outline: "\uEE2B", file-word: "\uE22B", file-word-box: "\uE22C", file-word-box-outline: "\uF03C", file-word-outline: "\uF03D", film: "\uE22E", filmstrip: "\uE22F", filmstrip-box: "\uE331", filmstrip-box-multiple: "\uED17", filmstrip-off: "\uE230", filter: "\uE231", filter-check: "\uF8EB", filter-check-outline: "\uF8EC", filter-cog: "\uFAA2", filter-cog-outline: "\uFAA3", filter-menu: "\uF0E4", filter-menu-outline: "\uF0E5", filter-minus: "\uEEED", filter-minus-outline: "\uEEEE", filter-multiple: "\uFA3E", filter-multiple-outline: "\uFA3F", filter-off: "\uF4EE", filter-off-outline: "\uF4EF", filter-outline: "\uE232", filter-plus: "\uEEEF", filter-plus-outline: "\uEEF0", filter-remove: "\uE233", filter-remove-outline: "\uE234", filter-settings: "\uFAA4", filter-settings-outline: "\uFAA5", filter-variant: "\uE235", filter-variant-minus: "\uF111", filter-variant-plus: "\uF112", filter-variant-remove: "\uF03E", finance: "\uE81E", find-replace: "\uE6D3", fingerprint: "\uE236", fingerprint-off: "\uEEB0", fire: "\uE237", fire-alert: "\uF5D6", fire-circle: "\uF806", fire-extinguisher: "\uEEF1", fire-hydrant: "\uF136", fire-hydrant-alert: "\uF137", fire-hydrant-off: "\uF138", fire-off: "\uF721", fire-truck: "\uE8AA", firebase: "\uE966", firefox: "\uE238", fireplace: "\uEE2D", fireplace-off: "\uEE2E", firewire: "\uE5BD", firework: "\uEE2F", firework-off: "\uF722", fish: "\uE239", fish-off: "\uF3F2", fishbowl: "\uEEF2", fishbowl-outline: "\uEEF3", fit-to-page: "\uEEF4", fit-to-page-outline: "\uEEF5", fit-to-screen: "\uF8F3", fit-to-screen-outline: "\uF8F4", flag: "\uE23A", flag-checkered: "\uE23B", flag-minus: "\uEB98", flag-minus-outline: "\uF0B1", flag-off: "\uF8ED", flag-off-outline: "\uF8EE", flag-outline: "\uE23C", flag-plus: "\uEB99", flag-plus-outline: "\uF0B2", flag-remove: "\uEB9A", flag-remove-outline: "\uF0B3", flag-triangle: "\uE23E", flag-variant: "\uE23F", flag-variant-outline: "\uE23D", flare: "\uED71", flash: "\uE240", flash-alert: "\uEEF6", flash-alert-outline: "\uEEF7", flash-auto: "\uE241", flash-off: "\uE242", flash-outline: "\uE6D4", flash-red-eye: "\uE67A", flashlight: "\uE243", flashlight-off: "\uE244", flask: "\uE092", flask-empty: "\uE093", flask-empty-minus: "\uF239", flask-empty-minus-outline: "\uF23A", flask-empty-off: "\uF3F3", flask-empty-off-outline: "\uF3F4", flask-empty-outline: "\uE094", flask-empty-plus: "\uF23B", flask-empty-plus-outline: "\uF23C", flask-empty-remove: "\uF23D", flask-empty-remove-outline: "\uF23E", flask-minus: "\uF23F", flask-minus-outline: "\uF240", flask-off: "\uF3F5", flask-off-outline: "\uF3F6", flask-outline: "\uE095", flask-plus: "\uF241", flask-plus-outline: "\uF242", flask-remove: "\uF243", flask-remove-outline: "\uF244", flask-round-bottom: "\uF24A", flask-round-bottom-empty: "\uF24B", flask-round-bottom-empty-outline: "\uF24C", flask-round-bottom-outline: "\uF24D", fleur-de-lis: "\uF302", flip-horizontal: "\uF0E6", flip-to-back: "\uE246", flip-to-front: "\uE247", flip-vertical: "\uF0E7", floor-lamp: "\uE8DC", floor-lamp-dual: "\uF03F", floor-lamp-dual-outline: "\uF7CD", floor-lamp-outline: "\uF7C7", floor-lamp-torchiere: "\uF746", floor-lamp-torchiere-outline: "\uF7D5", floor-lamp-torchiere-variant: "\uF040", floor-lamp-torchiere-variant-outline: "\uF7CE", floor-plan: "\uE820", floppy: "\uE248", floppy-variant: "\uE9EE", flower: "\uE249", flower-outline: "\uE9EF", flower-pollen: "\uF884", flower-pollen-outline: "\uF885", flower-poppy: "\uED07", flower-tulip: "\uE9F0", flower-tulip-outline: "\uE9F1", focus-auto: "\uEF4D", focus-field: "\uEF4E", focus-field-horizontal: "\uEF4F", focus-field-vertical: "\uEF50", folder: "\uE24A", folder-account: "\uE24B", folder-account-outline: "\uEB9B", folder-alert: "\uEDCB", folder-alert-outline: "\uEDCC", folder-arrow-down: "\uF9E7", folder-arrow-down-outline: "\uF9E8", folder-arrow-left: "\uF9E9", folder-arrow-left-outline: "\uF9EA", folder-arrow-left-right: "\uF9EB", folder-arrow-left-right-outline: "\uF9EC", folder-arrow-right: "\uF9ED", folder-arrow-right-outline: "\uF9EE", folder-arrow-up: "\uF9EF", folder-arrow-up-down: "\uF9F0", folder-arrow-up-down-outline: "\uF9F1", folder-arrow-up-outline: "\uF9F2", folder-cancel: "\uF9F3", folder-cancel-outline: "\uF9F4", folder-check: "\uF97D", folder-check-outline: "\uF97E", folder-clock: "\uEAB9", folder-clock-outline: "\uEABA", folder-cog: "\uF07E", folder-cog-outline: "\uF07F", folder-download: "\uE24C", folder-download-outline: "\uF0E8", folder-edit: "\uE8DD", folder-edit-outline: "\uEDCD", folder-eye: "\uF789", folder-eye-outline: "\uF78A", folder-file: "\uF9F5", folder-file-outline: "\uF9F6", folder-google-drive: "\uE24D", folder-heart: "\uF0E9", folder-heart-outline: "\uF0EA", folder-hidden: "\uF79D", folder-home: "\uF0B4", folder-home-outline: "\uF0B5", folder-image: "\uE24E", folder-information: "\uF0B6", folder-information-outline: "\uF0B7", folder-key: "\uE8AB", folder-key-network: "\uE8AC", folder-key-network-outline: "\uEC7F", folder-key-outline: "\uF0EB", folder-lock: "\uE24F", folder-lock-open: "\uE250", folder-lock-open-outline: "\uFAA6", folder-lock-outline: "\uFAA7", folder-marker: "\uF26C", folder-marker-outline: "\uF26D", folder-move: "\uE251", folder-move-outline: "\uF245", folder-multiple: "\uE252", folder-multiple-image: "\uE253", folder-multiple-outline: "\uE254", folder-multiple-plus: "\uF47D", folder-multiple-plus-outline: "\uF47E", folder-music: "\uF358", folder-music-outline: "\uF359", folder-network: "\uE86F", folder-network-outline: "\uEC80", folder-off: "\uF9F7", folder-off-outline: "\uF9F8", folder-open: "\uE76F", folder-open-outline: "\uEDCE", folder-outline: "\uE255", folder-play: "\uF9F9", folder-play-outline: "\uF9FA", folder-plus: "\uE256", folder-plus-outline: "\uEB9C", folder-pound: "\uED08", folder-pound-outline: "\uED09", folder-question: "\uF9C9", folder-question-outline: "\uF9CA", folder-refresh: "\uE748", folder-refresh-outline: "\uE541", folder-remove: "\uE257", folder-remove-outline: "\uEB9D", folder-search: "\uE967", folder-search-outline: "\uE968", folder-settings: "\uF07C", folder-settings-outline: "\uF07D", folder-star: "\uE69C", folder-star-multiple: "\uF3D2", folder-star-multiple-outline: "\uF3D3", folder-star-outline: "\uEB9E", folder-swap: "\uEFB5", folder-swap-outline: "\uEFB6", folder-sync: "\uED0A", folder-sync-outline: "\uED0B", folder-table: "\uF2E2", folder-table-outline: "\uF2E3", folder-text: "\uEC81", folder-text-outline: "\uEC82", folder-upload: "\uE258", folder-upload-outline: "\uF0EC", folder-wrench: "\uF9FB", folder-wrench-outline: "\uF9FC", folder-zip: "\uE6EA", folder-zip-outline: "\uE7B8", font-awesome: "\uE039", food: "\uE259", food-apple: "\uE25A", food-apple-outline: "\uEC83", food-croissant: "\uE7C7", food-drumstick: "\uF41E", food-drumstick-off: "\uF467", food-drumstick-off-outline: "\uF468", food-drumstick-outline: "\uF41F", food-fork-drink: "\uE5F1", food-halal: "\uF571", food-hot-dog: "\uF84A", food-kosher: "\uF572", food-off: "\uE5F2", food-off-outline: "\uF914", food-outline: "\uF915", food-steak: "\uF469", food-steak-off: "\uF46A", food-takeout-box: "\uF835", food-takeout-box-outline: "\uF836", food-turkey: "\uF71B", food-variant: "\uE25B", food-variant-off: "\uF3E4", foot-print: "\uEF51", football: "\uE25C", football-australian: "\uE25D", football-helmet: "\uE25E", forest: "\uF896", forklift: "\uE7C8", form-dropdown: "\uF3FF", form-select: "\uF400", form-textarea: "\uF094", form-textbox: "\uE60D", form-textbox-lock: "\uF35C", form-textbox-password: "\uE7F4", format-align-bottom: "\uE752", format-align-center: "\uE25F", format-align-justify: "\uE260", format-align-left: "\uE261", format-align-middle: "\uE753", format-align-right: "\uE262", format-align-top: "\uE754", format-annotation-minus: "\uEABB", format-annotation-plus: "\uE645", format-bold: "\uE263", format-clear: "\uE264", format-color-fill: "\uE265", format-color-highlight: "\uEE30", format-color-marker-cancel: "\uF312", format-color-text: "\uE69D", format-columns: "\uE8DE", format-float-center: "\uE266", format-float-left: "\uE267", format-float-none: "\uE268", format-float-right: "\uE269", format-font: "\uE6D5", format-font-size-decrease: "\uE9F2", format-font-size-increase: "\uE9F3", format-header-1: "\uE26A", format-header-2: "\uE26B", format-header-3: "\uE26C", format-header-4: "\uE26D", format-header-5: "\uE26E", format-header-6: "\uE26F", format-header-decrease: "\uE270", format-header-equal: "\uE271", format-header-increase: "\uE272", format-header-pound: "\uE273", format-horizontal-align-center: "\uE61D", format-horizontal-align-left: "\uE61E", format-horizontal-align-right: "\uE61F", format-indent-decrease: "\uE274", format-indent-increase: "\uE275", format-italic: "\uE276", format-letter-case: "\uEB33", format-letter-case-lower: "\uEB34", format-letter-case-upper: "\uEB35", format-letter-ends-with: "\uEFB7", format-letter-matches: "\uEFB8", format-letter-spacing: "\uF955", format-letter-starts-with: "\uEFB9", format-line-spacing: "\uE277", format-line-style: "\uE5C7", format-line-weight: "\uE5C8", format-list-bulleted: "\uE278", format-list-bulleted-square: "\uEDCF", format-list-bulleted-triangle: "\uEEB1", format-list-bulleted-type: "\uE279", format-list-checkbox: "\uE969", format-list-checks: "\uE755", format-list-group: "\uF85F", format-list-numbered: "\uE27A", format-list-numbered-rtl: "\uED0C", format-list-text: "\uF26E", format-overline: "\uEEB2", format-page-break: "\uE6D6", format-page-split: "\uF916", format-paint: "\uE27B", format-paragraph: "\uE27C", format-pilcrow: "\uE6D7", format-quote-close: "\uE27D", format-quote-close-outline: "\uF1A7", format-quote-open: "\uE756", format-quote-open-outline: "\uF1A6", format-rotate-90: "\uE6A9", format-section: "\uE69E", format-size: "\uE27E", format-strikethrough: "\uE27F", format-strikethrough-variant: "\uE280", format-subscript: "\uE281", format-superscript: "\uE282", format-text: "\uE283", format-text-rotation-angle-down: "\uEFBA", format-text-rotation-angle-up: "\uEFBB", format-text-rotation-down: "\uED72", format-text-rotation-down-vertical: "\uEFBC", format-text-rotation-none: "\uED73", format-text-rotation-up: "\uEFBD", format-text-rotation-vertical: "\uEFBE", format-text-variant: "\uEE31", format-text-variant-outline: "\uF50E", format-text-wrapping-clip: "\uED0D", format-text-wrapping-overflow: "\uED0E", format-text-wrapping-wrap: "\uED0F", format-textbox: "\uED10", format-textdirection-l-to-r: "\uE284", format-textdirection-r-to-l: "\uE285", format-title: "\uE5F3", format-underline: "\uE286", format-underline-wavy: "\uF8E8", format-vertical-align-bottom: "\uE620", format-vertical-align-center: "\uE621", format-vertical-align-top: "\uE622", format-wrap-inline: "\uE287", format-wrap-square: "\uE288", format-wrap-tight: "\uE289", format-wrap-top-bottom: "\uE28A", forum: "\uE28B", forum-minus: "\uFAA8", forum-minus-outline: "\uFAA9", forum-outline: "\uE821", forum-plus: "\uFAAA", forum-plus-outline: "\uFAAB", forum-remove: "\uFAAC", forum-remove-outline: "\uFAAD", forward: "\uE28C", forwardburger: "\uED74", fountain: "\uE96A", fountain-pen: "\uED11", fountain-pen-tip: "\uED12", fraction-one-half: "\uF991", freebsd: "\uE8DF", french-fries: "\uF956", frequently-asked-questions: "\uEEB3", fridge: "\uE28F", fridge-alert: "\uF1B0", fridge-alert-outline: "\uF1B1", fridge-bottom: "\uE291", fridge-industrial: "\uF5ED", fridge-industrial-alert: "\uF5EE", fridge-industrial-alert-outline: "\uF5EF", fridge-industrial-off: "\uF5F0", fridge-industrial-off-outline: "\uF5F1", fridge-industrial-outline: "\uF5F2", fridge-off: "\uF1AE", fridge-off-outline: "\uF1AF", fridge-outline: "\uE28E", fridge-top: "\uE290", fridge-variant: "\uF5F3", fridge-variant-alert: "\uF5F4", fridge-variant-alert-outline: "\uF5F5", fridge-variant-off: "\uF5F6", fridge-variant-off-outline: "\uF5F7", fridge-variant-outline: "\uF5F8", fruit-cherries: "\uF041", fruit-cherries-off: "\uF3F7", fruit-citrus: "\uF042", fruit-citrus-off: "\uF3F8", fruit-grapes: "\uF043", fruit-grapes-outline: "\uF044", fruit-pear: "\uFA0D", fruit-pineapple: "\uF045", fruit-watermelon: "\uF046", fuel: "\uE7C9", fuel-cell: "\uF8B4", fullscreen: "\uE292", fullscreen-exit: "\uE293", function: "\uE294", function-variant: "\uE870", furigana-horizontal: "\uF080", furigana-vertical: "\uF081", fuse: "\uEC84", fuse-alert: "\uF42C", fuse-blade: "\uEC85", fuse-off: "\uF42B", gamepad: "\uE295", gamepad-circle: "\uEE32", gamepad-circle-down: "\uEE33", gamepad-circle-left: "\uEE34", gamepad-circle-outline: "\uEE35", gamepad-circle-right: "\uEE36", gamepad-circle-up: "\uEE37", gamepad-down: "\uEE38", gamepad-left: "\uEE39", gamepad-outline: "\uF918", gamepad-right: "\uEE3A", gamepad-round: "\uEE3B", gamepad-round-down: "\uEE3C", gamepad-round-left: "\uEE3D", gamepad-round-outline: "\uEE3E", gamepad-round-right: "\uEE3F", gamepad-round-up: "\uEE40", gamepad-square: "\uEEB4", gamepad-square-outline: "\uEEB5", gamepad-up: "\uEE41", gamepad-variant: "\uE296", gamepad-variant-outline: "\uEEB6", gamma: "\uF0ED", gantry-crane: "\uEDD0", garage: "\uE6D8", garage-alert: "\uE871", garage-alert-variant: "\uF2D4", garage-lock: "\uF7FA", garage-open: "\uE6D9", garage-open-variant: "\uF2D3", garage-variant: "\uF2D2", garage-variant-lock: "\uF7FB", gas-burner: "\uFA1A", gas-cylinder: "\uE646", gas-station: "\uE297", gas-station-off: "\uF408", gas-station-off-outline: "\uF409", gas-station-outline: "\uEEB7", gate: "\uE298", gate-alert: "\uF7F7", gate-and: "\uE8E0", gate-arrow-left: "\uF7F6", gate-arrow-right: "\uF168", gate-nand: "\uE8E1", gate-nor: "\uE8E2", gate-not: "\uE8E3", gate-open: "\uF169", gate-or: "\uE8E4", gate-xnor: "\uE8E5", gate-xor: "\uE8E6", gatsby: "\uEE42", gauge: "\uE299", gauge-empty: "\uE872", gauge-full: "\uE873", gauge-low: "\uE874", gavel: "\uE29A", gender-female: "\uE29B", gender-male: "\uE29C", gender-male-female: "\uE29D", gender-male-female-variant: "\uF13E", gender-non-binary: "\uF13F", gender-transgender: "\uE29E", gentoo: "\uE8E7", gesture: "\uE7CA", gesture-double-tap: "\uE73B", gesture-pinch: "\uEABC", gesture-spread: "\uEABD", gesture-swipe: "\uED75", gesture-swipe-down: "\uE73C", gesture-swipe-horizontal: "\uEABE", gesture-swipe-left: "\uE73D", gesture-swipe-right: "\uE73E", gesture-swipe-up: "\uE73F", gesture-swipe-vertical: "\uEABF", gesture-tap: "\uE740", gesture-tap-box: "\uF2A8", gesture-tap-button: "\uF2A7", gesture-tap-hold: "\uED76", gesture-two-double-tap: "\uE741", gesture-two-tap: "\uE742", ghost: "\uE29F", ghost-off: "\uE9F4", ghost-off-outline: "\uF65B", ghost-outline: "\uF65C", gift: "\uEE43", gift-off: "\uF6EE", gift-off-outline: "\uF6EF", gift-open: "\uF6F0", gift-open-outline: "\uF6F1", gift-outline: "\uE2A0", git: "\uE2A1", github: "\uE2A3", gitlab: "\uEB9F", glass-cocktail: "\uE355", glass-cocktail-off: "\uF5E5", glass-flute: "\uE2A4", glass-fragile: "\uF872", glass-mug: "\uE2A5", glass-mug-off: "\uF5E6", glass-mug-variant: "\uF115", glass-mug-variant-off: "\uF5E7", glass-pint-outline: "\uF30C", glass-stange: "\uE2A6", glass-tulip: "\uE2A7", glass-wine: "\uE875", glasses: "\uE2A9", globe-light: "\uF2D6", globe-model: "\uE8E8", gmail: "\uE2AA", gnome: "\uE2AB", go-kart: "\uED78", go-kart-track: "\uED79", gog: "\uEBA0", gold: "\uF24E", golf: "\uE822", golf-cart: "\uF1A3", golf-tee: "\uF082", gondola: "\uE685", goodreads: "\uED7A", google: "\uE2AC", google-ads: "\uEC86", google-analytics: "\uE7CB", google-assistant: "\uE7CC", google-cardboard: "\uE2AD", google-chrome: "\uE2AE", google-circles: "\uE2AF", google-circles-communities: "\uE2B0", google-circles-extended: "\uE2B1", google-circles-group: "\uE2B2", google-classroom: "\uE2BF", google-cloud: "\uF1F5", google-controller: "\uE2B3", google-controller-off: "\uE2B4", google-downasaur: "\uF361", google-drive: "\uE2B5", google-earth: "\uE2B6", google-fit: "\uE96B", google-glass: "\uE2B7", google-hangouts: "\uE2C8", google-home: "\uE823", google-keep: "\uE6DB", google-lens: "\uE9F5", google-maps: "\uE5F4", google-my-business: "\uF047", google-nearby: "\uE2B8", google-play: "\uE2BB", google-plus: "\uE2BC", google-podcast: "\uEEB8", google-spreadsheet: "\uE9F6", google-street-view: "\uEC87", google-translate: "\uE2BE", gradient-horizontal: "\uF749", gradient-vertical: "\uE69F", grain: "\uED7B", graph: "\uF048", graph-outline: "\uF049", graphql: "\uE876", grass: "\uF50F", grave-stone: "\uEBA1", grease-pencil: "\uE647", greater-than: "\uE96C", greater-than-or-equal: "\uE96D", greenhouse: "\uE02C", grid: "\uE2C0", grid-large: "\uE757", grid-off: "\uE2C1", grill: "\uEE44", grill-outline: "\uF189", group: "\uE2C2", guitar-acoustic: "\uE770", guitar-electric: "\uE2C3", guitar-pick: "\uE2C4", guitar-pick-outline: "\uE2C5", guy-fawkes-mask: "\uE824", gymnastics: "\uFA40", hail: "\uEAC0", hair-dryer: "\uF0EE", hair-dryer-outline: "\uF0EF", halloween: "\uEBA2", hamburger: "\uE684", hamburger-check: "\uF775", hamburger-minus: "\uF776", hamburger-off: "\uF777", hamburger-plus: "\uF778", hamburger-remove: "\uF779", hammer: "\uE8E9", hammer-screwdriver: "\uF321", hammer-sickle: "\uF886", hammer-wrench: "\uF322", hand-back-left: "\uEE45", hand-back-left-off: "\uF82F", hand-back-left-off-outline: "\uF831", hand-back-left-outline: "\uF82B", hand-back-right: "\uEE46", hand-back-right-off: "\uF830", hand-back-right-off-outline: "\uF832", hand-back-right-outline: "\uF82C", hand-clap: "\uF94A", hand-clap-off: "\uFA41", hand-coin: "\uF88E", hand-coin-outline: "\uF88F", hand-extended: "\uF8B5", hand-extended-outline: "\uF8B6", hand-front-left: "\uF82A", hand-front-left-outline: "\uF82D", hand-front-right: "\uEA4E", hand-front-right-outline: "\uF82E", hand-heart: "\uF0F0", hand-heart-outline: "\uF57D", hand-okay: "\uEA4F", hand-peace: "\uEA50", hand-peace-variant: "\uEA51", hand-pointing-down: "\uEA52", hand-pointing-left: "\uEA53", hand-pointing-right: "\uE2C6", hand-pointing-up: "\uEA54", hand-saw: "\uEE47", hand-wash: "\uF57E", hand-wash-outline: "\uF57F", hand-water: "\uF39E", hand-wave: "\uF820", hand-wave-outline: "\uF821", handball: "\uEF52", handcuffs: "\uF13D", hands-pray: "\uE578", handshake: "\uF217", handshake-outline: "\uF5A0", hanger: "\uE2C7", hard-hat: "\uE96E", harddisk: "\uE2C9", harddisk-plus: "\uF04A", harddisk-remove: "\uF04B", hat-fedora: "\uEBA3", hazard-lights: "\uEC88", hdr: "\uED7C", hdr-off: "\uED7D", head: "\uF35D", head-alert: "\uF337", head-alert-outline: "\uF338", head-check: "\uF339", head-check-outline: "\uF33A", head-cog: "\uF33B", head-cog-outline: "\uF33C", head-dots-horizontal: "\uF33D", head-dots-horizontal-outline: "\uF33E", head-flash: "\uF33F", head-flash-outline: "\uF340", head-heart: "\uF341", head-heart-outline: "\uF342", head-lightbulb: "\uF343", head-lightbulb-outline: "\uF344", head-minus: "\uF345", head-minus-outline: "\uF346", head-outline: "\uF35E", head-plus: "\uF347", head-plus-outline: "\uF348", head-question: "\uF349", head-question-outline: "\uF34A", head-remove: "\uF34B", head-remove-outline: "\uF34C", head-snowflake: "\uF34D", head-snowflake-outline: "\uF34E", head-sync: "\uF34F", head-sync-outline: "\uF350", headphones: "\uE2CA", headphones-bluetooth: "\uE96F", headphones-box: "\uE2CB", headphones-off: "\uE7CD", headphones-settings: "\uE2CC", headset: "\uE2CD", headset-dock: "\uE2CE", headset-off: "\uE2CF", heart: "\uE2D0", heart-box: "\uE2D1", heart-box-outline: "\uE2D2", heart-broken: "\uE2D3", heart-broken-outline: "\uED13", heart-circle: "\uE970", heart-circle-outline: "\uE971", heart-cog: "\uF662", heart-cog-outline: "\uF663", heart-flash: "\uEEF8", heart-half: "\uE6DE", heart-half-full: "\uE6DD", heart-half-outline: "\uE6DF", heart-minus: "\uF42E", heart-minus-outline: "\uF431", heart-multiple: "\uEA55", heart-multiple-outline: "\uEA56", heart-off: "\uE758", heart-off-outline: "\uF433", heart-outline: "\uE2D4", heart-plus: "\uF42D", heart-plus-outline: "\uF430", heart-pulse: "\uE5F5", heart-remove: "\uF42F", heart-remove-outline: "\uF432", heart-settings: "\uF664", heart-settings-outline: "\uF665", heat-pump: "\uFA42", heat-pump-outline: "\uFA43", heat-wave: "\uFA44", heating-coil: "\uFAAE", helicopter: "\uEAC1", help: "\uE2D5", help-box: "\uE78A", help-circle: "\uE2D6", help-circle-outline: "\uE624", help-network: "\uE6F4", help-network-outline: "\uEC89", help-rhombus: "\uEBA4", help-rhombus-outline: "\uEBA5", hexadecimal: "\uF2A6", hexagon: "\uE2D7", hexagon-multiple: "\uE6E0", hexagon-multiple-outline: "\uF0F1", hexagon-outline: "\uE2D8", hexagon-slice-1: "\uEAC2", hexagon-slice-2: "\uEAC3", hexagon-slice-3: "\uEAC4", hexagon-slice-4: "\uEAC5", hexagon-slice-5: "\uEAC6", hexagon-slice-6: "\uEAC7", hexagram: "\uEAC8", hexagram-outline: "\uEAC9", high-definition: "\uE7CE", high-definition-box: "\uE877", highway: "\uE5F6", hiking: "\uED7E", history: "\uE2D9", hockey-puck: "\uE878", hockey-sticks: "\uE879", hololens: "\uE2DA", home: "\uE2DB", home-account: "\uE825", home-alert: "\uE87A", home-alert-outline: "\uF5CF", home-analytics: "\uEEB9", home-assistant: "\uE7CF", home-automation: "\uE7D0", home-battery: "\uF900", home-battery-outline: "\uF901", home-circle: "\uE7D1", home-circle-outline: "\uF04C", home-city: "\uED14", home-city-outline: "\uED15", home-clock: "\uFA11", home-clock-outline: "\uFA12", home-edit: "\uF158", home-edit-outline: "\uF159", home-export-outline: "\uEF9A", home-flood: "\uEEF9", home-floor-0: "\uEDD1", home-floor-1: "\uED7F", home-floor-2: "\uED80", home-floor-3: "\uED81", home-floor-a: "\uED82", home-floor-b: "\uED83", home-floor-g: "\uED84", home-floor-l: "\uED85", home-floor-negative-1: "\uEDD2", home-group: "\uEDD3", home-group-minus: "\uF9C0", home-group-plus: "\uF9BF", home-group-remove: "\uF9C1", home-heart: "\uE826", home-import-outline: "\uEF9B", home-lightbulb: "\uF250", home-lightbulb-outline: "\uF251", home-lightning-bolt: "\uF902", home-lightning-bolt-outline: "\uF903", home-lock: "\uE8EA", home-lock-open: "\uE8EB", home-map-marker: "\uE5F7", home-minus: "\uE973", home-minus-outline: "\uF3D4", home-modern: "\uE2DC", home-off: "\uFA45", home-off-outline: "\uFA46", home-outline: "\uE6A0", home-plus: "\uE974", home-plus-outline: "\uF3D5", home-remove: "\uF246", home-remove-outline: "\uF3D6", home-roof: "\uF12A", home-search: "\uF3AF", home-search-outline: "\uF3B0", home-switch: "\uF793", home-switch-outline: "\uF794", home-thermometer: "\uEF53", home-thermometer-outline: "\uEF54", home-variant: "\uE2DD", home-variant-outline: "\uEBA6", hook: "\uE6E1", hook-off: "\uE6E2", hoop-house: "\uEE55", hops: "\uE2DE", horizontal-rotate-clockwise: "\uF0F2", horizontal-rotate-counterclockwise: "\uF0F3", horse: "\uF5BE", horse-human: "\uF5BF", horse-variant: "\uF5C0", horse-variant-fast: "\uF86D", horseshoe: "\uEA57", hospital: "\uEFF5", hospital-box: "\uE2DF", hospital-box-outline: "\uEFF6", hospital-building: "\uE2E0", hospital-marker: "\uE2E1", hot-tub: "\uE827", hours-24: "\uF477", hubspot: "\uED16", hulu: "\uE828", human: "\uE2E5", human-baby-changing-table: "\uF38A", human-cane: "\uF580", human-capacity-decrease: "\uF59A", human-capacity-increase: "\uF59B", human-child: "\uE2E6", human-dolly: "\uF97F", human-edit: "\uF4E7", human-female: "\uE648", human-female-boy: "\uEA58", human-female-dance: "\uF5C8", human-female-female: "\uEA59", human-female-girl: "\uEA5A", human-greeting: "\uF7C3", human-greeting-proximity: "\uF59C", human-greeting-variant: "\uE649", human-handsdown: "\uE64A", human-handsup: "\uE64B", human-male: "\uE64C", human-male-board: "\uE88F", human-male-board-poll: "\uE845", human-male-boy: "\uEA5B", human-male-child: "\uF38B", human-male-female: "\uE2E7", human-male-female-child: "\uF822", human-male-girl: "\uEA5C", human-male-height: "\uEEFA", human-male-height-variant: "\uEEFB", human-male-male: "\uEA5D", human-non-binary: "\uF847", human-pregnant: "\uE5CE", human-queue: "\uF570", human-scooter: "\uF1E8", human-wheelchair: "\uF38C", human-white-cane: "\uF980", humble-bundle: "\uE743", hvac: "\uF351", hvac-off: "\uF59D", hydraulic-oil-level: "\uF323", hydraulic-oil-temperature: "\uF324", hydro-power: "\uF2E4", hydrogen-station: "\uF893", ice-cream: "\uE829", ice-cream-off: "\uEE51", ice-pop: "\uEEFC", id-card: "\uEFBF", identifier: "\uEEFD", ideogram-cjk: "\uF330", ideogram-cjk-variant: "\uF331", image: "\uE2E8", image-album: "\uE2E9", image-area: "\uE2EA", image-area-close: "\uE2EB", image-auto-adjust: "\uEFC0", image-broken: "\uE2EC", image-broken-variant: "\uE2ED", image-edit: "\uF1E2", image-edit-outline: "\uF1E3", image-filter-black-white: "\uE2EF", image-filter-center-focus: "\uE2F0", image-filter-center-focus-strong: "\uEEFE", image-filter-center-focus-strong-outline: "\uEEFF", image-filter-center-focus-weak: "\uE2F1", image-filter-drama: "\uE2F2", image-filter-frames: "\uE2F3", image-filter-hdr: "\uE2F4", image-filter-none: "\uE2F5", image-filter-tilt-shift: "\uE2F6", image-filter-vintage: "\uE2F7", image-frame: "\uEE48", image-lock: "\uFAAF", image-lock-outline: "\uFAB0", image-marker: "\uF77A", image-marker-outline: "\uF77B", image-minus: "\uF418", image-move: "\uE9F7", image-multiple: "\uE2F8", image-multiple-outline: "\uE2EE", image-off: "\uE82A", image-off-outline: "\uF1D0", image-outline: "\uE975", image-plus: "\uE87B", image-refresh: "\uF9FD", image-refresh-outline: "\uF9FE", image-remove: "\uF417", image-search: "\uE976", image-search-outline: "\uE977", image-size-select-actual: "\uEC8C", image-size-select-large: "\uEC8D", image-size-select-small: "\uEC8E", image-sync: "\uF9FF", image-sync-outline: "\uFA00", image-text: "\uF60C", import: "\uE2F9", inbox: "\uE686", inbox-arrow-down: "\uE2FA", inbox-arrow-down-outline: "\uF26F", inbox-arrow-up: "\uE3D0", inbox-arrow-up-outline: "\uF270", inbox-full: "\uF271", inbox-full-outline: "\uF272", inbox-multiple: "\uE8AF", inbox-multiple-outline: "\uEBA7", inbox-outline: "\uF273", inbox-remove: "\uF59E", inbox-remove-outline: "\uF59F", incognito: "\uE5F8", incognito-circle: "\uF420", incognito-circle-off: "\uF421", incognito-off: "\uE074", induction: "\uF84B", infinity: "\uE6E3", information: "\uE2FB", information-off: "\uF78B", information-off-outline: "\uF78C", information-outline: "\uE2FC", information-variant: "\uE64D", instagram: "\uE2FD", instrument-triangle: "\uF04D", integrated-circuit-chip: "\uF912", invert-colors: "\uE300", invert-colors-off: "\uEE49", iobroker: "\uF2E7", ip: "\uEA5E", ip-network: "\uEA5F", ip-network-outline: "\uEC8F", ip-outline: "\uF981", ipod: "\uEC90", iron: "\uF823", iron-board: "\uF837", iron-outline: "\uF824", island: "\uF04E", iv-bag: "\uF0B8", jabber: "\uEDD4", jeepney: "\uE301", jellyfish: "\uEF00", jellyfish-outline: "\uEF01", jira: "\uE302", jquery: "\uE87C", jsfiddle: "\uE303", jump-rope: "\uF2FE", kabaddi: "\uED86", kangaroo: "\uF557", karate: "\uE82B", kayaking: "\uE8AE", keg: "\uE304", kettle: "\uE5F9", kettle-alert: "\uF316", kettle-alert-outline: "\uF317", kettle-off: "\uF31A", kettle-off-outline: "\uF31B", kettle-outline: "\uEF55", kettle-pour-over: "\uF73B", kettle-steam: "\uF318", kettle-steam-outline: "\uF319", kettlebell: "\uF2FF", key: "\uE305", key-alert: "\uF982", key-alert-outline: "\uF983", key-arrow-right: "\uF311", key-chain: "\uF573", key-chain-variant: "\uF574", key-change: "\uE306", key-link: "\uF19E", key-minus: "\uE307", key-outline: "\uEDD5", key-plus: "\uE308", key-remove: "\uE309", key-star: "\uF19D", key-variant: "\uE30A", key-wireless: "\uEFC1", keyboard: "\uE30B", keyboard-backspace: "\uE30C", keyboard-caps: "\uE30D", keyboard-close: "\uE30E", keyboard-esc: "\uF2B6", keyboard-f1: "\uF2AA", keyboard-f10: "\uF2B3", keyboard-f11: "\uF2B4", keyboard-f12: "\uF2B5", keyboard-f2: "\uF2AB", keyboard-f3: "\uF2AC", keyboard-f4: "\uF2AD", keyboard-f5: "\uF2AE", keyboard-f6: "\uF2AF", keyboard-f7: "\uF2B0", keyboard-f8: "\uF2B1", keyboard-f9: "\uF2B2", keyboard-off: "\uE30F", keyboard-off-outline: "\uEE4A", keyboard-outline: "\uE97A", keyboard-return: "\uE310", keyboard-settings: "\uE9F8", keyboard-settings-outline: "\uE9F9", keyboard-space: "\uF04F", keyboard-tab: "\uE311", keyboard-tab-reverse: "\uE324", keyboard-variant: "\uE312", khanda: "\uF0FC", kickstarter: "\uE744", kite: "\uF984", kite-outline: "\uF985", kitesurfing: "\uF743", klingon: "\uF35A", knife: "\uE9FA", knife-military: "\uE9FB", koala: "\uF73E", kodi: "\uE313", kubernetes: "\uF0FD", label: "\uE314", label-multiple: "\uF374", label-multiple-outline: "\uF375", label-off: "\uEACA", label-off-outline: "\uEACB", label-outline: "\uE315", label-percent: "\uF2E9", label-percent-outline: "\uF2EA", label-variant: "\uEACC", label-variant-outline: "\uEACD", ladder: "\uF5A1", ladybug: "\uE82C", lambda: "\uE626", lamp: "\uE6B4", lamp-outline: "\uF7CF", lamps: "\uF575", lamps-outline: "\uF7D0", lan: "\uE316", lan-check: "\uF2A9", lan-connect: "\uE317", lan-disconnect: "\uE318", lan-pending: "\uE319", land-fields: "\uFAB1", land-plots: "\uFAB2", land-plots-circle: "\uFAB3", land-plots-circle-variant: "\uFAB4", land-rows-horizontal: "\uFAB5", land-rows-vertical: "\uFAB6", landslide: "\uFA47", landslide-outline: "\uFA48", language-c: "\uE670", language-cpp: "\uE671", language-csharp: "\uE31A", language-css3: "\uE31B", language-fortran: "\uF219", language-go: "\uE7D2", language-haskell: "\uEC91", language-html5: "\uE31C", language-java: "\uEB36", language-javascript: "\uE31D", language-kotlin: "\uF218", language-lua: "\uE8B0", language-markdown: "\uE353", language-markdown-outline: "\uEF5A", language-php: "\uE31E", language-python: "\uE31F", language-r: "\uE7D3", language-ruby: "\uED2C", language-ruby-on-rails: "\uEACE", language-rust: "\uF616", language-swift: "\uE6E4", language-typescript: "\uE6E5", language-xaml: "\uE672", laptop: "\uE321", laptop-account: "\uFA49", laptop-off: "\uE6E6", laravel: "\uEACF", laser-pointer: "\uF483", lasso: "\uEF02", lastpass: "\uE445", latitude: "\uEF56", launch: "\uE326", lava-lamp: "\uE7D4", layers: "\uE327", layers-edit: "\uF891", layers-minus: "\uEE4B", layers-off: "\uE328", layers-off-outline: "\uE9FC", layers-outline: "\uE9FD", layers-plus: "\uEE4C", layers-remove: "\uEE4D", layers-search: "\uF205", layers-search-outline: "\uF206", layers-triple: "\uEF57", layers-triple-outline: "\uEF58", lead-pencil: "\uE64E", leaf: "\uE329", leaf-circle: "\uF904", leaf-circle-outline: "\uF905", leaf-maple: "\uEC92", leaf-maple-off: "\uF2D9", leaf-off: "\uF2D8", leak: "\uEDD6", leak-off: "\uEDD7", lecturn: "\uFAEF", led-off: "\uE32A", led-on: "\uE32B", led-outline: "\uE32C", led-strip: "\uE7D5", led-strip-variant: "\uF050", led-strip-variant-off: "\uFA4A", led-variant-off: "\uE32D", led-variant-on: "\uE32E", led-variant-outline: "\uE32F", leek: "\uF17C", less-than: "\uE97B", less-than-or-equal: "\uE97C", library: "\uE330", library-outline: "\uFA21", library-shelves: "\uEBA8", license: "\uEFC2", lifebuoy: "\uE87D", light-flood-down: "\uF986", light-flood-up: "\uF987", light-recessed: "\uF79A", light-switch: "\uE97D", light-switch-off: "\uFA23", lightbulb: "\uE334", lightbulb-alert: "\uF9E0", lightbulb-alert-outline: "\uF9E1", lightbulb-auto: "\uF7FF", lightbulb-auto-outline: "\uF800", lightbulb-cfl: "\uF207", lightbulb-cfl-off: "\uF208", lightbulb-cfl-spiral: "\uF274", lightbulb-cfl-spiral-off: "\uF2C2", lightbulb-fluorescent-tube: "\uF803", lightbulb-fluorescent-tube-outline: "\uF804", lightbulb-group: "\uF252", lightbulb-group-off: "\uF2CC", lightbulb-group-off-outline: "\uF2CD", lightbulb-group-outline: "\uF253", lightbulb-multiple: "\uF254", lightbulb-multiple-off: "\uF2CE", lightbulb-multiple-off-outline: "\uF2CF", lightbulb-multiple-outline: "\uF255", lightbulb-night: "\uFA4B", lightbulb-night-outline: "\uFA4C", lightbulb-off: "\uEE4E", lightbulb-off-outline: "\uEE4F", lightbulb-on: "\uE6E7", lightbulb-on-10: "\uFA4D", lightbulb-on-20: "\uFA4E", lightbulb-on-30: "\uFA4F", lightbulb-on-40: "\uFA50", lightbulb-on-50: "\uFA51", lightbulb-on-60: "\uFA52", lightbulb-on-70: "\uFA53", lightbulb-on-80: "\uFA54", lightbulb-on-90: "\uFA55", lightbulb-on-outline: "\uE6E8", lightbulb-outline: "\uE335", lightbulb-question: "\uF9E2", lightbulb-question-outline: "\uF9E3", lightbulb-spot: "\uF7F3", lightbulb-spot-off: "\uF7F4", lightbulb-variant: "\uF801", lightbulb-variant-outline: "\uF802", lighthouse: "\uE9FE", lighthouse-on: "\uE9FF", lightning-bolt: "\uF40A", lightning-bolt-circle: "\uE81F", lightning-bolt-outline: "\uF40B", line-scan: "\uE623", lingerie: "\uF475", link: "\uE336", link-box: "\uED19", link-box-outline: "\uED1A", link-box-variant: "\uED1B", link-box-variant-outline: "\uED1C", link-lock: "\uF0B9", link-off: "\uE337", link-plus: "\uEC93", link-variant: "\uE338", link-variant-minus: "\uF0FE", link-variant-off: "\uE339", link-variant-plus: "\uF0FF", link-variant-remove: "\uF100", linkedin: "\uE33A", linux: "\uE33C", linux-mint: "\uE8EC", lipstick: "\uF3B4", liquid-spot: "\uF825", liquor: "\uF91D", list-status: "\uF5AA", litecoin: "\uEA60", loading: "\uE771", location-enter: "\uEFC3", location-exit: "\uEFC4", lock: "\uE33D", lock-alert: "\uE8ED", lock-alert-outline: "\uF5D0", lock-check: "\uF399", lock-check-outline: "\uF6A7", lock-clock: "\uE97E", lock-minus: "\uF6A8", lock-minus-outline: "\uF6A9", lock-off: "\uF670", lock-off-outline: "\uF671", lock-open: "\uE33E", lock-open-alert: "\uF39A", lock-open-alert-outline: "\uF5D1", lock-open-check: "\uF39B", lock-open-check-outline: "\uF6AA", lock-open-minus: "\uF6AB", lock-open-minus-outline: "\uF6AC", lock-open-outline: "\uE33F", lock-open-plus: "\uF6AD", lock-open-plus-outline: "\uF6AE", lock-open-remove: "\uF6AF", lock-open-remove-outline: "\uF6B0", lock-open-variant: "\uEFC5", lock-open-variant-outline: "\uEFC6", lock-outline: "\uE340", lock-pattern: "\uE6E9", lock-plus: "\uE5FA", lock-plus-outline: "\uF6B1", lock-question: "\uE8EE", lock-remove: "\uF6B2", lock-remove-outline: "\uF6B3", lock-reset: "\uE772", lock-smart: "\uE8B1", locker: "\uE7D6", locker-multiple: "\uE7D7", login: "\uE341", login-variant: "\uE5FB", logout: "\uE342", logout-variant: "\uE5FC", longitude: "\uEF59", looks: "\uE343", lotion: "\uF581", lotion-outline: "\uF582", lotion-plus: "\uF583", lotion-plus-outline: "\uF584", loupe: "\uE344", lumx: "\uE345", lungs: "\uF083", mace: "\uF842", magazine-pistol: "\uE323", magazine-rifle: "\uE322", magic-staff: "\uF843", magnet: "\uE346", magnet-on: "\uE347", magnify: "\uE348", magnify-close: "\uE97F", magnify-expand: "\uF873", magnify-minus: "\uE349", magnify-minus-cursor: "\uEA61", magnify-minus-outline: "\uE6EB", magnify-plus: "\uE34A", magnify-plus-cursor: "\uEA62", magnify-plus-outline: "\uE6EC", magnify-remove-cursor: "\uF20B", magnify-remove-outline: "\uF20C", magnify-scan: "\uF275", mail: "\uEEBA", mailbox: "\uE6ED", mailbox-open: "\uED87", mailbox-open-outline: "\uED88", mailbox-open-up: "\uED89", mailbox-open-up-outline: "\uED8A", mailbox-outline: "\uED8B", mailbox-up: "\uED8C", mailbox-up-outline: "\uED8D", manjaro: "\uF609", map: "\uE34C", map-check: "\uEEBB", map-check-outline: "\uEEBC", map-clock: "\uED1D", map-clock-outline: "\uED1E", map-legend: "\uEA00", map-marker: "\uE34D", map-marker-account: "\uF8E2", map-marker-account-outline: "\uF8E3", map-marker-alert: "\uEF04", map-marker-alert-outline: "\uEF05", map-marker-check: "\uEC94", map-marker-check-outline: "\uF2FA", map-marker-circle: "\uE34E", map-marker-distance: "\uE8EF", map-marker-down: "\uF101", map-marker-left: "\uF2DA", map-marker-left-outline: "\uF2DC", map-marker-minus: "\uE64F", map-marker-minus-outline: "\uF2F8", map-marker-multiple: "\uE34F", map-marker-multiple-outline: "\uF276", map-marker-off: "\uE350", map-marker-off-outline: "\uF2FC", map-marker-outline: "\uE7D8", map-marker-path: "\uED1F", map-marker-plus: "\uE650", map-marker-plus-outline: "\uF2F7", map-marker-question: "\uEF06", map-marker-question-outline: "\uEF07", map-marker-radius: "\uE351", map-marker-radius-outline: "\uF2FB", map-marker-remove: "\uEF08", map-marker-remove-outline: "\uF2F9", map-marker-remove-variant: "\uEF09", map-marker-right: "\uF2DB", map-marker-right-outline: "\uF2DD", map-marker-star: "\uF607", map-marker-star-outline: "\uF608", map-marker-up: "\uF102", map-minus: "\uE980", map-outline: "\uE981", map-plus: "\uE982", map-search: "\uE983", map-search-outline: "\uE984", mapbox: "\uEBA9", margin: "\uE352", marker: "\uE651", marker-cancel: "\uEDD8", marker-check: "\uE354", mastodon: "\uEAD0", material-design: "\uE985", material-ui: "\uE356", math-compass: "\uE357", math-cos: "\uEC95", math-integral: "\uEFC7", math-integral-box: "\uEFC8", math-log: "\uF084", math-norm: "\uEFC9", math-norm-box: "\uEFCA", math-sin: "\uEC96", math-tan: "\uEC97", matrix: "\uE627", medal: "\uE986", medal-outline: "\uF325", medical-bag: "\uE6EE", medical-cotton-swab: "\uFAB7", meditation: "\uF17A", memory: "\uE35A", menorah: "\uF7D3", menorah-fire: "\uF7D4", menu: "\uE35B", menu-down: "\uE35C", menu-down-outline: "\uE6B5", menu-left: "\uE35D", menu-left-outline: "\uEA01", menu-open: "\uEBAA", menu-right: "\uE35E", menu-right-outline: "\uEA02", menu-swap: "\uEA63", menu-swap-outline: "\uEA64", menu-up: "\uE35F", menu-up-outline: "\uE6B6", merge: "\uEF5B", message: "\uE360", message-alert: "\uE361", message-alert-outline: "\uEA03", message-arrow-left: "\uF2F1", message-arrow-left-outline: "\uF2F2", message-arrow-right: "\uF2F3", message-arrow-right-outline: "\uF2F4", message-badge: "\uF940", message-badge-outline: "\uF941", message-bookmark: "\uF5AB", message-bookmark-outline: "\uF5AC", message-bulleted: "\uE6A1", message-bulleted-off: "\uE6A2", message-cog: "\uE6F0", message-cog-outline: "\uF171", message-draw: "\uE362", message-fast: "\uF9CB", message-fast-outline: "\uF9CC", message-flash: "\uF5A8", message-flash-outline: "\uF5A9", message-image: "\uE363", message-image-outline: "\uF16B", message-lock: "\uEFCB", message-lock-outline: "\uF16C", message-minus: "\uF16D", message-minus-outline: "\uF16E", message-off: "\uF64C", message-off-outline: "\uF64D", message-outline: "\uE364", message-plus: "\uE652", message-plus-outline: "\uF0BA", message-processing: "\uE365", message-processing-outline: "\uF16F", message-question: "\uF739", message-question-outline: "\uF73A", message-reply: "\uE366", message-reply-outline: "\uF73C", message-reply-text: "\uE367", message-reply-text-outline: "\uF73D", message-settings: "\uE6EF", message-settings-outline: "\uF170", message-star: "\uE699", message-star-outline: "\uF24F", message-text: "\uE368", message-text-clock: "\uF172", message-text-clock-outline: "\uF173", message-text-fast: "\uF9CD", message-text-fast-outline: "\uF9CE", message-text-lock: "\uEFCC", message-text-lock-outline: "\uF174", message-text-outline: "\uE369", message-video: "\uE36A", meteor: "\uE628", meter-electric: "\uFA56", meter-electric-outline: "\uFA57", meter-gas: "\uFA58", meter-gas-outline: "\uFA59", metronome: "\uE7D9", metronome-tick: "\uE7DA", micro-sd: "\uE7DB", microphone: "\uE36B", microphone-minus: "\uE8B2", microphone-off: "\uE36C", microphone-outline: "\uE36D", microphone-plus: "\uE8B3", microphone-question: "\uF988", microphone-question-outline: "\uF989", microphone-settings: "\uE36E", microphone-variant: "\uE36F", microphone-variant-off: "\uE370", microscope: "\uE653", microsoft: "\uE371", microsoft-access: "\uF38D", microsoft-azure: "\uE804", microsoft-azure-devops: "\uEFD4", microsoft-bing: "\uE0A3", microsoft-dynamics-365: "\uE987", microsoft-edge: "\uE1E8", microsoft-excel: "\uF38E", microsoft-internet-explorer: "\uE2FF", microsoft-office: "\uE3C5", microsoft-onedrive: "\uE3C9", microsoft-onenote: "\uE746", microsoft-outlook: "\uED21", microsoft-powerpoint: "\uF38F", microsoft-sharepoint: "\uF390", microsoft-teams: "\uE2BA", microsoft-visual-studio: "\uE60F", microsoft-visual-studio-code: "\uEA1D", microsoft-windows: "\uE5B2", microsoft-windows-classic: "\uEA20", microsoft-word: "\uF391", microsoft-xbox: "\uE5B8", microsoft-xbox-controller: "\uE5B9", microsoft-xbox-controller-battery-alert: "\uE74A", microsoft-xbox-controller-battery-charging: "\uEA21", microsoft-xbox-controller-battery-empty: "\uE74B", microsoft-xbox-controller-battery-full: "\uE74C", microsoft-xbox-controller-battery-low: "\uE74D", microsoft-xbox-controller-battery-medium: "\uE74E", microsoft-xbox-controller-battery-unknown: "\uE74F", microsoft-xbox-controller-menu: "\uEE6E", microsoft-xbox-controller-off: "\uE5BA", microsoft-xbox-controller-view: "\uEE6F", microwave: "\uEC98", microwave-off: "\uF422", middleware: "\uEF5C", middleware-outline: "\uEF5D", midi: "\uE8F0", midi-port: "\uE8F1", mine: "\uEDD9", minecraft: "\uE372", mini-sd: "\uEA04", minidisc: "\uEA05", minus: "\uE373", minus-box: "\uE374", minus-box-multiple: "\uF140", minus-box-multiple-outline: "\uF141", minus-box-outline: "\uE6F1", minus-circle: "\uE375", minus-circle-multiple: "\uE359", minus-circle-multiple-outline: "\uEAD2", minus-circle-off: "\uF458", minus-circle-off-outline: "\uF459", minus-circle-outline: "\uE376", minus-network: "\uE377", minus-network-outline: "\uEC99", minus-thick: "\uF638", mirror: "\uF1FC", mirror-rectangle: "\uF79E", mirror-variant: "\uF79F", mixed-martial-arts: "\uED8E", mixed-reality: "\uE87E", molecule: "\uEBAB", molecule-co: "\uF2FD", molecule-co2: "\uE7E3", monitor: "\uE378", monitor-account: "\uFA5A", monitor-arrow-down: "\uF9CF", monitor-arrow-down-variant: "\uF9D0", monitor-cellphone: "\uE988", monitor-cellphone-star: "\uE989", monitor-dashboard: "\uEA06", monitor-edit: "\uF2C5", monitor-eye: "\uF3B3", monitor-lock: "\uEDDA", monitor-multiple: "\uE379", monitor-off: "\uED8F", monitor-screenshot: "\uEE50", monitor-share: "\uF482", monitor-shimmer: "\uF103", monitor-small: "\uF875", monitor-speaker: "\uEF5E", monitor-speaker-off: "\uEF5F", monitor-star: "\uEDDB", moon-first-quarter: "\uEF60", moon-full: "\uEF61", moon-last-quarter: "\uEF62", moon-new: "\uEF63", moon-waning-crescent: "\uEF64", moon-waning-gibbous: "\uEF65", moon-waxing-crescent: "\uEF66", moon-waxing-gibbous: "\uEF67", moped: "\uF085", moped-electric: "\uF5B6", moped-electric-outline: "\uF5B7", moped-outline: "\uF5B8", more: "\uE37A", mortar-pestle: "\uF747", mortar-pestle-plus: "\uE3F0", mosque: "\uF826", mother-heart: "\uF313", mother-nurse: "\uED20", motion: "\uF5B1", motion-outline: "\uF5B2", motion-pause: "\uF58F", motion-pause-outline: "\uF591", motion-play: "\uF58E", motion-play-outline: "\uF590", motion-sensor: "\uED90", motion-sensor-off: "\uF434", motorbike: "\uE37B", motorbike-electric: "\uF5B9", mouse: "\uE37C", mouse-bluetooth: "\uE98A", mouse-move-down: "\uF54F", mouse-move-up: "\uF550", mouse-move-vertical: "\uF551", mouse-off: "\uE37D", mouse-variant: "\uE37E", mouse-variant-off: "\uE37F", move-resize: "\uE654", move-resize-variant: "\uE655", movie: "\uE380", movie-check: "\uF6F2", movie-check-outline: "\uF6F3", movie-cog: "\uF6F4", movie-cog-outline: "\uF6F5", movie-edit: "\uF121", movie-edit-outline: "\uF122", movie-filter: "\uF123", movie-filter-outline: "\uF124", movie-minus: "\uF6F6", movie-minus-outline: "\uF6F7", movie-off: "\uF6F8", movie-off-outline: "\uF6F9", movie-open: "\uEFCD", movie-open-check: "\uF6FA", movie-open-check-outline: "\uF6FB", movie-open-cog: "\uF6FC", movie-open-cog-outline: "\uF6FD", movie-open-edit: "\uF6FE", movie-open-edit-outline: "\uF6FF", movie-open-minus: "\uF700", movie-open-minus-outline: "\uF701", movie-open-off: "\uF702", movie-open-off-outline: "\uF703", movie-open-outline: "\uEFCE", movie-open-play: "\uF704", movie-open-play-outline: "\uF705", movie-open-plus: "\uF706", movie-open-plus-outline: "\uF707", movie-open-remove: "\uF708", movie-open-remove-outline: "\uF709", movie-open-settings: "\uF70A", movie-open-settings-outline: "\uF70B", movie-open-star: "\uF70C", movie-open-star-outline: "\uF70D", movie-outline: "\uEDDC", movie-play: "\uF70E", movie-play-outline: "\uF70F", movie-plus: "\uF710", movie-plus-outline: "\uF711", movie-remove: "\uF712", movie-remove-outline: "\uF713", movie-roll: "\uE7DD", movie-search: "\uF1D1", movie-search-outline: "\uF1D2", movie-settings: "\uF714", movie-settings-outline: "\uF715", movie-star: "\uF716", movie-star-outline: "\uF717", mower: "\uF66E", mower-bag: "\uF66F", muffin: "\uE98B", multicast: "\uF892", multiplication: "\uE381", multiplication-box: "\uE382", mushroom: "\uE7DE", mushroom-off: "\uF3F9", mushroom-off-outline: "\uF3FA", mushroom-outline: "\uE7DF", music: "\uE759", music-accidental-double-flat: "\uEF68", music-accidental-double-sharp: "\uEF69", music-accidental-flat: "\uEF6A", music-accidental-natural: "\uEF6B", music-accidental-sharp: "\uEF6C", music-box: "\uE383", music-box-multiple: "\uE332", music-box-multiple-outline: "\uEF03", music-box-outline: "\uE384", music-circle: "\uE385", music-circle-outline: "\uEAD3", music-clef-alto: "\uEF6D", music-clef-bass: "\uEF6E", music-clef-treble: "\uEF6F", music-note: "\uE386", music-note-bluetooth: "\uE5FD", music-note-bluetooth-off: "\uE5FE", music-note-eighth: "\uE387", music-note-eighth-dotted: "\uEF70", music-note-half: "\uE388", music-note-half-dotted: "\uEF71", music-note-off: "\uE389", music-note-off-outline: "\uEF72", music-note-outline: "\uEF73", music-note-plus: "\uEDDD", music-note-quarter: "\uE38A", music-note-quarter-dotted: "\uEF74", music-note-sixteenth: "\uE38B", music-note-sixteenth-dotted: "\uEF75", music-note-whole: "\uE38C", music-note-whole-dotted: "\uEF76", music-off: "\uE75A", music-rest-eighth: "\uEF77", music-rest-half: "\uEF78", music-rest-quarter: "\uEF79", music-rest-sixteenth: "\uEF7A", music-rest-whole: "\uEF7B", mustache: "\uF5DD", nail: "\uEDDE", nas: "\uE8F2", nativescript: "\uE87F", nature: "\uE38D", nature-people: "\uE38E", navigation: "\uE38F", navigation-outline: "\uF606", navigation-variant: "\uF8EF", navigation-variant-outline: "\uF8F0", near-me: "\uE5CC", necklace: "\uEF0A", needle: "\uE390", needle-off: "\uF9D1", netflix: "\uE745", network: "\uE6F2", network-off: "\uEC9A", network-off-outline: "\uEC9B", network-outline: "\uEC9C", network-pos: "\uFACA", network-strength-1: "\uE8F3", network-strength-1-alert: "\uE8F4", network-strength-2: "\uE8F5", network-strength-2-alert: "\uE8F6", network-strength-3: "\uE8F7", network-strength-3-alert: "\uE8F8", network-strength-4: "\uE8F9", network-strength-4-alert: "\uE8FA", network-strength-4-cog: "\uF919", network-strength-off: "\uE8FB", network-strength-off-outline: "\uE8FC", network-strength-outline: "\uE8FD", new-box: "\uE393", newspaper: "\uE394", newspaper-check: "\uF942", newspaper-minus: "\uEF0B", newspaper-plus: "\uEF0C", newspaper-remove: "\uF943", newspaper-variant: "\uF000", newspaper-variant-multiple: "\uF001", newspaper-variant-multiple-outline: "\uF002", newspaper-variant-outline: "\uF003", nfc: "\uE395", nfc-search-variant: "\uEE52", nfc-tap: "\uE396", nfc-variant: "\uE397", nfc-variant-off: "\uEE53", ninja: "\uE773", nintendo-game-boy: "\uF392", nintendo-switch: "\uE7E0", nintendo-wii: "\uE5AA", nintendo-wiiu: "\uE72C", nix: "\uF104", nodejs: "\uE398", noodles: "\uF17D", not-equal: "\uE98C", not-equal-variant: "\uE98D", note: "\uE399", note-alert: "\uF77C", note-alert-outline: "\uF77D", note-check: "\uF77E", note-check-outline: "\uF77F", note-edit: "\uF780", note-edit-outline: "\uF781", note-minus: "\uF64E", note-minus-outline: "\uF64F", note-multiple: "\uE6B7", note-multiple-outline: "\uE6B8", note-off: "\uF782", note-off-outline: "\uF783", note-outline: "\uE39A", note-plus: "\uE39B", note-plus-outline: "\uE39C", note-remove: "\uF650", note-remove-outline: "\uF651", note-search: "\uF652", note-search-outline: "\uF653", note-text: "\uE39D", note-text-outline: "\uF1D6", notebook: "\uE82D", notebook-check: "\uF4F4", notebook-check-outline: "\uF4F5", notebook-edit: "\uF4E6", notebook-edit-outline: "\uF4E8", notebook-heart: "\uFA0A", notebook-heart-outline: "\uFA0B", notebook-minus: "\uF60F", notebook-minus-outline: "\uF610", notebook-multiple: "\uEE54", notebook-outline: "\uEEBE", notebook-plus: "\uF611", notebook-plus-outline: "\uF612", notebook-remove: "\uF613", notebook-remove-outline: "\uF614", notification-clear-all: "\uE39E", npm: "\uE6F6", nuke: "\uE6A3", null: "\uE7E1", numeric: "\uE39F", numeric-0: "\uEB38", numeric-0-box: "\uE3A0", numeric-0-box-multiple: "\uEF0D", numeric-0-box-multiple-outline: "\uE3A1", numeric-0-box-outline: "\uE3A2", numeric-0-circle: "\uEC9D", numeric-0-circle-outline: "\uEC9E", numeric-1: "\uEB39", numeric-1-box: "\uE3A3", numeric-1-box-multiple: "\uEF0E", numeric-1-box-multiple-outline: "\uE3A4", numeric-1-box-outline: "\uE3A5", numeric-1-circle: "\uEC9F", numeric-1-circle-outline: "\uECA0", numeric-10: "\uEFE8", numeric-10-box: "\uEF7C", numeric-10-box-multiple: "\uEFE9", numeric-10-box-multiple-outline: "\uEFEA", numeric-10-box-outline: "\uEF7D", numeric-10-circle: "\uEFEB", numeric-10-circle-outline: "\uEFEC", numeric-2: "\uEB3A", numeric-2-box: "\uE3A6", numeric-2-box-multiple: "\uEF0F", numeric-2-box-multiple-outline: "\uE3A7", numeric-2-box-outline: "\uE3A8", numeric-2-circle: "\uECA1", numeric-2-circle-outline: "\uECA2", numeric-3: "\uEB3B", numeric-3-box: "\uE3A9", numeric-3-box-multiple: "\uEF10", numeric-3-box-multiple-outline: "\uE3AA", numeric-3-box-outline: "\uE3AB", numeric-3-circle: "\uECA3", numeric-3-circle-outline: "\uECA4", numeric-4: "\uEB3C", numeric-4-box: "\uE3AC", numeric-4-box-multiple: "\uEF11", numeric-4-box-multiple-outline: "\uE3B1", numeric-4-box-outline: "\uE3AD", numeric-4-circle: "\uECA5", numeric-4-circle-outline: "\uECA6", numeric-5: "\uEB3D", numeric-5-box: "\uE3B0", numeric-5-box-multiple: "\uEF12", numeric-5-box-multiple-outline: "\uE3AE", numeric-5-box-outline: "\uE3AF", numeric-5-circle: "\uECA7", numeric-5-circle-outline: "\uECA8", numeric-6: "\uEB3E", numeric-6-box: "\uE3B2", numeric-6-box-multiple: "\uEF13", numeric-6-box-multiple-outline: "\uE3B3", numeric-6-box-outline: "\uE3B4", numeric-6-circle: "\uECA9", numeric-6-circle-outline: "\uECAA", numeric-7: "\uEB3F", numeric-7-box: "\uE3B5", numeric-7-box-multiple: "\uEF14", numeric-7-box-multiple-outline: "\uE3B6", numeric-7-box-outline: "\uE3B7", numeric-7-circle: "\uECAB", numeric-7-circle-outline: "\uECAC", numeric-8: "\uEB40", numeric-8-box: "\uE3B8", numeric-8-box-multiple: "\uEF15", numeric-8-box-multiple-outline: "\uE3B9", numeric-8-box-outline: "\uE3BA", numeric-8-circle: "\uECAD", numeric-8-circle-outline: "\uECAE", numeric-9: "\uEB41", numeric-9-box: "\uE3BB", numeric-9-box-multiple: "\uEF16", numeric-9-box-multiple-outline: "\uE3BC", numeric-9-box-outline: "\uE3BD", numeric-9-circle: "\uECAF", numeric-9-circle-outline: "\uECB0", numeric-9-plus: "\uEFED", numeric-9-plus-box: "\uE3BE", numeric-9-plus-box-multiple: "\uEF17", numeric-9-plus-box-multiple-outline: "\uE3BF", numeric-9-plus-box-outline: "\uE3C0", numeric-9-plus-circle: "\uECB1", numeric-9-plus-circle-outline: "\uECB2", numeric-negative-1: "\uF051", numeric-off: "\uF9D2", numeric-positive-1: "\uF5CA", nut: "\uE6F7", nutrition: "\uE3C1", nuxt: "\uF105", oar: "\uE67B", ocarina: "\uEDDF", oci: "\uF2E8", ocr: "\uF139", octagon: "\uE3C2", octagon-outline: "\uE3C3", octagram: "\uE6F8", octagram-outline: "\uE774", octahedron: "\uF94F", octahedron-off: "\uF950", odnoklassniki: "\uE3C4", offer: "\uF21A", office-building: "\uE990", office-building-cog: "\uF948", office-building-cog-outline: "\uF949", office-building-marker: "\uF51F", office-building-marker-outline: "\uF520", office-building-outline: "\uF51E", oil: "\uE3C6", oil-lamp: "\uEF18", oil-level: "\uF052", oil-temperature: "\uEFF7", om: "\uE972", omega: "\uE3C8", one-up: "\uEBAC", onepassword: "\uE880", opacity: "\uE5CB", open-in-app: "\uE3CA", open-in-new: "\uE3CB", open-source-initiative: "\uEBAD", openid: "\uE3CC", opera: "\uE3CD", orbit: "\uE017", orbit-variant: "\uF5DA", order-alphabetical-ascending: "\uE20C", order-alphabetical-descending: "\uED06", order-bool-ascending: "\uE2BD", order-bool-ascending-variant: "\uE98E", order-bool-descending: "\uF383", order-bool-descending-variant: "\uE98F", order-numeric-ascending: "\uE544", order-numeric-descending: "\uE545", origin: "\uEB42", ornament: "\uE3CE", ornament-variant: "\uE3CF", outdoor-lamp: "\uF053", overscan: "\uF004", owl: "\uE3D1", pac-man: "\uEBAE", package: "\uE3D2", package-down: "\uE3D3", package-up: "\uE3D4", package-variant: "\uE3D5", package-variant-closed: "\uE3D6", package-variant-closed-minus: "\uF9D3", package-variant-closed-plus: "\uF9D4", package-variant-closed-remove: "\uF9D5", package-variant-minus: "\uF9D6", package-variant-plus: "\uF9D7", package-variant-remove: "\uF9D8", page-first: "\uE5FF", page-last: "\uE600", page-layout-body: "\uE6F9", page-layout-footer: "\uE6FA", page-layout-header: "\uE6FB", page-layout-header-footer: "\uEF7E", page-layout-sidebar-left: "\uE6FC", page-layout-sidebar-right: "\uE6FD", page-next: "\uEBAF", page-next-outline: "\uEBB0", page-previous: "\uEBB1", page-previous-outline: "\uEBB2", pail: "\uF416", pail-minus: "\uF436", pail-minus-outline: "\uF43B", pail-off: "\uF438", pail-off-outline: "\uF43D", pail-outline: "\uF439", pail-plus: "\uF435", pail-plus-outline: "\uF43A", pail-remove: "\uF437", pail-remove-outline: "\uF43C", palette: "\uE3D7", palette-advanced: "\uE3D8", palette-outline: "\uEE0B", palette-swatch: "\uE8B4", palette-swatch-outline: "\uF35B", palette-swatch-variant: "\uF959", palm-tree: "\uF054", pan: "\uEBB3", pan-bottom-left: "\uEBB4", pan-bottom-right: "\uEBB5", pan-down: "\uEBB6", pan-horizontal: "\uEBB7", pan-left: "\uEBB8", pan-right: "\uEBB9", pan-top-left: "\uEBBA", pan-top-right: "\uEBBB", pan-up: "\uEBBC", pan-vertical: "\uEBBD", panda: "\uE3D9", pandora: "\uE3DA", panorama: "\uE3DB", panorama-fisheye: "\uE3DC", panorama-horizontal: "\uF927", panorama-horizontal-outline: "\uE3DD", panorama-outline: "\uF98B", panorama-sphere: "\uF98C", panorama-sphere-outline: "\uF98D", panorama-variant: "\uF98E", panorama-variant-outline: "\uF98F", panorama-vertical: "\uF928", panorama-vertical-outline: "\uE3DE", panorama-wide-angle: "\uF95E", panorama-wide-angle-outline: "\uE3DF", paper-cut-vertical: "\uE3E0", paper-roll: "\uF156", paper-roll-outline: "\uF157", paperclip: "\uE3E1", paperclip-check: "\uFAC5", paperclip-lock: "\uF9D9", paperclip-minus: "\uFAC6", paperclip-off: "\uFAC7", paperclip-plus: "\uFAC8", paperclip-remove: "\uFAC9", parachute: "\uECB3", parachute-outline: "\uECB4", paragliding: "\uF744", parking: "\uE3E2", party-popper: "\uF055", passport: "\uE7E2", passport-biometric: "\uEDE0", pasta: "\uF15F", patio-heater: "\uEF7F", patreon: "\uE881", pause: "\uE3E3", pause-circle: "\uE3E4", pause-circle-outline: "\uE3E5", pause-octagon: "\uE3E6", pause-octagon-outline: "\uE3E7", paw: "\uE3E8", paw-off: "\uE656", paw-off-outline: "\uF675", paw-outline: "\uF674", peace: "\uE883", peanut: "\uEFFB", peanut-off: "\uEFFC", peanut-off-outline: "\uEFFE", peanut-outline: "\uEFFD", pen: "\uE3E9", pen-lock: "\uEDE1", pen-minus: "\uEDE2", pen-off: "\uEDE3", pen-plus: "\uEDE4", pen-remove: "\uEDE5", pencil: "\uE3EA", pencil-box: "\uE3EB", pencil-box-multiple: "\uF143", pencil-box-multiple-outline: "\uF144", pencil-box-outline: "\uE3EC", pencil-circle: "\uE6FE", pencil-circle-outline: "\uE775", pencil-lock: "\uE3ED", pencil-lock-outline: "\uEDE6", pencil-minus: "\uEDE7", pencil-minus-outline: "\uEDE8", pencil-off: "\uE3EE", pencil-off-outline: "\uEDE9", pencil-outline: "\uECB5", pencil-plus: "\uEDEA", pencil-plus-outline: "\uEDEB", pencil-remove: "\uEDEC", pencil-remove-outline: "\uEDED", pencil-ruler: "\uF352", penguin: "\uEEBF", pentagon: "\uE700", pentagon-outline: "\uE6FF", pentagram: "\uF666", percent: "\uE3EF", percent-box: "\uFA01", percent-box-outline: "\uFA02", percent-circle: "\uFA03", percent-circle-outline: "\uFA04", percent-outline: "\uF277", periodic-table: "\uE8B5", perspective-less: "\uED22", perspective-more: "\uED23", ph: "\uF7C4", phone: "\uE3F1", phone-alert: "\uEF19", phone-alert-outline: "\uF18D", phone-bluetooth: "\uE3F2", phone-bluetooth-outline: "\uF18E", phone-cancel: "\uF0BB", phone-cancel-outline: "\uF18F", phone-check: "\uF1A8", phone-check-outline: "\uF1A9", phone-classic: "\uE601", phone-classic-off: "\uF278", phone-clock: "\uF9DA", phone-dial: "\uF558", phone-dial-outline: "\uF559", phone-forward: "\uE3F3", phone-forward-outline: "\uF190", phone-hangup: "\uE3F4", phone-hangup-outline: "\uF191", phone-in-talk: "\uE3F5", phone-in-talk-outline: "\uF181", phone-incoming: "\uE3F6", phone-incoming-outline: "\uF192", phone-lock: "\uE3F7", phone-lock-outline: "\uF193", phone-log: "\uE3F8", phone-log-outline: "\uF194", phone-message: "\uF195", phone-message-outline: "\uF196", phone-minus: "\uE657", phone-minus-outline: "\uF197", phone-missed: "\uE3F9", phone-missed-outline: "\uF1A4", phone-off: "\uEDEE", phone-off-outline: "\uF1A5", phone-outgoing: "\uE3FA", phone-outgoing-outline: "\uF198", phone-outline: "\uEDEF", phone-paused: "\uE3FB", phone-paused-outline: "\uF199", phone-plus: "\uE658", phone-plus-outline: "\uF19A", phone-refresh: "\uF992", phone-refresh-outline: "\uF993", phone-remove: "\uF52E", phone-remove-outline: "\uF52F", phone-return: "\uE82E", phone-return-outline: "\uF19B", phone-ring: "\uF1AA", phone-ring-outline: "\uF1AB", phone-rotate-landscape: "\uE884", phone-rotate-portrait: "\uE885", phone-settings: "\uE3FC", phone-settings-outline: "\uF19C", phone-sync: "\uF994", phone-sync-outline: "\uF995", phone-voip: "\uE3FD", pi: "\uE3FE", pi-box: "\uE3FF", pi-hole: "\uEDF0", piano: "\uE67C", piano-off: "\uE697", pickaxe: "\uE8B6", picture-in-picture-bottom-right: "\uEE56", picture-in-picture-bottom-right-outline: "\uEE57", picture-in-picture-top-right: "\uEE58", picture-in-picture-top-right-outline: "\uEE59", pier: "\uE886", pier-crane: "\uE887", pig: "\uE400", pig-variant: "\uF005", pig-variant-outline: "\uF677", piggy-bank: "\uF006", piggy-bank-outline: "\uF678", pill: "\uE401", pill-off: "\uFA5B", pillar: "\uE701", pin: "\uE402", pin-off: "\uE403", pin-off-outline: "\uE92F", pin-outline: "\uE930", pine-tree: "\uE404", pine-tree-box: "\uE405", pine-tree-fire: "\uF419", pinterest: "\uE406", pinwheel: "\uEAD4", pinwheel-outline: "\uEAD5", pipe: "\uE7E4", pipe-disconnected: "\uE7E5", pipe-leak: "\uE888", pipe-valve: "\uF84C", pipe-wrench: "\uF353", pirate: "\uEA07", pistol: "\uE702", piston: "\uE889", pitchfork: "\uF552", pizza: "\uE408", play: "\uE409", play-box: "\uF279", play-box-lock: "\uFA15", play-box-lock-open: "\uFA16", play-box-lock-open-outline: "\uFA17", play-box-lock-outline: "\uFA18", play-box-multiple: "\uED18", play-box-multiple-outline: "\uF3E5", play-box-outline: "\uE40A", play-circle: "\uE40B", play-circle-outline: "\uE40C", play-network: "\uE88A", play-network-outline: "\uECB6", play-outline: "\uEF1A", play-pause: "\uE40D", play-protected-content: "\uE40E", play-speed: "\uE8FE", playlist-check: "\uE5C6", playlist-edit: "\uE8FF", playlist-minus: "\uE40F", playlist-music: "\uECB7", playlist-music-outline: "\uECB8", playlist-play: "\uE410", playlist-plus: "\uE411", playlist-remove: "\uE412", playlist-star: "\uEDF1", plex: "\uE6B9", pliers: "\uF9A3", plus: "\uE414", plus-box: "\uE415", plus-box-multiple: "\uE333", plus-box-multiple-outline: "\uF142", plus-box-outline: "\uE703", plus-circle: "\uE416", plus-circle-multiple: "\uE34B", plus-circle-multiple-outline: "\uE417", plus-circle-outline: "\uE418", plus-lock: "\uFA5C", plus-lock-open: "\uFA5D", plus-minus: "\uE991", plus-minus-box: "\uE992", plus-minus-variant: "\uF4C8", plus-network: "\uE419", plus-network-outline: "\uECB9", plus-outline: "\uE704", plus-thick: "\uF1EB", podcast: "\uE993", podium: "\uED24", podium-bronze: "\uED25", podium-gold: "\uED26", podium-silver: "\uED27", point-of-sale: "\uED91", pokeball: "\uE41C", pokemon-go: "\uEA08", poker-chip: "\uE82F", polaroid: "\uE41D", police-badge: "\uF166", police-badge-outline: "\uF167", police-station: "\uF838", poll: "\uE41E", polo: "\uF4C2", polymer: "\uE420", pool: "\uE605", pool-thermometer: "\uFA5E", popcorn: "\uE421", post: "\uF007", post-lamp: "\uFA5F", post-outline: "\uF008", postage-stamp: "\uECBA", pot: "\uE2E4", pot-mix: "\uE65A", pot-mix-outline: "\uE676", pot-outline: "\uE2FE", pot-steam: "\uE659", pot-steam-outline: "\uE325", pound: "\uE422", pound-box: "\uE423", pound-box-outline: "\uF17E", power: "\uE424", power-cycle: "\uE900", power-off: "\uE901", power-on: "\uE902", power-plug: "\uE6A4", power-plug-off: "\uE6A5", power-plug-off-outline: "\uF423", power-plug-outline: "\uF424", power-settings: "\uE425", power-sleep: "\uE903", power-socket: "\uE426", power-socket-au: "\uE904", power-socket-ch: "\uEFB2", power-socket-de: "\uF106", power-socket-eu: "\uE7E6", power-socket-fr: "\uF107", power-socket-it: "\uF4FE", power-socket-jp: "\uF108", power-socket-uk: "\uE7E7", power-socket-us: "\uE7E8", power-standby: "\uE905", powershell: "\uEA09", prescription: "\uE705", presentation: "\uE427", presentation-play: "\uE428", pretzel: "\uF561", printer: "\uE429", printer-3d: "\uE42A", printer-3d-nozzle: "\uEE5A", printer-3d-nozzle-alert: "\uF1BF", printer-3d-nozzle-alert-outline: "\uF1C0", printer-3d-nozzle-heat: "\uF8B7", printer-3d-nozzle-heat-outline: "\uF8B8", printer-3d-nozzle-outline: "\uEE5B", printer-alert: "\uE42B", printer-check: "\uF145", printer-eye: "\uF457", printer-off: "\uEE5C", printer-off-outline: "\uF784", printer-outline: "\uF785", printer-pos: "\uF056", printer-search: "\uF456", printer-settings: "\uE706", printer-wireless: "\uEA0A", priority-high: "\uE602", priority-low: "\uE603", professional-hexagon: "\uE42C", progress-alert: "\uECBB", progress-check: "\uE994", progress-clock: "\uE995", progress-close: "\uF109", progress-download: "\uE996", progress-pencil: "\uF786", progress-question: "\uF521", progress-star: "\uF787", progress-upload: "\uE997", progress-wrench: "\uECBC", projector: "\uE42D", projector-off: "\uFA22", projector-screen: "\uE42E", projector-screen-off: "\uF80C", projector-screen-off-outline: "\uF80D", projector-screen-outline: "\uF723", projector-screen-variant: "\uF80E", projector-screen-variant-off: "\uF80F", projector-screen-variant-off-outline: "\uF810", projector-screen-variant-outline: "\uF811", propane-tank: "\uF356", propane-tank-outline: "\uF357", protocol: "\uEFD7", publish: "\uE6A6", publish-off: "\uF944", pulse: "\uE42F", pump: "\uF401", pumpkin: "\uEBBE", purse: "\uEF1B", purse-outline: "\uEF1C", puzzle: "\uE430", puzzle-check: "\uF425", puzzle-check-outline: "\uF426", puzzle-edit: "\uF4D2", puzzle-edit-outline: "\uF4D8", puzzle-heart: "\uF4D3", puzzle-heart-outline: "\uF4D9", puzzle-minus: "\uF4D0", puzzle-minus-outline: "\uF4D6", puzzle-outline: "\uEA65", puzzle-plus: "\uF4CF", puzzle-plus-outline: "\uF4D5", puzzle-remove: "\uF4D1", puzzle-remove-outline: "\uF4D7", puzzle-star: "\uF4D4", puzzle-star-outline: "\uF4DA", pyramid: "\uF951", pyramid-off: "\uF952", qi: "\uE998", qqchat: "\uE604", qrcode: "\uE431", qrcode-edit: "\uE8B7", qrcode-minus: "\uF18B", qrcode-plus: "\uF18A", qrcode-remove: "\uF18C", qrcode-scan: "\uE432", quadcopter: "\uE433", quality-high: "\uE434", quality-low: "\uEA0B", quality-medium: "\uEA0C", quora: "\uED28", rabbit: "\uE906", rabbit-variant: "\uFA60", rabbit-variant-outline: "\uFA61", racing-helmet: "\uED92", racquetball: "\uED93", radar: "\uE436", radiator: "\uE437", radiator-disabled: "\uEAD6", radiator-off: "\uEAD7", radio: "\uE438", radio-am: "\uECBD", radio-fm: "\uECBE", radio-handheld: "\uE439", radio-off: "\uF21B", radio-tower: "\uE43A", radioactive: "\uE43B", radioactive-circle: "\uF85C", radioactive-circle-outline: "\uF85D", radioactive-off: "\uEEC0", radiobox-blank: "\uE43C", radiobox-marked: "\uE43D", radiology-box: "\uF4C4", radiology-box-outline: "\uF4C5", radius: "\uECBF", radius-outline: "\uECC0", railroad-light: "\uEF1D", rake: "\uF543", raspberry-pi: "\uE43E", raw: "\uFA0E", raw-off: "\uFA0F", ray-end: "\uE43F", ray-end-arrow: "\uE440", ray-start: "\uE441", ray-start-arrow: "\uE442", ray-start-end: "\uE443", ray-start-vertex-end: "\uF5D7", ray-vertex: "\uE444", razor-double-edge: "\uF996", razor-single-edge: "\uF997", react: "\uE707", read: "\uE446", receipt: "\uE448", receipt-outline: "\uF9DB", receipt-text-check: "\uFA62", receipt-text-check-outline: "\uFA63", receipt-text-minus: "\uFA64", receipt-text-minus-outline: "\uFA65", receipt-text-plus: "\uFA66", receipt-text-plus-outline: "\uFA67", receipt-text-remove: "\uFA68", receipt-text-remove-outline: "\uFA69", record: "\uE449", record-circle: "\uEEC1", record-circle-outline: "\uEEC2", record-player: "\uE999", record-rec: "\uE44A", rectangle: "\uEE5D", rectangle-outline: "\uEE5E", recycle: "\uE44B", recycle-variant: "\uF39C", reddit: "\uE44C", redhat: "\uF11A", redo: "\uE44D", redo-variant: "\uE44E", reflect-horizontal: "\uEA0D", reflect-vertical: "\uEA0E", refresh: "\uE44F", refresh-auto: "\uF8F1", refresh-circle: "\uF376", regex: "\uE450", registered-trademark: "\uEA66", reiterate: "\uF587", relation-many-to-many: "\uF495", relation-many-to-one: "\uF496", relation-many-to-one-or-many: "\uF497", relation-many-to-only-one: "\uF498", relation-many-to-zero-or-many: "\uF499", relation-many-to-zero-or-one: "\uF49A", relation-one-or-many-to-many: "\uF49B", relation-one-or-many-to-one: "\uF49C", relation-one-or-many-to-one-or-many: "\uF49D", relation-one-or-many-to-only-one: "\uF49E", relation-one-or-many-to-zero-or-many: "\uF49F", relation-one-or-many-to-zero-or-one: "\uF4A0", relation-one-to-many: "\uF4A1", relation-one-to-one: "\uF4A2", relation-one-to-one-or-many: "\uF4A3", relation-one-to-only-one: "\uF4A4", relation-one-to-zero-or-many: "\uF4A5", relation-one-to-zero-or-one: "\uF4A6", relation-only-one-to-many: "\uF4A7", relation-only-one-to-one: "\uF4A8", relation-only-one-to-one-or-many: "\uF4A9", relation-only-one-to-only-one: "\uF4AA", relation-only-one-to-zero-or-many: "\uF4AB", relation-only-one-to-zero-or-one: "\uF4AC", relation-zero-or-many-to-many: "\uF4AD", relation-zero-or-many-to-one: "\uF4AE", relation-zero-or-many-to-one-or-many: "\uF4AF", relation-zero-or-many-to-only-one: "\uF4B0", relation-zero-or-many-to-zero-or-many: "\uF4B1", relation-zero-or-many-to-zero-or-one: "\uF4B2", relation-zero-or-one-to-many: "\uF4B3", relation-zero-or-one-to-one: "\uF4B4", relation-zero-or-one-to-one-or-many: "\uF4B5", relation-zero-or-one-to-only-one: "\uF4B6", relation-zero-or-one-to-zero-or-many: "\uF4B7", relation-zero-or-one-to-zero-or-one: "\uF4B8", relative-scale: "\uE451", reload: "\uE452", reload-alert: "\uF10A", reminder: "\uE88B", remote: "\uE453", remote-desktop: "\uE8B8", remote-off: "\uEEC3", remote-tv: "\uEEC4", remote-tv-off: "\uEEC5", rename-box: "\uE454", reorder-horizontal: "\uE687", reorder-vertical: "\uE688", repeat: "\uE455", repeat-off: "\uE456", repeat-once: "\uE457", repeat-variant: "\uE546", replay: "\uE458", reply: "\uE459", reply-all: "\uE45A", reply-all-outline: "\uEF1E", reply-circle: "\uF1AD", reply-outline: "\uEF1F", reproduction: "\uE45B", resistor: "\uEB43", resistor-nodes: "\uEB44", resize: "\uEA67", resize-bottom-right: "\uE45C", responsive: "\uE45D", restart: "\uE708", restart-alert: "\uF10B", restart-off: "\uED94", restore: "\uE99A", restore-alert: "\uF10C", rewind: "\uE45E", rewind-10: "\uED29", rewind-15: "\uF945", rewind-30: "\uED95", rewind-5: "\uF1F8", rewind-60: "\uF60B", rewind-outline: "\uE709", rhombus: "\uE70A", rhombus-medium: "\uEA0F", rhombus-medium-outline: "\uF4DB", rhombus-outline: "\uE70B", rhombus-split: "\uEA10", rhombus-split-outline: "\uF4DC", ribbon: "\uE45F", rice: "\uE7E9", rickshaw: "\uF5BA", rickshaw-electric: "\uF5BB", ring: "\uE7EA", rivet: "\uEE5F", road: "\uE460", road-variant: "\uE461", robber: "\uF057", robot: "\uE6A8", robot-angry: "\uF69C", robot-angry-outline: "\uF69D", robot-confused: "\uF69E", robot-confused-outline: "\uF69F", robot-dead: "\uF6A0", robot-dead-outline: "\uF6A1", robot-excited: "\uF6A2", robot-excited-outline: "\uF6A3", robot-happy: "\uF718", robot-happy-outline: "\uF719", robot-industrial: "\uEB45", robot-industrial-outline: "\uFA19", robot-love: "\uF6A4", robot-love-outline: "\uF6A5", robot-mower: "\uF1F6", robot-mower-outline: "\uF1F2", robot-off: "\uF6A6", robot-off-outline: "\uF67A", robot-outline: "\uF679", robot-vacuum: "\uE70C", robot-vacuum-variant: "\uE907", rocket: "\uE462", rocket-launch: "\uF4DD", rocket-launch-outline: "\uF4DE", rocket-outline: "\uF3AE", rodent: "\uF326", roller-shade: "\uFA6A", roller-shade-closed: "\uFA6B", roller-skate: "\uED2A", roller-skate-off: "\uE144", rollerblade: "\uED2B", rollerblade-off: "\uE02D", rollupjs: "\uEBBF", rolodex: "\uFAB8", rolodex-outline: "\uFAB9", roman-numeral-1: "\uF087", roman-numeral-10: "\uF090", roman-numeral-2: "\uF088", roman-numeral-3: "\uF089", roman-numeral-4: "\uF08A", roman-numeral-5: "\uF08B", roman-numeral-6: "\uF08C", roman-numeral-7: "\uF08D", roman-numeral-8: "\uF08E", roman-numeral-9: "\uF08F", room-service: "\uE88C", room-service-outline: "\uED96", rotate-360: "\uF998", rotate-3d: "\uEEC6", rotate-3d-variant: "\uE463", rotate-left: "\uE464", rotate-left-variant: "\uE465", rotate-orbit: "\uED97", rotate-right: "\uE466", rotate-right-variant: "\uE467", rounded-corner: "\uE606", router: "\uF1E1", router-network: "\uF086", router-wireless: "\uE468", router-wireless-off: "\uF5A2", router-wireless-settings: "\uEA68", routes: "\uE469", routes-clock: "\uF058", rowing: "\uE607", rss: "\uE46A", rss-box: "\uE46B", rss-off: "\uEF20", rug: "\uF474", rugby: "\uED98", ruler: "\uE46C", ruler-square: "\uECC1", ruler-square-compass: "\uEEBD", run: "\uE70D", run-fast: "\uE46D", rv-truck: "\uF1D3", sack: "\uED2D", sack-percent: "\uED2E", safe: "\uEA69", safe-square: "\uF27B", safe-square-outline: "\uF27C", safety-goggles: "\uED2F", sail-boat: "\uEEC7", sail-boat-sink: "\uFAEE", sale: "\uE46E", sale-outline: "\uFA05", salesforce: "\uE88D", sass: "\uE7EB", satellite: "\uE46F", satellite-uplink: "\uE908", satellite-variant: "\uE470", sausage: "\uE8B9", sausage-off: "\uF788", saw-blade: "\uEE60", sawtooth-wave: "\uF479", saxophone: "\uE608", scale: "\uE471", scale-balance: "\uE5D0", scale-bathroom: "\uE472", scale-off: "\uF059", scale-unbalanced: "\uF9B7", scan-helper: "\uF3D7", scanner: "\uE6AA", scanner-off: "\uE909", scatter-plot: "\uEEC8", scatter-plot-outline: "\uEEC9", scent: "\uF957", scent-off: "\uF958", school: "\uE473", school-outline: "\uF17F", scissors-cutting: "\uEA6A", scooter: "\uF5BC", scooter-electric: "\uF5BD", scoreboard: "\uF27D", scoreboard-outline: "\uF27E", screen-rotation: "\uE474", screen-rotation-lock: "\uE477", screw-flat-top: "\uEDF2", screw-lag: "\uEDF3", screw-machine-flat-top: "\uEDF4", screw-machine-round-top: "\uEDF5", screw-round-top: "\uEDF6", screwdriver: "\uE475", script: "\uEBC0", script-outline: "\uE476", script-text: "\uEBC1", script-text-key: "\uF724", script-text-key-outline: "\uF725", script-text-outline: "\uEBC2", script-text-play: "\uF726", script-text-play-outline: "\uF727", sd: "\uE478", seal: "\uE479", seal-variant: "\uEFD8", search-web: "\uE70E", seat: "\uECC2", seat-flat: "\uE47A", seat-flat-angled: "\uE47B", seat-individual-suite: "\uE47C", seat-legroom-extra: "\uE47D", seat-legroom-normal: "\uE47E", seat-legroom-reduced: "\uE47F", seat-outline: "\uECC3", seat-passenger: "\uF248", seat-recline-extra: "\uE480", seat-recline-normal: "\uE481", seatbelt: "\uECC4", security: "\uE482", security-network: "\uE483", seed: "\uEE61", seed-off: "\uF3FC", seed-off-outline: "\uF3FD", seed-outline: "\uEE62", seed-plus: "\uFA6C", seed-plus-outline: "\uFA6D", seesaw: "\uF5A3", segment: "\uEECA", select: "\uE484", select-all: "\uE485", select-color: "\uED30", select-compare: "\uEAD8", select-drag: "\uEA6B", select-group: "\uEF81", select-inverse: "\uE486", select-marker: "\uF27F", select-multiple: "\uF280", select-multiple-marker: "\uF281", select-off: "\uE487", select-place: "\uEFD9", select-remove: "\uF7C0", select-search: "\uF203", selection: "\uE488", selection-drag: "\uEA6C", selection-ellipse: "\uED31", selection-ellipse-arrow-inside: "\uEF21", selection-ellipse-remove: "\uF7C1", selection-marker: "\uF282", selection-multiple: "\uF284", selection-multiple-marker: "\uF283", selection-off: "\uE776", selection-remove: "\uF7C2", selection-search: "\uF204", semantic-web: "\uF315", send: "\uE489", send-check: "\uF160", send-check-outline: "\uF161", send-circle: "\uEDF7", send-circle-outline: "\uEDF8", send-clock: "\uF162", send-clock-outline: "\uF163", send-lock: "\uE7EC", send-lock-outline: "\uF165", send-outline: "\uF164", serial-port: "\uE65B", server: "\uE48A", server-minus: "\uE48B", server-network: "\uE48C", server-network-off: "\uE48D", server-off: "\uE48E", server-plus: "\uE48F", server-remove: "\uE490", server-security: "\uE491", set-all: "\uE777", set-center: "\uE778", set-center-right: "\uE779", set-left: "\uE77A", set-left-center: "\uE77B", set-left-right: "\uE77C", set-merge: "\uF4DF", set-none: "\uE77D", set-right: "\uE77E", set-split: "\uF4E0", set-square: "\uF45C", set-top-box: "\uE99E", settings-helper: "\uEA6D", shaker: "\uF10D", shaker-outline: "\uF10E", shape: "\uE830", shape-circle-plus: "\uE65C", shape-outline: "\uE831", shape-oval-plus: "\uF1F9", shape-plus: "\uE494", shape-polygon-plus: "\uE65D", shape-rectangle-plus: "\uE65E", shape-square-plus: "\uE65F", shape-square-rounded-plus: "\uF4F9", share: "\uE495", share-all: "\uF1F3", share-all-outline: "\uF1F4", share-circle: "\uF1AC", share-off: "\uEF22", share-off-outline: "\uEF23", share-outline: "\uE931", share-variant: "\uE496", share-variant-outline: "\uF513", shark: "\uF8B9", shark-fin: "\uF672", shark-fin-outline: "\uF673", shark-off: "\uF8BA", sheep: "\uECC5", shield: "\uE497", shield-account: "\uE88E", shield-account-outline: "\uEA11", shield-account-variant: "\uF5A6", shield-account-variant-outline: "\uF5A7", shield-airplane: "\uE6BA", shield-airplane-outline: "\uECC6", shield-alert: "\uEECB", shield-alert-outline: "\uEECC", shield-bug: "\uF3D9", shield-bug-outline: "\uF3DA", shield-car: "\uEF82", shield-check: "\uE564", shield-check-outline: "\uECC7", shield-cross: "\uECC8", shield-cross-outline: "\uECC9", shield-crown: "\uF8BB", shield-crown-outline: "\uF8BC", shield-edit: "\uF19F", shield-edit-outline: "\uF1A0", shield-half: "\uF35F", shield-half-full: "\uE77F", shield-home: "\uE689", shield-home-outline: "\uECCA", shield-key: "\uEBC3", shield-key-outline: "\uEBC4", shield-link-variant: "\uED32", shield-link-variant-outline: "\uED33", shield-lock: "\uE99C", shield-lock-open: "\uF999", shield-lock-open-outline: "\uF99A", shield-lock-outline: "\uECCB", shield-moon: "\uF827", shield-moon-outline: "\uF828", shield-off: "\uE99D", shield-off-outline: "\uE99B", shield-outline: "\uE498", shield-plus: "\uEAD9", shield-plus-outline: "\uEADA", shield-refresh: "\uE0A9", shield-refresh-outline: "\uE1DF", shield-remove: "\uEADB", shield-remove-outline: "\uEADC", shield-search: "\uED99", shield-star: "\uF13A", shield-star-outline: "\uF13B", shield-sun: "\uF05C", shield-sun-outline: "\uF05D", shield-sword: "\uF8BD", shield-sword-outline: "\uF8BE", shield-sync: "\uF1A1", shield-sync-outline: "\uF1A2", shimmer: "\uF544", ship-wheel: "\uE832", shipping-pallet: "\uF84D", shoe-ballet: "\uF5C9", shoe-cleat: "\uF5C6", shoe-formal: "\uEB46", shoe-heel: "\uEB47", shoe-print: "\uEDF9", shoe-sneaker: "\uF5C7", shopping: "\uE499", shopping-music: "\uE49A", shopping-outline: "\uF1D4", shopping-search: "\uEF83", shopping-search-outline: "\uFA6E", shore: "\uF4F8", shovel: "\uE70F", shovel-off: "\uE710", shower: "\uE99F", shower-head: "\uE9A0", shredder: "\uE49B", shuffle: "\uE49C", shuffle-disabled: "\uE49D", shuffle-variant: "\uE49E", shuriken: "\uF37E", sickle: "\uF8BF", sigma: "\uE49F", sigma-lower: "\uE62A", sign-caution: "\uE4A0", sign-direction: "\uE780", sign-direction-minus: "\uEFFF", sign-direction-plus: "\uEFDB", sign-direction-remove: "\uEFDC", sign-pole: "\uF4F7", sign-real-estate: "\uF117", sign-text: "\uE781", signal: "\uE4A1", signal-2g: "\uE711", signal-3g: "\uE712", signal-4g: "\uE713", signal-5g: "\uEA6E", signal-cellular-1: "\uE8BB", signal-cellular-2: "\uE8BC", signal-cellular-3: "\uE8BD", signal-cellular-outline: "\uE8BE", signal-distance-variant: "\uEE63", signal-hspa: "\uE714", signal-hspa-plus: "\uE715", signal-off: "\uE782", signal-variant: "\uE609", signature: "\uEDFA", signature-freehand: "\uEDFB", signature-image: "\uEDFC", signature-text: "\uEDFD", silo: "\uEB48", silverware: "\uE4A2", silverware-clean: "\uEFDD", silverware-fork: "\uE4A3", silverware-fork-knife: "\uEA6F", silverware-spoon: "\uE4A4", silverware-variant: "\uE4A5", sim: "\uE4A6", sim-alert: "\uE4A7", sim-alert-outline: "\uF5D2", sim-off: "\uE4A8", sim-off-outline: "\uF5D3", sim-outline: "\uF5D4", simple-icons: "\uF31C", sina-weibo: "\uEADE", sine-wave: "\uE95A", sitemap: "\uE4A9", sitemap-outline: "\uF99B", size-l: "\uF3A5", size-m: "\uF3A4", size-s: "\uF3A3", size-xl: "\uF3A6", size-xs: "\uF3A2", size-xxl: "\uF3A7", size-xxs: "\uF3A1", size-xxxl: "\uF3A8", skate: "\uED34", skate-off: "\uE698", skateboard: "\uF4C1", skateboarding: "\uE500", skew-less: "\uED35", skew-more: "\uED36", ski: "\uF303", ski-cross-country: "\uF304", ski-water: "\uF305", skip-backward: "\uE4AA", skip-backward-outline: "\uEF24", skip-forward: "\uE4AB", skip-forward-outline: "\uEF25", skip-next: "\uE4AC", skip-next-circle: "\uE660", skip-next-circle-outline: "\uE661", skip-next-outline: "\uEF26", skip-previous: "\uE4AD", skip-previous-circle: "\uE662", skip-previous-circle-outline: "\uE663", skip-previous-outline: "\uEF27", skull: "\uE68B", skull-crossbones: "\uEBC5", skull-crossbones-outline: "\uEBC6", skull-outline: "\uEBC7", skull-scan: "\uF4C6", skull-scan-outline: "\uF4C7", skype: "\uE4AE", skype-business: "\uE4AF", slack: "\uE4B0", slash-forward: "\uEFDE", slash-forward-box: "\uEFDF", sledding: "\uE41A", sleep: "\uE4B1", sleep-off: "\uE4B2", slide: "\uF5A4", slope-downhill: "\uEDFE", slope-uphill: "\uEDFF", slot-machine: "\uF113", slot-machine-outline: "\uF114", smart-card: "\uF0BC", smart-card-off: "\uF8F6", smart-card-off-outline: "\uF8F7", smart-card-outline: "\uF0BD", smart-card-reader: "\uF0BE", smart-card-reader-outline: "\uF0BF", smog: "\uEA70", smoke: "\uF798", smoke-detector: "\uE391", smoke-detector-alert: "\uF92D", smoke-detector-alert-outline: "\uF92E", smoke-detector-off: "\uF808", smoke-detector-off-outline: "\uF809", smoke-detector-outline: "\uF807", smoke-detector-variant: "\uF80A", smoke-detector-variant-alert: "\uF92F", smoke-detector-variant-off: "\uF80B", smoking: "\uE4B3", smoking-off: "\uE4B4", smoking-pipe: "\uF40C", smoking-pipe-off: "\uF427", snail: "\uF676", snake: "\uF50D", snapchat: "\uE4B5", snowboard: "\uF306", snowflake: "\uE716", snowflake-alert: "\uEF28", snowflake-check: "\uFA6F", snowflake-melt: "\uF2CA", snowflake-off: "\uF4E2", snowflake-thermometer: "\uFA70", snowflake-variant: "\uEF29", snowman: "\uE4B6", snowmobile: "\uE6DC", snowshoeing: "\uFA71", soccer: "\uE4B7", soccer-field: "\uE833", social-distance-2-meters: "\uF578", social-distance-6-feet: "\uF579", sofa: "\uE4B8", sofa-outline: "\uF56C", sofa-single: "\uF56D", sofa-single-outline: "\uF56E", solar-panel: "\uED9A", solar-panel-large: "\uED9B", solar-power: "\uEA71", solar-power-variant: "\uFA72", solar-power-variant-outline: "\uFA73", soldering-iron: "\uF091", solid: "\uE68C", sony-playstation: "\uE413", sort: "\uE4B9", sort-alphabetical-ascending: "\uE5BC", sort-alphabetical-ascending-variant: "\uF147", sort-alphabetical-descending: "\uE5BE", sort-alphabetical-descending-variant: "\uF148", sort-alphabetical-variant: "\uE4BA", sort-ascending: "\uE4BB", sort-bool-ascending: "\uF384", sort-bool-ascending-variant: "\uF385", sort-bool-descending: "\uF386", sort-bool-descending-variant: "\uF387", sort-calendar-ascending: "\uF546", sort-calendar-descending: "\uF547", sort-clock-ascending: "\uF548", sort-clock-ascending-outline: "\uF549", sort-clock-descending: "\uF54A", sort-clock-descending-outline: "\uF54B", sort-descending: "\uE4BC", sort-numeric-ascending: "\uF388", sort-numeric-ascending-variant: "\uE90C", sort-numeric-descending: "\uF389", sort-numeric-descending-variant: "\uEAD1", sort-numeric-variant: "\uE4BD", sort-reverse-variant: "\uE33B", sort-variant: "\uE4BE", sort-variant-lock: "\uECCC", sort-variant-lock-open: "\uECCD", sort-variant-off: "\uFABA", sort-variant-remove: "\uF146", soundbar: "\uF7DA", soundcloud: "\uE4BF", source-branch: "\uE62B", source-branch-check: "\uF4CE", source-branch-minus: "\uF4CA", source-branch-plus: "\uF4C9", source-branch-refresh: "\uF4CC", source-branch-remove: "\uF4CB", source-branch-sync: "\uF4CD", source-commit: "\uE717", source-commit-end: "\uE718", source-commit-end-local: "\uE719", source-commit-local: "\uE71A", source-commit-next-local: "\uE71B", source-commit-start: "\uE71C", source-commit-start-next-local: "\uE71D", source-fork: "\uE4C0", source-merge: "\uE62C", source-pull: "\uE4C1", source-repository: "\uECCE", source-repository-multiple: "\uECCF", soy-sauce: "\uE7ED", soy-sauce-off: "\uF3FB", spa: "\uECD0", spa-outline: "\uECD1", space-invaders: "\uEBC8", space-station: "\uF382", spade: "\uEE64", speaker: "\uE4C2", speaker-bluetooth: "\uE9A1", speaker-multiple: "\uED37", speaker-off: "\uE4C3", speaker-wireless: "\uE71E", spear: "\uF844", speedometer: "\uE4C4", speedometer-medium: "\uEF84", speedometer-slow: "\uEF85", spellcheck: "\uE4C5", sphere: "\uF953", sphere-off: "\uF954", spider: "\uF1E9", spider-thread: "\uF1EA", spider-web: "\uEBC9", spirit-level: "\uF4F0", spoon-sugar: "\uF428", spotify: "\uE4C6", spotlight: "\uE4C7", spotlight-beam: "\uE4C8", spray: "\uE664", spray-bottle: "\uEADF", sprinkler: "\uF05E", sprinkler-fire: "\uF99C", sprinkler-variant: "\uF05F", sprout: "\uEE65", sprout-outline: "\uEE66", square: "\uE763", square-circle: "\uF4FF", square-edit-outline: "\uE90B", square-medium: "\uEA12", square-medium-outline: "\uEA13", square-off: "\uF2ED", square-off-outline: "\uF2EE", square-opacity: "\uF853", square-outline: "\uE762", square-root: "\uE783", square-root-box: "\uE9A2", square-rounded: "\uF4FA", square-rounded-badge: "\uFA06", square-rounded-badge-outline: "\uFA07", square-rounded-outline: "\uF4FB", square-small: "\uEA14", square-wave: "\uF47A", squeegee: "\uEAE0", ssh: "\uE8BF", stack-exchange: "\uE60A", stack-overflow: "\uE4CB", stackpath: "\uE358", stadium: "\uEFF8", stadium-variant: "\uE71F", stairs: "\uE4CC", stairs-box: "\uF39D", stairs-down: "\uF2BD", stairs-up: "\uF2BC", stamper: "\uED38", standard-definition: "\uE7EE", star: "\uE4CD", star-box: "\uEA72", star-box-multiple: "\uF285", star-box-multiple-outline: "\uF286", star-box-outline: "\uEA73", star-check: "\uF565", star-check-outline: "\uF569", star-circle: "\uE4CE", star-circle-outline: "\uE9A3", star-cog: "\uF667", star-cog-outline: "\uF668", star-crescent: "\uE978", star-david: "\uE979", star-face: "\uE9A4", star-four-points: "\uEAE1", star-four-points-outline: "\uEAE2", star-half: "\uE245", star-half-full: "\uE4CF", star-minus: "\uF563", star-minus-outline: "\uF567", star-off: "\uE4D0", star-off-outline: "\uF55A", star-outline: "\uE4D1", star-plus: "\uF562", star-plus-outline: "\uF566", star-remove: "\uF564", star-remove-outline: "\uF568", star-settings: "\uF669", star-settings-outline: "\uF66A", star-shooting: "\uF740", star-shooting-outline: "\uF741", star-three-points: "\uEAE3", star-three-points-outline: "\uEAE4", state-machine: "\uF1EE", steam: "\uE4D2", steering: "\uE4D3", steering-off: "\uE90D", step-backward: "\uE4D4", step-backward-2: "\uE4D5", step-forward: "\uE4D6", step-forward-2: "\uE4D7", stethoscope: "\uE4D8", sticker: "\uF363", sticker-alert: "\uF364", sticker-alert-outline: "\uF365", sticker-check: "\uF366", sticker-check-outline: "\uF367", sticker-circle-outline: "\uE5CF", sticker-emoji: "\uE784", sticker-minus: "\uF368", sticker-minus-outline: "\uF369", sticker-outline: "\uF36A", sticker-plus: "\uF36B", sticker-plus-outline: "\uF36C", sticker-remove: "\uF36D", sticker-remove-outline: "\uF36E", sticker-text: "\uF78D", sticker-text-outline: "\uF78E", stocking: "\uE4D9", stomach: "\uF092", stool: "\uF95C", stool-outline: "\uF95D", stop: "\uE4DA", stop-circle: "\uE665", stop-circle-outline: "\uE666", storage-tank: "\uFA74", storage-tank-outline: "\uFA75", store: "\uE4DB", store-24-hour: "\uE4DC", store-alert: "\uF8C0", store-alert-outline: "\uF8C1", store-check: "\uF8C2", store-check-outline: "\uF8C3", store-clock: "\uF8C4", store-clock-outline: "\uF8C5", store-cog: "\uF8C6", store-cog-outline: "\uF8C7", store-edit: "\uF8C8", store-edit-outline: "\uF8C9", store-marker: "\uF8CA", store-marker-outline: "\uF8CB", store-minus: "\uF65D", store-minus-outline: "\uF8CC", store-off: "\uF8CD", store-off-outline: "\uF8CE", store-outline: "\uF360", store-plus: "\uF65E", store-plus-outline: "\uF8CF", store-remove: "\uF65F", store-remove-outline: "\uF8D0", store-search: "\uF8D1", store-search-outline: "\uF8D2", store-settings: "\uF8D3", store-settings-outline: "\uF8D4", storefront: "\uE7C6", storefront-outline: "\uF0C0", stove: "\uE4DD", strategy: "\uF1D5", stretch-to-page: "\uEF2A", stretch-to-page-outline: "\uEF2B", string-lights: "\uF2B9", string-lights-off: "\uF2BA", subdirectory-arrow-left: "\uE60B", subdirectory-arrow-right: "\uE60C", submarine: "\uF56B", subtitles: "\uEA15", subtitles-outline: "\uEA16", subway: "\uE6AB", subway-alert-variant: "\uED9C", subway-variant: "\uE4DE", summit: "\uE785", sun-clock: "\uFA76", sun-clock-outline: "\uFA77", sun-compass: "\uF9A4", sun-snowflake: "\uF795", sun-snowflake-variant: "\uFA78", sun-thermometer: "\uF8D5", sun-thermometer-outline: "\uF8D6", sun-wireless: "\uF7FD", sun-wireless-outline: "\uF7FE", sunglasses: "\uE4DF", surfing: "\uF745", surround-sound: "\uE5C4", surround-sound-2-0: "\uE7EF", surround-sound-2-1: "\uF728", surround-sound-3-1: "\uE7F0", surround-sound-5-1: "\uE7F1", surround-sound-5-1-2: "\uF729", surround-sound-7-1: "\uE7F2", svg: "\uE720", swap-horizontal: "\uE4E0", swap-horizontal-bold: "\uEBCC", swap-horizontal-circle: "\uEFE0", swap-horizontal-circle-outline: "\uEFE1", swap-horizontal-variant: "\uE8C0", swap-vertical: "\uE4E1", swap-vertical-bold: "\uEBCD", swap-vertical-circle: "\uEFE2", swap-vertical-circle-outline: "\uEFE3", swap-vertical-variant: "\uE8C1", swim: "\uE4E2", switch: "\uE4E3", sword: "\uE4E4", sword-cross: "\uE786", syllabary-hangul: "\uF332", syllabary-hiragana: "\uF333", syllabary-katakana: "\uF334", syllabary-katakana-halfwidth: "\uF335", symbol: "\uF500", symfony: "\uEAE5", sync: "\uE4E5", sync-alert: "\uE4E6", sync-circle: "\uF377", sync-off: "\uE4E7", tab: "\uE4E8", tab-minus: "\uEB4A", tab-plus: "\uE75B", tab-remove: "\uEB4B", tab-search: "\uF99D", tab-unselected: "\uE4E9", table: "\uE4EA", table-account: "\uF3B8", table-alert: "\uF3B9", table-arrow-down: "\uF3BA", table-arrow-left: "\uF3BB", table-arrow-right: "\uF3BC", table-arrow-up: "\uF3BD", table-border: "\uEA17", table-cancel: "\uF3BE", table-chair: "\uF060", table-check: "\uF3BF", table-clock: "\uF3C0", table-cog: "\uF3C1", table-column: "\uE834", table-column-plus-after: "\uE4EB", table-column-plus-before: "\uE4EC", table-column-remove: "\uE4ED", table-column-width: "\uE4EE", table-edit: "\uE4EF", table-eye: "\uF093", table-eye-off: "\uF3C2", table-furniture: "\uE5BB", table-headers-eye: "\uF21C", table-headers-eye-off: "\uF21D", table-heart: "\uF3C3", table-key: "\uF3C4", table-large: "\uE4F0", table-large-plus: "\uEF86", table-large-remove: "\uEF87", table-lock: "\uF3C5", table-merge-cells: "\uE9A5", table-minus: "\uF3C6", table-multiple: "\uF3C7", table-network: "\uF3C8", table-of-contents: "\uE835", table-off: "\uF3C9", table-picnic: "\uF742", table-pivot: "\uF83B", table-plus: "\uEA74", table-refresh: "\uF39F", table-remove: "\uEA75", table-row: "\uE836", table-row-height: "\uE4F1", table-row-plus-after: "\uE4F2", table-row-plus-before: "\uE4F3", table-row-remove: "\uE4F4", table-search: "\uE90E", table-settings: "\uE837", table-split-cell: "\uF429", table-star: "\uF3CA", table-sync: "\uF3A0", table-tennis: "\uEE67", tablet: "\uE4F5", tablet-android: "\uE4F6", tablet-cellphone: "\uE9A6", tablet-dashboard: "\uEECD", taco: "\uE761", tag: "\uE4F8", tag-arrow-down: "\uF72A", tag-arrow-down-outline: "\uF72B", tag-arrow-left: "\uF72C", tag-arrow-left-outline: "\uF72D", tag-arrow-right: "\uF72E", tag-arrow-right-outline: "\uF72F", tag-arrow-up: "\uF730", tag-arrow-up-outline: "\uF731", tag-check: "\uFA79", tag-check-outline: "\uFA7A", tag-faces: "\uE4F9", tag-heart: "\uE68A", tag-heart-outline: "\uEBCE", tag-minus: "\uE90F", tag-minus-outline: "\uF21E", tag-multiple: "\uE4FA", tag-multiple-outline: "\uF2F6", tag-off: "\uF21F", tag-off-outline: "\uF220", tag-outline: "\uE4FB", tag-plus: "\uE721", tag-plus-outline: "\uF221", tag-remove: "\uE722", tag-remove-outline: "\uF222", tag-search: "\uF906", tag-search-outline: "\uF907", tag-text: "\uF223", tag-text-outline: "\uE4FC", tailwind: "\uF3FE", tally-mark-1: "\uFABB", tally-mark-2: "\uFABC", tally-mark-3: "\uFABD", tally-mark-4: "\uFABE", tally-mark-5: "\uFABF", tangram: "\uE4F7", tank: "\uED39", tanker-truck: "\uEFE4", tape-drive: "\uF6DE", tape-measure: "\uEB4C", target: "\uE4FD", target-account: "\uEBCF", target-variant: "\uEA76", taxi: "\uE4FE", tea: "\uED9D", tea-outline: "\uED9E", teamviewer: "\uE4FF", teddy-bear: "\uF8FA", telescope: "\uEB4D", television: "\uE501", television-ambient-light: "\uF355", television-box: "\uE838", television-classic: "\uE7F3", television-classic-off: "\uE839", television-guide: "\uE502", television-off: "\uE83A", television-pause: "\uEF88", television-play: "\uEECE", television-shimmer: "\uF10F", television-stop: "\uEF89", temperature-celsius: "\uE503", temperature-fahrenheit: "\uE504", temperature-kelvin: "\uE505", tennis: "\uED9F", tennis-ball: "\uE506", tent: "\uE507", terraform: "\uF061", terrain: "\uE508", test-tube: "\uE667", test-tube-empty: "\uE910", test-tube-off: "\uE911", text: "\uE9A7", text-account: "\uF56F", text-box: "\uE219", text-box-check: "\uEEA5", text-box-check-outline: "\uEEA6", text-box-edit: "\uFA7B", text-box-edit-outline: "\uFA7C", text-box-minus: "\uEEA7", text-box-minus-outline: "\uEEA8", text-box-multiple: "\uEAB6", text-box-multiple-outline: "\uEAB7", text-box-outline: "\uE9EC", text-box-plus: "\uEEA9", text-box-plus-outline: "\uEEAA", text-box-remove: "\uEEAB", text-box-remove-outline: "\uEEAC", text-box-search: "\uEEAD", text-box-search-outline: "\uEEAE", text-long: "\uE9A9", text-recognition: "\uF13C", text-search: "\uF3B7", text-search-variant: "\uFA7D", text-shadow: "\uE668", text-short: "\uE9A8", text-to-speech: "\uE509", text-to-speech-off: "\uE50A", texture: "\uE50B", texture-box: "\uEFE5", theater: "\uE50C", theme-light-dark: "\uE50D", thermometer: "\uE50E", thermometer-alert: "\uEE00", thermometer-bluetooth: "\uF894", thermometer-check: "\uFA7E", thermometer-chevron-down: "\uEE01", thermometer-chevron-up: "\uEE02", thermometer-high: "\uF0C1", thermometer-lines: "\uE50F", thermometer-low: "\uF0C2", thermometer-minus: "\uEE03", thermometer-off: "\uF530", thermometer-plus: "\uEE04", thermometer-water: "\uFA7F", thermostat: "\uE392", thermostat-box: "\uE890", thought-bubble: "\uE7F5", thought-bubble-outline: "\uE7F6", thumb-down: "\uE510", thumb-down-outline: "\uE511", thumb-up: "\uE512", thumb-up-outline: "\uE513", thumbs-up-down: "\uE514", thumbs-up-down-outline: "\uF913", ticket: "\uE515", ticket-account: "\uE516", ticket-confirmation: "\uE517", ticket-confirmation-outline: "\uF3A9", ticket-outline: "\uE912", ticket-percent: "\uE723", ticket-percent-outline: "\uF42A", tie: "\uE518", tilde: "\uE724", tilde-off: "\uF8F2", timelapse: "\uE519", timeline: "\uEBD0", timeline-alert: "\uEF94", timeline-alert-outline: "\uEF97", timeline-check: "\uF531", timeline-check-outline: "\uF532", timeline-clock: "\uF1FA", timeline-clock-outline: "\uF1FB", timeline-help: "\uEF98", timeline-help-outline: "\uEF99", timeline-minus: "\uF533", timeline-minus-outline: "\uF534", timeline-outline: "\uEBD1", timeline-plus: "\uEF95", timeline-plus-outline: "\uEF96", timeline-remove: "\uF535", timeline-remove-outline: "\uF536", timeline-text: "\uEBD2", timeline-text-outline: "\uEBD3", timer: "\uF3AA", timer-10: "\uE51B", timer-3: "\uE51C", timer-alert: "\uFACB", timer-alert-outline: "\uFACC", timer-cancel: "\uFACD", timer-cancel-outline: "\uFACE", timer-check: "\uFACF", timer-check-outline: "\uFAD0", timer-cog: "\uF924", timer-cog-outline: "\uF925", timer-edit: "\uFAD1", timer-edit-outline: "\uFAD2", timer-lock: "\uFAD3", timer-lock-open: "\uFAD4", timer-lock-open-outline: "\uFAD5", timer-lock-outline: "\uFAD6", timer-marker: "\uFAD7", timer-marker-outline: "\uFAD8", timer-minus: "\uFAD9", timer-minus-outline: "\uFADA", timer-music: "\uFADB", timer-music-outline: "\uFADC", timer-off: "\uF3AB", timer-off-outline: "\uE51D", timer-outline: "\uE51A", timer-pause: "\uFADD", timer-pause-outline: "\uFADE", timer-play: "\uFADF", timer-play-outline: "\uFAE0", timer-plus: "\uFAE1", timer-plus-outline: "\uFAE2", timer-refresh: "\uFAE3", timer-refresh-outline: "\uFAE4", timer-remove: "\uFAE5", timer-remove-outline: "\uFAE6", timer-sand: "\uE51E", timer-sand-complete: "\uF99E", timer-sand-empty: "\uE6AC", timer-sand-full: "\uE78B", timer-sand-paused: "\uF99F", timer-settings: "\uF922", timer-settings-outline: "\uF923", timer-star: "\uFAE7", timer-star-outline: "\uFAE8", timer-stop: "\uFAE9", timer-stop-outline: "\uFAEA", timer-sync: "\uFAEB", timer-sync-outline: "\uFAEC", timetable: "\uE51F", tire: "\uF895", toaster: "\uF062", toaster-off: "\uF1B6", toaster-oven: "\uECD2", toggle-switch: "\uE520", toggle-switch-off: "\uE521", toggle-switch-off-outline: "\uEA18", toggle-switch-outline: "\uEA19", toggle-switch-variant: "\uFA24", toggle-switch-variant-off: "\uFA25", toilet: "\uE9AA", toolbox: "\uE9AB", toolbox-outline: "\uE9AC", tools: "\uF063", tooltip: "\uE522", tooltip-account: "\uE00B", tooltip-cellphone: "\uF83A", tooltip-check: "\uF55B", tooltip-check-outline: "\uF55C", tooltip-edit: "\uE523", tooltip-edit-outline: "\uF2C4", tooltip-image: "\uE524", tooltip-image-outline: "\uEBD4", tooltip-minus: "\uF55D", tooltip-minus-outline: "\uF55E", tooltip-outline: "\uE525", tooltip-plus: "\uEBD5", tooltip-plus-outline: "\uE526", tooltip-remove: "\uF55F", tooltip-remove-outline: "\uF560", tooltip-text: "\uE527", tooltip-text-outline: "\uEBD6", tooth: "\uE8C2", tooth-outline: "\uE528", toothbrush: "\uF128", toothbrush-electric: "\uF12B", toothbrush-paste: "\uF129", torch: "\uF605", tortoise: "\uED3A", toslink: "\uF2B7", tournament: "\uE9AD", tow-truck: "\uE83B", tower-beach: "\uE680", tower-fire: "\uE681", town-hall: "\uF874", toy-brick: "\uF287", toy-brick-marker: "\uF288", toy-brick-marker-outline: "\uF289", toy-brick-minus: "\uF28A", toy-brick-minus-outline: "\uF28B", toy-brick-outline: "\uF28C", toy-brick-plus: "\uF28D", toy-brick-plus-outline: "\uF28E", toy-brick-remove: "\uF28F", toy-brick-remove-outline: "\uF290", toy-brick-search: "\uF291", toy-brick-search-outline: "\uF292", track-light: "\uE913", trackpad: "\uE7F7", trackpad-lock: "\uE932", tractor: "\uE891", tractor-variant: "\uF4C3", trademark: "\uEA77", traffic-cone: "\uF37B", traffic-light: "\uE52A", traffic-light-outline: "\uF829", train: "\uE52B", train-car: "\uEBD7", train-car-passenger: "\uF732", train-car-passenger-door: "\uF733", train-car-passenger-door-open: "\uF734", train-car-passenger-variant: "\uF735", train-variant: "\uE8C3", tram: "\uE52C", tram-side: "\uEFE6", transcribe: "\uE52D", transcribe-close: "\uE52E", transfer: "\uF064", transfer-down: "\uEDA0", transfer-left: "\uEDA1", transfer-right: "\uE52F", transfer-up: "\uEDA2", transit-connection: "\uED3B", transit-connection-horizontal: "\uF545", transit-connection-variant: "\uED3C", transit-detour: "\uEF8A", transit-skip: "\uF514", transit-transfer: "\uE6AD", transition: "\uE914", transition-masked: "\uE915", translate: "\uE5C9", translate-off: "\uEE05", transmission-tower: "\uED3D", transmission-tower-export: "\uF92B", transmission-tower-import: "\uF92C", transmission-tower-off: "\uF9DC", trash-can: "\uEA78", trash-can-outline: "\uEA79", tray: "\uF293", tray-alert: "\uF294", tray-arrow-down: "\uE11F", tray-arrow-up: "\uE11C", tray-full: "\uF295", tray-minus: "\uF296", tray-plus: "\uF297", tray-remove: "\uF298", treasure-chest: "\uE725", tree: "\uE530", tree-outline: "\uEE68", trello: "\uE531", trending-down: "\uE532", trending-neutral: "\uE533", trending-up: "\uE534", triangle: "\uE535", triangle-outline: "\uE536", triangle-small-down: "\uFA08", triangle-small-up: "\uFA09", triangle-wave: "\uF47B", triforce: "\uEBD8", trophy: "\uE537", trophy-award: "\uE538", trophy-broken: "\uEDA3", trophy-outline: "\uE539", trophy-variant: "\uE53A", trophy-variant-outline: "\uE53B", truck: "\uE53C", truck-alert: "\uF9DD", truck-alert-outline: "\uF9DE", truck-cargo-container: "\uF8D7", truck-check: "\uECD3", truck-check-outline: "\uF299", truck-delivery: "\uE53D", truck-delivery-outline: "\uF29A", truck-fast: "\uE787", truck-fast-outline: "\uF29B", truck-flatbed: "\uF890", truck-minus: "\uF9AD", truck-minus-outline: "\uF9BC", truck-outline: "\uF29C", truck-plus: "\uF9AC", truck-plus-outline: "\uF9BB", truck-remove: "\uF9AE", truck-remove-outline: "\uF9BD", truck-snowflake: "\uF9A5", truck-trailer: "\uE726", trumpet: "\uF095", tshirt-crew: "\uEA7A", tshirt-crew-outline: "\uE53E", tshirt-v: "\uEA7B", tshirt-v-outline: "\uE53F", tsunami: "\uFA80", tumble-dryer: "\uE916", tumble-dryer-alert: "\uF1B9", tumble-dryer-off: "\uF1BA", tune: "\uE62D", tune-variant: "\uF541", tune-vertical: "\uE669", tune-vertical-variant: "\uF542", tunnel: "\uF83C", tunnel-outline: "\uF83D", turbine: "\uFA81", turkey: "\uF71A", turnstile: "\uECD4", turnstile-outline: "\uECD5", turtle: "\uECD6", twitch: "\uE542", twitter: "\uE543", two-factor-authentication: "\uE9AE", typewriter: "\uEF2C", ubisoft: "\uEBD9", ubuntu: "\uE547", ufo: "\uF0C3", ufo-outline: "\uF0C4", ultra-high-definition: "\uE7F8", umbraco: "\uE548", umbrella: "\uE549", umbrella-beach: "\uF889", umbrella-beach-outline: "\uF88A", umbrella-closed: "\uE9AF", umbrella-closed-outline: "\uF3E1", umbrella-closed-variant: "\uF3E0", umbrella-outline: "\uE54A", undo: "\uE54B", undo-variant: "\uE54C", unfold-less-horizontal: "\uE54D", unfold-less-vertical: "\uE75F", unfold-more-horizontal: "\uE54E", unfold-more-vertical: "\uE760", ungroup: "\uE54F", unicode: "\uEECF", unicorn: "\uF5C1", unicorn-variant: "\uF5C2", unicycle: "\uF5E4", unity: "\uE6AE", unreal: "\uE9B0", update: "\uE6AF", upload: "\uE551", upload-lock: "\uF372", upload-lock-outline: "\uF373", upload-multiple: "\uE83C", upload-network: "\uE6F5", upload-network-outline: "\uECD7", upload-off: "\uF0C5", upload-off-outline: "\uF0C6", upload-outline: "\uEE06", usb: "\uE552", usb-flash-drive: "\uF29D", usb-flash-drive-outline: "\uF29E", usb-port: "\uF1EF", vacuum: "\uF9A0", vacuum-outline: "\uF9A1", valve: "\uF065", valve-closed: "\uF066", valve-open: "\uF067", van-passenger: "\uE7F9", van-utility: "\uE7FA", vanish: "\uE7FB", vanish-quarter: "\uF553", vanity-light: "\uF1E0", variable: "\uEAE6", variable-box: "\uF110", vector-arrange-above: "\uE553", vector-arrange-below: "\uE554", vector-bezier: "\uEAE7", vector-circle: "\uE555", vector-circle-variant: "\uE556", vector-combine: "\uE557", vector-curve: "\uE558", vector-difference: "\uE559", vector-difference-ab: "\uE55A", vector-difference-ba: "\uE55B", vector-ellipse: "\uE892", vector-intersection: "\uE55C", vector-line: "\uE55D", vector-link: "\uEFE7", vector-point: "\uE55E", vector-polygon: "\uE55F", vector-polygon-variant: "\uF855", vector-polyline: "\uE560", vector-polyline-edit: "\uF224", vector-polyline-minus: "\uF225", vector-polyline-plus: "\uF226", vector-polyline-remove: "\uF227", vector-radius: "\uE749", vector-rectangle: "\uE5C5", vector-selection: "\uE561", vector-square: "\uE000", vector-square-close: "\uF856", vector-square-edit: "\uF8D8", vector-square-minus: "\uF8D9", vector-square-open: "\uF857", vector-square-plus: "\uF8DA", vector-square-remove: "\uF8DB", vector-triangle: "\uE562", vector-union: "\uE563", vhs: "\uEA1A", vibrate: "\uE565", vibrate-off: "\uECD8", video: "\uE566", video-2d: "\uFA1B", video-3d: "\uE7FC", video-3d-off: "\uF3D8", video-3d-variant: "\uEED0", video-4k-box: "\uE83D", video-account: "\uE918", video-box: "\uE0FC", video-box-off: "\uE0FD", video-check: "\uF068", video-check-outline: "\uF069", video-high-definition: "\uF52D", video-image: "\uE919", video-input-antenna: "\uE83E", video-input-component: "\uE83F", video-input-hdmi: "\uE840", video-input-scart: "\uEF8B", video-input-svideo: "\uE841", video-marker: "\uF9A8", video-marker-outline: "\uF9A9", video-minus: "\uE9B1", video-minus-outline: "\uE2B9", video-off: "\uE567", video-off-outline: "\uEBDA", video-outline: "\uEBDB", video-plus: "\uE9B2", video-plus-outline: "\uE1D2", video-stabilization: "\uE91A", video-switch: "\uE568", video-switch-outline: "\uE78F", video-vintage: "\uEA1B", video-wireless: "\uEED1", video-wireless-outline: "\uEED2", view-agenda: "\uE569", view-agenda-outline: "\uF1D7", view-array: "\uE56A", view-array-outline: "\uF484", view-carousel: "\uE56B", view-carousel-outline: "\uF485", view-column: "\uE56C", view-column-outline: "\uF486", view-comfy: "\uEE69", view-comfy-outline: "\uF487", view-compact: "\uEE6A", view-compact-outline: "\uEE6B", view-dashboard: "\uE56D", view-dashboard-edit: "\uF946", view-dashboard-edit-outline: "\uF947", view-dashboard-outline: "\uEA1C", view-dashboard-variant: "\uE842", view-dashboard-variant-outline: "\uF488", view-day: "\uE56E", view-day-outline: "\uF489", view-gallery: "\uF887", view-gallery-outline: "\uF888", view-grid: "\uE56F", view-grid-outline: "\uF1D8", view-grid-plus: "\uEF8C", view-grid-plus-outline: "\uF1D9", view-headline: "\uE570", view-list: "\uE571", view-list-outline: "\uF48A", view-module: "\uE572", view-module-outline: "\uF48B", view-parallel: "\uE727", view-parallel-outline: "\uF48C", view-quilt: "\uE573", view-quilt-outline: "\uF48D", view-sequential: "\uE728", view-sequential-outline: "\uF48E", view-split-horizontal: "\uEBCA", view-split-vertical: "\uEBCB", view-stream: "\uE574", view-stream-outline: "\uF48F", view-week: "\uE575", view-week-outline: "\uF490", vimeo: "\uE576", violin: "\uE60E", virtual-reality: "\uE893", virus: "\uF3B5", virus-off: "\uF8E0", virus-off-outline: "\uF8E1", virus-outline: "\uF3B6", vlc: "\uE57B", voicemail: "\uE57C", volcano: "\uFA82", volcano-outline: "\uFA83", volleyball: "\uE9B3", volume-high: "\uE57D", volume-low: "\uE57E", volume-medium: "\uE57F", volume-minus: "\uE75D", volume-mute: "\uE75E", volume-off: "\uE580", volume-plus: "\uE75C", volume-source: "\uF11F", volume-variant-off: "\uEE07", volume-vibrate: "\uF120", vote: "\uEA1E", vote-outline: "\uEA1F", vpn: "\uE581", vuejs: "\uE843", vuetify: "\uEE6C", walk: "\uE582", wall: "\uE7FD", wall-fire: "\uFA10", wall-sconce: "\uE91B", wall-sconce-flat: "\uE91C", wall-sconce-flat-outline: "\uF7C8", wall-sconce-flat-variant: "\uE41B", wall-sconce-flat-variant-outline: "\uF7C9", wall-sconce-outline: "\uF7CA", wall-sconce-round: "\uE747", wall-sconce-round-outline: "\uF7CB", wall-sconce-round-variant: "\uE91D", wall-sconce-round-variant-outline: "\uF7CC", wallet: "\uE583", wallet-giftcard: "\uE584", wallet-membership: "\uE585", wallet-outline: "\uEBDC", wallet-plus: "\uEF8D", wallet-plus-outline: "\uEF8E", wallet-travel: "\uE586", wallpaper: "\uEE08", wan: "\uE587", wardrobe: "\uEF8F", wardrobe-outline: "\uEF90", warehouse: "\uEF80", washing-machine: "\uE729", washing-machine-alert: "\uF1BB", washing-machine-off: "\uF1BC", watch: "\uE588", watch-export: "\uE589", watch-export-variant: "\uE894", watch-import: "\uE58A", watch-import-variant: "\uE895", watch-variant: "\uE896", watch-vibrate: "\uE6B0", watch-vibrate-off: "\uECD9", water: "\uE58B", water-alert: "\uF501", water-alert-outline: "\uF502", water-boiler: "\uEF91", water-boiler-alert: "\uF1B2", water-boiler-off: "\uF1B3", water-check: "\uF503", water-check-outline: "\uF504", water-circle: "\uF805", water-minus: "\uF505", water-minus-outline: "\uF506", water-off: "\uE58C", water-off-outline: "\uF507", water-opacity: "\uF854", water-outline: "\uEE09", water-percent: "\uE58D", water-percent-alert: "\uF508", water-plus: "\uF509", water-plus-outline: "\uF50A", water-polo: "\uF29F", water-pump: "\uE58E", water-pump-off: "\uEF92", water-remove: "\uF50B", water-remove-outline: "\uF50C", water-sync: "\uF7C5", water-thermometer: "\uFA84", water-thermometer-outline: "\uFA85", water-well: "\uF06A", water-well-outline: "\uF06B", waterfall: "\uF848", watering-can: "\uF480", watering-can-outline: "\uF481", watermark: "\uE611", wave: "\uEF2D", waveform: "\uF47C", waves: "\uE78C", waves-arrow-left: "\uF858", waves-arrow-right: "\uF859", waves-arrow-up: "\uF85A", waze: "\uEBDD", weather-cloudy: "\uE58F", weather-cloudy-alert: "\uEF2E", weather-cloudy-arrow-right: "\uEE6D", weather-cloudy-clock: "\uF8F5", weather-fog: "\uE590", weather-hail: "\uE591", weather-hazy: "\uEF2F", weather-hurricane: "\uE897", weather-lightning: "\uE592", weather-lightning-rainy: "\uE67D", weather-night: "\uE593", weather-night-partly-cloudy: "\uEF30", weather-partly-cloudy: "\uE594", weather-partly-lightning: "\uEF31", weather-partly-rainy: "\uEF32", weather-partly-snowy: "\uEF33", weather-partly-snowy-rainy: "\uEF34", weather-pouring: "\uE595", weather-rainy: "\uE596", weather-snowy: "\uE597", weather-snowy-heavy: "\uEF35", weather-snowy-rainy: "\uE67E", weather-sunny: "\uE598", weather-sunny-alert: "\uEF36", weather-sunny-off: "\uF4E3", weather-sunset: "\uE599", weather-sunset-down: "\uE59A", weather-sunset-up: "\uE59B", weather-tornado: "\uEF37", weather-windy: "\uE59C", weather-windy-variant: "\uE59D", web: "\uE59E", web-box: "\uEF93", web-cancel: "\uF78F", web-check: "\uE788", web-clock: "\uF249", web-minus: "\uF09F", web-off: "\uEA8D", web-plus: "\uE032", web-refresh: "\uF790", web-remove: "\uE550", web-sync: "\uF791", webcam: "\uE59F", webcam-off: "\uF736", webhook: "\uE62E", webpack: "\uE72A", webrtc: "\uF247", wechat: "\uE610", weight: "\uE5A0", weight-gram: "\uED3E", weight-kilogram: "\uE5A1", weight-lifter: "\uF15C", weight-pound: "\uE9B4", whatsapp: "\uE5A2", wheel-barrow: "\uF4F1", wheelchair: "\uFA86", wheelchair-accessibility: "\uE5A3", whistle: "\uE9B5", whistle-outline: "\uF2BB", white-balance-auto: "\uE5A4", white-balance-incandescent: "\uE5A5", white-balance-iridescent: "\uE5A6", white-balance-sunny: "\uE5A7", widgets: "\uE72B", widgets-outline: "\uF354", wifi: "\uE5A8", wifi-alert: "\uF6B4", wifi-arrow-down: "\uF6B5", wifi-arrow-left: "\uF6B6", wifi-arrow-left-right: "\uF6B7", wifi-arrow-right: "\uF6B8", wifi-arrow-up: "\uF6B9", wifi-arrow-up-down: "\uF6BA", wifi-cancel: "\uF6BB", wifi-check: "\uF6BC", wifi-cog: "\uF6BD", wifi-lock: "\uF6BE", wifi-lock-open: "\uF6BF", wifi-marker: "\uF6C0", wifi-minus: "\uF6C1", wifi-off: "\uE5A9", wifi-plus: "\uF6C2", wifi-refresh: "\uF6C3", wifi-remove: "\uF6C4", wifi-settings: "\uF6C5", wifi-star: "\uEE0A", wifi-strength-1: "\uE91E", wifi-strength-1-alert: "\uE91F", wifi-strength-1-lock: "\uE920", wifi-strength-1-lock-open: "\uF6CA", wifi-strength-2: "\uE921", wifi-strength-2-alert: "\uE922", wifi-strength-2-lock: "\uE923", wifi-strength-2-lock-open: "\uF6CB", wifi-strength-3: "\uE924", wifi-strength-3-alert: "\uE925", wifi-strength-3-lock: "\uE926", wifi-strength-3-lock-open: "\uF6CC", wifi-strength-4: "\uE927", wifi-strength-4-alert: "\uE928", wifi-strength-4-lock: "\uE929", wifi-strength-4-lock-open: "\uF6CD", wifi-strength-alert-outline: "\uE92A", wifi-strength-lock-open-outline: "\uF6CE", wifi-strength-lock-outline: "\uE92B", wifi-strength-off: "\uE92C", wifi-strength-off-outline: "\uE92D", wifi-strength-outline: "\uE92E", wifi-sync: "\uF6C6", wikipedia: "\uE5AB", wind-power: "\uFA87", wind-power-outline: "\uFA88", wind-turbine: "\uEDA4", wind-turbine-alert: "\uF9AA", wind-turbine-check: "\uF9AB", window-close: "\uE5AC", window-closed: "\uE5AD", window-closed-variant: "\uF1DA", window-maximize: "\uE5AE", window-minimize: "\uE5AF", window-open: "\uE5B0", window-open-variant: "\uF1DB", window-restore: "\uE5B1", window-shutter: "\uF11B", window-shutter-alert: "\uF11C", window-shutter-cog: "\uFA89", window-shutter-open: "\uF11D", window-shutter-settings: "\uFA8A", windsock: "\uF5F9", wiper: "\uEAE8", wiper-wash: "\uEDA5", wiper-wash-alert: "\uF8DE", wizard-hat: "\uF476", wordpress: "\uE5B3", wrap: "\uE5B5", wrap-disabled: "\uEBDE", wrench: "\uE5B6", wrench-clock: "\uF9A2", wrench-outline: "\uEBDF", xamarin: "\uE844", xml: "\uE5BF", xmpp: "\uE7FE", yahoo: "\uEB4E", yeast: "\uE5C0", yin-yang: "\uE67F", yoga: "\uF17B", youtube: "\uE5C2", youtube-gaming: "\uE847", youtube-studio: "\uE846", youtube-subscription: "\uED3F", youtube-tv: "\uE447", yurt: "\uF515", z-wave: "\uEAE9", zend: "\uEAEA", zigbee: "\uED40", zip-box: "\uE5C3", zip-box-outline: "\uEFF9", zip-disk: "\uEA22", zodiac-aquarius: "\uEA7C", zodiac-aries: "\uEA7D", zodiac-cancer: "\uEA7E", zodiac-capricorn: "\uEA7F", zodiac-gemini: "\uEA80", zodiac-leo: "\uEA81", zodiac-libra: "\uEA82", zodiac-pisces: "\uEA83", zodiac-sagittarius: "\uEA84", zodiac-scorpio: "\uEA85", zodiac-taurus: "\uEA86", zodiac-virgo: "\uEA87" }
# yamllint enable rule:line-length rule:braces
+ nspanel_name: '{{ device_attr(nspanel_deviceid, "name") | regex_replace("[^a-zA-Z0-9]", "_") | regex_replace("_+", "_") | lower }}'
+
##### Nextion dict ####
nextion:
color:
@@ -4167,12 +3572,87 @@ variables:
{{
language_tmp
if language_tmp is string
- and language_tmp in ["bg", "hr", "cs", "da", "nl", "et", "fi", "fr", "de", "el", "he", "hu", "id", "it", "ja",
+ and language_tmp in ["ar", "bg", "hr", "cs", "da", "nl", "et", "fi", "fr", "de", "el", "he", "hu", "id", "it", "ja",
"ko", "lv", "lt", "nb", "pl", "pt", "ro", "ru", "sk", "sl", "es", "sv", "tr", "uk", "zh-tw"]
else "en"
}}
mui:
+ ar: # Arabic
+ weekdays:
+ mon: الاثنين
+ tue: الثلاثاء
+ wed: الأربعاء
+ thu: الخميس
+ fri: الجمعة
+ sat: السبت
+ sun: الأحد
+ weekdays_short:
+ mon: اثن
+ tue: ثلا
+ wed: أرب
+ thu: خمي
+ fri: جمع
+ sat: سبت
+ sun: أحد
+ months:
+ jan: يناير
+ feb: فبراير
+ mar: مارس
+ apr: أبريل
+ may: مايو
+ jun: يونيو
+ jul: يوليو
+ aug: أغسطس
+ sep: سبتمبر
+ oct: أكتوبر
+ nov: نوفمبر
+ dec: ديسمبر
+ months_short:
+ jan: ينا
+ feb: فبر
+ mar: مار
+ apr: أبر
+ may: ماي
+ jun: يون
+ jul: يول
+ aug: أغس
+ sep: سبت
+ oct: أكت
+ nov: نوف
+ dec: ديس
+ relative_day:
+ today: اليوم
+ tomorrow: غدًا
+ in_2_days: بعد يومين
+ in_3_days: بعد ثلاثة أيام
+ in_4_days: بعد أربعة أيام
+ climate:
+ states:
+ "on": مشغل
+ "off": مطفأ
+ heat: تدفئة
+ please_confirm: يرجى التأكيد
+ unavailable: غير متاح
+ unknown: مجهول
+ no_name: بدون اسم
+ alarm:
+ home: في المنزل
+ away: بعيد
+ night: ليل
+ vacation: إجازة
+ bypass: تجاوز
+ disarm: نزع السلاح
+ settings:
+ reboot: إعادة تشغيل
+ sleep: وضع النوم
+ brightness: سطوع
+ bright: مشرق
+ dimming: تعتيم
+ dim: خافت
+ meridiem:
+ am: صباحاً
+ pm: مساءً
bg: # Bulgarian
weekdays:
mon: Понеделник
@@ -4183,39 +3663,39 @@ variables:
sat: Събота
sun: Неделя
weekdays_short:
- mon: Mon
- tue: Tue
- wed: Wed
- thu: Thu
- fri: Fri
- sat: Sat
- sun: Sun
+ mon: Пон
+ tue: Вто
+ wed: Сря
+ thu: Чет
+ fri: Пет
+ sat: Съб
+ sun: Нед
months:
- jan: January
- feb: February
- mar: March
- apr: April
- may: May
- jun: June
- jul: July
- aug: August
- sep: September
- oct: October
- nov: November
- dec: December
+ jan: Януари
+ feb: Февруари
+ mar: Март
+ apr: Април
+ may: Май
+ jun: Юни
+ jul: Юли
+ aug: Август
+ sep: Септември
+ oct: Октомври
+ nov: Ноември
+ dec: Декември
months_short:
- jan: Jan
- feb: Feb
- mar: Mar
- apr: Apr
- may: May
- jun: Jun
- jul: Jul
- aug: Aug
- sep: Sep
- oct: Oct
- nov: Nov
- dec: Dec
+ jan: Яну
+ feb: Фев
+ mar: Мар
+ apr: Апр
+ may: Май
+ jun: Юни
+ jul: Юли
+ aug: Авг
+ sep: Сеп
+ oct: Окт
+ nov: Ное
+ dec: Дек
relative_day:
today: Днес
tomorrow: Утре
@@ -4229,21 +3709,22 @@ variables:
heat: Отопление
please_confirm: Моля, потвърдете
unavailable: Недостъпен
+ unknown: Неизвестен
no_name: Няма име
alarm:
- home: home
- away: away
- night: night
- vacation: vacation
- bypass: bypass
- disarm: disarm
+ home: Вкъщи
+ away: Навън
+ night: Нощ
+ vacation: Ваканция
+ bypass: Заобикаляне
+ disarm: Разоръжаване
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: Рестартиране
+ sleep: Сън
+ brightness: Яркост
+ bright: Ярък
+ dimming: Затъмняване
+ dim: Тъмен
meridiem:
am: AM
pm: PM
@@ -4261,7 +3742,7 @@ variables:
tue: Út
wed: St
thu: Čt
- fri: PÁ
+ fri: Pá
sat: So
sun: Ne
months:
@@ -4283,8 +3764,8 @@ variables:
mar: Bře
apr: Dub
may: Kvě
- jun: Črn
- jul: Črc
+ jun: Čvn
+ jul: Čvc
aug: Srp
sep: Zář
oct: Říj
@@ -4293,34 +3774,35 @@ variables:
relative_day:
today: Dnes
tomorrow: Zítra
- in_2_days: Za dni
- in_3_days: Za 3 dni
- in_4_days: Za 4 dni
+ in_2_days: Za 2 dny
+ in_3_days: Za 3 dny
+ in_4_days: Za 4 dny
climate:
states:
- "on": Zap.
- "off": Vyp.
+ "on": Zapnuto
+ "off": Vypnuto
heat: Topení
- please_confirm: Prosím potvrďte
+ please_confirm: Prosím, potvrďte
unavailable: Nedostupné
+ unknown: Neznámý
no_name: Bez názvu
alarm:
- home: home
- away: away
- night: night
- vacation: vacation
- bypass: bypass
- disarm: disarm
+ home: Doma
+ away: Pryč
+ night: Noc
+ vacation: Dovolená
+ bypass: Obcházet
+ disarm: Odjistit
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: Restart
+ sleep: Spánek
+ brightness: Jas
+ bright: Světlý
+ dimming: Ztmavení
+ dim: Tmavý
meridiem:
- am: AM
- pm: PM
+ am: dop.
+ pm: odp.
da: # Danish
weekdays:
mon: Mandag
@@ -4331,24 +3813,24 @@ variables:
sat: Lørdag
sun: Søndag
weekdays_short:
- mon: Mon
- tue: Tue
- wed: Wed
- thu: Thu
- fri: Fri
- sat: Sat
- sun: Sun
+ mon: Man
+ tue: Tir
+ wed: Ons
+ thu: Tor
+ fri: Fre
+ sat: Lør
+ sun: Søn
months:
- jan: January
- feb: February
- mar: March
+ jan: Januar
+ feb: Februar
+ mar: Marts
apr: April
- may: May
- jun: June
- jul: July
+ may: Maj
+ jun: Juni
+ jul: Juli
aug: August
sep: September
- oct: October
+ oct: Oktober
nov: November
dec: December
months_short:
@@ -4356,45 +3838,46 @@ variables:
feb: Feb
mar: Mar
apr: Apr
- may: May
+ may: Maj
jun: Jun
jul: Jul
aug: Aug
sep: Sep
- oct: Oct
+ oct: Okt
nov: Nov
dec: Dec
relative_day:
today: I dag
tomorrow: I morgen
- in_2_days: om 2 dage
- in_3_days: om 3 dage
- in_4_days: om 4 dage
+ in_2_days: Om 2 dage
+ in_3_days: Om 3 dage
+ in_4_days: Om 4 dage
climate:
states:
- "on": på
- "off": "off"
- heat: varme
+ "on": Tændt
+ "off": Slukket
+ heat: Varme
please_confirm: Bekræft venligst
- unavailable: Unavailable
- no_name: No name
+ unavailable: Utilgængelig
+ unknown: Ukendt
+ no_name: Intet navn
alarm:
- home: home
- away: away
- night: night
- vacation: vacation
- bypass: bypass
- disarm: disarm
+ home: Hjemme
+ away: Væk
+ night: Nat
+ vacation: Ferie
+ bypass: Omkørsel
+ disarm: Afvæbne
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: Genstart
+ sleep: Sove
+ brightness: Lysstyrke
+ bright: Lys
+ dimming: Dæmpning
+ dim: Dæmpet
meridiem:
- am: AM
- pm: PM
+ am: FM
+ pm: EM
de: # German
weekdays:
mon: Montag
@@ -4405,13 +3888,13 @@ variables:
sat: Samstag
sun: Sonntag
weekdays_short:
- mon: Mo.
- tue: Di.
- wed: Mi.
- thu: Do.
- fri: Fr.
- sat: Sa.
- sun: So.
+ mon: Mo
+ tue: Di
+ wed: Mi
+ thu: Do
+ fri: Fr
+ sat: Sa
+ sun: So
months:
jan: Januar
feb: Februar
@@ -4426,49 +3909,50 @@ variables:
nov: November
dec: Dezember
months_short:
- jan: Jan.
- feb: Feb.
- mar: März
- apr: Apr.
+ jan: Jan
+ feb: Feb
+ mar: Mär
+ apr: Apr
may: Mai
- jun: Jun.
- jul: Jul.
- aug: Aug.
- sep: Sept.
- oct: Okt.
- nov: Nov.
- dec: Dez.
+ jun: Jun
+ jul: Jul
+ aug: Aug
+ sep: Sep
+ oct: Okt
+ nov: Nov
+ dec: Dez
relative_day:
today: Heute
tomorrow: Morgen
- in_2_days: in 2 Tagen
- in_3_days: in 3 Tagen
- in_4_days: in 4 Tagen
+ in_2_days: In 2 Tagen
+ in_3_days: In 3 Tagen
+ in_4_days: In 4 Tagen
climate:
states:
- "on": ein
- "off": aus
- heat: heizen
+ "on": Ein
+ "off": Aus
+ heat: Heizen
please_confirm: Bitte bestätigen
- unavailable: Unavailable
- no_name: No name
+ unavailable: Nicht verfügbar
+ unknown: Unbekannt
+ no_name: Kein Name
alarm:
home: Zuhause
away: Abwesend
night: Nacht
vacation: Urlaub
- bypass: Bypass
- disarm: Deaktiviert
+ bypass: Umgehen
+ disarm: Entwaffnen
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: Neustart
+ sleep: Schlafmodus
+ brightness: Helligkeit
+ bright: Hell
+ dimming: Dimmen
+ dim: Gedimmt
meridiem:
- am: AM
- pm: PM
+ am: vorm.
+ pm: nachm.
el: # Greek
weekdays:
mon: Δευτέρα
@@ -4490,7 +3974,7 @@ variables:
jan: Ιανουάριος
feb: Φεβρουάριος
mar: Μάρτιος
- apr: Απρίλος
+ apr: Απρίλιος
may: Μάιος
jun: Ιούνιος
jul: Ιούλιος
@@ -4525,24 +4009,25 @@ variables:
heat: Θέρμανση
please_confirm: Παρακαλώ επιβεβαιώστε
unavailable: Μη διαθέσιμο
+ unknown: Άγνωστο
no_name: Χωρίς όνομα
alarm:
- home: home
- away: away
- night: night
- vacation: vacation
- bypass: bypass
- disarm: disarm
+ home: Σπίτι
+ away: Μακριά
+ night: Νύχτα
+ vacation: Διακοπές
+ bypass: Παράκαμψη
+ disarm: Αφοπλισμός
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: Επανεκκίνηση
+ sleep: Ύπνος
+ brightness: Φωτεινότητα
+ bright: Φωτεινό
+ dimming: Σκίαση
+ dim: Σκοτεινό
meridiem:
- am: AM
- pm: PM
+ am: πμ
+ pm: μμ
en: # English
weekdays:
mon: Monday
@@ -4599,6 +4084,7 @@ variables:
heat: heat
please_confirm: Please confirm
unavailable: Unavailable
+ unknown: Unknown
no_name: No name
alarm:
home: Home
@@ -4629,10 +4115,10 @@ variables:
weekdays_short:
mon: Lun
tue: Mar
- wed: Mie
+ wed: Mié
thu: Jue
fri: Vie
- sat: Sab
+ sat: Sáb
sun: Dom
months:
jan: Enero
@@ -4673,6 +4159,7 @@ variables:
heat: Calentar
please_confirm: Por favor, confirme
unavailable: No disponible
+ unknown: Desconocido
no_name: Sin nombre
alarm:
home: Casa
@@ -4689,8 +4176,8 @@ variables:
dimming: Atenuación
dim: Oscuro
meridiem:
- am: AM
- pm: PM
+ am: a.m.
+ pm: p.m.
et: # Estonian
weekdays:
mon: Esmaspäev
@@ -4701,39 +4188,39 @@ variables:
sat: Laupäev
sun: Pühapäev
weekdays_short:
- mon: Mon
- tue: Tue
- wed: Wed
- thu: Thu
- fri: Fri
- sat: Sat
- sun: Sun
+ mon: E
+ tue: T
+ wed: K
+ thu: N
+ fri: R
+ sat: L
+ sun: P
months:
- jan: January
- feb: February
- mar: March
- apr: April
- may: May
- jun: June
- jul: July
+ jan: Jaanuar
+ feb: Veebruar
+ mar: Märts
+ apr: Aprill
+ may: Mai
+ jun: Juuni
+ jul: Juuli
aug: August
sep: September
- oct: October
+ oct: Oktoober
nov: November
- dec: December
+ dec: Detsember
months_short:
jan: Jan
- feb: Feb
- mar: Mar
+ feb: Veb
+ mar: Mär
apr: Apr
- may: May
+ may: Mai
jun: Jun
jul: Jul
aug: Aug
sep: Sep
- oct: Oct
+ oct: Okt
nov: Nov
- dec: Dec
+ dec: Dets
relative_day:
today: Täna
tomorrow: Homme
@@ -4742,29 +4229,30 @@ variables:
in_4_days: 4 päeva pärast
climate:
states:
- "on": aadressil
- "off": välja
- heat: soojus
+ "on": sees
+ "off": väljas
+ heat: kütte
please_confirm: Palun kinnitage
- unavailable: Unavailable
- no_name: No name
+ unavailable: Pole saadaval
+ unknown: Tundmatu
+ no_name: Nime pole
alarm:
- home: home
- away: away
- night: night
- vacation: vacation
- bypass: bypass
- disarm: disarm
+ home: Kodus
+ away: Ära
+ night: Öö
+ vacation: Puhkus
+ bypass: Möödaviik
+ disarm: Desarmeerima
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: Taaskäivita
+ sleep: Uni
+ brightness: Heledus
+ bright: Ere
+ dimming: Hämardamine
+ dim: Hämar
meridiem:
- am: AM
- pm: PM
+ am: e.l.
+ pm: p.l.
fi: # Finnish
weekdays:
mon: maanantai
@@ -4816,29 +4304,30 @@ variables:
in_4_days: 4 päivän päästä
climate:
states:
- "on": "On"
- "off": "Off"
+ "on": päällä
+ "off": pois päältä
heat: lämpö
please_confirm: Vahvista
- unavailable: ei saatavilla
- no_name: nimetön
+ unavailable: Ei saatavilla
+ unknown: Tuntematon
+ no_name: Nimeämätön
alarm:
home: Kotona
away: Poissa
night: Yö
vacation: Loma
bypass: Ohitus
- disarm: Pois
+ disarm: Pois päältä
settings:
- reboot: Uudelleenkäynnistys
+ reboot: Käynnistä uudelleen
sleep: Lepotila
brightness: Kirkkaus
bright: Kirkas
dimming: Himmennys
dim: Himmeä
meridiem:
- am: AM
- pm: PM
+ am: aamupäivä
+ pm: iltapäivä
fr: # French
weekdays:
mon: Lundi
@@ -4871,9 +4360,9 @@ variables:
dec: Décembre
months_short:
jan: Jan
- feb: Feb
+ feb: Fév
mar: Mar
- apr: Apr
+ apr: Avr
may: Mai
jun: Jun
jul: Jul
@@ -4881,33 +4370,34 @@ variables:
sep: Sep
oct: Oct
nov: Nov
- dec: Dec
+ dec: Déc
relative_day:
- today: Aujourd hui
+ today: Aujourd'hui
tomorrow: Demain
in_2_days: Dans 2 jours
in_3_days: Dans 3 jours
in_4_days: Dans 4 jours
climate:
states:
- "on": "on"
- "off": "off"
- heat: Chaleur
+ "on": Activé
+ "off": Désactivé
+ heat: Chauffage
please_confirm: Veuillez confirmer
unavailable: Indisponible
+ unknown: Inconnu
no_name: Sans nom
alarm:
- home: Présence
- away: Absence
+ home: À la maison
+ away: Absent
night: Nuit
vacation: Vacances
- bypass: Bypass
- disarm: Désarmée
+ bypass: Contournement
+ disarm: Désarmer
settings:
- reboot: Redémarrage
+ reboot: Redémarrer
sleep: Veille
brightness: Luminosité
- bright: Clair
+ bright: Lumineux
dimming: Atténuation
dim: Sombre
meridiem:
@@ -4915,21 +4405,21 @@ variables:
pm: PM
he: # Hebrew
weekdays:
- mon: ינש
- tue: ישילש
- wed: יעיבר
- thu: ישימח
- fri: ישיש
- sat: תבש
- sun: ןושאר
+ mon: יום שני
+ tue: יום שלישי
+ wed: יום רביעי
+ thu: יום חמישי
+ fri: יום שישי
+ sat: יום שבת
+ sun: יום ראשון
weekdays_short:
- mon: ב
- tue: ג
- wed: ד
- thu: ה
- fri: ו
- sat: ש
- sun: א
+ mon: ב'
+ tue: ג'
+ wed: ד'
+ thu: ה'
+ fri: ו'
+ sat: ש'
+ sun: א'
months:
jan: ינואר
feb: פברואר
@@ -4944,49 +4434,50 @@ variables:
nov: נובמבר
dec: דצמבר
months_short:
- jan: ינו
- feb: פבר
+ jan: ינו'
+ feb: פבר'
mar: מרץ
- apr: אפר
+ apr: אפר'
may: מאי
- jun: יונ
- jul: יול
- aug: אוג
- sep: ספט
- oct: אוק
- nov: נוב
- dec: דצמ
+ jun: יונ'
+ jul: יול'
+ aug: אוג'
+ sep: ספט'
+ oct: אוק'
+ nov: נוב'
+ dec: דצמ'
relative_day:
- today: םויה
- tomorrow: רחמ
- in_2_days: םיימוי דוע
- in_3_days: םימי 3 דוע
- in_4_days: םימי 4 דוע
+ today: היום
+ tomorrow: מחר
+ in_2_days: בעוד יומיים
+ in_3_days: בעוד שלושה ימים
+ in_4_days: בעוד ארבעה ימים
climate:
states:
- "on": קולד
- "off": יובכ
- heat: םוח
- please_confirm: רשא השקבב
- unavailable: Unavailable
- no_name: No name
+ "on": פעיל
+ "off": כבוי
+ heat: חימום
+ please_confirm: אנא אשר
+ unavailable: לא זמין
+ unknown: לא ידוע
+ no_name: ללא שם
alarm:
- home: home
- away: away
- night: night
- vacation: vacation
- bypass: bypass
- disarm: disarm
+ home: בבית
+ away: החוצה
+ night: לילה
+ vacation: חופשה
+ bypass: עקיפה
+ disarm: נטרול
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: הפעלה מחדש
+ sleep: שינה
+ brightness: בהירות
+ bright: בהיר
+ dimming: החשכה
+ dim: כהה
meridiem:
- am: AM
- pm: PM
+ am: לפנה"צ
+ pm: אחה"צ
hr: # Croatian
weekdays:
mon: Ponedjeljak
@@ -5040,24 +4531,25 @@ variables:
states:
"on": Uključeno
"off": Isključeno
- heat: Toplina
- please_confirm: Molim potvrdite
+ heat: Grijanje
+ please_confirm: Molimo potvrdite
unavailable: Nedostupno
+ unknown: Nepoznato
no_name: Bez imena
alarm:
- home: home
- away: away
- night: night
- vacation: vacation
- bypass: bypass
- disarm: disarm
+ home: Kod kuće
+ away: Odsutan
+ night: Noć
+ vacation: Odmor
+ bypass: Zaobići
+ disarm: Razoružati
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: Ponovno pokretanje
+ sleep: Spavanje
+ brightness: Svjetlina
+ bright: Svijetlo
+ dimming: Zatamnjenje
+ dim: Tamno
meridiem:
am: AM
pm: PM
@@ -5071,37 +4563,37 @@ variables:
sat: Szombat
sun: Vasárnap
weekdays_short:
- mon: Mon
- tue: Tue
- wed: Wed
- thu: Thu
- fri: Fri
- sat: Sat
- sun: Sun
+ mon: H
+ tue: K
+ wed: Sze
+ thu: Cs
+ fri: P
+ sat: Szo
+ sun: V
months:
- jan: January
- feb: February
- mar: March
- apr: April
- may: May
- jun: June
- jul: July
- aug: August
- sep: September
- oct: October
+ jan: Január
+ feb: Február
+ mar: Március
+ apr: Április
+ may: Május
+ jun: Június
+ jul: Július
+ aug: Augusztus
+ sep: Szeptember
+ oct: Október
nov: November
dec: December
months_short:
jan: Jan
feb: Feb
- mar: Mar
- apr: Apr
- may: May
- jun: Jun
- jul: Jul
+ mar: Márc
+ apr: Ápr
+ may: Máj
+ jun: Jún
+ jul: Júl
aug: Aug
- sep: Sep
- oct: Oct
+ sep: Szep
+ oct: Okt
nov: Nov
dec: Dec
relative_day:
@@ -5112,29 +4604,30 @@ variables:
in_4_days: 4 nap múlva
climate:
states:
- "on": a oldalon
- "off": "off"
- heat: hő
+ "on": Bekapcsolva
+ "off": Kikapcsolva
+ heat: Fűtés
please_confirm: Kérjük, erősítse meg
- unavailable: Unavailable
- no_name: No name
+ unavailable: Nem elérhető
+ unknown: Ismeretlen
+ no_name: Névtelen
alarm:
- home: home
- away: away
- night: night
- vacation: vacation
- bypass: bypass
- disarm: disarm
+ home: Otthon
+ away: Távol
+ night: Éjszaka
+ vacation: Szabadság
+ bypass: Kerülő
+ disarm: Hatástalanítás
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: Újraindítás
+ sleep: Alvás
+ brightness: Fényerő
+ bright: Világos
+ dimming: Sötétítés
+ dim: Sötét
meridiem:
- am: AM
- pm: PM
+ am: DE
+ pm: DU
id: # Indonesian
weekdays:
mon: Senin
@@ -5145,67 +4638,68 @@ variables:
sat: Sabtu
sun: Minggu
weekdays_short:
- mon: Mon
- tue: Tue
- wed: Wed
- thu: Thu
- fri: Fri
- sat: Sat
- sun: Sun
+ mon: Sen
+ tue: Sel
+ wed: Rab
+ thu: Kam
+ fri: Jum
+ sat: Sab
+ sun: Min
months:
- jan: January
- feb: February
- mar: March
+ jan: Januari
+ feb: Februari
+ mar: Maret
apr: April
- may: May
- jun: June
- jul: July
- aug: August
+ may: Mei
+ jun: Juni
+ jul: Juli
+ aug: Agustus
sep: September
- oct: October
+ oct: Oktober
nov: November
- dec: December
+ dec: Desember
months_short:
jan: Jan
feb: Feb
mar: Mar
apr: Apr
- may: May
+ may: Mei
jun: Jun
jul: Jul
- aug: Aug
+ aug: Agu
sep: Sep
- oct: Oct
+ oct: Okt
nov: Nov
- dec: Dec
+ dec: Des
relative_day:
today: Hari ini
tomorrow: Besok
- in_2_days: dalam 2 Hari
- in_3_days: dalam 3 Hari
- in_4_days: dalam 4 Hari
+ in_2_days: Dalam 2 hari
+ in_3_days: Dalam 3 hari
+ in_4_days: Dalam 4 hari
climate:
states:
- "on": "on"
- "off": "off"
- heat: panas
+ "on": Menyala
+ "off": Mati
+ heat: Pemanas
please_confirm: Mohon konfirmasi
- unavailable: Unavailable
- no_name: No name
+ unavailable: Tidak tersedia
+ unknown: Tidak diketahui
+ no_name: Tanpa nama
alarm:
- home: home
- away: away
- night: night
- vacation: vacation
- bypass: bypass
- disarm: disarm
+ home: Di rumah
+ away: Jauh
+ night: Malam
+ vacation: Liburan
+ bypass: Bypass
+ disarm: Menonaktifkan
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: Mulai ulang
+ sleep: Tidur
+ brightness: Kecerahan
+ bright: Terang
+ dimming: Redup
+ dim: Redup
meridiem:
am: AM
pm: PM
@@ -5260,15 +4754,16 @@ variables:
in_4_days: In 4 giorni
climate:
states:
- "on": "on"
- "off": "off"
+ "on": Acceso
+ "off": Spento
heat: Riscaldamento
please_confirm: Confermare
- unavailable: Unavailable
- no_name: No name
+ unavailable: Non disponibile
+ unknown: Sconosciuto
+ no_name: Senza nome
alarm:
home: Casa
- away: Fuori di Casa
+ away: Fuori casa
night: Notte
vacation: Vacanza
bypass: Bypass
@@ -5277,9 +4772,9 @@ variables:
reboot: Riavvio
sleep: Modalità ECO
brightness: Luminosità
- bright: Modalità Luminosa
- dimming: Regolazione
- dim: Reg.
+ bright: Luminoso
+ dimming: Diminuzione
+ dim: Diminuito
meridiem:
am: AM
pm: PM
@@ -5330,33 +4825,34 @@ variables:
today: 今日
tomorrow: 明日
in_2_days: 明後日
- in_3_days: 3日間
- in_4_days: 4日間
+ in_3_days: 3日後
+ in_4_days: 4日後
climate:
states:
- "on": 入
- "off": 切
- heat: 温水器
- please_confirm: ご確認下さい
- unavailable: 無効
- no_name: 名称未設定
+ "on": オン
+ "off": オフ
+ heat: 暖房
+ please_confirm: 確認してください
+ unavailable: 利用不可
+ unknown: 不明
+ no_name: 名前なし
alarm:
- home: Home
- away: Away
- night: Night
- vacation: Holiday
- bypass: Custom bypass
- disarm: Disarm
+ home: 自宅
+ away: 外出
+ night: 夜間
+ vacation: 休暇
+ bypass: バイパス
+ disarm: 解除
settings:
- reboot: Reboot
- sleep: Sleep mode
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: 再起動
+ sleep: スリープモード
+ brightness: 明るさ
+ bright: 明るい
+ dimming: 調光
+ dim: 低輝度
meridiem:
- am: AM
- pm: PM
+ am: 午前
+ pm: 午後
ko: # Korean
weekdays:
mon: 월요일
@@ -5403,34 +4899,35 @@ variables:
relative_day:
today: 오늘
tomorrow: 내일
- in_2_days: 2일
- in_3_days: 3일
- in_4_days: 4일
+ in_2_days: 이틀 후
+ in_3_days: 사흘 후
+ in_4_days: 나흘 후
climate:
states:
- "on": "on"
- "off": "off"
- heat: 온도
- please_confirm: 확인
- unavailable: 불가능
- no_name: 공백
+ "on": 켜짐
+ "off": 꺼짐
+ heat: 난방
+ please_confirm: 확인해 주세요
+ unavailable: 사용 불가
+ unknown: 알 수 없음
+ no_name: 이름 없음
alarm:
- home: 재가
+ home: 집
away: 외출
- night: 야간
+ night: 밤
vacation: 휴가
- bypass: 커스텀
+ bypass: 우회
disarm: 해제
settings:
reboot: 재부팅
- sleep: 절전
+ sleep: 슬립 모드
brightness: 밝기
- bright: 밝게
- dimming: 조절
- dim: 어둡게
+ bright: 밝은
+ dimming: 조광
+ dim: 어두운
meridiem:
- am: AM
- pm: PM
+ am: 오전
+ pm: 오후
lt: # Lithuanian
weekdays:
mon: Pirmadienis
@@ -5441,67 +4938,68 @@ variables:
sat: Šeštadienis
sun: Sekmadienis
weekdays_short:
- mon: Mon
- tue: Tue
- wed: Wed
- thu: Thu
- fri: Fri
- sat: Sat
- sun: Sun
+ mon: Pir
+ tue: Ant
+ wed: Tre
+ thu: Ket
+ fri: Pen
+ sat: Šeš
+ sun: Sek
months:
- jan: January
- feb: February
- mar: March
- apr: April
- may: May
- jun: June
- jul: July
- aug: August
- sep: September
- oct: October
- nov: November
- dec: December
+ jan: Sausis
+ feb: Vasaris
+ mar: Kovas
+ apr: Balandis
+ may: Gegužė
+ jun: Birželis
+ jul: Liepa
+ aug: Rugpjūtis
+ sep: Rugsėjis
+ oct: Spalis
+ nov: Lapkritis
+ dec: Gruodis
months_short:
- jan: Jan
- feb: Feb
- mar: Mar
- apr: Apr
- may: May
- jun: Jun
- jul: Jul
- aug: Aug
- sep: Sep
- oct: Oct
- nov: Nov
- dec: Dec
+ jan: Sau
+ feb: Vas
+ mar: Kov
+ apr: Bal
+ may: Geg
+ jun: Bir
+ jul: Lie
+ aug: Rgp
+ sep: Rgs
+ oct: Spa
+ nov: Lap
+ dec: Gru
relative_day:
today: Šiandien
tomorrow: Rytoj
- in_2_days: per 2 dienas
- in_3_days: per 3 dienas
- in_4_days: per 4 dienas
+ in_2_days: Po 2 dienų
+ in_3_days: Po 3 dienų
+ in_4_days: Po 4 dienų
climate:
states:
- "on": svetainėje
- "off": išjungta
- heat: šiluma
+ "on": Įjungta
+ "off": Išjungta
+ heat: Šildymas
please_confirm: Prašome patvirtinti
- unavailable: Unavailable
- no_name: No name
+ unavailable: Nepasiekiamas
+ unknown: Nežinomas
+ no_name: Be pavadinimo
alarm:
- home: home
- away: away
- night: night
- vacation: vacation
- bypass: bypass
- disarm: disarm
+ home: Namuose
+ away: Išvykęs
+ night: Naktis
+ vacation: Atostogos
+ bypass: Apeiti
+ disarm: Išjungti
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: Perkrauti
+ sleep: Miego režimas
+ brightness: Ryškumas
+ bright: Ryškus
+ dimming: Tamsinimas
+ dim: Tamsus
meridiem:
am: AM
pm: PM
@@ -5515,71 +5013,72 @@ variables:
sat: Sestdiena
sun: Svētdiena
weekdays_short:
- mon: Mon
- tue: Tue
- wed: Wed
- thu: Thu
- fri: Fri
- sat: Sat
- sun: Sun
+ mon: Pir
+ tue: Otr
+ wed: Tre
+ thu: Cet
+ fri: Pie
+ sat: Ses
+ sun: Sve
months:
- jan: January
- feb: February
- mar: March
- apr: April
- may: May
- jun: June
- jul: July
- aug: August
- sep: September
- oct: October
- nov: November
- dec: December
+ jan: Janvāris
+ feb: Februāris
+ mar: Marts
+ apr: Aprīlis
+ may: Maijs
+ jun: Jūnijs
+ jul: Jūlijs
+ aug: Augusts
+ sep: Septembris
+ oct: Oktobris
+ nov: Novembris
+ dec: Decembris
months_short:
jan: Jan
feb: Feb
mar: Mar
apr: Apr
- may: May
- jun: Jun
- jul: Jul
+ may: Mai
+ jun: Jūn
+ jul: Jūl
aug: Aug
sep: Sep
- oct: Oct
+ oct: Okt
nov: Nov
dec: Dec
relative_day:
today: Šodien
tomorrow: Rīt
- in_2_days: pēc 2 dienām
- in_3_days: pēc 3 dienām
- in_4_days: pēc 4 dienām
+ in_2_days: Pēc 2 dienām
+ in_3_days: Pēc 3 dienām
+ in_4_days: Pēc 4 dienām
climate:
states:
- "on": vietnē
- "off": izslēgts
- heat: siltums
+ "on": Ieslēgts
+ "off": Izslēgts
+ heat: Apkure
please_confirm: Lūdzu, apstipriniet
- unavailable: Unavailable
- no_name: No name
+ unavailable: Nav pieejams
+ unknown: Nezināms
+ no_name: Bez nosaukuma
alarm:
- home: home
- away: away
- night: night
- vacation: vacation
- bypass: bypass
- disarm: disarm
+ home: Mājās
+ away: Projām
+ night: Nakts
+ vacation: Atvaļinājums
+ bypass: Aplūkošana
+ disarm: Atbruņošana
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: Restartēt
+ sleep: Miega režīms
+ brightness: Spilgtums
+ bright: Spilgts
+ dimming: Tumšošana
+ dim: Tumšs
meridiem:
am: AM
pm: PM
- nb: # Norwegian
+ nb: # Norwegian Bokmål
weekdays:
mon: Mandag
tue: Tirsdag
@@ -5625,31 +5124,32 @@ variables:
relative_day:
today: I dag
tomorrow: I morgen
- in_2_days: om 2 dager
- in_3_days: om 3 dager
- in_4_days: om 4 dager
+ in_2_days: Om 2 dager
+ in_3_days: Om 3 dager
+ in_4_days: Om 4 dager
climate:
states:
- "on": på
- "off": av
- heat: varme
+ "on": På
+ "off": Av
+ heat: Varme
please_confirm: Vennligst bekreft
- unavailable: Unavailable
- no_name: No name
+ unavailable: Utilgjengelig
+ unknown: Ukjent
+ no_name: Ingen navn
alarm:
- home: home
- away: away
- night: night
- vacation: vacation
- bypass: bypass
- disarm: disarm
+ home: Hjemme
+ away: Borte
+ night: Natt
+ vacation: Ferie
+ bypass: Omkjøring
+ disarm: Avvæpne
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: Start på nytt
+ sleep: Søvnmodus
+ brightness: Lysstyrke
+ bright: Lys
+ dimming: Demping
+ dim: Dimmet
meridiem:
am: AM
pm: PM
@@ -5686,7 +5186,7 @@ variables:
months_short:
jan: Jan
feb: Feb
- mar: Mar
+ mar: Mrt
apr: Apr
may: Mei
jun: Jun
@@ -5704,22 +5204,23 @@ variables:
in_4_days: Over 4 dagen
climate:
states:
- "on": aan
- "off": uit
- heat: verwarm
- please_confirm: Bevestig
+ "on": Aan
+ "off": Uit
+ heat: Verwarming
+ please_confirm: Bevestig alstublieft
unavailable: Niet beschikbaar
+ unknown: Onbekend
no_name: Geen naam
alarm:
home: Thuis
away: Weg
night: Nacht
vacation: Vakantie
- bypass: Omzeil
- disarm: Ontgrendel
+ bypass: Omzeilen
+ disarm: Ontwapenen
settings:
reboot: Herstarten
- sleep: Slaap mode
+ sleep: Slaapstand
brightness: Helderheid
bright: Helder
dimming: Dimmen
@@ -5737,63 +5238,64 @@ variables:
sat: Sobota
sun: Niedziela
weekdays_short:
- mon: pon. # (alternatively pn. )
- tue: wt.
- wed: śr.
- thu: czw.
- fri: pt. # (alternatively piąt. )
- sat: sob.
- sun: niedz.
+ mon: Pon
+ tue: Wt
+ wed: Śr
+ thu: Czw
+ fri: Pt
+ sat: Sob
+ sun: Ndz
months:
- jan: styczeń
- feb: luty
- mar: marzec
- apr: kwiecień
- may: maj
- jun: czerwiec
- jul: lipiec
- aug: sierpień
- sep: wrzesień
- oct: październik
- nov: listopad
- dec: grudzień
+ jan: Styczeń
+ feb: Luty
+ mar: Marzec
+ apr: Kwiecień
+ may: Maj
+ jun: Czerwiec
+ jul: Lipiec
+ aug: Sierpień
+ sep: Wrzesień
+ oct: Październik
+ nov: Listopad
+ dec: Grudzień
months_short:
- jan: sty.
- feb: lut.
- mar: mar.
- apr: kwi.
- may: maj
- jun: cze.
- jul: lip.
- aug: sie.
- sep: wrz.
- oct: paź.
- nov: lis.
- dec: gru.
+ jan: Sty
+ feb: Lut
+ mar: Mar
+ apr: Kwi
+ may: Maj
+ jun: Cze
+ jul: Lip
+ aug: Sie
+ sep: Wrz
+ oct: Paź
+ nov: Lis
+ dec: Gru
relative_day:
today: Dzisiaj
tomorrow: Jutro
- in_2_days: za 2 dni
- in_3_days: za 3 dni
- in_4_days: za 4 dni
+ in_2_days: Za 2 dni
+ in_3_days: Za 3 dni
+ in_4_days: Za 4 dni
climate:
states:
- "on": wł
- "off": wył
- heat: ciepło
- please_confirm: Proszę o potwierdzenie
+ "on": Włączony
+ "off": Wyłączony
+ heat: Ogrzewanie
+ please_confirm: Proszę potwierdzić
unavailable: Niedostępny
+ unknown: Nieznany
no_name: Bez nazwy
alarm:
- home: Dom
+ home: W domu
away: Poza domem
night: Noc
vacation: Wakacje
- bypass: Bypass
- disarm: Rozbojenie
+ bypass: Obejście
+ disarm: Rozbroić
settings:
- reboot: Restartuj
- sleep: Usypianie
+ reboot: Restart
+ sleep: Tryb uśpienia
brightness: Jasność
bright: Jasny
dimming: Ściemnianie
@@ -5855,22 +5357,23 @@ variables:
"on": Ligado
"off": Desligado
heat: Aquecimento
- please_confirm: Confirme, por favor
+ please_confirm: Por favor, confirme
unavailable: Indisponível
+ unknown: Desconhecido
no_name: Sem nome
alarm:
home: Em casa
away: Ausente
night: Noturno
vacation: Férias
- bypass: Personalizado
+ bypass: Desvio
disarm: Desarmar
settings:
reboot: Reiniciar
sleep: Dormir
brightness: Brilho
bright: Claro
- dimming: Escurecer
+ dimming: Escurecimento
dim: Escuro
meridiem:
am: AM
@@ -5885,34 +5388,34 @@ variables:
sat: Sâmbătă
sun: Duminică
weekdays_short:
- mon: Mon
- tue: Tue
- wed: Wed
- thu: Thu
- fri: Fri
- sat: Sat
- sun: Sun
+ mon: Lun
+ tue: Mar
+ wed: Mie
+ thu: Joi
+ fri: Vin
+ sat: Sâm
+ sun: Dum
months:
- jan: January
- feb: February
- mar: March
- apr: April
- may: May
- jun: June
- jul: July
+ jan: Ianuarie
+ feb: Februarie
+ mar: Martie
+ apr: Aprilie
+ may: Mai
+ jun: Iunie
+ jul: Iulie
aug: August
- sep: September
- oct: October
- nov: November
- dec: December
+ sep: Septembrie
+ oct: Octombrie
+ nov: Noiembrie
+ dec: Decembrie
months_short:
- jan: Jan
+ jan: Ian
feb: Feb
mar: Mar
apr: Apr
- may: May
- jun: Jun
- jul: Jul
+ may: Mai
+ jun: Iun
+ jul: Iul
aug: Aug
sep: Sep
oct: Oct
@@ -5921,31 +5424,32 @@ variables:
relative_day:
today: Astăzi
tomorrow: Mâine
- in_2_days: în 2 zile
- in_3_days: în 3 zile
- in_4_days: în 4 zile
+ in_2_days: În 2 zile
+ in_3_days: În 3 zile
+ in_4_days: În 4 zile
climate:
states:
- "on": pe
- "off": "off"
- heat: căldură
+ "on": Pornit
+ "off": Oprit
+ heat: Încălzire
please_confirm: Vă rugăm să confirmați
- unavailable: Unavailable
- no_name: No name
+ unavailable: Indisponibil
+ unknown: Necunoscut
+ no_name: Fără nume
alarm:
- home: home
- away: away
- night: night
- vacation: vacation
- bypass: bypass
- disarm: disarm
+ home: Acasă
+ away: Plecat
+ night: Noapte
+ vacation: Vacanță
+ bypass: Ocolire
+ disarm: Dezarmare
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: Repornire
+ sleep: Somn
+ brightness: Luminozitate
+ bright: Luminos
+ dimming: Diminuare
+ dim: Întunecat
meridiem:
am: AM
pm: PM
@@ -5957,72 +5461,73 @@ variables:
thu: Четверг
fri: Пятница
sat: Суббота
- sun: Воскресение
+ sun: Воскресенье
weekdays_short:
- mon: Mon
- tue: Tue
- wed: Wed
- thu: Thu
- fri: Fri
- sat: Sat
- sun: Sun
+ mon: Пн
+ tue: Вт
+ wed: Ср
+ thu: Чт
+ fri: Пт
+ sat: Сб
+ sun: Вс
months:
- jan: January
- feb: February
- mar: March
- apr: April
- may: May
- jun: June
- jul: July
- aug: August
- sep: September
- oct: October
- nov: November
- dec: December
+ jan: Январь
+ feb: Февраль
+ mar: Март
+ apr: Апрель
+ may: Май
+ jun: Июнь
+ jul: Июль
+ aug: Август
+ sep: Сентябрь
+ oct: Октябрь
+ nov: Ноябрь
+ dec: Декабрь
months_short:
- jan: Jan
- feb: Feb
- mar: Mar
- apr: Apr
- may: May
- jun: Jun
- jul: Jul
- aug: Aug
- sep: Sep
- oct: Oct
- nov: Nov
- dec: Dec
+ jan: Янв
+ feb: Фев
+ mar: Мар
+ apr: Апр
+ may: Май
+ jun: Июн
+ jul: Июл
+ aug: Авг
+ sep: Сен
+ oct: Окт
+ nov: Ноя
+ dec: Дек
relative_day:
today: Сегодня
tomorrow: Завтра
- in_2_days: на 2 дня
- in_3_days: на 3 дня
- in_4_days: на 4 дня
+ in_2_days: Через 2 дня
+ in_3_days: Через 3 дня
+ in_4_days: Через 4 дня
climate:
states:
- "on": включено
- "off": выключено
- heat: нагрев
+ "on": Включено
+ "off": Выключено
+ heat: Отопление
please_confirm: Пожалуйста, подтвердите
- unavailable: Unavailable
- no_name: No name
+ unavailable: Недоступно
+ unknown: Неизвестно
+ no_name: Без названия
alarm:
- home: home
- away: away
- night: night
- vacation: vacation
- bypass: bypass
- disarm: disarm
+ home: Дома
+ away: Вне дома
+ night: Ночь
+ vacation: Отпуск
+ bypass: Обход
+ disarm: Разоружение
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: Перезагрузка
+ sleep: Сон
+ brightness: Яркость
+ bright: Яркий
+ dimming: Затемнение
+ dim: Тусклый
meridiem:
- am: AM
- pm: PM
+ am: ДП
+ pm: ПП
sk: # Slovak
weekdays:
mon: Pondelok
@@ -6063,7 +5568,7 @@ variables:
jul: Júl
aug: Aug
sep: Sep
- oct: Oct
+ oct: Okt
nov: Nov
dec: Dec
relative_day:
@@ -6074,26 +5579,27 @@ variables:
in_4_days: O 4 dni
climate:
states:
- "on": Zap.
- "off": Vyp.
+ "on": Zapnuté
+ "off": Vypnuté
heat: Kúrenie
please_confirm: Potvrďte, prosím
unavailable: Nedostupné
- no_name: Bez názvu
+ unknown: Neznámy
+ no_name: Bez mena
alarm:
home: Doma
away: Preč
night: Noc
vacation: Dovolenka
- bypass: Bypass
- disarm: Nechránené
+ bypass: Obísť
+ disarm: Zneškodniť
settings:
reboot: Reštartovať
sleep: Spánok
brightness: Jas
- bright: Zosvetlenie
- dimming: Stmavenie
- dim: Stmavenie
+ bright: Svetlý
+ dimming: Stmavovanie
+ dim: Tmavý
meridiem:
am: AM
pm: PM
@@ -6143,34 +5649,35 @@ variables:
relative_day:
today: Danes
tomorrow: Jutri
- in_2_days: v 2 dneh
- in_3_days: v 3 dneh
- in_4_days: v 4 dneh
+ in_2_days: Čez 2 dni
+ in_3_days: Čez 3 dni
+ in_4_days: Čez 4 dni
climate:
states:
- "on": na
- "off": izklop
- heat: toplota
+ "on": Vklopljeno
+ "off": Izklopljeno
+ heat: Ogrevanje
please_confirm: Prosimo, potrdite
- unavailable: Unavailable
- no_name: No name
+ unavailable: Nedosegljivo
+ unknown: Neznano
+ no_name: Brez imena
alarm:
home: Doma
away: Odsoten
night: Noč
vacation: Dopust
- bypass: Območje izlopljeno
- disarm: Izklop
+ bypass: Obvoz
+ disarm: Razorožitev
settings:
reboot: Ponovni zagon
sleep: Spanje
- brightness: Osvetlitev
+ brightness: Svetlost
bright: Svetlo
dimming: Zatemnitev
dim: Temno
meridiem:
- am: AM
- pm: PM
+ am: dop.
+ pm: pop.
sv: # Swedish
weekdays:
mon: Måndag
@@ -6224,9 +5731,10 @@ variables:
states:
"on": På
"off": Av
- heat: värme
+ heat: Värme
please_confirm: Vänligen bekräfta
unavailable: Otillgänglig
+ unknown: Okänd
no_name: Inget namn
alarm:
home: Hemma
@@ -6243,8 +5751,8 @@ variables:
dimming: Dimmning
dim: Dimma
meridiem:
- am: AM
- pm: PM
+ am: FM
+ pm: EM
tr: # Turkish
weekdays:
mon: Pazartesi
@@ -6255,145 +5763,147 @@ variables:
sat: Cumartesi
sun: Pazar
weekdays_short:
- mon: Mon
- tue: Tue
- wed: Wed
- thu: Thu
- fri: Fri
- sat: Sat
- sun: Sun
+ mon: Pzt
+ tue: Sal
+ wed: Çar
+ thu: Per
+ fri: Cum
+ sat: Cmt
+ sun: Paz
months:
- jan: January
- feb: February
- mar: March
- apr: April
- may: May
- jun: June
- jul: July
- aug: August
- sep: September
- oct: October
- nov: November
- dec: December
+ jan: Ocak
+ feb: Şubat
+ mar: Mart
+ apr: Nisan
+ may: Mayıs
+ jun: Haziran
+ jul: Temmuz
+ aug: Ağustos
+ sep: Eylül
+ oct: Ekim
+ nov: Kasım
+ dec: Aralık
months_short:
- jan: Jan
- feb: Feb
+ jan: Oca
+ feb: Şub
mar: Mar
- apr: Apr
+ apr: Nis
may: May
- jun: Jun
- jul: Jul
- aug: Aug
- sep: Sep
- oct: Oct
- nov: Nov
- dec: Dec
+ jun: Haz
+ jul: Tem
+ aug: Ağu
+ sep: Eyl
+ oct: Eki
+ nov: Kas
+ dec: Ara
relative_day:
today: Bugün
tomorrow: Yarın
- in_2_days: 2 Gün İçinde
- in_3_days: 3 Gün İçinde
- in_4_days: 4 Gün İçinde
+ in_2_days: 2 gün içinde
+ in_3_days: 3 gün içinde
+ in_4_days: 4 gün içinde
climate:
states:
- "on": üzerinde
- "off": kapalı
- heat: ısı
+ "on": Açık
+ "off": Kapalı
+ heat: Isıtma
please_confirm: Lütfen onaylayın
- unavailable: Unavailable
- no_name: No name
+ unavailable: Kullanılamaz
+ unknown: Bilinmeyen
+ no_name: İsimsiz
alarm:
- home: home
- away: away
- night: night
- vacation: vacation
- bypass: bypass
- disarm: disarm
+ home: Evde
+ away: Dışarıda
+ night: Gece
+ vacation: Tatil
+ bypass: Bypass
+ disarm: Devre dışı bırak
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: Yeniden başlat
+ sleep: Uyku modu
+ brightness: Parlaklık
+ bright: Parlak
+ dimming: Karartma
+ dim: Karanlık
meridiem:
- am: AM
- pm: PM
+ am: ÖÖ
+ pm: ÖS
uk: # Ukrainian
weekdays:
mon: Понеділок
tue: Вівторок
- wed: середа
- thu: четвер
- fri: п ятниця
+ wed: Середа
+ thu: Четвер
+ fri: П'ятниця
sat: Субота
sun: Неділя
weekdays_short:
- mon: Mon
- tue: Tue
- wed: Wed
- thu: Thu
- fri: Fri
- sat: Sat
- sun: Sun
+ mon: Пн
+ tue: Вт
+ wed: Ср
+ thu: Чт
+ fri: Пт
+ sat: Сб
+ sun: Нд
months:
- jan: January
- feb: February
- mar: March
- apr: April
- may: May
- jun: June
- jul: July
- aug: August
- sep: September
- oct: October
- nov: November
- dec: December
+ jan: Січень
+ feb: Лютий
+ mar: Березень
+ apr: Квітень
+ may: Травень
+ jun: Червень
+ jul: Липень
+ aug: Серпень
+ sep: Вересень
+ oct: Жовтень
+ nov: Листопад
+ dec: Грудень
months_short:
- jan: Jan
- feb: Feb
- mar: Mar
- apr: Apr
- may: May
- jun: Jun
- jul: Jul
- aug: Aug
- sep: Sep
- oct: Oct
- nov: Nov
- dec: Dec
+ jan: Січ
+ feb: Лют
+ mar: Бер
+ apr: Кві
+ may: Тра
+ jun: Чер
+ jul: Лип
+ aug: Сер
+ sep: Вер
+ oct: Жов
+ nov: Лис
+ dec: Гру
relative_day:
today: Сьогодні
tomorrow: Завтра
- in_2_days: через 2 дні
- in_3_days: через 3 дні
- in_4_days: через 2 дні
+ in_2_days: Через 2 дні
+ in_3_days: Через 3 дні
+ in_4_days: Через 4 дні
climate:
states:
- "on": увімк
- "off": вимк
- heat: нагрів
+ "on": Увімкнено
+ "off": Вимкнено
+ heat: Опалення
please_confirm: Будь ласка, підтвердіть
- unavailable: Unavailable
- no_name: No name
+ unavailable: Недоступно
+ unknown: Невідомо
+ no_name: Без імені
alarm:
- home: home
- away: away
- night: night
- vacation: vacation
- bypass: bypass
- disarm: disarm
+ home: Вдома
+ away: Відсутній
+ night: Ніч
+ vacation: Відпустка
+ bypass: Обхід
+ disarm: Роззброєння
settings:
- reboot: Reboot
- sleep: Sleep
- brightness: Brightness
- bright: Bright
- dimming: Dimming
- dim: Dim
+ reboot: Перезавантаження
+ sleep: Сон
+ brightness: Яскравість
+ bright: Яскравий
+ dimming: Затемнення
+ dim: Темний
meridiem:
- am: AM
- pm: PM
- zh-tw: # T.Chinese
+ am: ДП
+ pm: ПП
+ zh-tw: # Traditional Chinese
weekdays:
mon: 星期一
tue: 星期二
@@ -6449,6 +5959,7 @@ variables:
heat: 暖氣
please_confirm: 請確認
unavailable: 無法使用
+ unknown: 未知
no_name: 未命名
alarm:
home: 在家
@@ -6554,8 +6065,14 @@ variables:
FAN_ONLY: 64
states:
"on": ["on", "open", "opening", "true", "True", true, True, "playing", "heat", "cold", "dry", "armed_home", "armed_away", "armed_vacation", "armed_custom_bypass", "triggered", "pending", "arming", 1]
- "off": ["off", "closed", "closing", "false", "False", false, False, "standby", "paused", "idle", "disarmed", "disarming", 0]
+ "off": ["off", "closed", "closing", "false", "False", false, False, "standby", "paused", "idle", "disarmed", "disarming"]
unknown: ["unknown", "unavailable", None, none, ""]
+ climate:
+ "on": ["heat_cool", "heat", "heating", "cold", "cooling", "dry", "drying", "fan", "fan_only", "auto"]
+ "off": ["off", "idle"]
+ alarm_control_panel:
+ "on": ["armed_home", "armed_away", "armed_vacation", "armed_custom_bypass", "triggered", "pending", "arming"]
+ "off": ["disarmed", "disarming"]
# yamllint enable rule:truthy rule:line-length rule:comments-indentation
#############################################################
@@ -6580,15 +6097,21 @@ trigger:
##### Reboot - Trigger 'nspanel_boot_init' #####
- platform: template
- value_template: '{{ is_state(nextion_inited, "on") | default(false) if nextion_inited is string else false }}'
+ value_template: '{{ is_state(nextion_inited, "on") | default(false) }}'
for:
seconds: 1
id: nspanel_boot_init
- platform: template
- value_template: '{{ is_state(currentpage, "boot") | default(false) if currentpage is string else false }}'
+ value_template: '{{ states(blueprint_entity) | int(-1) == 0 }}'
for:
seconds: 1
id: nspanel_boot_init
+ - platform: template
+ value_template: '{{ is_state(currentpage, "boot") | default(false) }}'
+ for:
+ seconds: 1
+ id: nspanel_boot_init
+
##### Automation reload or HA started
- platform: event
event_type: automation_reloaded
@@ -6597,6 +6120,12 @@ trigger:
event: start
id: ha_started
+ ##### Wake-up sensor
+ - platform: state
+ entity_id: !input wake_up_sensors
+ to: "on"
+ id: wake_up_sensors
+
##### Trigger - Buttons - State change #################################################################################################################
##### Button01 Sync - Trigger 'current_state_entity01' #####
- platform: state
@@ -7091,14 +6620,14 @@ trigger:
id: climate_value04_state
##### Trigger - Climate - Custom buttons - State change #################################################################################################################
- ##### Climate Button 08 #####
+ ##### Climate Button page 1, Button 8 #####
- platform: state
entity_id: !input climate_button08
not_to:
- unknown
- unavailable
id: climate_button08_state
- ##### Climate Button 09 #####
+ ##### Climate Button page 2, Button 1 #####
- platform: state
entity_id: !input climate_button09
not_to:
@@ -7199,7 +6728,7 @@ condition:
- '{{ trigger.event is defined and trigger.event.data is defined }}'
- '{{ trigger.event.data.new_state is defined and trigger.event.data.new_state.state is defined }}'
- '{{ trigger.event.data.old_state is defined and trigger.event.data.old_state.state is defined }}'
- - '{{ trigger.event.data.new_state.state != trigger.event.data.new_state.state}}'
+ - '{{ trigger.event.data.new_state.state != trigger.event.data.old_state.state }}'
- condition: or # Do not update values when page entities is not visible
conditions:
- condition: not
@@ -7286,14 +6815,18 @@ action:
name: '{{ None }}'
- &variable_entity
variables:
- entity_id_is_valid: '{{ entity_id is defined and entity_id is string and entity_id.split(".") | count == 2 }}'
- entity_state: '{{ states(entity_id) | default("unknown") if entity_id_is_valid else "unknown" }}'
- entity_state_is:
- "on": '{{ entity_state in enum.states.on if entity_id_is_valid else false }}'
- "off": '{{ entity_state in enum.states.off if entity_id_is_valid else false }}'
- unknown: '{{ entity_state in enum.states.unknown if entity_id_is_valid and entity_state else true }}'
- entity_domain: '{{ entity_id.split(".")[0] if entity_id_is_valid else "unknown" }}'
- entity_icon: '{{ state_attr(entity_id, "icon") | default("") if entity_id_is_valid else "" }}'
+ entity_state: '{{ states(entity_id) | default("unknown") }}'
+ entity_has_value: '{{ has_value(entity_id) }}'
+ entity_domain: '{{ entity_id.split(".")[0] }}'
+ entity_icon: '{{ state_attr(entity_id, "icon") | default("") }}'
+ entity_state_is_on: >
+ {{
+ entity_state in enum.states.on or
+ (entity_domain == "sensor" and entity_has_value) or
+ (entity_domain in enum.states and entity_state in enum.states[entity_domain].on)
+ }}
+ entity_state_is_off: '{{ entity_state in enum.states.off or (entity_domain in enum.states and entity_state in enum.states[entity_domain].off) }}'
+ entity_state_is_unknown: '{{ (not entity_state_is_on) and (not entity_state_is_off) }}'
entity_icon_color: >
{{
(
@@ -7301,43 +6834,26 @@ action:
if overlap is defined and overlap.icon_color is defined and overlap.icon_color is sequence and overlap.icon_color | count == 3
else nextion.color.on
)
- if ((not entity_state_is.off) and (not entity_state_is.unknown))
+ if ((not entity_state_is_off) and (not entity_state_is_unknown))
else nextion.color.off
}}
- entity_friendly_name: '{{ state_attr(entity_id, "friendly_name") | default("") if entity_id_is_valid else "" }}'
- entity_state_is_number: '{{ is_number(entity_state) if entity_id_is_valid else false }}'
- entity_unit_of_measurement: '{{ state_attr(entity_id, "unit_of_measurement") | default("") if entity_id_is_valid and entity_state_is_number else "" }}'
- entity_device_class: '{{ state_attr(entity_id, "device_class") | default("") if entity_id_is_valid else "" }}'
- entity_state_mui: > # Needs translation string for "unknown"
- {{
- (
+ entity_friendly_name: '{{ state_attr(entity_id, "friendly_name") | default("") }}'
+ entity_device_class: '{{ state_attr(entity_id, "device_class") | default("") }}'
+ entity:
+ state_mui: >
+ {{
entity_state
if entity_domain != "alarm_control_panel"
else ( mui[language].alarm[entity_state | replace("armed_", "") | replace("disarmed", "disarm")] | default(entity_state) if entity_state else "unknown" )
- ) if entity_id_is_valid else "unknown"
- }}
- entity:
- id: '{{ entity_id }}'
- valid: '{{ entity_id_is_valid }}'
- has_value: '{{ has_value(entity_id) if entity_id_is_valid else false }}'
- state: '{{ entity_state if entity_id_is_valid else "unknown" }}'
- state_rounded: '{{ states(entity_id, rounded=true) if entity_state_is_number else entity_state }}'
- state_is: '{{ entity_state_is }}'
- state_mui: '{{ entity_state_mui }}'
- state_is_number: '{{ entity_state_is_number }}'
- domain: '{{ entity_domain }}'
- unit_of_measurement: '{{ entity_unit_of_measurement if entity_unit_of_measurement else "" }}'
- friendly_name: '{{ entity_friendly_name }}'
+ }}
name: >
{{
(
overlap.name
if overlap is defined and overlap.name is defined and overlap.name is string and overlap.name | length > 0
else (entity_friendly_name if entity_friendly_name is string and entity_friendly_name | length > 0 else entity_id)
- ) if entity_id_is_valid else ""
+ )
}}
- supported_features: '{{ state_attr(entity_id, "supported_features") | default(0) if entity_id_is_valid else 0 }}'
- device_class: '{{ entity_device_class }}'
icon: >
{% set icon_domain = nextion.icon.domain[entity_domain] | default(all_icons.unknown) if entity_domain else all_icons.unknown %}
{% if overlap is defined and overlap.icon is defined and overlap.icon is string and overlap.icon | length > 0 %}
@@ -7377,8 +6893,7 @@ action:
{{ icon_domain }}
{% endif %}
icon_color: >
- {% if not entity_id_is_valid %}{{ nextion.color.off }}
- {% elif entity_domain == "alarm_control_panel" %}
+ {% if entity_domain == "alarm_control_panel" %}
{% if entity_state == "disarmed" %}{{ nextion.color.off }}
{% elif entity_state in ["armed_home", "armed_away", "armed_night", "armed_vacation", "armed_bypass"] %}{{ nextion.color.green }}
{% elif entity_state in ["pending", "arming", "disarming"] %}{{ nextion.color.amber }}
@@ -7399,7 +6914,7 @@ action:
{% else %}{{ entity_icon_color }}
{% endif %}
{% elif entity_domain == "light" %}
- {% if not entity_state_is.on %}{{ nextion.color.off }}
+ {% if entity_state != "on" %}{{ nextion.color.off }}
{% else %}
{% set entity_rgb_color_attr = state_attr(entity_id, "rgb_color") | default("") %}
{% set entity_rgb_color = entity_rgb_color_attr if entity_rgb_color_attr is sequence and entity_rgb_color_attr | count == 3 else entity_icon_color %}
@@ -7677,7 +7192,12 @@ action:
embedded_climate: '{{ climate == thermostat_embedded }}'
embedded_climate_friendly_name: '{{ climate_friendly_name if climate_friendly_name else "" }}'
embedded_indoor_temperature: '{{ embedded_indoor_temperature }}'
- temperature_unit_is_fahrenheit: '{{ state_attr((nspaneltemp if embedded_indoor_temperature else indoor_temperature_sensor), "unit_of_measurement") | default("") in ["°F", "F"]}}'
+ temperature_unit_is_fahrenheit: > # Deprecated
+ {{
+ state_attr((nspaneltemp if embedded_indoor_temperature else indoor_temperature_sensor), "unit_of_measurement")
+ | default("")
+ | upper in ["°F", "F"]
+ }}
mui_please_confirm: '{{ mui[language].please_confirm }}'
mui_unavailable: '{{ mui[language].unavailable }}'
screensaver_time: '{{ screensaver_display_time if screensaver_display_time is boolean else false }}'
@@ -7720,32 +7240,54 @@ action:
sequence:
- if: '{{ nspanel_event.key is defined and nspanel_event.key is string and nspanel_event.key | length > 0 }}'
then:
- - if: '{{ nspanel_event.service == "climate.set_temperature" and nspanel_event.key in ["target_temp_high", "target_temp_low"] }}'
- then:
- - variables:
- target_temp_low: >
- {{
- nspanel_event.value
- if nspanel_event.key == "target_temp_low"
- else state_attr(nspanel_event.entity, "target_temp_low") | int(-999)
- }}
- target_temp_high: >
- {{
- nspanel_event.value
- if nspanel_event.key == "target_temp_high"
- else state_attr(nspanel_event.entity, "target_temp_high") | int(-999)
- }}
- - condition:
- - '{{ is_number(target_temp_low) and target_temp_low > -999 }}'
- - '{{ is_number(target_temp_high) and target_temp_high > -999 }}'
- - service: '{{ nspanel_event.service }}'
- data:
- target_temp_low: '{{ target_temp_low }}'
- target_temp_high: '{{ target_temp_high }}'
- target:
- entity_id: '{{ nspanel_event.entity }}'
- continue_on_error: true
- else:
+ - choose:
+ - alias: "climate.set_temperature"
+ conditions:
+ - '{{ nspanel_event.service == "climate.set_temperature" }}'
+ - '{{ nspanel_event.key in ["target_temp_high", "target_temp_low"] }}'
+ sequence:
+ - variables:
+ target_temp_low: >
+ {{
+ nspanel_event.value
+ if nspanel_event.key == "target_temp_low"
+ else state_attr(nspanel_event.entity, "target_temp_low") | int(-999)
+ }}
+ target_temp_high: >
+ {{
+ nspanel_event.value
+ if nspanel_event.key == "target_temp_high"
+ else state_attr(nspanel_event.entity, "target_temp_high") | int(-999)
+ }}
+ - condition:
+ - '{{ is_number(target_temp_low) and target_temp_low > -999 }}'
+ - '{{ is_number(target_temp_high) and target_temp_high > -999 }}'
+ - service: '{{ nspanel_event.service }}'
+ data:
+ target_temp_low: '{{ target_temp_low }}'
+ target_temp_high: '{{ target_temp_high }}'
+ target:
+ entity_id: '{{ nspanel_event.entity }}'
+ continue_on_error: true
+ - alias: "fan.turn_on"
+ conditions:
+ - '{{ nspanel_event.service == "fan.turn_on" }}'
+ - '{{ nspanel_event.key == "percentage" }}'
+ sequence:
+ - service: fan.turn_on
+ data: {}
+ target:
+ entity_id: '{{ nspanel_event.entity }}'
+ continue_on_error: true
+ - delay:
+ milliseconds: 100
+ - service: fan.set_percentage
+ data:
+ percentage: '{{ nspanel_event.value }}'
+ target:
+ entity_id: '{{ nspanel_event.entity }}'
+ continue_on_error: true
+ default:
- service: '{{ nspanel_event.service }}'
data: {"{{ nspanel_event.key }}":"{{ nspanel_event.value }}"}
target:
@@ -7964,7 +7506,6 @@ action:
overlap:
icon: '{{ repeat.item.icon if repeat.item.icon is defined else None }}'
- *variable_entity
- - condition: '{{ entity.valid }}'
- if: '{{ entity.icon_color is defined }}'
then:
- service: '{{ nextion.command.set_component_color }}'
@@ -8002,11 +7543,11 @@ action:
- variables:
entity_id: '{{ climate }}'
- *variable_entity
- - if: '{{ entity.has_value }}'
+ - if: '{{ has_value(entity_id) }}'
then:
- variables:
entity_hvac_action: '{{ state_attr(entity_id, "hvac_action") }}'
- entity_climate_action: '{{ (entity_hvac_action if entity_hvac_action and entity_hvac_action not in enum.states.unknown else entity.state) }}'
+ entity_climate_action: '{{ (entity_hvac_action if entity_hvac_action and entity_hvac_action not in enum.states.unknown else entity_state) }}'
- if: >
{{
entity_climate_action and
@@ -8092,10 +7633,25 @@ action:
overlap:
icon: '{{ repeat.item.icon if repeat.item.icon is defined else None }}'
icon_color: '{{ repeat.item.icon_color_rgb if repeat.item.icon_color_rgb is defined else None }}'
- - *variable_entity
- - condition: '{{ entity.valid }}'
- - if: '{{ (entity.state_is.on and not repeat.item.inverted) or (entity.state_is.off and repeat.item.inverted) }}'
+ entity_domain: '{{ entity_id.split(".")[0] }}'
+ entity_state_tmp: '{{ states(entity_id) | default("unknown") }}'
+ entity_hvac_action: '{{ state_attr(entity_id, "hvac_action") | default("") if entity_domain == "climate" else "unknown" }}'
+ entity_state: >
+ {{
+ (entity_hvac_action if entity_hvac_action and entity_hvac_action not in enum.states.unknown else entity_state_tmp)
+ if entity_domain == "climate" else entity_state_tmp
+ }}
+ - if:
+ - '{{ has_value(entity_id) }}'
+ - or:
+ - and:
+ - '{{ not repeat.item.inverted }}'
+ - '{{ entity_state in enum.states.on or (entity_domain in enum.states and entity_state in enum.states[entity_domain].on) }}'
+ - and:
+ - '{{ repeat.item.inverted }}'
+ - '{{ entity_state in enum.states.off or (entity_domain in enum.states and entity_state in enum.states[entity_domain].off) }}'
then:
+ - *variable_entity
### ICON Font Color ###
- if: '{{ entity.icon_color is defined }}'
then:
@@ -8168,16 +7724,15 @@ action:
entity_id: '{{ repeat.item.entity }}'
overlap:
icon: '{{ repeat.item.icon if repeat.item.icon is defined else None }}'
- icon_color: '{{ repeat.item.icon_color_rgb if repeat.item.icon_color_rgb is defined else None }}'
- *variable_entity
- - if: '{{ entity.has_value }}'
+ - if: '{{ entity_has_value }}'
then:
### ICON Font Color ###
- *delay-default
- service: '{{ nextion.command.set_component_color }}'
data:
component: '{{ repeat.item.page }}.{{ repeat.item.component }}_icon'
- foreground: '{{ entity.icon_color }}'
+ foreground: '{{ repeat.item.icon_color_rgb }}'
continue_on_error: true
### ICON Font ###
- *delay-default
@@ -8198,7 +7753,12 @@ action:
- service: '{{ nextion.command.text_printf }}'
data:
component: '{{ repeat.item.page }}.{{ repeat.item.component }}{{ "_state" if repeat.item.page == page.home }}'
- message: '{{ (entity.state_rounded ~ entity.unit_of_measurement) if entity.has_value else mui[language].unavailable }}'
+ message: >
+ {{
+ (states(entity_id, rounded=true) ~ (state_attr(entity_id, "unit_of_measurement") | default("")))
+ if entity_has_value
+ else mui[language].unavailable
+ }}
continue_on_error: true
## BUTTON PAGES 01 - 04 ##
@@ -8462,7 +8022,7 @@ action:
{{ ns.decimal_value }}
- if: '{{ button_page_index >= 0 and button_page_index <= 3 }}'
then:
- ##### Button Page Label #####
+ ##### Button page Label #####
- if: '{{ button_pages_labels[button_page_index].label | length > 0 }}'
then:
- service: '{{ nextion.command.text_printf }}'
@@ -8478,16 +8038,6 @@ action:
component: confirm
val: '{{ confirm_value }}'
continue_on_error: true
- ###### Display page while other elements are still loading #####
- - variables:
- show_while_loading: !input 'show_while_loading'
- - if: '{{ show_while_loading }}'
- then:
- - *delay-default
- - service: '{{ nextion.command.show }}'
- data:
- component: '255' # all components
- continue_on_error: true
##### NSPanel build Button page #####
- repeat:
@@ -8500,6 +8050,7 @@ action:
| list
}}
sequence: &display_button_page_button
+ - condition: '{{ repeat.item.entity is defined and repeat.item.entity is string and repeat.item.entity | length > 0 }}'
- variables:
entity_id: '{{ repeat.item.entity }}'
overlap:
@@ -8507,84 +8058,60 @@ action:
icon_color: '{{ repeat.item.icon_color_rgb if repeat.item.icon_color_rgb is defined else None }}'
name: '{{ repeat.item.name if repeat.item.name is defined else None }}'
- *variable_entity
- - if: '{{ entity.valid }}'
+ - variables:
+ current_entity_state_available: '{{ entity_state not in ["unavailable"] }}'
+ btn_state: > # Button state (on = true or off = false)
+ {{
+ (entity_state in enum.states.on and entity_domain not in ["automation"])
+ or (entity_domain == "climate" and entity_state != "off")
+ or (entity_domain in ["button","input_button","scene","automation","remote"] and trigger.id is match "current_state_entity")
+ }}
+ btn_bri_txt: > # Buttons value (brightness, temperature, etc.)
+ {% if not has_value(entity_id) %} 0
+ {% elif entity_domain == "light" and entity_state == "on" %}
+ {% set entity_brightness = state_attr(entity_id, "brightness") %}
+ {% set entity_brightness_index = entity_brightness/255 if entity_brightness and is_number(entity_brightness) else 0 %}
+ {{ (entity_brightness_index*100) | round(0) }}%
+ {% elif entity_domain == "fan" and entity_state == "on" and state_attr(entity_id, "percentage") | int(0) > 0 %}
+ {{ state_attr(entity_id, "percentage") | round(0, default=0) }}%
+ {% elif entity_domain == "cover" and entity_state in ["open", "opening", "closing"] and is_number(state_attr(entity_id, "current_position")) %}
+ {{ (state_attr(entity_id, "current_position") | int(100)) | round(0) }}%
+ {% elif entity_domain == "climate" and is_number(state_attr(entity_id, 'current_temperature')) %}
+ {% set current_temperature = state_attr(entity_id, 'current_temperature') | float %}
+ {{ current_temperature | round(0 if current_temperature >= 100 or temperature_units in ["F", "f", "°F", "°f", "K", "k"] else 1) }}{{ temperature_units}}
+ {% else %} 0
+ {% endif %}
+ - *delay-default
+ - service: '{{ nextion.command.set_button }}'
+ data:
+ page: '{{ repeat.item.page }}'
+ id: '{{ repeat.item.component }}'
+ state: '{{ btn_state if btn_state else false }}'
+ icon: '{{ entity.icon }}'
+ icon_color: '{{ entity.icon_color }}'
+ icon_font: '{{ button_pages_icon_size if is_number(button_pages_icon_size) else 8 }}'
+ bri: '{{ btn_bri_txt if btn_bri_txt and btn_bri_txt != "0%" else "" }}'
+ label: '{{ entity.name }}'
+ continue_on_error: true
+ - if: >
+ {{
+ (entity_domain in ["button", "input_button", "scene"] and trigger.id is match "current_state_entity")
+ or entity_domain in ["automation", "remote"]
+ }}
then:
- - variables:
- current_entity_state_available: '{{ entity.state not in ["unavailable"] }}'
- btn_state: > # Button state (on = true or off = false)
- {{
- (entity.state in enum.states.on and entity.domain not in ["automation"])
- or (entity.domain == "climate" and entity.state != "off")
- or (entity.domain in ["button","input_button","scene","automation","remote"] and trigger.id is match "current_state_entity")
- }}
- btn_bri_txt: > # Buttons value (brightness, temperature, etc.)
- {% if not entity.has_value %} 0
- {% elif entity.domain == "light" and entity.state == "on" %}
- {% set entity_brightness = state_attr(entity.id, "brightness") %}
- {% set entity_brightness_index = entity_brightness/255 if entity_brightness and is_number(entity_brightness) else 0 %}
- {{ (entity_brightness_index*100) | round(0) }}%
- {% elif entity.domain == "fan" and entity.state == "on" and state_attr(entity.id, "percentage") | int(0) > 0 %}
- {{ state_attr(entity.id, "percentage") | round(0, default=0) }}%
- {% elif
- entity.domain == "cover" and
- entity.state in ["open", "opening", "closing"] and
- is_number(state_attr(entity.id, "current_position")) %}
- {{ (state_attr(entity.id, "current_position") | int(100)) | round(0) }}%
- {% elif entity.domain == "climate" and is_number(state_attr(entity.id, 'current_temperature')) %}
- {% set current_temperature = state_attr(entity.id, 'current_temperature') | float %}
- {{
- current_temperature | round(0)
- if current_temperature >= 100 or temperature_units in ["F", "f", "°F", "°f", "K", "k"]
- else current_temperature | round(1)
- }}{{ temperature_units}}
- {% else %} 0
- {% endif %}
- - *delay-default
+ - delay:
+ milliseconds: 800
- service: '{{ nextion.command.set_button }}'
data:
page: '{{ repeat.item.page }}'
id: '{{ repeat.item.component }}'
- state: '{{ btn_state if btn_state else false }}'
+ state: false
icon: '{{ entity.icon }}'
- icon_color: '{{ entity.icon_color }}'
+ icon_color: '{{ nextion.color.grey_light }}'
icon_font: '{{ button_pages_icon_size if is_number(button_pages_icon_size) else 8 }}'
- bri: '{{ btn_bri_txt if btn_bri_txt and btn_bri_txt != "0%" else "" }}'
+ bri: '{{ btn_bri_txt }}'
label: '{{ entity.name }}'
continue_on_error: true
- - if: >
- {{
- (entity.domain in ["button","input_button","scene"] and trigger.id is match "current_state_entity")
- or entity.domain in ["automation", "remote"]
- }}
- then:
- - delay:
- milliseconds: 800
- - service: '{{ nextion.command.set_button }}'
- data:
- page: '{{ repeat.item.page }}'
- id: '{{ repeat.item.component }}'
- state: false
- icon: '{{ entity.icon }}'
- icon_color: '{{ nextion.color.grey_light }}'
- icon_font: '{{ button_pages_icon_size if is_number(button_pages_icon_size) else 8 }}'
- bri: '{{ btn_bri_txt }}'
- label: '{{ entity.name }}'
- continue_on_error: true
- ###### SHOW All component when page loading done #####
- - if: '{{ not show_while_loading }}'
- then:
- - *delay-default
- - service: '{{ nextion.command.show }}'
- data:
- component: '255' # all components
- continue_on_error: true
- else:
- ###### Show empty page #####
- - *delay-default
- - service: '{{ nextion.command.show }}'
- data:
- component: '255' # all components
- continue_on_error: true
## PAGE LIGHT ##
- alias: Light settings page
@@ -8713,6 +8240,44 @@ action:
if nspanel_event is defined and nspanel_event.entity is defined
else (trigger.entity_id if trigger.entity_id is defined else trigger.event.data.entity_id)
}}
+ entity_device_class: '{{ state_attr(cover_entity, "device_class") | default("") }}'
+ cover_icons:
+ open: >
+ {{
+ all_icons[device_class_icons.cover[entity_device_class + "-open"]]
+ if
+ entity_device_class is defined and
+ entity_device_class is string and
+ entity_device_class | length > 0 and
+ (entity_device_class ~ "-open") in device_class_icons.cover and
+ device_class_icons.cover[entity_device_class ~ "-open"] in all_icons
+ else all_icons[device_class_icons.cover["shutter-open"]]
+ }}
+ close: >
+ {{
+ all_icons[device_class_icons.cover[entity_device_class + "-closed"]]
+ if
+ entity_device_class is defined and
+ entity_device_class is string and
+ entity_device_class | length > 0 and
+ (entity_device_class ~ "-closed") in device_class_icons.cover and
+ device_class_icons.cover[entity_device_class ~ "-closed"] in all_icons
+ else all_icons[device_class_icons.cover["shutter-closed"]]
+ }}
+ ##### Cover Open/close Icons #####
+ - service: '{{ nextion.command.text_printf }}'
+ data:
+ component: cover.cover_open
+ message: '{{ cover_icons.open }}'
+ continue_on_error: true
+ - *delay-default
+ - service: '{{ nextion.command.text_printf }}'
+ data:
+ component: cover.cover_close
+ message: '{{ cover_icons.close }}'
+ continue_on_error: true
+ - *delay-default
+
##### COVER State
- service: '{{ nextion.command.value }}'
data:
@@ -8960,20 +8525,21 @@ action:
then:
- variables:
entity_id: '{{ alarm_entity }}'
+ supported_features: '{{ state_attr(entity_id, "supported_features") | default(0) }}'
- *variable_entity
- - condition: '{{ entity.supported_features > 0 }}'
+ - condition: '{{ supported_features > 0 }}'
- variables: # https://github.com/home-assistant/core/blob/dev/homeassistant/components/alarm_control_panel/const.py
alarm:
- code_format: '{{ state_attr(entity.id, "code_format") }}'
- code_arm_required: '{{ state_attr(entity.id, "code_arm_required") | default(true) }}'
+ code_format: '{{ state_attr(entity_id, "code_format") }}'
+ code_arm_required: '{{ state_attr(entity_id, "code_arm_required") | default(true) }}'
- service: '{{ nextion.command.alarm_settings }}'
data:
page_title: '{{ entity.name }}'
- state: '{{ entity.state }}'
- supported_features: '{{ entity.supported_features }}'
+ state: '{{ entity_state }}'
+ supported_features: '{{ supported_features }}'
code_format: '{{ alarm.code_format if alarm.code_format else "none" }}'
code_arm_required: '{{ alarm.code_arm_required if alarm.code_arm_required else false }}'
- entity: '{{ entity.id }}'
+ entity: '{{ entity_id }}'
mui_alarm: '{{ dict.values(mui[language].alarm) | list }}'
continue_on_error: true
@@ -9167,7 +8733,6 @@ action:
icon: '{{ repeat.item.icon }}'
icon_color: '{{ repeat.item.icon_color_rgb }}'
- *variable_entity
- - condition: '{{ entity.valid }}'
### ICON Font Color ###
- *delay-default
- service: '{{ nextion.command.set_component_color }}'
@@ -9389,23 +8954,26 @@ action:
- repeat:
for_each: '{{ entity_pages_entities[first_entity:last_entity] }}'
sequence: &update_entity_page_entity
- - if: '{{ repeat.item.entity is string and repeat.item.entity | length > 0 }}'
- then:
- - variables:
- entity_id: '{{ repeat.item.entity }}'
- overlap:
- icon: '{{ repeat.item.icon if repeat.item.icon is defined else None }}'
- name: '{{ repeat.item.name if repeat.item.name is defined else None }}'
- - *variable_entity
- - condition: '{{ entity.valid }}'
- - service: '{{ nextion.command.set_entity }}'
- data:
- ent_id: '{{ repeat.item.page }}.{{ repeat.item.component }}'
- ent_icon: '{{ entity.icon }}'
- ent_label: '{{ entity.name }}'
- ent_value: '{{ (entity.state_rounded ~ entity.unit_of_measurement) if entity.has_value else mui[language].unavailable }}'
- ent_value_xcen: '{{ entitypages_value_alignment }}'
- continue_on_error: true
+ - condition: '{{ repeat.item.entity is string and repeat.item.entity | length > 0 }}'
+ - variables:
+ entity_id: '{{ repeat.item.entity }}'
+ overlap:
+ icon: '{{ repeat.item.icon if repeat.item.icon is defined else None }}'
+ name: '{{ repeat.item.name if repeat.item.name is defined else None }}'
+ - *variable_entity
+ - service: '{{ nextion.command.set_entity }}'
+ data:
+ ent_id: '{{ repeat.item.page }}.{{ repeat.item.component }}'
+ ent_icon: '{{ entity.icon }}'
+ ent_label: '{{ entity.name }}'
+ ent_value: >
+ {{
+ (states(entity_id, rounded=true) ~ (state_attr(entity_id, "unit_of_measurement") | default("")))
+ if has_value(entity_id)
+ else mui[language].unavailable
+ }}
+ ent_value_xcen: '{{ entitypages_value_alignment }}'
+ continue_on_error: true
## PAGE WEATHER (WEATHER01 to WEATHER05) ##
- alias: Weather pages
@@ -9930,28 +9498,27 @@ action:
last_click_button: '{{ hardware.buttons.left if nspanel_event.component == "hw_bt_left" else hardware.buttons.right }}'
entity_id: '{{ last_click_button.entity }}'
- *variable_entity
- - condition: '{{ entity.valid }}'
- choose:
- alias: Long click
conditions:
- - '{{ nspanel_event.command == "long_click" or entity.domain in ["climate", "media_player"] }}'
+ - '{{ nspanel_event.command == "long_click" or entity_domain in ["climate", "media_player"] }}'
sequence:
- choose:
- alias: Default
conditions:
- '{{ last_click_button.hold_select == "Default" }}'
- - '{{ entity.domain in ["alarm_control_panel", "climate", "cover", "light", "fan", "media_player"] }}'
+ - '{{ entity_domain in ["alarm_control_panel", "climate", "cover", "light", "fan", "media_player"] }}'
sequence:
- variables:
back_page: '{{ page.home }}'
- &open_entity_settings_page
service: '{{ nextion.command.open_entity_settings_page }}'
data:
- page: '{{ entity.domain }}'
+ page: '{{ entity_domain }}'
page_label: '{{ entity.name }}'
page_icon: '{{ entity.icon }}'
page_icon_color: '{{ entity.icon_color }}'
- entity: '{{ "embedded_climate" if entity.id == thermostat_embedded else entity.id }}'
+ entity: '{{ "embedded_climate" if entity_id == thermostat_embedded else entity_id }}'
back_page: '{{ back_page }}'
continue_on_error: true
- alias: Custom action - Left
@@ -10024,20 +9591,19 @@ action:
icon: '{{ last_click_button.icon if last_click_button.icon is defined else None }}'
name: '{{ last_click_button.name if last_click_button.name is defined else None }}'
- *variable_entity
- - condition: '{{ entity.valid }}'
- choose:
- alias: Long click
conditions:
- - '{{ nspanel_event.command == "long_click" or entity.domain in ["climate", "media_player"] }}'
- - '{{ entity.domain in ["alarm_control_panel", "climate", "cover", "light", "fan", "media_player"] }}'
+ - '{{ nspanel_event.command == "long_click" or entity_domain in ["climate", "media_player"] }}'
+ - '{{ entity_domain in ["alarm_control_panel", "climate", "cover", "light", "fan", "media_player"] }}'
sequence:
- variables:
back_page: '{{ nspanel_event.page }}'
- *open_entity_settings_page
- alias: Short click
conditions:
- - '{{ nspanel_event.command == "short_click" and entity.domain not in ["alarm_control_panel", "climate", "media_player"] }}'
- - '{{ entity.domain not in ["unknown", "person", "binary_sensor", "sensor"] }}'
+ - '{{ nspanel_event.command == "short_click" and entity_domain not in ["alarm_control_panel", "climate", "media_player"] }}'
+ - '{{ entity_domain not in ["unknown", "person", "binary_sensor", "sensor"] }}'
sequence:
- *short_press-service_call
@@ -10091,9 +9657,8 @@ action:
icon: '{{ last_click_button.icon if last_click_button.icon is defined else None }}'
name: '{{ last_click_button.name if last_click_button.name is defined else None }}'
- *variable_entity
- - condition: '{{ entity.valid }}'
- if:
- - '{{ entity.domain in ["alarm_control_panel", "climate", "cover", "fan", "light", "media_player"] }}'
+ - '{{ entity_domain in ["alarm_control_panel", "climate", "cover", "fan", "light", "media_player"] }}'
then:
- variables:
back_page: '{{ page.home }}'
@@ -10115,7 +9680,7 @@ action:
message: >
ESPHome cannot provide a valid Blueprint version.
- - Panel: {{ nspanel_name }}
+ - Panel: {{ device_attr(nspanel_deviceid, "name") ~ (" (" ~ nspanel_name ~ ")") if nspanel_name != device_attr(nspanel_deviceid, "name") }}
- TFT: {{ nspanel_event.tft }}
@@ -10144,7 +9709,7 @@ action:
message: >
There's a version mismatch between NSPanel_HA_Blueprint components. Please update all the components to the same version.
- - Panel: {{ nspanel_name }}
+ - Panel: {{ device_attr(nspanel_deviceid, "name") ~ (" (" ~ nspanel_name ~ ")") if nspanel_name != device_attr(nspanel_deviceid, "name") }}
- TFT: {{ nspanel_event.tft }}
@@ -10182,7 +9747,6 @@ action:
entity_id: '{{ climate }}'
back_page: '{{ page.home }}'
- *variable_entity
- - condition: '{{ entity.valid }}'
- *open_entity_settings_page
- alias: Show button - Notification clear
@@ -10241,7 +9805,7 @@ action:
message: >
The sensor "Current Page" (`{{ currentpage }}`) is unavailable.
- - Panel: {{ nspanel_name }}
+ - Panel: {{ device_attr(nspanel_deviceid, "name") ~ (" (" ~ nspanel_name ~ ")") if nspanel_name != device_attr(nspanel_deviceid, "name") }}
- Blueprint version: {{ blueprint_version }}
@@ -10607,6 +10171,17 @@ action:
url: "default"
continue_on_error: true
+ #### TFT Upload Automation #####
+ - alias: Wake-up
+ conditions:
+ - condition: trigger
+ id: wake_up_sensors
+ sequence:
+ - service: '{{ nextion.command.wake_up }}'
+ data:
+ reset_timer: true
+ continue_on_error: true
+
#############################################################
##### CLOSE - Action #####
#############################################################
diff --git a/nspanel_eu.tft b/nspanel_eu.tft
index 36f6273..df62580 100644
Binary files a/nspanel_eu.tft and b/nspanel_eu.tft differ
diff --git a/nspanel_us.tft b/nspanel_us.tft
index 1f20d8b..b157138 100644
Binary files a/nspanel_us.tft and b/nspanel_us.tft differ
diff --git a/nspanel_us_land.tft b/nspanel_us_land.tft
index 8a0ed2a..66175f0 100644
Binary files a/nspanel_us_land.tft and b/nspanel_us_land.tft differ