Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

[Plugin Tiers][Sujet Principal] Plugin Tv Phillips

Pour échanger sur les plugins classés en catégorie "Multimédia"
Avatar de l’utilisateur
Antoinekl1
Actif
Messages : 3927
Inscription : 23 mai 2015, 08:14

Re: [Plugin Tiers][Sujet Principal] Plugin Tv Phillips

Message par Antoinekl1 » 22 déc. 2017, 09:46

Bonjour

Merci pour ce plugin, fonctionne parfaitement avec TV Philips 65PUS6121 - 2016

Pour le visuel de la télécommande, dans mon cas N2; l'image ne prend pas toute la vignette et il n'est pas possible de redimensionner la vignette, est-ce normal ?

et c'est vraiment pour chipoter, quand on lance une action sur la télécommande et que la TV est éteinte (prise coupée) ca génère une erreur :
2017-12-22 09:44:23 tvphillips Erreur execution de la commande [Plugin Physique][TVPhilips][CursorUp] : Error on shell exec, return value : 7. Details : Array ( [0] => % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:08 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:09 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:10 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:11 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:12 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:13 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:14 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:15 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:16 --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:17 --:--:-- 0curl: (7) Failed to connect to 192.168.1.66 port 1925: No route to host )
il faudrait bloquer les commandes, hormis les ON quand l'IP n'est pas joingnable
JEEDOM Smart Ultimate + 40 modules zwave
A vendre ; pack POWER jeedom - Jeedom Mini+ - Console Clazio sous Android 6

fulgencio
Timide
Messages : 47
Inscription : 19 févr. 2017, 12:36
Localisation : Paris
Contact :

Re: [Plugin Tiers][Sujet Principal] Plugin Tv Phillips

Message par fulgencio » 11 févr. 2018, 01:42

Bonjour,
L app. ne marche pas avec mon TV reference 55PUS6401/12 est ce normal ?
Merci

Avatar de l’utilisateur
slobberbone
Actif
Messages : 2692
Inscription : 25 juin 2014, 12:34
Localisation : Caen

Re: [Plugin Tiers][Sujet Principal] Plugin Tv Phillips

Message par slobberbone » 11 févr. 2018, 12:12

@fulgencio : ta TV semble être un Anrdoid TV ... un plugin va sortir prochainement ;)
Présentation, Rénovation, JeedomBox : https://www.jeedom.fr/forum/viewtopic.php?f=50&t=11339
Mes plugins/widgets : viewtopic.php?f=50&t=11339#p214011

lucasw59
Timide
Messages : 19
Inscription : 11 févr. 2018, 22:13

Re: [Plugin Tiers][Sujet Principal] Plugin Tv Phillips

Message par lucasw59 » 12 mars 2018, 19:01

Bonsoir j'ai acheté la phillips 43PUS6262 qui n'est pas sous android tv, une fois l'adresse IP de la télé rentrée dans le plugin quand je clique sur une commande j'obtiens cette erreur, avez vous une idée ? :?
Pièces jointes
Capture.PNG
Capture.PNG (61.63 Kio) Consulté 3474 fois
Raspberry PI3 Jeedom
Module Fibaro FGD 212
Interrupteur VR SOMFY RTS
Clé Z wave
RFXCOM
Capteur d'ouverture de porte et de température Xiaomi

matlefoo
Timide
Messages : 8
Inscription : 30 oct. 2014, 11:11

Re: [Plugin Tiers][Sujet Principal] Plugin Tv Phillips

Message par matlefoo » 28 juin 2018, 20:16

bonjour à tous,

J'ai une TV OLED sous android de 2018 et rien ne fonctionne :/ ( modèle : 65oled873/12 )

Avatar de l’utilisateur
koleos
Timide
Messages : 90
Inscription : 17 déc. 2014, 19:39

Re: [Plugin Tiers][Sujet Principal] Plugin Tv Phillips

Message par koleos » 31 juil. 2018, 18:10

Bonjour, Rappel, ce plugin n'est pas prévu pour fonctionner pour les tv récentes qui tournent avec Android.

Avatar de l’utilisateur
Lecl0ne
Timide
Messages : 199
Inscription : 11 août 2018, 16:57

