scripts/clock.yaml/clock.yaml

134 lines
3.1 KiB
YAML

esphome:
name: mini-display-tv-yellow
friendly_name: Mini Display TV - Yellow
esp8266:
board: esp01_1m
external_components:
- source:
type: git
url: https://github.com/rletendu/esphome.git
ref: st7789_nobuffer_202312
components: [st7789v]
logger:
api:
ota:
platform: esphome
wifi:
ssid: "DNTD"
password: "wifipassword"
ap:
ssid: "Mini-Display-Tv--Yellow"
password: "wifipassword"
spi:
clk_pin: GPIO14
mosi_pin: GPIO13
interface: hardware
id: spihwd
output:
- platform: esp8266_pwm
pin: GPIO05
frequency: 1000 Hz
id: pwm_output
inverted: true
light:
- platform: monochromatic
name: "Backlight"
output: pwm_output
id: backlight
restore_mode: RESTORE_AND_ON
font:
- file: "gfonts://Orbitron"
id: dspfont
size: 75
- file: "gfonts://Orbitron"
id: dspfont_small
size: 26
- file: "gfonts://Orbitron"
id: dspfont_medium
size: 38
color:
- id: color_white
red: 100%
green: 100%
blue: 100%
- id: color_green
red: 0%
green: 100%
blue: 0%
time:
- platform: homeassistant
id: esptime
switch:
- platform: homeassistant
id: air_purifier_outlet1
entity_id: switch.air_purifier_outlet1
sensor:
- platform: homeassistant
id: temperature
entity_id: weather.home
attribute: temperature
internal: true
# Text sensors for weather and location information
text_sensor:
# Current weather condition from Home Assistant
- platform: homeassistant
id: weather_condition
entity_id: weather.home # The entity_id for weather condition
internal: true
display:
- platform: st7789v
model: "Custom"
spi_id: spihwd
height: 240
width: 240
offset_height: 0
offset_width: 0
dc_pin: GPIO00
reset_pin: GPIO02
eightbitcolor: true
update_interval: 30s
id: disp
spi_mode: mode3
lambda: |-
Color text_color = id(color_white);
if (id(air_purifier_outlet1).state) {
text_color = id(color_green);
}
// Display the time in 12-hour format
it.strftime(0, 80, id(dspfont), text_color, TextAlign::BASELINE_LEFT, "%l:%M", id(esptime).now());
// Display the date in abbreviated weekday, MM/DD format (no year)
it.strftime(0, 130, id(dspfont_medium), text_color, TextAlign::BASELINE, "%a %m/%d", id(esptime).now());
// Display current weather condition with text_color
it.print(0, 140, id(dspfont_small), text_color, id(weather_condition).state.c_str());
// Display current temperature under the weather condition with text_color
String temp_str = "Temp: " + String(id(temperature).state) + " °F"; // Create the temperature string
it.print(0, 170, id(dspfont_small), text_color, temp_str.c_str()); // Convert the String to a const char* and display it
// Display "Party mode: ON" or "No fun allowed" with text_color
if (id(air_purifier_outlet1).state) {
it.printf(0, 230, id(dspfont_small), text_color, TextAlign::BASELINE_LEFT, "Party mode: ON");
} else {
it.printf(0, 230, id(dspfont_small), text_color, TextAlign::BASELINE_LEFT, "No fun allowed");
}