[Partage] Eedomus et Sony Bravia

Discussion et échanges de scripts pour la box eedomus

[Partage] Eedomus et Sony Bravia

Messagepar Olimag » 30 Nov 2017 14:31

Bonjour à tous,

Possesseur depuis hier d'une Box Eedomus+, j'ai décidé de migré de mon ancien jeedom (et Domoticz avant) afin de passer sur cette solution plus simple d'utilisation.

Seulement voila, je me suis heurté au fait qu'on ne puisse utiliser quasi aucun langage de programmation : pas de python, pas de cUrl, pas de NodeJS.. bref, faut s'adapter (même si j'avoue avoir maudit la team ;)). Bref, il me fallait un moyen de contrôler ma tv Sony Bravia avec Eedomus sans passer par un autre système et j'ai finalement trouvé mon bonheur dans le httpQuery (heureusement qu'on la celui la ! :D)

J'ai donc créer deux scripts très simple (On et Off), je vous laisse l'améliorer, le partager, et me donner des idées ;). En effet, en ayant fouiller le forum, je pense que cela aidera pas mal de monde.

Bien entendu, il faut que les configurations soient correctes sur la TV (clé de partage, autorisation de pilotage, etc..) Je ne m'étendrais pas sur la config TV mais bien sur le code :

Code : Tout sélectionner
<?
//Rappel de httpQuery

//httpQuery($url, $action = 'GET'/*GET,POST,PUT,DELETE*/, $post = NULL, $oauth_token = NULL, $headers = NULL, $use_cookies = false, $ignore_errors = false)
//Exécute une requête HTTP/HTTPS et retourne son résultat sous forme de chaine de caractère.
//Les arguments $action et $post peuvent être omis, ils peuvent être utilisés dans le cas de requêtes avancées comme un POST.
//L'argument $oauth_token est utilisé pour les scripts des objets connectés, dans les scripts personnels il peut donc être ommis ou passé à NULL
//L'argument $headers doit être fourni sous la forme d'un tableau, par exemple : $headers = array("X-Fbx-App-Auth: xxxx");
//L'argument cookies, vous permet d'activer la gestion des cookies pour la 1ère requête et celles qui suivront

$url = "http://192.168.1.214/sony/IRCC";

$headers = array(
  "X-Auth-PSK: 0000",
  "Content-Type: application/x-www-form-urlencoded",
  "SOAPACTION: \"urn:schemas-sony-com:service:IRCC:1#X_SendIRCC\"",
  "Cache-Control: no-cache"
);

$code = "AAAAAQAAAAEAAAAvAw==";

$body = "<?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>".$code."</IRCCCode></u:X_SendIRCC></s:Body></s:Envelope>";

$requete = httpQuery($url, 'POST', $body, NULL, $headers, false, false);
?>


Liste des codes acceptés par la TV (je ne les ai pas tous testés)

Code : Tout sélectionner
//Liste codes

//[PowerOff]="AAAAAQAAAAEAAAAvAw=="
//[PowerOn]="AAAAAQAAAAEAAAAuAw=="
//[VolumeUp]="AAAAAQAAAAEAAAASAw=="
//[VolumeDown]="AAAAAQAAAAEAAAATAw=="
//[Mute]="AAAAAQAAAAEAAAAUAw=="
//[Input]="AAAAAQAAAAEAAAAlAw=="
//[GGuide]="AAAAAQAAAAEAAAAOAw=="
//[EPG]="AAAAAgAAAKQAAABbAw=="
//[Favorites]="AAAAAgAAAHcAAAB2Aw=="
//[Display]="AAAAAQAAAAEAAAA6Aw=="
//[Home]="AAAAAQAAAAEAAABgAw=="
//[Options]="AAAAAgAAAJcAAAA2Aw=="
//[Return]="AAAAAgAAAJcAAAAjAw=="
//[Up]="AAAAAQAAAAEAAAB0Aw=="
//[Down]="AAAAAQAAAAEAAAB1Aw=="
//[Right]="AAAAAQAAAAEAAAAzAw=="
//[Left]="AAAAAQAAAAEAAAA0Aw=="
//[Confirm]="AAAAAQAAAAEAAABlAw=="
//[Red]="AAAAAgAAAJcAAAAlAw=="
//[Green]="AAAAAgAAAJcAAAAmAw=="
//[Yellow]="AAAAAgAAAJcAAAAnAw=="
//[Blue]="AAAAAgAAAJcAAAAkAw=="
//[Num1]="AAAAAQAAAAEAAAAAAw=="
//[Num2]="AAAAAQAAAAEAAAABAw=="
//[Num3]="AAAAAQAAAAEAAAACAw=="
//[Num4]="AAAAAQAAAAEAAAADAw=="
//[Num5]="AAAAAQAAAAEAAAAEAw=="
//[Num6]="AAAAAQAAAAEAAAAFAw=="
//[Num7]="AAAAAQAAAAEAAAAGAw=="
//[Num8]="AAAAAQAAAAEAAAAHAw=="
//[Num9]="AAAAAQAAAAEAAAAIAw=="
//[Num0]="AAAAAQAAAAEAAAAJAw=="
//[Num11]="AAAAAQAAAAEAAAAKAw=="
//[Num12]="AAAAAQAAAAEAAAALAw=="

//[HDMI1]="AAAAAgAAABoAAABaAw=="
//[HDMI2]="AAAAAgAAABoAAABbAw=="
//[HDMI3]="AAAAAgAAABoAAABcAw=="
//[HDMI4]="AAAAAgAAABoAAABdAw=="

//[ChannelUp]="AAAAAQAAAAEAAAAQAw=="
//[ChannelDown]="AAAAAQAAAAEAAAARAw=="
//[SubTitle]="AAAAAgAAAJcAAAAoAw=="
//[ClosedCaption]="AAAAAgAAAKQAAAAQAw=="
//[Enter]="AAAAAQAAAAEAAAALAw=="
//[DOT]="AAAAAgAAAJcAAAAdAw=="
//[Analog]="AAAAAgAAAHcAAAANAw=="
//[Teletext]="AAAAAQAAAAEAAAA/Aw=="
//[Exit]="AAAAAQAAAAEAAABjAw=="
//[Analog2]="AAAAAQAAAAEAAAA4Aw=="
//[*AD]="AAAAAgAAABoAAAA7Aw=="
//[Digital]="AAAAAgAAAJcAAAAyAw=="
//[Analog?]="AAAAAgAAAJcAAAAuAw=="
//[BS]="AAAAAgAAAJcAAAAsAw=="
//[CS]="AAAAAgAAAJcAAAArAw=="
//[BSCS]="AAAAAgAAAJcAAAAQAw=="
//[Ddata]="AAAAAgAAAJcAAAAVAw=="
//[PicOff]="AAAAAQAAAAEAAAA+Aw=="
//[Tv_Radio]="AAAAAgAAABoAAABXAw=="
//[Theater]="AAAAAgAAAHcAAABgAw=="
//[SEN]="AAAAAgAAABoAAAB9Aw=="
//[InternetWidgets]="AAAAAgAAABoAAAB6Aw=="
//[InternetVideo]="AAAAAgAAABoAAAB5Aw=="
//[Netflix]="AAAAAgAAABoAAAB8Aw=="
//[SceneSelect]="AAAAAgAAABoAAAB4Aw=="
//[Mode3D]="AAAAAgAAAHcAAABNAw=="
//[iManual]="AAAAAgAAABoAAAB7Aw=="
//[Audio]="AAAAAQAAAAEAAAAXAw=="
//[Wide]="AAAAAgAAAKQAAAA9Aw=="
//[Jump]="AAAAAQAAAAEAAAA7Aw=="
//[PAP]="AAAAAgAAAKQAAAB3Aw=="
//[MyEPG]="AAAAAgAAAHcAAABrAw=="
//[ProgramDescription]="AAAAAgAAAJcAAAAWAw=="
//[WriteChapter]="AAAAAgAAAHcAAABsAw=="
//[TrackID]="AAAAAgAAABoAAAB+Aw=="
//[TenKey]="AAAAAgAAAJcAAAAMAw=="
//[AppliCast]="AAAAAgAAABoAAABvAw=="
//[acTVila]="AAAAAgAAABoAAAByAw=="
//[DeleteVideo]="AAAAAgAAAHcAAAAfAw=="
//[PhotoFrame]="AAAAAgAAABoAAABVAw=="
//[TvPause]="AAAAAgAAABoAAABnAw=="
//[KeyPad]="AAAAAgAAABoAAAB1Aw=="
//[Media]="AAAAAgAAAJcAAAA4Aw=="
//[SyncMenu]="AAAAAgAAABoAAABYAw=="
//[Forward]="AAAAAgAAAJcAAAAcAw=="
//[Play]="AAAAAgAAAJcAAAAaAw=="
//[Rewind]="AAAAAgAAAJcAAAAbAw=="
//[Prev]="AAAAAgAAAJcAAAA8Aw=="
//[Stop]="AAAAAgAAAJcAAAAYAw=="
//[Next]="AAAAAgAAAJcAAAA9Aw=="
//[Rec]="AAAAAgAAAJcAAAAgAw=="
//[Pause]="AAAAAgAAAJcAAAAZAw=="
//[Eject]="AAAAAgAAAJcAAABIAw=="
//[FlashPlus]="AAAAAgAAAJcAAAB4Aw=="
//[FlashMinus]="AAAAAgAAAJcAAAB5Aw=="
//[TopMenu]="AAAAAgAAABoAAABgAw=="
//[PopUpMenu]="AAAAAgAAABoAAABhAw=="
//[RakurakuStart]="AAAAAgAAAHcAAABqAw=="
//[OneTouchTimeRec]="AAAAAgAAABoAAABkAw=="
//[OneTouchView]="AAAAAgAAABoAAABlAw=="
//[OneTouchRec]="AAAAAgAAABoAAABiAw=="
//[OneTouchStop]="AAAAAgAAABoAAABjAw=="
//[DUX]="AAAAAgAAABoAAABzAw=="
//[FootballMode]="AAAAAgAAABoAAAB2Aw=="
//[Social]="AAAAAgAAABoAAAB0Aw=="
Olimag
 
Messages : 1
Inscription : 30 Nov 2017

Re: [Partage] Eedomus et Sony Bravia

Messagepar rover820i » 30 Nov 2017 15:09

Salut et bienvenue ;)

