Adjust desk lamp power limits and add 3D printer progress bar with light status display
This commit is contained in:
parent
89d8008b79
commit
a07c1ad06e
@ -37,11 +37,13 @@ output:
|
|||||||
- platform: libretiny_pwm
|
- platform: libretiny_pwm
|
||||||
id: output_cold
|
id: output_cold
|
||||||
pin: P26
|
pin: P26
|
||||||
max_power: 80% # Limit the cold white channel to 80%
|
max_power: 70% # Limit the cold white channel to 80%
|
||||||
|
min_power: 14%
|
||||||
- platform: libretiny_pwm
|
- platform: libretiny_pwm
|
||||||
id: output_warm
|
id: output_warm
|
||||||
pin: P24
|
pin: P24
|
||||||
max_power: 80% # Limit the warm white channel to 80%
|
max_power: 70% # Limit the warm white channel to 80%
|
||||||
|
min_power: 14%
|
||||||
|
|
||||||
light:
|
light:
|
||||||
- platform: cwww
|
- platform: cwww
|
||||||
|
|||||||
46
display.yaml
46
display.yaml
@ -60,15 +60,23 @@ display:
|
|||||||
|
|
||||||
// Calculate column and row positions
|
// Calculate column and row positions
|
||||||
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 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
|
it.fill(Color(0, 0, 0)); // Clear screen
|
||||||
|
|
||||||
|
// Function to calculate row position
|
||||||
|
auto row = [&](int row_in) {
|
||||||
|
if (row_in == 0) {
|
||||||
|
return margin;
|
||||||
|
} else {
|
||||||
|
return row_y + y_step * (row_in - 1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// Function to handle all state conditions
|
// Function to handle all state conditions
|
||||||
auto handle_state = [&](int col_index, int row_index, std::string text, std::string type) {
|
auto handle_state = [&](int col_index, int row_index, std::string text, std::string type) {
|
||||||
int x, y, center;
|
int x, y, center;
|
||||||
x = col_array[col_index];
|
x = col_array[col_index];
|
||||||
y = row_array[row_index];
|
y = row(row_index);
|
||||||
center = ((col_array[col_index] + col_array[col_index + 1]) / 2) - 10;
|
center = ((col_array[col_index] + col_array[col_index + 1]) / 2) - 10;
|
||||||
|
|
||||||
if (text != "on" && text != "off" && text != "unavailable" && text != "unknown" && text != "") {
|
if (text != "on" && text != "off" && text != "unavailable" && text != "unknown" && text != "") {
|
||||||
@ -136,14 +144,23 @@ display:
|
|||||||
handle_state(4, 4, id(tomek_humidity).state, "humidity");
|
handle_state(4, 4, id(tomek_humidity).state, "humidity");
|
||||||
handle_state(4, 5, id(mateusz_humidity).state, "humidity");
|
handle_state(4, 5, id(mateusz_humidity).state, "humidity");
|
||||||
|
|
||||||
|
|
||||||
|
// 3D Printer variables
|
||||||
|
int progress_width = screen_width - (2 * margin) - 120;
|
||||||
|
int progress = (atoi(id(octo_prog).state.c_str()) / 100) * progress_width;
|
||||||
|
|
||||||
// 3D Printer progress bar
|
// 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") {
|
if (id(octo_state).state == "Printing") {
|
||||||
int progress_y = row_array[5] + y_step;
|
it.print(margin, row(6), id(my_font), Color(255, 255, 255), "3D Printer:");
|
||||||
it.print(margin, progress_y, id(my_font), Color(255, 255, 255), "3D Printer:");
|
it.filled_rectangle(margin + 90, row(6), progress, 20, Color(0, 255, 0));
|
||||||
int progress_width = screen_width - (2 * margin) - 100;
|
it.rectangle(margin + 90, row(6), progress_width, 20, Color(255, 255, 255));
|
||||||
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));
|
// 3D Printer light status
|
||||||
|
if (id(printer_light).state == "on" && id(octo_state).state == "Printing" ) {
|
||||||
|
it.print(margin + 90 + progress_width + 10, row(6), id(icon_font), Color(255, 255, 255), "");
|
||||||
|
} else if (id(printer_light).state == "on") {
|
||||||
|
it.print(margin, row(6), id(my_font), Color(255, 255, 255), "3D Printer Light On");
|
||||||
}
|
}
|
||||||
|
|
||||||
# Home Assistant integration
|
# Home Assistant integration
|
||||||
@ -211,9 +228,16 @@ text_sensor:
|
|||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
entity_id: sensor.mateusz_s_room_sensor_humidity
|
entity_id: sensor.mateusz_s_room_sensor_humidity
|
||||||
id: mateusz_humidity
|
id: mateusz_humidity
|
||||||
|
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
entity_id: sensor.octoprint_job_percentage
|
entity_id: sensor.octoprint_job_percentage
|
||||||
id: printer_3d_progress
|
id: octo_prog
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: sensor.octoprint_current_state
|
||||||
|
id: octo_state
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: switch.3d_printer_light
|
||||||
|
id: printer_light
|
||||||
|
|
||||||
font:
|
font:
|
||||||
- id: my_font
|
- id: my_font
|
||||||
@ -222,7 +246,7 @@ font:
|
|||||||
- id: icon_font
|
- id: icon_font
|
||||||
file: "fonts/JetBrains.ttf"
|
file: "fonts/JetBrains.ttf"
|
||||||
size: 20
|
size: 20
|
||||||
glyphs: [ "", "", "", "", "" ]
|
glyphs: [ "", "", "", "", "", "" ]
|
||||||
|
|
||||||
interval:
|
interval:
|
||||||
- interval: 1s
|
- interval: 1s
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user