Re: [Plugin Tiers][Sujet Principal] Plugin Tv Phillips

Message par Lecl0ne » 30 août 2018, 18:49

Ce plugin n'existe plus je me trompe ?

scorpio
Timide
Messages : 2
Inscription : 04 janv. 2019, 21:00

Re: [Plugin Tiers][Sujet Principal] Plugin Tv Phillips

Message par scorpio » 04 janv. 2019, 21:17

Bonjour, tous le monde.
le plugin ne marche pas avec moi.
après avoir marqué IP de la tV et choisi la télécommande le test m'affiche:
Erreur exécution de la commande [tv][television][VolumeDown] : Erreur dans l'exécution du terminal, la valeur retournée est : 7. Détails : Array ( [0] => % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (7) Failed to connect to 192.168.XXX.XXX port 1925: No route to host )
Ma TV est un 47PFL7108H n'est pas une android et sur le réseau en tapant
j'ai bien le JointSpace.
quelqu'un pourrais me dire d'ou vient le problème?

Merci a vous.

darkensen
Timide
Messages : 2
Inscription : 11 mars 2019, 14:55

Re: [Plugin Tiers][Sujet Principal] Plugin Tv Phillips

Message par darkensen » 11 mars 2019, 14:59

Bonjour, j'ai une télé philips android (55PUS6482) et le plugin ne fonctionne en effet pas.
Cependant, j'ai trouvé ceci qui fonctionne par script python :
https://github.com/eslavnov/pylips
Je suis pas du tout doué en php / java et autre interface pour l'intégrer à Jeedom, je me contente pour l'instant de faire des scripts avec "Scripts"
Mais ce serait intéressant de mutualiser les deux.
Je suis disponible pour mettre la main à la patte si besoin.

Merci :)

Alomamabobo
Timide
Messages : 2
Inscription : 09 mai 2017, 18:13

Re: [Plugin Tiers][Sujet Principal] Plugin Tv Phillips

Message par Alomamabobo » 21 mai 2019, 19:41

Merci pour le lien Darkensen :)
Je vais tester sur 55pus6703 (OS Saphi, requêtes JSON retournent "forbidden")
Bonne soirée :)

Avatar de l’utilisateur
sbr
Timide
Messages : 70
Inscription : 28 janv. 2018, 02:16

Re: [Plugin Tiers][Sujet Principal] Plugin Tv Phillips

Message par sbr » 12 sept. 2019, 00:35

Modif du message initial, avec fichiers impactés en rouge ci-dessous suite à un échange avec sebthenul ;-)

J'ai une tv philips sous android, et j'ai mis à jour le plugin afin de pouvoir réaliser l'apairage.

1) Sur la page de l'équipement, on clique sur le bouton récupérer la clé et la clé est récupérée depuis la tv

tvphillips2.png
tvphillips2.png (313.27 Kio) Consulté 2934 fois


3) La tv affiche le code pin

tvphillips-3.png
tvphillips-3.png (983.76 Kio) Consulté 2934 fois

4) On ajoute le pin sur la page de l'équipement et sauvegarder

tvphillips-4.png
tvphillips-4.png (303.87 Kio) Consulté 2927 fois

Ci-dessous mes modifs de code pour rendre disponible cette fonctionnalité, j'espère que l'auteur du plugin pourra les intégrer

desktop/js/tvphillips.js

Code : Tout sélectionner

/* Ligne 660 : Debut Ajout sbr */

function getKey( ) {

  $('.eqLogicAttr[data-l1key=configuration][data-l2key=user]').val(Date.now()); 
    
  $.ajax({
        url: "plugins/tvphillips/core/ajax/tvphillips.php",
        dataType: 'json',
    	type: 'post',
    	data: { 
          "action" : "pair",
          "ip" : $('.eqLogicAttr[data-l1key=configuration][data-l2key=IPaddress]').val(),
          "user" : $('.eqLogicAttr[data-l1key=configuration][data-l2key=user]').val() 
        },
    	complete : function(resultat){ 
          
           	console.log("*** COMPLETE ***");
            
          	console.log(resultat);
          
            var data = JSON.parse(resultat.responseText);        
          
            var obj = JSON.parse(data.result);  
          
            console.log(obj);
          
          	if( obj.error_id == "SUCCESS" ) {
              
            	$('.eqLogicAttr[data-l1key=configuration][data-l2key=auth_key]').val( obj.auth_key );
                $('.eqLogicAttr[data-l1key=configuration][data-l2key=timestamp]').val( obj.timestamp );
                $('.eqLogicAttr[data-l1key=configuration][data-l2key=timeout]').val( obj.timeout );
              
			} 
          
        }		
  });

}

