Initial commit: Implement dynamic light adjustment script
- Added script to adjust brightness and color temperature based on ioBroker state. - Synchronize the brightness and color temperature adjustments to reach final values in 20 steps. - Configured step sizes for brightness (5) and color temperature (80) for smooth transitions. - The script continuously adjusts light settings until the ioBroker state changes to false.
This commit is contained in:
parent
c8b6ffdeee
commit
0610ff10b4
90
morninglight.sh
Executable file
90
morninglight.sh
Executable file
@ -0,0 +1,90 @@
|
||||
#!/bin/bash
|
||||
# -------------------------------------------
|
||||
# Script: Dynamic Light Adjustment
|
||||
# Author: Michael
|
||||
# Created: 2025-01-02
|
||||
# Purpose: Adjust light color temperature and brightness dynamically while ioBroker state is true.
|
||||
# Usage: ./dynamic_light_adjustment.sh
|
||||
# -------------------------------------------
|
||||
|
||||
# Konfiguration
|
||||
STATE_ID="zigbee.0.04cd15fffee03198.state"
|
||||
BRIGHTNESS_ID="zigbee.0.04cd15fffee03198.brightness"
|
||||
COLORTEMP_ID="zigbee.0.04cd15fffee03198.colortemp"
|
||||
|
||||
BRIGHTNESS_MIN=0
|
||||
BRIGHTNESS_MAX=100
|
||||
COLORTEMP_MIN=0
|
||||
COLORTEMP_MAX=1600
|
||||
|
||||
STEP_BRIGHTNESS=5
|
||||
STEP_COLORTEMP=80
|
||||
|
||||
# Funktion: State abrufen
|
||||
get_state() {
|
||||
# Hole den JSON-Wert und prüfe, ob "val" true ist
|
||||
state_value=$(iobroker state get "$STATE_ID" | grep -oP '"val":\s*\K(true|false)')
|
||||
[[ "$state_value" == "true" ]]
|
||||
}
|
||||
|
||||
# Funktion: Brightness setzen
|
||||
set_brightness() {
|
||||
/usr/bin/iobroker state set "$BRIGHTNESS_ID" "$1"
|
||||
echo "Set brightness to $1"
|
||||
}
|
||||
|
||||
# Funktion: Colortemp setzen
|
||||
set_colortemp() {
|
||||
/usr/bin/iobroker state set "$COLORTEMP_ID" "$1"
|
||||
echo "Set colortemp to $1"
|
||||
}
|
||||
|
||||
# Initialwerte
|
||||
current_brightness=$BRIGHTNESS_MIN
|
||||
current_colortemp=$COLORTEMP_MAX
|
||||
brightness_increasing=true
|
||||
colortemp_increasing=false
|
||||
|
||||
# Licht einmal einschalten, falls der State aktiv ist
|
||||
set_brightness $BRIGHTNESS_MIN
|
||||
set_colortemp $COLORTEMP_MAX
|
||||
/usr/bin/iobroker state set "$STATE_ID" true
|
||||
echo "Initial light settings applied."
|
||||
|
||||
# Hauptschleife
|
||||
while get_state; do
|
||||
# Helligkeit anpassen
|
||||
if $brightness_increasing; then
|
||||
current_brightness=$((current_brightness + STEP_BRIGHTNESS))
|
||||
if [ $current_brightness -ge $BRIGHTNESS_MAX ]; then
|
||||
brightness_increasing=false
|
||||
fi
|
||||
else
|
||||
current_brightness=$((current_brightness - STEP_BRIGHTNESS))
|
||||
if [ $current_brightness -le $BRIGHTNESS_MIN ]; then
|
||||
brightness_increasing=true
|
||||
fi
|
||||
fi
|
||||
set_brightness $current_brightness
|
||||
|
||||
# Farbtemperatur anpassen
|
||||
if $colortemp_increasing; then
|
||||
current_colortemp=$((current_colortemp - STEP_COLORTEMP))
|
||||
if [ $current_colortemp -le $COLORTEMP_MIN ]; then
|
||||
colortemp_increasing=false
|
||||
fi
|
||||
else
|
||||
current_colortemp=$((current_colortemp + STEP_COLORTEMP))
|
||||
if [ $current_colortemp -ge $COLORTEMP_MAX ]; then
|
||||
colortemp_increasing=true
|
||||
fi
|
||||
fi
|
||||
set_colortemp $current_colortemp
|
||||
|
||||
# Wartezeit für sanfte Übergänge
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Beenden
|
||||
echo "State is false. Exiting script."
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user