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.
GuiguiAbloc
octobre 26th, 2011 à 19:33