La plupart des nouveaux modèles de télé ont une interface Ethernet pour les relier au réseau informatique. J’ai remarqué que cette interface est active uniquement lorsque la télévision est allumée. Du coup, il devient possible de connaitre l’état de celle-ci et d’exécuter des scénarios en fonction.
Pour cela, je me base sur un simple script Bash qui lance un ping toutes les 10 secondes et en fonction de la réponse, informe HomeSeer de l’état de la TV.

Script Bash :

#!/bin/bash
# Simple SHELL script for ping monitoring with linux
# http://clement.storck.me
 
# Host to monitor (TV_Clem)
HOST="192.168.10.36"
 
# Status host
HOST_STATUS="down"
 
# nb ping request
COUNT=3
 
while :
do
  count=$(ping -c $COUNT $HOST | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
  if [ $count -eq 0 ]; then
    # Host is down
    echo "Host : $HOST is down (ping failed) at $(date)"
    if [ "$HOST_STATUS" == up ]; then
      HOST_STATUS="down"
      curl -d "scriptcmd=hs.ExecX10%20%22Y9%22%2c%20%22off%22%2c%200%2c%200&runscript=Execute%20Command&ref_page=ctrl" http://192.168.10.10
    fi
  else
    # Host is up
    echo "Host : $HOST is up (ping OK) at $(date)"
    if [ "$HOST_STATUS" == "down" ]; then
      HOST_STATUS="up"
      curl -d "scriptcmd=hs.ExecX10%20%22Y9%22%2c%20%22on%22%2c%200%2c%200&runscript=Execute%20Command&ref_page=ctrl" http://192.168.10.10
    fi
  fi
  echo "$HOST_STATUS"
  sleep 8
done

Création d’un daemon pour lancer le script en arrière-plan :

cp /home/ping_TV_Clem /usr/sbin/ping_TV_Clem
cp /etc/init.d/skeleton /etc/init.d/ping_TV_Clem
nano /etc/init.d/ping_TV_Clem

Modifiez /etc/init.d/ping_TV_Clem comme ceci :

PATH=/usr/sbin:/usr/bin:/sbin:/bin
DESC="Supervision TV"
NAME=ping_TV_Clem
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS=""
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

Et ajoutez l’option –background dans la partie do_start() :

start-stop-daemon --start --quiet --background --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
start-stop-daemon --start --quiet --background --pidfile $PIDFILE --exec $DAEMON -- \

puis :

update-rc.d ping_TV_Clem defaults
chmod +x /etc/init.d/ping_TV_Clem
/etc/init.d/ping_TV_Clem start

Enfin, un petit « ps aux | grep ping* » pour vérifier que le script est bien lancé.

Ainsi, lorsque j’allume la télé, HomeSeer en est informé dans les 10 secondes. Puis, avec un Event, s’il fait nuit et que la télé est allumée (et inversement), alors les lumières d’ambiance s’allument automatiquement.