Tu peux même proposer un script sur le store :D
rover820i
 
Messages : 3371
Inscription : 23 Juil 2016

Re: [Partage] Eedomus et Sony Bravia

Messagepar Thierryazur » 11 Juin 2018 23:09

Bonsoir,

J'ai également une TV Sony Bravia
J'ai réalisé plusieurs tentatives sans succès pour créer l'actionneur
Est-ce que quelqu'un peut svp, étape par étape, m'expliquer comme faire.
Merci d'avance à tous
Bonne soirée
Thierry
Thierryazur
 
Messages : 35
Inscription : 03 Oct 2017

Re: [Partage] Eedomus et Sony Bravia

Messagepar smog » 24 Août 2018 00:27

Bonjour le forum,

J'ai également une tv Sony Bravia.

le script de Olimag fonctionne parfaitement chez moi...du moment que je modifie le code IRCC directement dans le script à chaque fois que je veux faire une action ...

Bref ça fonctionne mais c'est pas pratique ...
mes compétence en php sont nul, alors si une bonne âme pouvait créer un actionneur où on remplirai les valeurs différentes dans les paramètres avec les codes IRCC... un peu comme dans le script de la TV Samsung qui est sur le store, ce serai vraiment génial!

ou expliquer comment intégrer le script dans un actionneur et préciser quoi noter dans les différentes colonnes de l'onglet valeur...

