Page 1 sur 1

[Bash] Contrôle TV Sony

Publié : 25 mai 2016, 22:53
par Cavas
Bonjour à tous,

Je ne sais pas si ce post est au bon endroit mais ayant pas mal galèré à mettre ça en place je me suis dit que partager la méthode serait une bonne idée.
Le postulat de base est de contrôler une TV Sony sous Android TV (je n’ai pas testé avec des TV plus anciennes) sur le réseau grâce à l’API Sony.

À noter que je ne suis pas du tout un expert en code et que je me suis servi de ce que j’ai glané sur internet puis je l’ai adapté à mes besoins.
À noter également que je suis sous OS X et que les commandes terminal ne seront peut-être pas les mêmes suivant les OS.



1 / Configurer le contrôle IP sur la TV

Dans un premier temps, sur la TV, accéder au menu Paramètres —> Réseau —> Réglage du réseau domestique —> Contrôle IP.
Dans le menu Authentification choisissez Clé normale et pré-partagée.
Ensuite, dans le menu Clé pré-partagée définissez-la par 0000. Si vous souhaitez modifier ce code, il faudra également le changer dans le script.
Je ne sais pas si ça a une importance mais dans le menu Simple Contrôle IP j'ai selectionné Oui.



2 / Les commandes

Les commandes sont définies par un code IRCC du type AAAAAQAAAAEAAAAHAw== associé à chaque action. Pour obtenir une liste de ces commandes créez un script shell print_ircc_codes.sh contenant ce code :

Code : Tout sélectionner

#!/bin/sh

set -e

cd $(dirname $0)

if [ "$1" = "" ]; then
  echo "Usage: $0 <TV_IP>"
  exit 1
fi

curl --silent -XPOST http://$1/sony/system -d '{"method":"getRemoteControllerInfo","params":[],"id":10,"version":"1.0"}'  | python -m json.tool
Exécutez-le dans un terminal par le bais de la commande :

Code : Tout sélectionner

sh print_ircc_codes.sh adresse.ip.de.votre.tv
Voici une capture d’écran du résultat en exemple :
print_ircc_codes.png
print_ircc_codes.png (95.2 Kio) Consulté 6369 fois
Une commande IRCC est surlignée en exemple.



3 / Le script

De ce que j’ai compris, les commandes fonctionnent sur des données XML envoyées via une requête HTTP POST.

Il faut donc créer un scipt shell pour chaque action en changeant le code IRCC dans celui-ci.

Voici le code :

Code : Tout sélectionner

#!/bin/sh

set -e

cmd="<?xml version=\"1.0\"?><s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\" s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"><s:Body><u:X_SendIRCC xmlns:u=\"urn:schemas-sony-com:service:IRCC:1\"><IRCCCode>AAAAAQAAAAEAAAAvAw==</IRCCCode></u:X_SendIRCC></s:Body></s:Envelope>"


code=$(curl -w "%{http_code}" --silent -XPOST http://192.168.1.107/sony/IRCC -d "$cmd" -H 'Content-Type: text/xml; charset=UTF-8' -H 'SOAPACTION: "urn:schemas-sony-com:service:IRCC:1#X_SendIRCC"' -H "X-Auth-PSK: 0000" -o /dev/null )
En plus d’adapter le code IRCC n’oubliez pas de changer l’adresse par celle de votre TV (lui attribuer une IP fixe est fortement recommandé).



4 / Intégration dans Domoticz

D’abord il faut changer les permissions du script pour éviter d’avoir une erreur 32256.

Dans un terminal il faut donc exécuter la commande :

Code : Tout sélectionner

chmod +x votrescript.sh
Et puis ensuite on fait comme d’habitude. On créé un interrupteur à base de dummy puis en action on ou off on appelle le script par :

Code : Tout sélectionner

script:///chemin/du/fichier/votrescritpt.sh

Voilà, désolé pour la tartine. J'espère avoir été clair.

Enjoy ! ;)

Re: Contrôle TV Sony

Publié : 26 mai 2016, 07:11
par patrice
Bonjour,
oui c'est le bon endroit et cela parail clair
Merci du partage

Re: Contrôle TV Sony

Publié : 10 juin 2021, 23:19
par starjuice
Merci!!! ca fonctionne impeccable.
J'ai essayé le plugin python de gérard (uniquement le controle du volume fonctionne).