Nachtmodus
Display dunkel schalten nach Zeit (Sleeptimer/Stromsparmodus)
| System | AWTRIX NG Scripts |
|---|---|
| Firmware | AWTRIX NG |
| Topic | Smarthome |
| Built by | !ngo |
| File | xjcqy8FwXnDT.ax · 4.5 KB |
| Icons | — |
| Published | 9 Sep 2026 · updated 9 Sep 2026 |
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
Your browser writes the script straight to the device on your network. It joins the app rotation right away.
Some browsers refuse to talk to a device on your network from a public page. Download the flow and paste it into the Scripts tab of your device, or install it from a terminal:
More flows for AWTRIX NG Scripts or Smarthome
Something wrong with this flow? Report it.