Bonne journée
Merci d'avance pour toute aide
smog
 
Messages : 45
Inscription : 24 Août 2018

Re: [Partage] Eedomus et Sony Bravia

Messagepar waow29 » 28 Nov 2018 19:09

Bonjour,
Tout nouveau sur eedomus (mais pas en domotique), je découvre avec joie qu'Olimag a trouvé un moyen de piloter les smart TV sony Bravia via des scripts mais sans approfondir son installation.
Dommage pour les novices qu'il ne donne pas plus de détails ou de signes de vie afin de nous aider à intégrer cette fonction
La team pourrait peut-être implémenter ce script sur le store
waow29
 
Messages : 13
Inscription : 28 Nov 2018

Re: [Partage] Eedomus et Sony Bravia

Messagepar SoicnarfB » 15 Fév 2021 14:38

Bonjour tout le monde,

un petit déterrage de topic :)
Avec les posts précédents un tout petit peu de recherche voici un script modifié:

Code : Tout sélectionner
<?
//appel du script http://localhost/script/?exec=tvbravia.php&bravia_ip=[VAR1]&psk=[VAR2]&code_irc=

$GLOBALS['bravia_ip'] = getArg('bravia_ip');
$GLOBALS['psk'] = getArg('psk');
$GLOBALS['code_irc'] = getArg('code_irc');

$url = "http:///".$GLOBALS['bravia_ip']."/sony/IRCC";

$headers = array(
  "X-Auth-PSK: ".$GLOBALS['psk']."",
  "Content-Type: application/x-www-form-urlencoded",
  "SOAPACTION: \"urn:schemas-sony-com:service:IRCC:1#X_SendIRCC\"",
  "Cache-Control: no-cache"
);

$code = $GLOBALS['code_irc'];

$body = "<?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>".$code."</IRCCCode></u:X_SendIRCC></s:Body></s:Envelope>";