function getToken( ) {

  $.ajax({
        url: "plugins/tvphillips/core/ajax/tvphillips.php",
        dataType: 'json',
    	type: 'post',
    	data: { 
            "action" : "grant",
            "ip" : $('.eqLogicAttr[data-l1key=configuration][data-l2key=IPaddress]').val(),
            "pin" : $('.eqLogicAttr[data-l1key=configuration][data-l2key=pin]').val(), 
            "timestamp" : $('.eqLogicAttr[data-l1key=configuration][data-l2key=timestamp]').val(),
            "user" : $('.eqLogicAttr[data-l1key=configuration][data-l2key=user]').val(),
            "auth_key" : $('.eqLogicAttr[data-l1key=configuration][data-l2key=auth_key]').val()
        },
    	complete : function(resultat){ 
          
           	console.log("*** COMPLETE ***");
            
          	console.log(resultat);
          
          	var data = JSON.parse(resultat.responseText);        
          
            var obj = JSON.parse(data.result);  
          
            console.log(obj);
          
          	if( obj.error_id == "SUCCESS" ) {
              
            	$('.eqLogicAttr[data-l1key=configuration][data-l2key=auth_key]').val( obj.auth_key );
                $('.eqLogicAttr[data-l1key=configuration][data-l2key=timestamp]').val( obj.timestamp );
                $('.eqLogicAttr[data-l1key=configuration][data-l2key=timeout]').val( obj.timeout );
              
			} 
          
        }		
  });

}

/* Ligne 739 : Fin Ajout sbr */
desktop/js/tvphillips.php

Code : Tout sélectionner

<!-- Ligne 127: Debut Ajout sbr -->
<div class="form-group" style="display: none">
    <label class="col-sm-2 control-label">{{Utilisateur}}</label>
    <div class="col-sm-3">
<input class="eqLogicAttr form-control" data-l1key='configuration' data-l2key='user' />
    </div>
</div>
<div class="form-group">                    
    <label class="col-sm-2 control-label">{{Clé}}</label>
    <div class="col-sm-3">
<input class="eqLogicAttr form-control" data-l1key='configuration' data-l2key='auth_key' readonly/>
    </div>
    <div class="col-sm-1">
        <a class="btn btn-danger eqLogicAction" onclick="getKey()"><i class="fa fa-minus-circle"></i> {{Récupérer une clé}}</a>
    </div>
</div>
<div class="form-group" style="display: none">                    
    <label class="col-sm-2 control-label" style="display: none">{{Timestamp}}</label>
    <div class="col-sm-3">
<input class="eqLogicAttr form-control" data-l1key='configuration' data-l2key='timestamp' readonly/>
    </div>
</div>
<div class="form-group" style="display: none">                    
    <label class="col-sm-2 control-label">{{Timeout}}</label>
    <div class="col-sm-3">
<input class="eqLogicAttr form-control" data-l1key='configuration' data-l2key='timeout' readonly/>
    </div>
</div>
<div class="form-group">                    
    <label class="col-sm-2 control-label">{{Pin}}</label>
    <div class="col-sm-3">
<input class="eqLogicAttr form-control" data-l1key='configuration' data-l2key='pin' />
    </div> 
    <div class="col-sm-1">
        <a class="btn btn-danger eqLogicAction" onclick="getToken()"><i class="fa fa-minus-circle"></i> {{Appairer la tv}}</a>
    </div> 
</div>
<!-- Ligne 164 : Fin Ajout sbr -->

[b]core/class/tvphillips.class.php[/b]

