[Bash] Contrôle TV Sony

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
Cavas
Messages : 11
Inscription : 04 mai 2016, 16:19

[Bash] Contrôle TV Sony

Message 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é 6368 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 ! ;)
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Contrôle TV Sony

Message par patrice »

Bonjour,
oui c'est le bon endroit et cela parail clair
Merci du partage
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
starjuice
Messages : 17
Inscription : 12 avr. 2018, 11:53

Re: Contrôle TV Sony

Message par starjuice »

Merci!!! ca fonctionne impeccable.
J'ai essayé le plugin python de gérard (uniquement le controle du volume fonctionne).
Répondre