diff --git a/A72_alarm_getter.sh b/A72_alarm_getter.sh new file mode 100755 index 0000000..7411940 --- /dev/null +++ b/A72_alarm_getter.sh @@ -0,0 +1,80 @@ +#!/bin/bash +# +# Automatisches Aufstehen-Skript +# Autor: Michael, Haider +# Datum: 31. Oktober 2023 +# +# Dieses Skript ermittelt den nächsten Weckzeitpunkt von A72 und plant +# dann das Einschalten der Lichter. +# mit dem "at" Befehl. + +# Überprüfen, ob alte "at"-Aufträge abgelaufen sind und sie löschen +delete_expired_at_jobs() { + current_time=$(date +"%Y-%m-%d %H:%M:%S") + sleep 65 + old_jobs=$(atq | awk -v current_time="$current_time" '$3 < current_time { print $1 }') + + if [ -n "$old_jobs" ]; then + echo "Lösche überholte 'at'-Jobs:" + for job_id in $old_jobs; do + atrm "$job_id" + echo "Gelöscht: $job_id" + done + else + echo "Keine überholten 'at'-Jobs gefunden." + fi +} + +# Verwende die Funktion, um überholte Jobs zu löschen +delete_expired_at_jobs + +# Datei zum Speichern der geplanten Weckzeiten +weckzeit_datei="/root/iobroker_scripts/generel/.weckzeiten.txt" + +# Überprüfen, ob das Ziel über SSH erreichbar ist +function is_target_reachable() { + if ping -q -w 3 -c 3 192.168.178.99 &> /dev/null; then + return 0 # Das Ziel ist erreichbar + else + return 1 # Das Ziel ist nicht erreichbar + fi +} + +# Überprüfen, ob das Ziel erreichbar ist +if is_target_reachable; then + # Ziel ist erreichbar, Alarmzeit über SSH abrufen + alarmTime=$(ssh A72 dumpsys alarm | grep triggerTime | cut -d= -f2 | cut -c1-16 | uniq) + + if [ -n "$alarmTime" ]; then + # Zerlege das Datum und die Uhrzeit + datum=$(echo "$alarmTime" | cut -d ' ' -f 1) + uhrzeit=$(echo "$alarmTime" | cut -d ' ' -f 2) + + # Formatiere das Datum und die Uhrzeit neu + neues_format=$(date -d "$datum $uhrzeit" "+%H:%M %m/%d/%y") + + # Subtrahiere 15 Minuten von der Zeit + lightsOn=$(date -d "$neues_format - 15 minutes" "+%H:%M %m/%d/%y") + + echo "Nächster Wecker: $neues_format" + echo "Lichter einschalten um: $lightsOn" + + # Überprüfen, ob die Weckzeit bereits geplant ist + if grep -Fxq "$lightsOn" "$weckzeit_datei"; then + echo "Weckzeit ist bereits geplant für: $lightsOn" + else + echo "Weckzeit planen und in Datei speichern: $lightsOn" + echo "$lightsOn" > "$weckzeit_datei" + echo "/root/iobroker_scripts/schlafzimmer/wecker.sh" | at "$lightsOn" + curl -u "Michaelis:u5ptufUFuDL6q4yEcSN3iqas5gtXNkN77Lx3cy3oX8UoSgFWdifYy9FVopv2Zwtu" -H "Icon:https://static.vecteezy.com/system/resources/previews/018/931/118/original/alarm-clock-icon-png.png" -H "Priority:High" -d "Alarm gestellt um: $(ssh A72 dumpsys alarm | grep triggerTime | cut -d= -f2 | cut -c12-16 | uniq)" https://ntfy.michaelis.digital/$HOSTNAME + fi + else + echo "Kein Wecker gestellt. Lösche geplante Weckzeiten." + #curl -u "Michaelis:u5ptufUFuDL6q4yEcSN3iqas5gtXNkN77Lx3cy3oX8UoSgFWdifYy9FVopv2Zwtu" -H "Icon:https://static.vecteezy.com/system/resources/previews/018/931/118/original/alarm-clock-icon-png.png" -H "Priority:High" -d "Alarm gelöscht" https://ntfy.michaelis.digital/$HOSTNAME + + rm "$weckzeit_datei" + fi +else + echo "Ziel ist nicht erreichbar." +fi + diff --git a/wecker.sh b/wecker.sh new file mode 100755 index 0000000..10e7bce --- /dev/null +++ b/wecker.sh @@ -0,0 +1,122 @@ +#!/bin/bash +# +# Wecker-Skript mit Helligkeits- und Farbtemperaturanpassung für ioBroker +# +# Dieses Skript passt die Helligkeit schrittweise an und ändert die Farbtemperatur von warmweiß zu kaltweiß +# über die ioBroker-Steuerung. Es erhöht die Helligkeit von 1 auf 100 und ändert die Farbtemperatur von 1600 (warmweiß) +# auf 0 (kaltweiß) innerhalb von 15 Minuten. +# +# Nach den 15 Minuten wird ein Farbwechsel erstellt. +# Anpassbare Einstellungen: +# - ioBroker-Helligkeits- und Farbtemperatur-Befehle anpassen + +# Helligkeit und Farbtemperatur an ioBroker anpassen + +# Farben +rot="ff0000" +gruen="00ff00" +blau="0000ff" + +iobroker state set zigbee.0.04cd15fffee03198.colortemp 1600 +iobroker state set zigbee.0.04cd15fffee03198.state false +iobroker state set zigbee.0.04cd15fffee03198.brightness 0 + +set_brightness() { + local brightness_value=$1 + # Ersetze 'zigbee.0.04cd15fffee03198.brightness' durch die tatsächliche ioBroker-Adresse für die Helligkeit + iobroker state set zigbee.0.04cd15fffee03198.brightness "$brightness_value" +} + +set_colortemp() { + local colortemp_value=$1 + # Ersetze 'zigbee.0.04cd15fffee03198.colortemp' durch die tatsächliche ioBroker-Adresse für die Farbtemperatur + iobroker state set zigbee.0.04cd15fffee03198.colortemp "$colortemp_value" +} + +set_color() { + local color_value=$1 + # Ersetze 'zigbee.0.04cd15fffee03198.color' durch die tatsächliche ioBroker-Adresse für die Farbe + iobroker state set zigbee.0.04cd15fffee03198.color "$color_value" +} + +iobroker state set zigbee.0.04cd15fffee03198.state true + +# Überprüfung, ob es die erste Änderung der Helligkeit ist +first_brightness_change=true + +# Überprüfung, ob das Licht extern ausgeschaltet wurde +check_external_light_status() { + local light_status=$(iobroker state getValue zigbee.0.04cd15fffee03198.state) + if [ "$light_status" == "false" ]; then + echo "Licht ist aus. Das Skript wird beendet." + exit + fi +} + +# Startwerte für Helligkeit und Farbtemperatur definieren +start_brightness=1 # Mindesthelligkeit (1) +start_colortemp=1600 # Warmweiß (1600) + +# Endwerte für Helligkeit und Farbtemperatur definieren +end_brightness=100 # Höchste Helligkeit (100) +end_colortemp=0 # Kaltweiß (0) + + +# Dauer der Anpassung in Sekunden (15 Minuten) +duration_seconds=900 + +# Alle 30 Sekinden Änderung +steps=30 # Alle 30 Sekunden einen Schritt + +# Berechne die Schritte für Helligkeit und Farbtemperatur pro Schritt +brightness_step=$(bc <<< "($end_brightness - $start_brightness) / $steps") +colortemp_step=$(bc <<< "$start_colortemp / $steps") + +# Schrittweise Anpassung von Helligkeit und Farbtemperatur +for ((i = 0; i < $steps; i++)); do + current_brightness=$(bc <<< "$start_brightness + ($brightness_step * $i)") + current_colortemp=$(bc <<< "$start_colortemp - ($colortemp_step * $i)") + + if [ "$first_brightness_change" = false ]; then + check_external_light_status + else + first_brightness_change=false + fi + + echo "Step $i - Brightness: $current_brightness, Colortemp: $current_colortemp" # Ausgabe der berechneten Werte + + set_brightness "$current_brightness" + set_colortemp "$current_colortemp" + + sleep 30 # Änderungen alle 30 Sekunden +done + +# Farben ändern für mehr konzentration +while :; do + if [ "$first_brightness_change" = false ]; then + check_external_light_status + else + first_brightness_cmason.nvimhange=false + fi + + show_status $i "$current_brightness" "$current_colortemp" + + set_color "$gruen" + sleep 2 + set_color "$blau" + sleep 2 + set_color "$rot" +done + +# Füge hier den Rest deines Skripts ein, das den Weckvorgang durchführt +# ... + +# Hier kannst du den Weckprozess starten +# ... + +# Lösche temporäre Dateien, falls erforderlich +# ... + +# Hinweis: Dieses Skript konzentriert sich auf die Anpassung von Helligkeit und Farbtemperatur +# über ioBroker und sollte in Kombination mit anderen Aktionen verwendet werden, um den Weckvorgang zu vervollständigen. +