[code]
/* Ligne 828 : Debut Ajout sbr */
        
        $user = $eqLogic->getConfiguration('user');
        $auth_key = $eqLogic->getConfiguration('auth_key');
      
        if( $user != "" ) {
          
        $IPaddress = $eqLogic->getConfiguration('IPaddress');
        $key_data  = $this->getConfiguration('key_data');
        $api_type  = $this->getConfiguration('ApiType');

        $request1 = "curl --digest -u".$user.":".$auth_key." -X POST https://";
        $request4 = '"}';
        $request5 = "'";

        switch($api_type) {
        
          case 'key':
            
            $request2 = ":1926/6/input/key -v -k -d '{";
            $request3 = '"key":"';
          
            break;
          
          case 'volume':
            
            if ($_options !== null && $_options !== '') {
              $options = self::cmdToValue($_options);
              if (is_json($_options)) {
                $options = json_decode($_options, true);
              }
            } else {
              $options = null;
            }
            
            if (isset($options['volume'])) {
              $request2 = ":1926/6/audio/volume -d '{";
              $request3 = '"muted": false,"current":"';
              $key_data = $options['volume'];
            }
            
            break;

          case 'sources':
            
            $request2 = ":1926/6/sources/current -d '{";
            $request3 = '"id":"';
            
            break;
            
          default:
          
            break;
        
        }

        $request = $request1.$IPaddress.$request2.$request3.$key_data.$request4.$request5;
        $request_shell = new com_shell($request . ' 2>&1');
        $result = trim($request_shell->exec());

        return $result;
      
        } else {
          
        /* Ligne 892 : Fin Ajout sbr */
et

Code : Tout sélectionner

	/* Ligne 938 : Debut Ajout sbr */
        
	 }
      
	/* Ligne 942 Fin Ajout sbr */
core/ajax/tvphillips.php

Code : Tout sélectionner

<?php

/* This file is part of Jeedom.
 *
 * Jeedom is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Jeedom is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Jeedom. If not, see <http://www.gnu.org/licenses/>.
 */

try {
    require_once dirname(__FILE__) . '/../../../../core/php/core.inc.php';
    include_file('core', 'authentification', 'php');

    if (!isConnect('admin')) {
        throw new Exception(__('401 - Accès non autorisé', __FILE__));
    }

    if ( init('action') == 'grant' ) {
      
		$input = '{ "auth" : { "auth_AppId" : "1" , "pin" : "' . $_POST['pin'] . '" , "auth_timestamp" : "" , "auth_signature" : "" } , "device" : { "device_name" : "heliotrope", "device_os" : "Android", "app_name" : "ApplicationName", "type" : "native" , "app_id": "app.id" , "id" : "' . $_POST['user'] . '" } }';
  
        $ch = curl_init();
  
      	$ip = init('ip');
      
        curl_setopt($ch, CURLOPT_URL, "https://".$ip.":1926/6/pair/grant");
      	curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
        curl_setopt($ch, CURLOPT_USERPWD, $_POST['user'] . ":" . $_POST['auth_key']);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $input ); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Accept: application/json' ));
  
  		$output = curl_exec($ch);
  
  		$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  
  		curl_close($ch);
      
  		ajax::success($httpcode);

	} else if ( init('action') == 'pair') {
      
    	$input = '{ "scope" :  [ "read", "write", "control"] , "device" : { "device_name" : "heliotrope", "device_os" : "Android", "app_name" : "ApplicationName", "type" : "native" , "app_id": "app.id" , "id" : "' . $_POST['user'] . '" } }';
  
        $ch = curl_init();

      	$ip = init('ip');
      
        curl_setopt($ch, CURLOPT_URL, "https://".$ip.":1926/6/pair/request");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $input ); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Accept: application/json' ));

        $output = curl_exec($ch);

        $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        curl_close($ch);

        ajax::success($output);
      
    }
    
	throw new Exception(__('Aucune methode correspondante à : ', __FILE__) . init('action'));
  
} catch (Exception $e) {
  
    ajax::error(displayExeption($e), $e->getCode());
  
}
  
?>
A vous de jouer ...
Dernière édition par sbr le 23 sept. 2019, 21:45, édité 2 fois.

