[real_time] [gcode_macro SMART_DAYLIGHT] variable_last_brightness: -1.0 gcode: {% set hour = printer["real_time"].hour %} {% set minute = printer["real_time"].minute %} {% set total_minutes = hour * 60 + minute %} {% set hyperlapse = printer["gcode_macro HYPERLAPSE"].run|default(false) %} {% set timelapse = printer["gcode_macro TIMELAPSE_TAKE_FRAME"].enable|default(false) %} {% if hyperlapse %} {% set rounded_target = 1.0 %} {% set fade_msg = "🎥 Hyperlapse active — lights set to 100%" %} {% elif timelapse %} {% set rounded_target = 1.0 %} {% set fade_msg = "📸 Timelapse active — lights set to 100%" %} {% else %} {% 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 = 1.0 %} {% endif %} {% set rounded_target = (target * 10)|round * 0.1 %} {% set time_display = hour|string ~ ":" ~ ("%02d"|format(minute)) %} {% set fade_msg = "💡 Brightness: " ~ (rounded_target * 100)|int|string ~ "% at " ~ time_display %} {% endif %} {% if rounded_target != last_brightness %} SET_PIN PIN=daylight VALUE={rounded_target} SET_GCODE_VARIABLE MACRO=SMART_DAYLIGHT VARIABLE=last_brightness VALUE={rounded_target} RESPOND MSG="{fade_msg}" {% endif %} [gcode_macro START_SMART_DAYLIGHT] gcode: UPDATE_DELAYED_GCODE ID=SMART_DAYLIGHT_LOOP DURATION=1 RESPOND MSG="🌞 SMART_DAYLIGHT started" [gcode_macro STOP_SMART_DAYLIGHT] gcode: UPDATE_DELAYED_GCODE ID=SMART_DAYLIGHT_LOOP DURATION=0 RESPOND MSG="🛑 SMART_DAYLIGHT stopped" [delayed_gcode SMART_DAYLIGHT_LOOP] initial_duration: 1 gcode: SMART_DAYLIGHT UPDATE_DELAYED_GCODE ID=SMART_DAYLIGHT_LOOP DURATION=5