$requete = httpQuery($url, 'POST', $body, NULL, $headers, false, false);
?>


Le script prend en entrée [VAR1] l'ip du téléviseur et en [VAR2] le code psk que vous avez mis en place sur votre télé
(petit rappel:
Navigate to: [Settings] -> [Network] -> [Home Network Setup] -> [IP Control] Set [Authentication] to [Normal and Pre-Shared Key] There should be a new menu entry [Pre-Shared Key]. Set it to 0000. If you choose anything else, you need to change the PSK
)

capture1.jpg
capture1.jpg (43.41 Kio) Consulté 12282 fois


Il faut ensuite charger le script sur votre Eedomus (https://doc.eedomus.com/view/Scripts) et configurer un nouveau HTTP actionneur (https://doc.eedomus.com/view/Pilotage_HTTP) sur la box.
Dans la liste des URLs, l'url principale est:
Code : Tout sélectionner
http://localhost/script/?exec=nom_de_votre_script.php&bravia_ip=[VAR1]&psk=[VAR2]&code_irc=

et la colonne Paramètres prend les codes remote exposés dans le post ci-dessus.

capture2.jpg
capture2.jpg (61.4 Kio) Consulté 12282 fois


J'ai testé seulement Power On, Power Off et Volume Up and Down pour les codes fournis sur une télé Sony récente de 2020 et le script ne gère pas les erreurs.
Si cela ne fonctionne pas, le mieux c'est de se mettre sur le périphérique créé (actionneur http), puis "Valeurs" puis cliquer sur une des requètes et cliquez sur "Tester" en bas. Cela va exécuter la requète par la box eedomus et vous verrez le code retour envoyé par la télé (si vous avez du "403 forbidden", vous avez oublié de définir un code psk ;) )
SoicnarfB
 
Messages : 40
Inscription : 27 Juil 2016


Re: [Partage] Eedomus et Sony Bravia

Messagepar dommarion » 21 Avr 2024 20:01

Bonsoir,
Je suis en train de faire un plugin pour TV Sony Bravia, en utilisant l'API.
Voilà la documentation:API BRAVIA SONY
J'ai réussi à avoir toutes les informations du téléviseur et passer les commandes.
Voilà le premier script qui permet de tester toutes les instructions disponibles:
Code : Tout sélectionner
<?php
/**
Développement du script pour tester TV SONY BRAVIA.
V1.0 par dommarion le 24/04/2024.
Pré-requis pour régler la TV afin de la commander via API: https://braviaproapi.readthedocs.io/en/latest/gettingstarted.html#configuring-your-television
Documentation API: https://pro-bravia.sony.net/develop/integrate/ip-control/index.html
Instructions API:  https://pro-bravia.sony.net/develop/integrate/rest-api/spec/service/appcontrol/v1_0/getApplicationList/index.html

**/
//Fonctions développées

// Function to convert array to XML
function sdk_array2Xml($array, &$xml) {
    foreach ($array as $key => $value) {
        if (is_numeric($key)) {$key="n".$key;}
        if (is_array($value)) {
            $xml .= "<$key>";
            sdk_array2Xml($value, $xml);
            $xml .= "</$key>";
        } else {
            if ($value == false) {$value = 0;}
            $xml .= "<$key>" . htmlspecialchars($value) . "</$key>";
        }
    }
}

// Function to convert json to XML
function sdk_json2xml($json) {
// Convert JSON to array
   $array = sdk_json_decode($json, true);
// Set up header and XML encoding
   sdk_header('text/xml');
   $xml = '<?xml version="1.0" encoding="UTF-8"?><root>';
   sdk_array2xml($array, $xml);
   $xml .= '</root>';
   return $xml;
}

// Fonction json_encode du PHP pour eedomus
function sdk_json_encode($val){
    if (is_string($val)) return '"'.addslashes($val).'"';
    if (is_numeric($val)) return $val;
    if ($val === null) return 'null';
    if ($val === true) return 'true';
    if ($val === false) return 'false';

    $assoc = false;
    $i = 0;
    foreach ($val as $k=>$v){
        if ($k !== $i++){
            $assoc = true;
            break;
        }
    }
    $res = array();
    foreach ($val as $k=>$v){
        $v = sdk_json_encode($v);
        if ($assoc){
            $k = '"'.addslashes($k).'"';
            $v = $k.':'.$v;
        }
        $res[] = $v;
    }
    $res = implode(',', $res);
    if ($assoc) {return '{'.$res.'}';}
    else {return '['.$res.']';}
}

/*httpQuery($url, $action = 'GET'/GET,POST,PUT,DELETE/, $post = NULL, $oauth_token = NULL, $headers = NULL, $use_cookies = false, $ignore_errors = false, &$info = null, $user_pwd = NULL)
Exécute une requête HTTP/HTTPS et retourne son résultat sous forme de chaine de caractère.
Les arguments $action et $post peuvent être omis, ils peuvent être utilisés dans le cas de requêtes avancées comme un POST.
L'argument $oauth_token est utilisé pour les scripts des objets connectés, dans les scripts personnels il peut donc être ommis ou passé à NULL
L'argument $headers doit être fourni sous la forme d'un tableau, par exemple :
 $headers = array("X-Fbx-App-Auth: xxxx");
L'argument $cookies, vous permet d'activer la gestion des cookies pour la 1ère requête et celles qui suivront
L'argument $info permet de récupérer un tableau contenant entre autre le code HTTP, le header, ...
L'argument $user_pwd permet de passer un éventuel "user:password" dans la requête */

// Fonction d'appel à l'API
function sdk_call_API($url,$method,$data,$header) {
   global $debug,$header_received;
   $result = httpQuery($url,$method,$data,NULL,$header,false,false,&$header_received,NULL);
   return $result;
}
//-----------------------PROGRAMME----------------------------------------------------------
$commands=array('setPlayContent','setAudioMute','setAudioVolume','setSceneSetting','getPowerStatus','setPowerStatus','setActiveApp','terminateApps');
$header_received = array('timeout' => 5);
$debug = getArg('debug',false,0);
$ip = getArg('ip',false,'192.168.1.108');//IP TV SONY BRAVIA
$psk = getArg('psk',false,'Ardeche07');//psk configuré dans le TV SONY BRAVIA
$url = 'http://'.$ip.'/sony';
/*
$data_array = array('method'=> "setPowerStatus",'id' => 55,'params' => array(array('status' => false)),'version' => "1.0");
$data = sdk_json_encode($data_array);
*/
$rest=array();
$data=array();
$i=getArg('n',false,1);//$i est le numéro de la fonction a lancer
$p1 = getArg('p1',false,NULL);//$p1 est le paramètre n°1 lors d'un envoi de commande
$p2 = getArg('p2',false,NULL);//$p2 est le paramètre n°2 lors d'un envoi de commande

//------GET-------
$rest[1]='/appControl';
$data[1]='{
    "method": "getApplicationList",
    "id": 60,
    "params": [],
    "version": "1.0"
}';
$rest[2]='/appControl';
$data[2]='{
    "method": "getApplicationStatusList",
    "id": 55,
    "params": [],
    "version": "1.0"
}';
$rest[3]='/avContent';
$data[3]='{
    "method": "getContentCount",
    "id": 11,
    "params": [{"source": "extInput:hdmi"}],
    "version": "1.0"
}';
$rest[4]='/avContent';
$data[4]='{
    "method": "getContentCount",
    "id": 11,
    "params": [{"source": "extInput:hdmi"}],
    "version": "1.1"
}';
$rest[5]='/avContent';
$data[5]='{
    "method": "getContentList",
    "id": 88,
    "params": [{
        "stIdx": 0,
        "cnt": 50,
        "uri": "extInput:hdmi"
    }],
    "version": "1.5"
}';
$rest[6]='/avContent';
$data[6]='{
    "method": "getCurrentExternalInputsStatus",
    "id": 105,
    "params": [],
    "version": "1.0"
}';
$rest[7]='/avContent';
$data[7]='{
    "method": "getCurrentExternalInputsStatus",
    "id": 105,
    "params": [],
    "version": "1.1"
}';
$rest[8]='/system';
$data[8]='{
    "method": "getCurrentTime",
    "id": 51,
    "params": [],
    "version": "1.0"
}';
$rest[9]='/system';
$data[9]='{
    "method": "getCurrentTime",
    "id": 51,
    "params": [],
    "version": "1.1"
}';
$rest[10]='/system';
$data[10]='{
    "method": "getInterfaceInformation",
    "id": 33,
    "params": [],
    "version": "1.0"
}';
$rest[11]='/system';
$data[11]='{
    "method": "getLEDIndicatorStatus",
    "id": 45,
    "params": [],
    "version": "1.0"
}';
$rest[12]='/system';
$data[12]='{
    "method": "getNetworkSettings",
    "id": 2,
    "params": [{"netif": "eth0"}],
    "version": "1.0"
}';
$rest[13]='/video';
$data[13]='{
    "method": "getPictureQualitySettings",
    "id": 52,
    "params": [{
        "target": "color"
    }],
    "version": "1.0"
}';
$rest[14]='/avContent';
$data[14]='{
    "method": "getPlayingContentInfo",
    "id": 103,
    "params": [],
    "version": "1.0"
}';
$rest[15]='/system';
$data[15]='{
    "method": "getPowerSavingMode",
    "id": 51,
    "params": [],
    "version": "1.0"
}';
$rest[16]='/system';
$data[16]='{
    "method": "getPowerStatus",
    "id": 50,
    "params": [],
    "version": "1.0"
}';
$rest[17]='/encryption';
$data[17]='{
    "method": "getPublicKey",
    "id": 1,
    "params": [],
    "version": "1.0"
}';
$rest[18]='/system';
$data[18]='{
    "method": "getRemoteControllerInfo",
    "id": 54,
    "params": [],
    "version": "1.0"
}';
$rest[19]='/system';
$data[19]='{
    "method": "getRemoteDeviceSettings",
    "id": 44,
    "params": [{"target": "accessPermission"}],
    "version": "1.0"
}';
$rest[20]='/avContent';
$data[20]='{
    "method": "getSchemeList",
    "id": 1,
    "params": [],
    "version": "1.0"
}';
$rest[21]='/audio';
$data[21]='{
    "method": "getSoundSettings",
    "id": 73,
    "params": [{"target": "outputTerminal"}],
    "version": "1.1"
}';
$rest[22]='/avContent';
$data[22]='{
    "method": "getSourceList",
    "id": 1,
    "params": [{"scheme": "extInput"}],
    "version": "1.0"
}';
$rest[23]='/audio';
$data[23]='{
    "method": "getSpeakerSettings",
    "id": 67,
    "params": [{"target": "tvPosition"}],
    "version": "1.0"
}';
$rest[24]='/guide';
$data[24]='{
    "method": "getSupportedApiInfo",
    "id": 5,
    "params": [{"services": [
        "system",
        "avContent"
    ]}],
    "version": "1.0"
}';
$rest[25]='/system';
$data[25]='{
    "method": "getSystemInformation",
    "id": 33,
    "params": [],
    "version": "1.0"
}';
$rest[26]='/system';
$data[26]='{
    "method": "getSystemSupportedFunction",
    "id": 55,
    "params": [],
    "version": "1.0"
}';
$rest[27]='/appControl';
$data[27]='{
    "method": "getTextForm",
    "id": 60,
    "params": [{"encKey": "AAAAB3NzaC1yc2EAAAABIwAAAQEA3p6TmGYDRtnnmzckD5leg7lHIUY9cuV6vFvacew1uZ7Bmx2MF9a7SqmtiLDkLS3P9y9eobRjuWriSfgmqDPRFRU2mdwAmRm2aIvYa6WkzvnrfUhGR+SCT/Z62j7V9ps6Mt5HB8mFQj3494p4StTPVS1nFqvEUazEx13EJnJyHsdYqsV6UJV169e43oLSSccb3lr8BzeMUnGEfY+NKlAxDpEycr5jJYyTkLfrbX0lyAPs+vLwLRYhm+h2qJYAZUwknus4vD7aki4G69S+gnENClglh/e9ut9Q5BrtxiBQCEikn9V9rlnVkbp1eEUf89XFiHRWMVrRAINtJyQFvvoPOQ=="}],
    "version": "1.1"
}';
$rest[28]='/audio';
$data[28]='{
    "method": "getVolumeInformation",
    "id": 33,
    "params": [],
    "version": "1.0"
}';
$rest[29]='/appControl';
$data[29]='{
    "method": "getWebAppStatus",
    "id": 1,
    "params": [],
    "version": "1.0"
}';
$rest[30]='/system';
$data[30]='{
    "method": "getWolMode",
    "id": 50,
    "params": [],
    "version": "1.0"
}';