sebthenul
Timide
Messages : 5
Inscription : 23 oct. 2017, 17:32

Re: [Plugin Tiers][Sujet Principal] Plugin Tv Phillips

Message par sebthenul » 23 sept. 2019, 17:29

Bonjour,

Quand je clique sur "Récupérer une clée" cela ne fonctionne pas.

Je pense qu'il manque le code pour le fichier suivant :

plugins/tvphillips/core/ajax/tvphillips.php

Cordialement,

Avatar de l’utilisateur
sbr
Timide
Messages : 70
Inscription : 28 janv. 2018, 02:16

Re: [Plugin Tiers][Sujet Principal] Plugin Tv Phillips

Message par sbr » 23 sept. 2019, 21:54

sebthenul a écrit :
23 sept. 2019, 17:29
Bonjour,

Quand je clique sur "Récupérer une clée" cela ne fonctionne pas.

Je pense qu'il manque le code pour le fichier suivant :

plugins/tvphillips/core/ajax/tvphillips.php

Cordialement,
Oui, effectivement, j'ai modifié mon message ci-dessus, enccore merci ;-)

Avatar de l’utilisateur
Bello65
Actif
Messages : 706
Inscription : 16 déc. 2016, 11:20
Localisation : 31

Re: [Plugin Tiers][Sujet Principal] Plugin Tv Phillips

Message par Bello65 » 08 nov. 2019, 10:50

@sbr bonjour,

Je regardes ce que tu as ajouté mais j'ai une question.
desktop/js/tvphillips.php : il n'y a pas ce fichier dans js, ne serait ce pas plutôt dans desktop/php/tvphillips.php ?
Dans la même partie :
Tu as oublié de mettre [/code]après le :
<!-- Ligne 164 : Fin Ajout sbr --> ICI

Si je reprends :
sbr a écrit :
12 sept. 2019, 00:35
Ci-dessous mes modifs de code pour rendre disponible cette fonctionnalité, j'espère que l'auteur du plugin pourra les intégrer

desktop/js/tvphillips.js

Code : Tout sélectionner

/* Ligne 660 : Debut Ajout sbr */

function getKey( ) {

  $('.eqLogicAttr[data-l1key=configuration][data-l2key=user]').val(Date.now()); 
    
  $.ajax({
        url: "plugins/tvphillips/core/ajax/tvphillips.php",
        dataType: 'json',
    	type: 'post',
    	data: { 
          "action" : "pair",
          "ip" : $('.eqLogicAttr[data-l1key=configuration][data-l2key=IPaddress]').val(),
          "user" : $('.eqLogicAttr[data-l1key=configuration][data-l2key=user]').val() 
        },
    	complete : function(resultat){ 
          
           	console.log("*** COMPLETE ***");
            
          	console.log(resultat);
          
            var data = JSON.parse(resultat.responseText);        
          
            var obj = JSON.parse(data.result);  
          
            console.log(obj);
          
          	if( obj.error_id == "SUCCESS" ) {
              
            	$('.eqLogicAttr[data-l1key=configuration][data-l2key=auth_key]').val( obj.auth_key );
                $('.eqLogicAttr[data-l1key=configuration][data-l2key=timestamp]').val( obj.timestamp );
                $('.eqLogicAttr[data-l1key=configuration][data-l2key=timeout]').val( obj.timeout );
              
			} 
          
        }		
  });

}

function getToken( ) {

  $.ajax({
        url: "plugins/tvphillips/core/ajax/tvphillips.php",
        dataType: 'json',
    	type: 'post',
    	data: { 
            "action" : "grant",
            "ip" : $('.eqLogicAttr[data-l1key=configuration][data-l2key=IPaddress]').val(),
            "pin" : $('.eqLogicAttr[data-l1key=configuration][data-l2key=pin]').val(), 
            "timestamp" : $('.eqLogicAttr[data-l1key=configuration][data-l2key=timestamp]').val(),
            "user" : $('.eqLogicAttr[data-l1key=configuration][data-l2key=user]').val(),
            "auth_key" : $('.eqLogicAttr[data-l1key=configuration][data-l2key=auth_key]').val()
        },
    	complete : function(resultat){ 
          
           	console.log("*** COMPLETE ***");
            
          	console.log(resultat);
          
          	var data = JSON.parse(resultat.responseText);        
          
            var obj = JSON.parse(data.result);  
          
            console.log(obj);
          
          	if( obj.error_id == "SUCCESS" ) {
              
            	$('.eqLogicAttr[data-l1key=configuration][data-l2key=auth_key]').val( obj.auth_key );
                $('.eqLogicAttr[data-l1key=configuration][data-l2key=timestamp]').val( obj.timestamp );
                $('.eqLogicAttr[data-l1key=configuration][data-l2key=timeout]').val( obj.timeout );
              
			} 
          
        }		
  });

}

