From 89d8008b793add02c985adb20c2f9268ebe01479 Mon Sep 17 00:00:00 2001 From: ZareMate <0.zaremate@gmail.com> Date: Mon, 3 Feb 2025 08:16:44 +0100 Subject: [PATCH] Enhance display configuration and add 3D printer progress bar; update security key in mateusz-room-switch.yaml --- display.yaml | 45 +++++++++++++++++++++++++++++++++------- mateusz-room-switch.yaml | 2 +- mateuszs-tv.yaml | 20 ++++++++++++++---- 3 files changed, 54 insertions(+), 13 deletions(-) diff --git a/display.yaml b/display.yaml index e4fccb7..54cc18c 100644 --- a/display.yaml +++ b/display.yaml @@ -51,16 +51,16 @@ display: reset_pin: 4 lambda: |- // Define row positions - int icon_row = 5; - int row_y = icon_row + 25; + int margin = 5; int y_step = 30; - int col_start = 5; - int col_offset = col_start + 25; + int screen_width = 240; + int row_y = margin + 25; + int col_offset = margin + 25; int icon_size = y_step * 0.75; // Calculate column and row positions - int col_array[] = {col_start, col_offset + y_step, col_offset + y_step * 2, col_offset + y_step * 3, col_offset + y_step * 5, col_offset + y_step * 7}; - int row_array[] = {icon_row, row_y, row_y + y_step, row_y + y_step * 2, row_y + y_step * 3, row_y + y_step * 4}; + int col_array[] = {margin, col_offset + y_step, col_offset + y_step * 2, col_offset + y_step * 3, col_offset + y_step * 5, col_offset + y_step * 7}; + int row_array[] = {margin, row_y, row_y + y_step, row_y + y_step * 2, row_y + y_step * 3, row_y + y_step * 4}; it.fill(Color(0, 0, 0)); // Clear screen @@ -80,8 +80,10 @@ display: } if (text == "unavailable" || text == "unknown") { - it.filled_triangle(x, y + icon_size, x + icon_size, y + icon_size, x + (icon_size / 2), y, Color(255, 0, 0)); - it.print((x + icon_size / 3) + 1, y, id(my_font), Color(255, 255, 255), "!"); + if (id(triangle_visible)) { + it.filled_triangle(center, y + icon_size, center + icon_size, y + icon_size, center + (icon_size / 2), y, Color(255, 0, 0)); + it.print((center + icon_size / 3) + 1, y, id(my_font), Color(255, 255, 255), "!"); + } } else if (text == "" && type == "door" || text == "" && type == "motion") { it.filled_rectangle(x, y, icon_size, icon_size, Color(128, 128, 128)); } else if (text == "on") { @@ -134,6 +136,16 @@ display: handle_state(4, 4, id(tomek_humidity).state, "humidity"); handle_state(4, 5, id(mateusz_humidity).state, "humidity"); + // 3D Printer progress bar + if (id(printer_3d_progress).state != "" && id(printer_3d_progress).state != "unknown" && id(printer_3d_progress).state != "unavailable" && id(printer_3d_progress).state != "0") { + int progress_y = row_array[5] + y_step; + it.print(margin, progress_y, id(my_font), Color(255, 255, 255), "3D Printer:"); + int progress_width = screen_width - (2 * margin) - 100; + int progress = (atoi(id(printer_3d_progress).state.c_str()) / 100) * progress_width; + it.filled_rectangle(margin + 90, progress_y, progress, 20, Color(0, 255, 0)); + it.rectangle(margin + 90, progress_y, progress_width, 20, Color(255, 255, 255)); + } + # Home Assistant integration text_sensor: - platform: homeassistant @@ -199,6 +211,9 @@ text_sensor: - platform: homeassistant entity_id: sensor.mateusz_s_room_sensor_humidity id: mateusz_humidity + - platform: homeassistant + entity_id: sensor.octoprint_job_percentage + id: printer_3d_progress font: - id: my_font @@ -208,3 +223,17 @@ font: file: "fonts/JetBrains.ttf" size: 20 glyphs: [ "󰚡", "󰠚", "󰶑", "󰔏", "󰖌" ] + +interval: + - interval: 1s + then: + lambda: |- + static bool toggle = false; + toggle = !toggle; + id(triangle_visible) = toggle; + +globals: + - id: triangle_visible + type: bool + restore_value: no + initial_value: 'true' diff --git a/mateusz-room-switch.yaml b/mateusz-room-switch.yaml index 03a685d..274a69b 100644 --- a/mateusz-room-switch.yaml +++ b/mateusz-room-switch.yaml @@ -15,7 +15,7 @@ mdns: api: encryption: - key: "" + key: "6XGt8kCrllL861S4s3oBM5eUZ+p84JhxZqP6X4EsWE4=" ota: platform: esphome diff --git a/mateuszs-tv.yaml b/mateuszs-tv.yaml index 5ecaa69..20161a3 100644 --- a/mateuszs-tv.yaml +++ b/mateuszs-tv.yaml @@ -47,6 +47,18 @@ binary_sensor: id(power_switch).publish_state(x); } +text_sensor: + - platform: homeassistant + entity_id: remote.chromecast_hd + id: tv_status + on_value: + - lambda: |- + if (x == "on") { + id(power_switch).turn_on(); + } else { + id(power_switch).turn_off(); + } + # Define the switch to control TV power (Only toggled via Home Assistant) switch: - platform: template @@ -54,10 +66,10 @@ switch: id: power_switch optimistic: true restore_mode: RESTORE_DEFAULT_OFF - turn_on_action: - - output.turn_off: tv_relay # Set P23 LOW - - delay: 300ms - - output.turn_on: tv_relay # Set P23 HIGH + # turn_on_action: + # - output.turn_off: tv_relay # Set P23 LOW + # - delay: 300ms + # - output.turn_on: tv_relay # Set P23 HIGH turn_off_action: - output.turn_off: tv_relay # Set P23 LOW - delay: 1500ms