151 lines
3.5 KiB
Plaintext
151 lines
3.5 KiB
Plaintext
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
|
|
|
|
# Dummy RGB outputs (not connected to physical pins)
|
|
- platform: esp8266_pwm
|
|
id: output_red
|
|
pin: GPIO4 # Dummy pin
|
|
inverted: false
|
|
|
|
- platform: esp8266_pwm
|
|
id: output_green
|
|
pin: GPIO12 # Dummy pin
|
|
inverted: false
|
|
|
|
- platform: esp8266_pwm
|
|
id: output_blue
|
|
pin: GPIO15 # Dummy pin
|
|
inverted: false
|
|
|
|
light:
|
|
- platform: monochromatic
|
|
name: "Backlight"
|
|
output: pwm_output
|
|
id: backlight
|
|
restore_mode: RESTORE_AND_ON
|
|
|
|
# Virtual RGB light for text color control
|
|
- platform: rgb
|
|
name: "Text Color"
|
|
red: output_red
|
|
green: output_green
|
|
blue: output_blue
|
|
id: text_color
|
|
restore_mode: ALWAYS_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
|
|
|
|
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:
|
|
- platform: homeassistant
|
|
id: weather_condition
|
|
entity_id: weather.home
|
|
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: |-
|
|
// Read RGB values from the virtual light entity
|
|
float r = id(text_color).current_values.get_red() * 255;
|
|
float g = id(text_color).current_values.get_green() * 255;
|
|
float b = id(text_color).current_values.get_blue() * 255;
|
|
|
|
Color text_color = Color(r, g, b);
|
|
|
|
// 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";
|
|
it.print(0, 170, id(dspfont_small), text_color, temp_str.c_str());
|
|
|
|
// 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");
|
|
}
|