/* Ligne 739 : Fin Ajout sbr */
desktop/php/tvphillips.php

Code : Tout sélectionner

<!-- Ligne 127: Debut Ajout sbr -->
<div class="form-group" style="display: none">
    <label class="col-sm-2 control-label">{{Utilisateur}}</label>
    <div class="col-sm-3">
<input class="eqLogicAttr form-control" data-l1key='configuration' data-l2key='user' />
    </div>
</div>
<div class="form-group">                    
    <label class="col-sm-2 control-label">{{Clé}}</label>
    <div class="col-sm-3">
<input class="eqLogicAttr form-control" data-l1key='configuration' data-l2key='auth_key' readonly/>
    </div>
    <div class="col-sm-1">
        <a class="btn btn-danger eqLogicAction" onclick="getKey()"><i class="fa fa-minus-circle"></i> {{Récupérer une clé}}</a>
    </div>
</div>
<div class="form-group" style="display: none">                    
    <label class="col-sm-2 control-label" style="display: none">{{Timestamp}}</label>
    <div class="col-sm-3">
<input class="eqLogicAttr form-control" data-l1key='configuration' data-l2key='timestamp' readonly/>
    </div>
</div>
<div class="form-group" style="display: none">                    
    <label class="col-sm-2 control-label">{{Timeout}}</label>
    <div class="col-sm-3">
<input class="eqLogicAttr form-control" data-l1key='configuration' data-l2key='timeout' readonly/>
    </div>
</div>
<div class="form-group">                    
    <label class="col-sm-2 control-label">{{Pin}}</label>
    <div class="col-sm-3">
<input class="eqLogicAttr form-control" data-l1key='configuration' data-l2key='pin' />
    </div> 
    <div class="col-sm-1">
        <a class="btn btn-danger eqLogicAction" onclick="getToken()"><i class="fa fa-minus-circle"></i> {{Appairer la tv}}</a>
    </div> 
</div>
<!-- Ligne 164 : Fin Ajout sbr -->
core/class/tvphillips.class.php

Code : Tout sélectionner

/* Ligne 828 : Debut Ajout sbr */
        
        $user = $eqLogic->getConfiguration('user');
        $auth_key = $eqLogic->getConfiguration('auth_key');
      
        if( $user != "" ) {
          
        $IPaddress = $eqLogic->getConfiguration('IPaddress');
        $key_data  = $this->getConfiguration('key_data');
        $api_type  = $this->getConfiguration('ApiType');

        $request1 = "curl --digest -u".$user.":".$auth_key." -X POST https://";
        $request4 = '"}';
        $request5 = "'";

        switch($api_type) {
        
          case 'key':
            
            $request2 = ":1926/6/input/key -v -k -d '{";
            $request3 = '"key":"';
          
            break;
          
          case 'volume':
            
            if ($_options !== null && $_options !== '') {
              $options = self::cmdToValue($_options);
              if (is_json($_options)) {
                $options = json_decode($_options, true);
              }
            } else {
              $options = null;
            }
            
            if (isset($options['volume'])) {
              $request2 = ":1926/6/audio/volume -d '{";
              $request3 = '"muted": false,"current":"';
              $key_data = $options['volume'];
            }
            
            break;

          case 'sources':
            
            $request2 = ":1926/6/sources/current -d '{";
            $request3 = '"id":"';
            
            break;
            
          default:
          
            break;
        
        }

        $request = $request1.$IPaddress.$request2.$request3.$key_data.$request4.$request5;
        $request_shell = new com_shell($request . ' 2>&1');
        $result = trim($request_shell->exec());

        return $result;
      
        } else {
          
        /* Ligne 892 : Fin Ajout sbr */
et

Code : Tout sélectionner

	/* Ligne 938 : Debut Ajout sbr */
        
	 }
      
	/* Ligne 942 Fin Ajout sbr */
