diff --git a/printer_data/config/CUSTOM/c_evening_daylight.cfg b/printer_data/config/CUSTOM/c_evening_daylight.cfg index 4c53bfb..3c2ee8e 100644 --- a/printer_data/config/CUSTOM/c_evening_daylight.cfg +++ b/printer_data/config/CUSTOM/c_evening_daylight.cfg @@ -1,27 +1,37 @@ [gcode_macro EVENING_DAYLIGHT] -description: Fade in daylight between 4:30pm and 6:00pm, only respond if brightness changes +description: 24hr day/night lighting with fade-in/out and no log spam variable_last_brightness: -1.0 gcode: - {% set hour = now().hour %} - {% set minute = now().minute %} + {% set hour = printer["system_time"].hour %} + {% set minute = printer["system_time"].minute %} {% set total_minutes = hour * 60 + minute %} - {% set fade_start = 16 * 60 + 30 %} - {% set fade_end = 18 * 60 %} - {% if total_minutes < fade_start %} - {% set target = 0.0 %} - {% elif total_minutes >= fade_end %} + {% set fade_out_start = 7 * 60 %} + {% set fade_out_end = 8 * 60 %} + {% set fade_in_start = 16 * 60 + 30 %} + {% set fade_in_end = 18 * 60 %} + + {% if total_minutes < fade_out_start %} {% set target = 1.0 %} + {% elif total_minutes < fade_out_end %} + {% set progress = 1.0 - ((total_minutes - fade_out_start) / (fade_out_end - fade_out_start)) %} + {% set target = progress %} + {% elif total_minutes < fade_in_start %} + {% set target = 0.0 %} + {% elif total_minutes < fade_in_end %} + {% set progress = (total_minutes - fade_in_start) / (fade_in_end - fade_in_start) %} + {% set target = progress %} {% else %} - {% set target = ((total_minutes - fade_start) / (fade_end - fade_start)) %} + {% set target = 1.0 %} {% endif %} {% set rounded_target = (target * 100)|int / 100.0 %} + {% if rounded_target != last_brightness %} SET_PIN PIN=daylight VALUE={rounded_target} SET_GCODE_VARIABLE MACRO=EVENING_DAYLIGHT VARIABLE=last_brightness VALUE={rounded_target} {% set time_display = hour|string ~ ":" ~ ("%02d"|format(minute)) %} - {% set fade_msg = "🌗 Daylight: " ~ (rounded_target * 100)|int|string ~ "% (" ~ time_display ~ ")" %} + {% set fade_msg = "💡 Brightness: " ~ (rounded_target * 100)|int|string ~ "% at " ~ time_display %} RESPOND MSG="{fade_msg}" {% endif %} \ No newline at end of file