#!/bin/bash

###############################################################################
#
# Monitor ausschalten, 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 ausschalten, sobald
# kein Videosignal mehr 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

DISPCTL=$( cat /home/snowtv/bin/dispctl.txt )

# Prüfen, welches Ein-/Ausschaltverfahren für das Display verwendet wird
if [ "$DISPCTL" == "dpms" ];
then
	DISPLAY=:0 xset dpms force off
	echo "$(date)  INFO: no airtime, trigger Display off" | tee -a /var/log/stv.log

elif [ "$DISPCTL" == "hdmi-cec" ];
then
	echo 'standby 0' | cec-client -s
	echo "$(date)  INFO: no airtime, trigger Display off" | tee -a /var/log/stv.log

elif [ "$DISPCTL" == "xrandr" ];
then
	DISPLAY=:0.0 xrandr --output HDMI-1 --off --output HDMI-2 --off --output DP-1 --off
	echo "$(date)  INFO: no airtime, trigger Display off" | tee -a /var/log/stv.log

elif [ "$DISPCTL" == "snmp" ];
then
	snmpset localhost 1.3.6.1.4.1.33762.4.1.7.1.0 i 0
	echo "$(date)  INFO: no airtime, trigger Display off" | tee -a /var/log/stv.log

elif [ "$DISPCTL" == "mqtt" ];
then
	mosquitto_pub -h 127.0.0.1 -t command/standby -m STANDBY	
	echo "$(date)  INFO: no airtime, trigger Display off" | tee -a /var/log/stv.log
fi
exit 0