Puis créer un dossier ajax dans core, un fichier txt que l'on nomme tvphillips.php puis y copier ce qui suit :

core/ajax/tvphillips.php

Code : Tout sélectionner

<?php

/* This file is part of Jeedom.
 *
 * Jeedom is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Jeedom is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Jeedom. If not, see <http://www.gnu.org/licenses/>.
 */

try {
    require_once dirname(__FILE__) . '/../../../../core/php/core.inc.php';
    include_file('core', 'authentification', 'php');

    if (!isConnect('admin')) {
        throw new Exception(__('401 - Accès non autorisé', __FILE__));
    }

    if ( init('action') == 'grant' ) {
      
		$input = '{ "auth" : { "auth_AppId" : "1" , "pin" : "' . $_POST['pin'] . '" , "auth_timestamp" : "" , "auth_signature" : "" } , "device" : { "device_name" : "heliotrope", "device_os" : "Android", "app_name" : "ApplicationName", "type" : "native" , "app_id": "app.id" , "id" : "' . $_POST['user'] . '" } }';
  
        $ch = curl_init();
  
      	$ip = init('ip');
      
        curl_setopt($ch, CURLOPT_URL, "https://".$ip.":1926/6/pair/grant");
      	curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
        curl_setopt($ch, CURLOPT_USERPWD, $_POST['user'] . ":" . $_POST['auth_key']);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $input ); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Accept: application/json' ));
  
  		$output = curl_exec($ch);
  
  		$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  
  		curl_close($ch);
      
  		ajax::success($httpcode);

	} else if ( init('action') == 'pair') {
      
    	$input = '{ "scope" :  [ "read", "write", "control"] , "device" : { "device_name" : "heliotrope", "device_os" : "Android", "app_name" : "ApplicationName", "type" : "native" , "app_id": "app.id" , "id" : "' . $_POST['user'] . '" } }';
  
        $ch = curl_init();

      	$ip = init('ip');
      
        curl_setopt($ch, CURLOPT_URL, "https://".$ip.":1926/6/pair/request");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $input ); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Accept: application/json' ));

        $output = curl_exec($ch);

        $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        curl_close($ch);

        ajax::success($output);
      
    }
    
	throw new Exception(__('Aucune methode correspondante à : ', __FILE__) . init('action'));
  
} catch (Exception $e) {
  
    ajax::error(displayExeption($e), $e->getCode());
  
}
  
?>
Tu pourras me corriger si je me suis planté ?
Merci @sbr

@Koleos Bonjour,
Je me prépares à recevoir mon super cadeau de nöel ;) une Philips OLED :lol:
J'ai donc besoin de ce plugin pour gérer l'extinction (mise en vieille) de mon 'joujou'. Je ne pourrai plus éteindre comme je fais actuellement avec mon ancienne TV via une prise (On/Off) avec Homebridge et Siri. Les OLED doivent être mis en vieille, pas coupé net....Donc ce super plugin va me permettre (j'espère) de mettre en vieille via Siri.... D)
Peux-tu faire les modifs dans ton plugin ? Et si possible le mettre compatible V4 ? 8-)

Je met le sujet sur le Community, vu que celui-ci va passer en lecture seule
Remise à niveau plugin TV Phillips (AndroidTV)

Pour le post plugin, ce sera d'une autre façon sur Community.
Vous pouvez répondre sur Community si vous le souhaitez.
Je vous en remercie tous les deux.
PROXMOX VM JEEDOM (NUC merci benj29 ;)) v3.3.24 Stable&Béta
RfxCom - JPI - Blue Connect (sonde piscine) - Alarme Risco - Xiaomi Home - Z Wave - BLEA - Enocean

Mes débuts de débutant

Répondre

Revenir vers « [Catégorie] Multimédia »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 8 invités