//------POST-------


$rest[101]='/appControl';
$data[101]='{
    "method": "setActiveApp",
    "id": 601,
    "params": [{
        "uri": "localapp://webappruntime?'.$p1.'"//url=http%3A%2F%2Fexample.com%2F,manifest=manifest_url,auid=application_unique_id
    }],
    "version": "1.0"
}';
$rest[102]='/audio';
$data[102]='{
    "method": "setAudioMute",
    "id": 601,
    "params": [{"status": '.$p1.'}], //true ou false
    "version": "1.0"
}';
$rest[103]='/audio';
$data[103]='{
    "method": "setAudioVolume",
    "id": 601,
    "params": [{
        "volume": "'.$p1.'", //integer [0-100]
        "target": "speaker"
    }],
    "version": "1.0"
}';
$rest[104]='/audio';
$data[104]='{
    "method": "setAudioVolume",
    "id": 98,
    "params": [{
        "volume": "'.$p1.'", //integer [0-100]
        "ui": "on",
        "target": "speaker"
    }],
    "version": "1.2"
}';
$rest[105]='/system';
$data[105]='{
    "method": "setLEDIndicatorStatus",
    "id": 53,
    "params": [{
        "mode": "'.$p1.'",//"Demo","AutoBrightnessAdjust","Dark","SimpleResponse","Off"
        "status": "'.$p2.'"//true ou false
    }],
    "version": "1.1"
}';
$rest[106]='/system';
$data[106]='{
    "method": "setLanguage",
    "id": 55,
    "params": [{"language": "'.$p1.'"}],//eng ou fra ou ...selon ISO-639 alpha-3
    "version": "1.0"
}';
$rest[107]='/video';
$data[107]='{
    "method": "setPictureQualitySettings",
    "id": 12,
    "params": [{"settings": [{
        "target": "'.$p1.'",//"color","brightness","contrast","sharpness","pictureMode","lightSensor","colorSpace","colorTemperature","autoPictureMode","hdrMode","autoLocalDimming","xtendedDynamicRange"
        "value": "'.$p2.'"//integer [0-100]
    }]}],
    "version": "1.0"
}';
$rest[108]='/avContent';
$data[108]='{
    "method": "setPlayContent",
    "id": 101,
    "params": [{"uri": "extInput:'.$p1.'"}],//"hdmi?port=1","hdmi?port=2","hdmi?port=3","hdmi?port=4","scart?port=1","composite?port=1","widi?port=1"
    "version": "1.0"
}';
$rest[109]='/system';
$data[109]='{
    "method": "setPowerSavingMode",
    "id": 52,
    "params": [{"mode": "'.$p1.'"}],//"off","low","high","pictureOff"
    "version": "1.0"
}';
$rest[110]='/system';
$data[110]='{
    "method": "setPowerStatus",
    "id": 55,
    "params": [{"status": '.$p1.'}],//true ou false
    "version": "1.0"
}';
$rest[111]='/videoScreen';
$data[111]='{
    "method": "setSceneSetting",
    "id": 40,
    "params": [{"value": "'.$p1.'"}],//"auto","auto24pSync","general"
    "version": "1.0"
}';
$rest[112]='/audio';
$data[112]='{
    "method": "setSoundSettings",
    "id": 5,
    "params": [{"settings": [{
        "value": "'.$p1.'",//"speaker","speaker_hdmi","hdmi","audioSystem"
        "target": "outputTerminal"
    }]}],
    "version": "1.1"
}';
$rest[113]='/audio';
$data[113]='{
    "method": "setSpeakerSettings",
    "id": 62,
    "params": [{"settings": [{
        "target": "'.$p1.'",//"tvPosition","subwooferLevel","subwooferFreq","subwooferPhase","subwooferPower"
        "value": "'.$p2.'"//if "target" is "tvPosition"=>"tableTop","wallMount". if "target" is "subwooferLevel"=>[0,24]. If "target" is "subwooferFreq"=>[0,30]. If "target" is "subwooferPhase"=>"normal","reverse". If "target" is "subwooferPower"=>"on","off"
    }]}],
    "version": "1.0"
}';
$rest[114]='/appControl';
$data[114]='{
    "method": "setTextForm",
    "id": 601,
    "params": ["'.$p1.'"],//text en UFT8
    "version": "1.0"
}';
$rest[115]='/appControl';
$data[115]='{
    "method": "setTextForm",
    "id": 601,
    "params": [{
        "encKey": "AAAAB3NzaC1yc2EAAAABIwAAAQEA3p6TmGYDRtnnmzckD5leg7lHIUY9cuV6vFvacew1uZ7Bmx2MF9a7SqmtiLDkLS3P9y9eobRjuWriSfgmqDPRFRU2mdwAmRm2aIvYa6WkzvnrfUhGR+SCT/Z62j7V9ps6Mt5HB8mFQj3494p4StTPVS1nFqvEUazEx13EJnJyHsdYqsV6UJV169e43oLSSccb3lr8BzeMUnGEfY+NKlAxDpEycr5jJYyTkLfrbX0lyAPs+vLwLRYhm+h2qJYAZUwknus4vD7aki4G69S+gnENClglh/e9ut9Q5BrtxiBQCEikn9V9rlnVkbp1eEUf89XFiHRWMVrRAINtJyQFvvoPOQ==",
        "text": "'.$p1.'"//text en UFT8
    }],
    "version": "1.1"
}';
$rest[116]='/system';
$data[116]='{
    "method": "setWolMode",
    "id": 55,
    "params": [{"enabled": '.$p1.'}],//true ou false
    "version": "1.0"
}';
$rest[117]='/appControl';
$data[117]='{
    "method": "terminateApps",
    "id": 55,
    "params": [],
    "version": "1.0"
}';

