#####################################################################################################
##### NSPANEL ESPHOME created by Blackymas - https://github.com/Blackymas/NSPanel_HA_Blueprint  #####
##### ESPHOME ADVANCED                                                                          #####
##### 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.                              #####
#####################################################################################################
##### ATTENTION: This will add advanced elements to the core system and requires the core part. #####
#####################################################################################################
---
substitutions:
  ##### Do not change this here.  #####
  ##### Set your substitutions on #####
  ##### your base yaml file.      #####
  web_password: ${wifi_password}
  #####################################

button:
  ##### EXIT REPARSE TFT DISPLAY #####
  - name: ${device_name} Exit reparse
    platform: template
    icon: mdi:file-sync
    id: tft_reparse_off
    entity_category: config
    on_press:
      - logger.log: "Button pressed: Exit reparse"
      - script.execute: exit_reparse

  ##### UPDATE TFT BLANK DISPLAY #####
  - name: ${device_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:

sensor:
  ##### Uptime Sensors #####
  - name: ${device_name} Uptime seconds
    id: uptime_sec
    platform: uptime
    internal: true

  - name: ${device_name} API uptime
    id: api_timestamp
    platform: template
    lambda: 'return id(time_provider).now().timestamp;'
    internal: false
    device_class: timestamp
    entity_category: diagnostic
    accuracy_decimals: 0
    update_interval: never

  - name: ${device_name} Device uptime
    id: device_timestamp
    platform: template
    lambda: 'return (id(time_provider).now().timestamp - id(uptime_sec).state);'
    internal: false
    device_class: timestamp
    entity_category: diagnostic
    accuracy_decimals: 0
    update_interval: never

text_sensor:
  ##### ESPhome version used to compile the app #####
  - name: ${device_name} ESPhome Version
    platform: version
    disabled_by_default: true

  - platform: wifi_info
    ip_address:
      name: ${device_name} IP
      disabled_by_default: true
      id: ip_address
    ssid:
      name: ${device_name} SSID
      disabled_by_default: true
    bssid:
      name: ${device_name} BSSID
      disabled_by_default: true

time:
  - id: !extend time_provider
    on_time_sync:
      then:
        - component.update: api_timestamp
        - component.update: device_timestamp

web_server:
  id: web_server_std
  port: 80
  auth:
    username: admin
    password: ${web_password}
