Nachtmodus
Display dunkel schalten nach Zeit (Sleeptimer/Stromsparmodus)
About this flow
| System | AWTRIX NG Scripts |
|---|---|
| AWTRIX version | AWTRIX NG |
| Topic | Smarthome |
| Built by | !ngo |
| File | xjcqy8FwXnDT.ax · 4.5 KB |
| Icons | — |
| Published | 9 Sep 2026 · updated 9 Sep 2026 |
| Downloads | 14 |
Is this your flow?
If you created this flow, open your saved edit link to add it to your account. You can then manage it whenever you sign in. Adding it to your account replaces the edit link.
Flow description
Headless Script
xjcqy8FwXnDT.ax
# @name Nachtmodus
# @desc Display zwischen 23:00 und 06:00 Uhr dunkel
# @author Ingo / Mod
# @version 1.4
# @headless true
# @config start_h number "Dunkel ab Stunde" default=23 min=0 max=23 unit=h
# @config end_h number "Hell ab Stunde" default=6 min=0 max=23 unit=h
# @config night_br slider "Helligkeit nachts" default=0 min=0 max=100 unit=%
# @config day_br slider "Helligkeit tags (Fallback)" default=80 min=1 max=100 unit=%
# @config notify_sec number "Vorlaufzeit Benachrichtigung" default=5 min=2 max=10 unit=s
# @config notify_txt text "Benachrichtigungstext" default="..:ZZZ:.."
class NightModeApp
var start_h, end_h, night_br, day_br, notify_sec, notify_txt
var is_dark, saved_br, saved_auto
var notified
def init()
self.start_h = store.get("start_h")
self.end_h = store.get("end_h")
self.night_br = store.get("night_br")
self.day_br = store.get("day_br")
self.notify_sec = store.get("notify_sec")
self.notify_txt = store.get("notify_txt")
self.is_dark = store.get("is_dark")
self.saved_br = store.get("saved_br")
if self.saved_br == nil
var cur_br = settings.get("brightness")
self.saved_br = (cur_br != nil && cur_br > self.night_br) ? cur_br : self.day_br
end
self.saved_auto = store.get("saved_auto")
if self.saved_auto == nil
var cur_auto = settings.get("autoBrightness")
self.saved_auto = cur_auto != nil ? cur_auto : false
end
self.notified = false
end
def in_night_window(h, sh, eh)
if sh > eh
return (h >= sh || h < eh)
else
return (h >= sh && h < eh)
end
end
def loop()
var h = hour()
if h < 0 return end
var m = minute()
var s = second()
# Vorlaufzeit aus Config laden (Fallback auf 5s, Grenzen 2-10s einhalten)
var lead_sec = self.notify_sec != nil ? self.notify_sec : 5
if lead_sec < 2 lead_sec = 2 end
if lead_sec > 10 lead_sec = 10 end
# Vorlaufzeit auf maximale appDurationMs begrenzen
var app_dur = settings.get("appDurationMs")
if app_dur != nil && app_dur > 0
var max_sec = app_dur / 1000
if lead_sec > max_sec
lead_sec = max_sec
end
end
# Sicherheitsprüfung falls lead_sec durch kleine appDurationMs unter 1 sinkt
if lead_sec < 1 lead_sec = 1 end
var target_s = 60 - lead_sec
var notify_h = (self.start_h - 1 + 24) % 24
if h == notify_h && m == 59 && s == target_s
if !self.notified
var txt = self.notify_txt != nil ? self.notify_txt : "ZZZzzz.."
var notify_dur = lead_sec * 1000
notify({"text": txt, "durationMs": notify_dur})
self.notified = true
end
else
self.notified = false
end
var should_be_dark = self.in_night_window(h, self.start_h, self.end_h)
if should_be_dark
var cur_br = settings.get("brightness")
if self.is_dark != true || (cur_br != nil && cur_br != self.night_br)
# Vor dem Umschalten aktuelle Tag-Helligkeit merken
if cur_br != nil && cur_br > self.night_br
self.saved_br = cur_br
store.set("saved_br", cur_br)
end
var cur_auto = settings.get("autoBrightness")
if cur_auto != nil && cur_auto != false
self.saved_auto = cur_auto
store.set("saved_auto", cur_auto)
end
settings.set("autoBrightness", false)
settings.set("brightness", self.night_br)
self.is_dark = true
store.set("is_dark", true)
end
else
if self.is_dark != false
# Wiederherstellung der normalen Helligkeit am Morgen
var target_br = self.saved_br != nil ? self.saved_br : self.day_br
settings.set("brightness", target_br)
if self.saved_auto != nil
settings.set("autoBrightness", self.saved_auto)
end
self.is_dark = false
store.set("is_dark", false)
else
# Tagsüber: Manuelle Änderungen des Nutzers für die nächste Nacht merken
var cur_br = settings.get("brightness")
if cur_br != nil && cur_br > self.night_br && cur_br != self.saved_br
self.saved_br = cur_br
store.set("saved_br", cur_br)
end
var cur_auto = settings.get("autoBrightness")
if cur_auto != nil && cur_auto != self.saved_auto
self.saved_auto = cur_auto
store.set("saved_auto", cur_auto)
end
end
end
end
end
return NightModeApp()
Install it on your AWTRIX NG
Add this flow to your AWTRIX NG. It will start appearing on your display after installation.
Unable to connect? Download the flow and add it in the Scripts section of your AWTRIX. Advanced users can also use this command:
Discussion 0
Ask a question, suggest a change or share how you use it.
No comments yet. Start the conversation.
More flows for AWTRIX NG Scripts or Smarthome
Something wrong with this flow? Report it.
Have an idea?
Sign in to ask questions and join the conversation.