$url .=$rest[$i];
if ($debug == 1)
   {echo "url complète:";
   var_dump($url);
   echo "fonction n°:".$i."\n";
   echo "paramètre 1:".$p1."\n";
   echo "paramètre 2:".$p2."\n";
   echo "data";
   var_dump($data[$i]);
   echo "header";
   var_dump($header);
   }
$method = 'POST';

$content_length = strlen($data[$i]);
$header = array('X-Auth-PSK: '.$psk,'Content-Type: application/json; charset=UTF-8','Content-Length: '.$content_length);

$result = sdk_call_API($url,$method,$data[$i],$header);

if ($debug == 1)
   {echo "résultat requête:".$result."\n";
   echo "header_received";
   var_dump($header_received);}

$response = sdk_json_decode($result, true);

if (array_key_exists('error',$response))
   {$error = $response['error'][0];
   $description = $response['error'][1];
   echo "Code erreur:".$error."\n";
   echo "Description:".$description;
   }
else {
   if ($response) {echo sdk_json2xml($result);}
   else {echo $result;}
     }

?>

Ensuite il faudra développer le fichier JSON, adapter les script et créer l'imagerie... :ugeek:
Si cela intéresse quelqu'un, merci de vous proposer comme testeur/testeuse. :P
Bonne soirée,
dommarion
OpenWeather|Phases soleil|HeatzyV2|Concaténateur|HP Yamaha|SomfyV3|Epson|Seuils n étages|Baie 2 vantaux|Deezer|Intégrale|HTTP Auth. Digest|TV Philips|SmartThings|fonctions PHP|Tuya Smartlife|CozyTouch2|mySMS|TV Sony
dommarion
 
