ESPHome: Difference between revisions

From ScottWiki
Jump to navigation Jump to search
(Created page with "Useful YAML scripts for ESPHome")
 
No edit summary
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
Useful YAML scripts for ESPHome
Useful YAML scripts for ESPHome
== CYD Basic Demo ==
<pre>
esphome:
  name: cyd
  friendly_name: CYD
esp32:
  board: esp32dev
  framework:
    type: arduino
# Enable logging
logger:
api:
  encryption:
    key: "<key>"
ota:
  password: "<PASSWORD>"
# Setup WiFi credentials
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  fast_connect: true
  domain: .scottworld.net
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "CYD"
    password: "<password>"
captive_portal:
time:
  - platform: homeassistant
    id: homeassistant_time
web_server:
# Create a font to use, add and remove glyphs as needed.
font:
  - file: 'fonts/Arimo-Regular.ttf'
    id: arimo14
    size: 14
  - file: 'fonts/Arimo-Regular.ttf'
    id: arimo24
    size: 24
  - file: 'fonts/Arimo-Regular.ttf'
    id: arimo96
    size: 96
    glyphs: ":0123456789"
# Create a Home Assistant blue color
color:
  - id: ha_blue
    hex: 51c0f2
  - id: red
    hex: ff0000
# Create an ESPHome logo image
image:
  - file: "images/esphome.png"
    id: esphome_image
    type: RGB24
light:
  - platform: monochromatic
    output: backlight_pwm
    name: "Display Backlight"
    id: backlight
    restore_mode: ALWAYS_ON
  - platform: rgb
    name: "Status Light"
    red: rgb_red
    green: rgb_green
    blue: rgb_blue
sensor:
  - platform: homeassistant
    id: power_usage
    entity_id: sensor.envoy_122041077530_current_power_consumption
    internal: true
# Setup two binary sensors for the two areas for touch
binary_sensor:
  - platform: touchscreen
    name: Prev
    x_min: 0
    x_max: 30
    y_min: 0
    y_max: 240
    on_press:
      - display.page.show_previous: display_screen
      - component.update: display_screen
  - platform: touchscreen
    name: Next
    x_min: 190
    x_max: 320
    y_min: 0
    y_max: 240
    on_press:
      - display.page.show_next: display_screen
      - component.update: display_screen
spi:
  - id: tft
    clk_pin: GPIO14
    mosi_pin: GPIO13
    miso_pin: GPIO12
  - id: touch
    clk_pin: GPIO25
    mosi_pin: GPIO32
    miso_pin: GPIO39
# Setup a pin to control the backlight
output:
  - platform: ledc
    pin: GPIO21
    id: backlight_pwm
  - platform: ledc
    pin: GPIO04
    inverted: True
    id: rgb_red
  - platform: ledc
    pin: GPIO16
    id: rgb_green
    inverted: True
  - platform: ledc
    pin: GPIO17
    id: rgb_blue
    inverted: True
graph:
  - id: powergraph
    sensor: power_usage
    duration: 30min
    width: 300
    height: 180
    x_grid: 5min
    y_grid: 1000.0
    max_value: 8000.0
    min_value: 0.0
    color: red
display:
  - platform: ili9xxx
    model: ili9341
    id: display_screen
    spi_id: tft
    cs_pin: GPIO15
    dc_pin: GPIO2
    dimensions:
      height: 240
      width: 320
    transform:
      mirror_y: true
    color_order: rgb
    pages:
      - id: homeclock
        lambda: |-
          it.fill(id(ha_blue));
          it.image(120,10, id(esphome_image));
          it.strftime(100, 100, id(arimo24), "%Y-%m-%d", id(homeassistant_time).now());
          it.strftime(40, 120, id(arimo96), "%H:%M", id(homeassistant_time).now());
      - id: homepower
        lambda: |-
          it.fill(id(Color::BLACK));
          it.print(0, 60, id(arimo14), TextAlign::TOP_LEFT, "8kW");
          it.print(0, 105, id(arimo14), TextAlign::CENTER_LEFT, "6kW");
          it.print(0, 150, id(arimo14), TextAlign::CENTER_LEFT, "4kW");
          it.print(0, 195, id(arimo14), TextAlign::CENTER_LEFT, "2kW");
          it.print(0, 240, id(arimo14), TextAlign::BOTTOM_LEFT, "0kW");
          if (id(power_usage).has_state()) {
            it.printf(160, 5, id(arimo24), TextAlign::TOP_CENTER, "Power Usage: %4.0fW", id(power_usage).state);
          }
          it.graph(20, 60, id(powergraph));
