substitutions:
  local_update_interval: 30s

##########################################################################################
# GENERAL COMMON SENSORS
# https://esphome.io/components/sensor/
# LITE (1MB-friendly)
##########################################################################################
sensor:
  - platform: uptime
    name: "Uptime (s):"
    update_interval: ${local_update_interval}
    id: uptime_sensor
    entity_category: diagnostic

  - platform: wifi_signal
    name: "Wifi (dB):"
    id: wifi_signal_db
    update_interval: ${local_update_interval}
    entity_category: diagnostic

  - platform: copy # Reports the WiFi signal strength in %
    source_id: wifi_signal_db
    name: "WiFi (%):"
    filters:
      - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
    unit_of_measurement: "% Max"
    entity_category: "diagnostic"
    device_class: ""

binary_sensor:
  - platform: status
    name: "Network Status"
    icon: mdi:check-network-outline
    entity_category: diagnostic

##########################################################################################
# Text Sensors
# https://esphome.io/components/text_sensor/index.html
##########################################################################################
text_sensor:
  - platform: uptime # Uptime for this device human readable
    name: "Uptime:"
    icon: mdi:clock-start
    update_interval: ${local_update_interval}
    entity_category: "diagnostic"

##########################################################################################
# BUTTONS
# Diagnostic buttons, activated if needed in HA
##########################################################################################
button:
  - platform: safe_mode
    name: "Safe Mode Restart:"
    entity_category: "diagnostic"
    disabled_by_default: true
  - platform: restart
    name: "Restart:"
    entity_category: "diagnostic"
    disabled_by_default: true
  - platform: factory_reset
    name: "FACTORY RESET:"
    entity_category: "diagnostic"
    disabled_by_default: true