Messages : 677
Inscription : 28 Déc 2020

Re: [Partage] Eedomus et Sony Bravia

Messagepar dommarion » 27 Avr 2024 20:46

Bonsoir,
Le plugin TV Sony Bravia V1.0 Béta est publié sur le store eedomus pour effectuer des tests.
Avant de lancer le plugin, il est nécessaire de configurer sa TV Sony selon cette procédure
Il y a encore des évolutions à venir:
- récupérer le numéro de chaine active
- lancer toutes les applications (seuls Google et Netflix fonctionnent)
- récupérer le nom de l'application active
- faire augmenter le son de +5 (seul +1 fonctionne)
Et bien sûr la documentation...
Bons tests
dommarion
OpenWeather|Phases soleil|HeatzyV2|Concaténateur|HP Yamaha|SomfyV3|Epson|Seuils n étages|Baie 2 vantaux|Deezer|Intégrale|HTTP Auth. Digest|TV Philips|SmartThings|fonctions PHP|Tuya Smartlife|CozyTouch2|mySMS|TV Sony
dommarion
 
Messages : 677
Inscription : 28 Déc 2020

Re: [Partage] Eedomus et Sony Bravia

Messagepar dav001 » 10 Août 2024 00:11

Bonjour à tous.

Le plugin TV Sony Bravia fonctionne parfaitement chez moi sur un nouveau modèle sony A95L.

J'utilise principalement l'allumage et l'extinction ainsi que le changement de source.

Très pratique pour les petits Belges qui ne peuvent pas encore utiliser la commande vocale Alexa pour piloter son téléviseur.

Encore un tout tout grand merci à Dommarion pour son excellent travail ;)
dav001
 
Messages : 2
Inscription : 28 Jan 2020

Re: [Partage] Eedomus et Sony Bravia

Messagepar dommarion » 20 Août 2024 12:45

Merci dav001, si tu as des propositions d'améliorations, n'hésite pas.
dommarion
OpenWeather|Phases soleil|HeatzyV2|Concaténateur|HP Yamaha|SomfyV3|Epson|Seuils n étages|Baie 2 vantaux|Deezer|Intégrale|HTTP Auth. Digest|TV Philips|SmartThings|fonctions PHP|Tuya Smartlife|CozyTouch2|mySMS|TV Sony
dommarion
 
Messages : 677
Inscription : 28 Déc 2020


Retour vers Scripts & Périphériques du store

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 36 invité(s)