Files

70 lines
2.7 KiB
INI

[real_time]
[gcode_macro SMART_DAYLIGHT]
variable_last_brightness: -1.0
variable_smart_daylight_enabled: False
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
SET_GCODE_VARIABLE MACRO=SMART_DAYLIGHT VARIABLE=smart_daylight_enabled VALUE=True
RESPOND MSG="🌞 SMART_DAYLIGHT started"
[gcode_macro STOP_SMART_DAYLIGHT]
gcode:
UPDATE_DELAYED_GCODE ID=SMART_DAYLIGHT_LOOP DURATION=0
SET_GCODE_VARIABLE MACRO=SMART_DAYLIGHT VARIABLE=smart_daylight_enabled VALUE=False
SET_GCODE_VARIABLE MACRO=SMART_DAYLIGHT VARIABLE=last_brightness VALUE=0.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
SET_GCODE_VARIABLE MACRO=SMART_DAYLIGHT VARIABLE=smart_daylight_enabled VALUE=True