touchscreen:
  platform: xpt2046
  spi_id: touch
  cs_pin: GPIO33
  interrupt_pin: GPIO36
  update_interval: 50ms
  transform:
    swap_xy: True
</pre>

Latest revision as of 22:17, 3 January 2024

Useful YAML scripts for ESPHome


CYD Basic Demo

esphome:
  name: cyd
  friendly_name: CYD
 
esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

api:
  encryption:
    key: "<key>"

ota:
  password: "<PASSWORD>"

# Setup WiFi credentials
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  fast_connect: true
  domain: .scottworld.net

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "CYD"
    password: "<password>"

captive_portal:

time:
  - platform: homeassistant
    id: homeassistant_time

web_server:

# Create a font to use, add and remove glyphs as needed. 
font:
  - file: 'fonts/Arimo-Regular.ttf'
    id: arimo14
    size: 14
  - file: 'fonts/Arimo-Regular.ttf'
    id: arimo24
    size: 24
  - file: 'fonts/Arimo-Regular.ttf'
    id: arimo96
    size: 96
    glyphs: ":0123456789"

# Create a Home Assistant blue color
color:
  - id: ha_blue
    hex: 51c0f2
  - id: red
    hex: ff0000

# Create an ESPHome logo image
image:
  - file: "images/esphome.png"
    id: esphome_image
    type: RGB24

light:
  - platform: monochromatic
    output: backlight_pwm
    name: "Display Backlight"
    id: backlight
    restore_mode: ALWAYS_ON
  - platform: rgb
    name: "Status Light"
    red: rgb_red
    green: rgb_green
    blue: rgb_blue

sensor:
  - platform: homeassistant
    id: power_usage
    entity_id: sensor.envoy_122041077530_current_power_consumption
    internal: true

# Setup two binary sensors for the two areas for touch
binary_sensor:
  - platform: touchscreen
    name: Prev
    x_min: 0
    x_max: 30
    y_min: 0
    y_max: 240
    on_press:
      - display.page.show_previous: display_screen
      - component.update: display_screen

  - platform: touchscreen
    name: Next
    x_min: 190
    x_max: 320
    y_min: 0
    y_max: 240
    on_press:
      - display.page.show_next: display_screen
      - component.update: display_screen

spi:
  - id: tft
    clk_pin: GPIO14
    mosi_pin: GPIO13
    miso_pin: GPIO12
  - id: touch
    clk_pin: GPIO25
    mosi_pin: GPIO32
    miso_pin: GPIO39

# Setup a pin to control the backlight
output:
  - platform: ledc
    pin: GPIO21
    id: backlight_pwm
  - platform: ledc
    pin: GPIO04
    inverted: True
    id: rgb_red
  - platform: ledc
    pin: GPIO16
    id: rgb_green
    inverted: True
  - platform: ledc
    pin: GPIO17
    id: rgb_blue
    inverted: True

graph:
  - id: powergraph
    sensor: power_usage
    duration: 30min
    width: 300
    height: 180
    x_grid: 5min
    y_grid: 1000.0
    max_value: 8000.0
    min_value: 0.0
    color: red

display:
  - platform: ili9xxx
    model: ili9341
    id: display_screen
    spi_id: tft
    cs_pin: GPIO15
    dc_pin: GPIO2
    dimensions:
      height: 240
      width: 320
    transform:
       mirror_y: true
    color_order: rgb
    pages:
      - id: homeclock
        lambda: |-
          it.fill(id(ha_blue));
          it.image(120,10, id(esphome_image));
          it.strftime(100, 100, id(arimo24), "%Y-%m-%d", id(homeassistant_time).now());
          it.strftime(40, 120, id(arimo96), "%H:%M", id(homeassistant_time).now());
      - id: homepower
        lambda: |-
          it.fill(id(Color::BLACK));
          it.print(0, 60, id(arimo14), TextAlign::TOP_LEFT, "8kW");
          it.print(0, 105, id(arimo14), TextAlign::CENTER_LEFT, "6kW");
          it.print(0, 150, id(arimo14), TextAlign::CENTER_LEFT, "4kW");
          it.print(0, 195, id(arimo14), TextAlign::CENTER_LEFT, "2kW");
          it.print(0, 240, id(arimo14), TextAlign::BOTTOM_LEFT, "0kW");
          if (id(power_usage).has_state()) {
            it.printf(160, 5, id(arimo24), TextAlign::TOP_CENTER, "Power Usage: %4.0fW", id(power_usage).state);
          }
          it.graph(20, 60, id(powergraph));

touchscreen:
  platform: xpt2046
  spi_id: touch
  cs_pin: GPIO33
  interrupt_pin: GPIO36
  update_interval: 50ms
  transform:
    swap_xy: True