#!/bin/bash

###############################################################################
#
# Monitor einschalten, wenn DPMS (Display Power Management Signaling) vorhanden
# Dies ist der VESA-Stromspar-Standard für Grafikkarten und Monitore
#
# Wenn Consumer-TV's eingesetzt werden, dann ist es am zielführendsten, wenn
# das Display mittels HDMI-CEC gesteuert wird. Setzt HDMI-CEC-Adapter voraus!
# 
# xrandr wird vorzugsweise bei Screens eingesetzt, welche einschalten, sobald
# ein Videosignal anliegt
# 
# snmp wird für generische SNMP-Displays verwendet
#
# mqtt ist für Stehlen Zermatt
#
# GDS-Panels sind hier bewusst ausgenommen: deren Backlight wird exklusiv durch
# routine.py (humidity.service) über eigene SNMP-OIDs geschaltet, unabhängig
# von diesem Script und vom DISPLAYCTL-Wert in mc.cfg. Läuft dieses Script
# zusätzlich (z.B. weil DISPLAYCTL versehentlich auf "dpms" o.ä. steht statt
# "--"), entstehen zwei unkoordinierte Schaltpläne für denselben Screen –
# das hat auf Player 665 (Labor Wallisellen) zu einer Race Condition beim
# HDMI/EDID-Reconnect geführt (04.08.2026). Deshalb: bei GDS-Panel sofort
# beenden, siehe Marker-Check unten.
###############################################################################

if [ -f /home/snowtv/bin/.gds_installed ]; then
	exit 0
fi

DISPLAYCTL=$( grep DISPLAYCTL </home/snowtv/bin/mc.cfg | awk -F= '{ st = index($0,"=");print substr($0,st+1)}' | tr -d '\r')
setx () {
	grep XRANDR </home/snowtv/bin/mc.cfg | awk -F= '{ st = index($0,"=");print substr($0,st+1)}' | awk '!($1="")' | tr -d '\r'
}

# Prüfen, welches Ein-/Ausschaltverfahren für das Display verwendet wird
if [ "$DISPLAYCTL" == "dpms" ];
then
	DISPLAY=:0.0 xset dpms force on && DISPLAY=:0.0 xset s off -dpms

elif [ "$DISPLAYCTL" == "hdmi-cec" ];
then
	echo 'on 0' | cec-client -s
	DISPLAY=:0.0 xset dpms force on && DISPLAY=:0.0 xset s off -dpms

elif [ "$DISPLAYCTL" == "xrandr" ];
then
	DISPLAY=:0.0 /usr/bin/xrandr setx && DISPLAY=:0.0 xset s off -dpms

elif [ "$DISPLAYCTL" == "snmp" ];
then
	snmpset localhost rwBklLampsStatus.0 i 1 && DISPLAY=:0.0 xset s off -dpms

elif [ "$DISPLAYCTL" == "mqtt" ];
then
	mosquitto_pub -h 127.0.0.1 -t command/standby -m NORMAL	&& DISPLAY=:0.0 xset s off -dpms
fi
exit 0

