From 9baa3c300957d23ae79525ff4d529f11b6c59c2c Mon Sep 17 00:00:00 2001 From: void Date: Wed, 26 Mar 2025 18:30:29 +0000 Subject: [PATCH] Add clock.yaml/clocklightRBGtextcolor --- clock.yaml/clocklightRBGtextcolor | 150 ++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 clock.yaml/clocklightRBGtextcolor diff --git a/clock.yaml/clocklightRBGtextcolor b/clock.yaml/clocklightRBGtextcolor new file mode 100644 index 0000000..2f8a649 --- /dev/null +++ b/clock.yaml/clocklightRBGtextcolor @@ -0,0 +1,150 @@ +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"); + }