Macro telecommande freebox a 3 digit non fonctionnel

Discussion sur la box eedomus

Macro telecommande freebox a 3 digit non fonctionnel

Messagepar zebess » 29 Sep 2016 16:17

Bonjour,

Les macros pr piloter sa Freebox révolution ne fonctionne pas quand on a une chaîne à 3 chiffres de type 124.
Es le cas pour vous?

Exemple:
url: http://[VAR1]/pub/remote_control?code=[VAR2]
parametre: &key=2&key=6&key=0

Seul les deux derniers chiffres sont tapés c'est à dire 60 au lieur de 260.
Une idée pour me dépanner ou es le cas pour vous aussi?
Merci
Sébastien
zebess
 
Messages : 101
Inscription : 17 Déc 2015

Re: Macro telecommande freebox a 3 digit non fonctionnel

Messagepar zebess » 17 Oct 2016 06:48

On poursuit dans le bug:
La chaîne 66 ne passe pas et donne 6 tout comme la 55 qui donne 5.


url: http://[VAR1]/pub/remote_control?code=[VAR2]
parametre: &key=6&key=6

Personne pour faire un essai de son coté pour savoir si c'est un bug isolé ou pour tout le monde?

Merci
Seb.

-> ça devait être un bug de maj fb, car je n'ai plus ce souci à 2 digits. Seul 3 digits ne passent pas
Dernière édition par zebess le 10 Déc 2016 13:25, édité 1 fois.
zebess
 
Messages : 101
Inscription : 17 Déc 2015

Re: Macro telecommande freebox a 3 digit non fonctionnel

Messagepar romu@asnieres » 10 Déc 2016 12:59

hello,

de mon côté j'ai paramétré la FB pour utiliser l'appui long pour les chaînes supérieures à 9 puis je lance 3 requêtes pour la 141 :
hd1.freebox.fr/pub/remote_control?code=xx&key=1&long=true
hd1.freebox.fr/pub/remote_control?code=xx&key=4&long=true
hd1.freebox.fr/pub/remote_control?code=xx&key=1

Romu
romu@asnieres
 
Messages : 32
Inscription : 31 Oct 2016

Re: Macro telecommande freebox a 3 digit non fonctionnel

Messagepar zebess » 10 Déc 2016 13:22

Salut,

je ne trouve pas le paramètre appui long après la touche 9 pour la fb ... j'ai juste des réglages de vitesse en ms .... es que tu peux me guider ou trouver ce paramètre stp?
Merci ;-)
Sébastien
zebess
 
Messages : 101
Inscription : 17 Déc 2015

Re: Macro telecommande freebox a 3 digit non fonctionnel

Messagepar romu@asnieres » 15 Déc 2016 22:03

hello,

je suis passé par ici :
touche free
Réglages
Télévision
Type de zapping
-> long

après pour enchainer les 3 requetes j'ai créé une step dans le script freebox.php

Romu
romu@asnieres
 
Messages : 32
Inscription : 31 Oct 2016

Re: Macro telecommande freebox a 3 digit non fonctionnel

Messagepar zebess » 15 Déc 2016 22:16

Bonsoir,
Ah il faut utiliser un script. Tu as un lien stp qui explique un peu ca ?
Je suis passé en long mais c'est pire mes chaînes marchent plus (j utilise pas de script).
Merci.
Sébastien
zebess
 
Messages : 101
Inscription : 17 Déc 2015

Re: Macro telecommande freebox a 3 digit non fonctionnel

Messagepar romu@asnieres » 16 Déc 2016 17:54

salut,

pour le script tu as les infos dans la doc eedomus :
http://doc.eedomus.com/view/Scripts

ci-dessous le code que j'ai ajouté dans le fichier freebox.php pour aller sur CARTOON NETWORK et pour changer de bouquet (xxx est le code télécommande) :
// CARTOON NETWORK
case 'CARTOON':
httpQuery("hd1.freebox.fr/pub/remote_control?code=xxx&key=1&long=true", "GET");
httpQuery("hd1.freebox.fr/pub/remote_control?code=xxx&key=4&long=true", "GET");
httpQuery("hd1.freebox.fr/pub/remote_control?code=xxx&key=6", "GET");
break;

// Bouquet FAVORIS
case 'FAVORIS':
httpQuery("hd1.freebox.fr/pub/remote_control?code=xxx&key=green", "GET");
httpQuery("hd1.freebox.fr/pub/remote_control?code=xxx&key=down", "GET");
httpQuery("hd1.freebox.fr/pub/remote_control?code=xxx&key=down", "GET");
httpQuery("hd1.freebox.fr/pub/remote_control?code=xxx&key=down", "GET");
httpQuery("hd1.freebox.fr/pub/remote_control?code=xxx&key=down", "GET");
httpQuery("hd1.freebox.fr/pub/remote_control?code=xxx&key=right&long=true", "GET");
httpQuery("hd1.freebox.fr/pub/remote_control?code=xxx&key=down", "GET");
httpQuery("hd1.freebox.fr/pub/remote_control?code=xxx&key=down", "GET");
httpQuery("hd1.freebox.fr/pub/remote_control?code=xxx&key=down", "GET");
httpQuery("hd1.freebox.fr/pub/remote_control?code=xxx&key=ok", "GET");
break;


Romu
romu@asnieres
 
Messages : 32
Inscription : 31 Oct 2016

Re: Macro telecommande freebox a 3 digit non fonctionnel

Messagepar zebess » 17 Déc 2016 12:11

Merci pour ces infos.
J'ai rajouté en fin du script freebox.php ton exemple (en mettant mon code telecommande):
// CARTOON NETWORK
case 'CARTOON':
httpQuery("hd1.freebox.fr/pub/remote_control?code=xxx&key=1&long=true", "GET");
httpQuery("hd1.freebox.fr/pub/remote_control?code=xxx&key=4&long=true", "GET");
httpQuery("hd1.freebox.fr/pub/remote_control?code=xxx&key=6", "GET");
break;

Moi j'ai un bouton télécommande (http commande) ou j'appel directement les touches au niveau de l'onglet valeurs:
url: http://[VAR1]/pub/remote_control?code=[VAR2]
GET
paramètres: &key=4

Par contre comment je fais pour appeler la partie du script // CARTOON NETWORK dans mes touches au lieu de faire des appels télécommande direct?
Merci pour ta réponse
Sébastien
zebess
 
Messages : 101
Inscription : 17 Déc 2015

Re: Macro telecommande freebox a 3 digit non fonctionnel

Messagepar romu@asnieres » 17 Déc 2016 14:36

Je lance l'URL suivante :
http://<ip de la freebox>/script/?exec=freebox.php&freebox_ip=hd1.freebox.fr&step=CARTOON

CARTOON correspond au libellé de ton case :
case 'CARTOON':

Romu
romu@asnieres
 
Messages : 32
Inscription : 31 Oct 2016

Re: Macro telecommande freebox a 3 digit non fonctionnel

Messagepar zebess » 17 Déc 2016 21:21

Je pense que tu voulais dire:
http://<ip de la eedomus>/script/?exec=......
au lieu de http://<ip de la freebox>?

je m'en sort pas lol.

ma fin de script modifié (j'ai remplacé par des ... les 4 derniers digits de ma télécommande):
case 'api_get':
$api_url = getArg('api_url');
sdk_freebox_query($api_url);
break;
// CARTOON NETWORK
case 'CARTOON':
httpQuery("192.168.1.1/pub/remote_control?code=5633....&key=1&long=true", "GET");
httpQuery("192.168.1.1/pub/remote_control?code=5633....&key=4&long=true", "GET");
httpQuery("192.168.1.1/pub/remote_control?code=5633...&key=6", "GET");
break;

J'ai créé une requette http avec comme paramètre expert:
Requête de mise à jour (Optionnelle) : http://localhost/script/?exec=freebox.php&freebox_ip=[VAR1]&step=CARTOON

(var1 est renseigné avec l'ip de ma freebox juste au dessus.)

onglet valeur:
url: http://localhost/script/?exec=freebox.php&freebox_ip=[VAR1]
type:get
parametre: &step=CARTOON

ça marche pas :-(
Dernière édition par zebess le 18 Déc 2016 20:31, édité 1 fois.
zebess
 
Messages : 101
Inscription : 17 Déc 2015

Re: Macro telecommande freebox a 3 digit non fonctionnel

Messagepar romu@asnieres » 18 Déc 2016 11:06

effectivement c'est l'IP de l'eedomus :)

au fait, ça marche avec ta télécommande lorsque tu fais des appuis longs pour les touches 1 et 4 pour saisir 146 ?

essaie de copier l'URL ci-dessous dans ton Internet Explorer et regarde s'il change de chaine. Si ce n'est pas le cas poste ton script que je regarde ;
url: http://<ip eedomus>/script/?exec=freebox.php&freebox_ip=<ip freebox>&step=CARTOON

Dans ton onglet valeur (sinon avec le code que tu as copié tu as 2 fois &step=CARTOON :
url: http://localhost/script/?exec=freebox.php&freebox_ip=[VAR1]&step=
type:get
parametre: CARTOON
romu@asnieres
 
Messages : 32
Inscription : 31 Oct 2016

Re: Macro telecommande freebox a 3 digit non fonctionnel

Messagepar zebess » 18 Déc 2016 20:37

Bonjour,

pour la question: "au fait, ça marche avec ta télécommande lorsque tu fais des appuis longs pour les touches 1 et 4 pour saisir 146 ? " -> oui avec la télécommande ça fonctionne.

Pour la question:"essaie de copier l'URL ci-dessous dans ton Internet Explorer":
ça ne marche pas, j'ai testé dans ie:
http://192.168.1.29/script/?exec=freebo ... ep=CARTOON -> aucune réaction de la tv

pour la partie:
"(sinon avec le code que tu as copié tu as 2 fois &step=CARTOON" -> erreur de transmission car j'ai revérifié sur l'eedomus je n'ai pas mis deux fois &step=CARTOON ;-)

Voici le script:
<?

$GLOBALS['freebox_ip'] = getArg('freebox_ip');
$GLOBALS['app_version'] = '1.0.0';
$GLOBALS['app_id'] = 'fr.freebox.eedomus';

function sdk_page_style()
{
?><style type="text/css">
body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
}
body {
margin-left: 10px;
margin-top: 10px;
}
button
{
font-size: 100%;
padding: 0.5em 1em;
text-decoration: none;
-moz-user-select: none;
cursor: pointer;
line-height: normal;
text-align: center;
vertical-align: baseline;
white-space: nowrap;
border: 0 none rgba(0, 0, 0, 0);
border-radius: 4px;
background-color: #0078e7;
color: #fff;
}
</style>
<img align="absmiddle" src="https://secure.eedomus.com/img/mdm/periph/freebox.png"> <span style="font-size:20px">Freebox et eedomus</span><br />
<?
}

function sdk_hmac_sha1($key, $data)
{
// Adjust key to exactly 64 bytes
if (strlen($key) > 64)
{
$key = str_pad(sha1($key, true), 64, chr(0));
}
if (strlen($key) < 64)
{
$key = str_pad($key, 64, chr(0));
}

// Outter and Inner pad
$opad = str_repeat(chr(0x5C), 64);
$ipad = str_repeat(chr(0x36), 64);

// Xor key with opad & ipad
for ($i = 0; $i < strlen($key); $i++)
{
$opad[$i] = $opad[$i] ^ $key[$i];
$ipad[$i] = $ipad[$i] ^ $key[$i];
}
return sha1($opad.sha1($ipad.$data, true));
}

function sdk_step1()
{
sdk_page_style();

$url = "http://".$GLOBALS['freebox_ip']."/api/v1/login/authorize/";

$post = '{
"app_id": "'.$GLOBALS['app_id'].'",
"app_name": "App eedomus",
"app_version": "'.$GLOBALS['app_version'].'",
"device_name": "Box eedomus"
}';

$response = httpQuery($url, 'POST', $post);
$json = sdk_json_decode($response);
// ex. {"success":true,"result":{"app_token":"XibW6mhg0wsUsaQ2cMWj0a2QGQBHMi0EknUpa9paGJYPf3rMWU0ATNX4LZ20OhDe","track_id":0}}
if ($json['success'] != true)
{
echo "Erreur lors de la connexion à la freebox: <br><br>";
if ($json['msg'] != '')
{
echo "<b>".$json['msg']."</b><br>";
}
else
{
echo $response;
}
die();
}

$app_token = $json['result']['app_token'];
$track_id = $json['result']['track_id'];

if ($app_token != '')
{
saveVariable('new_app_token', $app_token);
saveVariable('new_track_id', $track_id);
}

echo "Veuillez autoriser l'application eedomus en sélectionnant <b>OUI</b> sur l'affichage de votre Freebox Server, puis cliquer sur </b>Continuer</b><br><br>";

$controller_id = getArg('controller_id');
$url = "?controller_id=".$controller_id."&url=".urlencode('http://localhost/script/?exec=freebox.php&controller_id='.$controller_id.'&freebox_ip='.$GLOBALS['freebox_ip'].'&step=2');
echo '<button onclick="window.location.href=\''.$url.'\'">Continuer</button>';
}

function sdk_step2()
{
sdk_page_style();

$track_id = loadVariable('new_track_id');

$url = "http://".$GLOBALS['freebox_ip']."/api/v1/login/authorize/$track_id";

$response = httpQuery($url, 'GET');
$json = sdk_json_decode($response);
// ex. {"success":true,"result":{"status":"granted","challenge":"\/ZRimxCjeGbH20TLeL6\/bQtAOTtRLInV","password_salt":"3qw8v\/0rTvOZfzsFZrBLiB\/WvJ56J9Gh"}}

if ($json['success'] != true)
{
echo "Erreur lors de la connexion à la freebox: <br><br>";
if ($json['msg'] != '')
{
echo "<b>".$json['msg']."</b><br>";
}
else
{
echo $response;
}
die();
}
else if ($json['result']['status'] != 'granted')
{
echo "Erreur l'app n'a pas été autorisée sur votre Freebox Server : <b>".$json['result']['status']."</b><br><br>";

if ($json['result']['status'] == 'timeout')
{
$controller_id = getArg('controller_id');
$url = "?controller_id=".$controller_id."&url=".urlencode('http://localhost/script/?exec=freebox.php&controller_id='.$controller_id.'&freebox_ip='.$GLOBALS['freebox_ip'].'&step=1');
echo '<button onclick="window.location.href=\''.$url.'\'">Recommencer</button>';
}
else
{
$controller_id = getArg('controller_id');
$url = "?controller_id=".$controller_id."&url=".urlencode('http://localhost/script/?exec=freebox.php&controller_id='.$controller_id.'&freebox_ip='.$GLOBALS['freebox_ip'].'&step=2');
echo '<button onclick="window.location.href=\''.$url.'\'">Vérifier à nouveau</button>';
}
die();
}
else
{
$app_token = loadVariable('new_app_token');
saveVariable('app_token', $app_token);
saveVariable('track_id', $track_id);

saveVariable('challenge', $json['result']['challenge']);

echo "<img width='64' src='/img/mdm/01/check.png' align='absmiddle'> L'app eedomus a été autorisée avec succés sur votre Freebox Revolution !";

$json = sdk_session(/*$show_error*/ false, /*$return_result*/ true);
if ($json['success'] != true)
{
// on réessaie
$json = sdk_session(/*$show_error*/ false, /*$return_result*/ true);
}

if (!$json['result']['permissions']['parental'] || !$json['result']['permissions']['settings'])
{
$right_url = "http://".$GLOBALS['freebox_ip']."/#Fbx.os.app.settings.Accounts";
echo "<br><br>Vous devez autoriser les droits d'accés de l'app eedomus sur votre Freebox : <b>Modification des règlages de la Freebox</b> et <b>Accès au contrôle parental</b><br>Rendez vous sur <a target='_blank' href='$right_url'>$right_url</a> puis dans l'onglet <b>Applications</b> et cliquez sur <b>App eedomus</b>.";

$controller_id = getArg('controller_id');
$url = "?controller_id=".$controller_id."&url=".urlencode('http://localhost/script/?exec=freebox.php&controller_id='.$controller_id.'&freebox_ip='.$GLOBALS['freebox_ip'].'&step=2');
echo '<br><br><button onclick="window.location.href=\''.$url.'\'">Vérifier à nouveau les droits</button>';
echo "<br><br><img src='http://doc.eedomus.com/images/c/ce/Eedomus_freebox05.png'>";

}
else
{
echo "<br><br><i>Vous pouvez maintenant fermer cette fenêtre.</i>";
}

}
}

function sdk_session($show_error = false, $return_result = false)
{
$app_token = loadVariable('app_token');
$challenge = loadVariable('challenge');

$password = sdk_hmac_sha1(stripslashes($app_token), stripslashes($challenge));

// on ouvre la session
$url = "http://".$GLOBALS['freebox_ip']."/api/v1/login/session/";

$post = '{
"app_id": "'.$GLOBALS['app_id'].'",
"password": "'.$password.'"
}';

$response = httpQuery($url, 'POST', $post);
$json = sdk_json_decode($response);
//echo "challenge was [$challenge]<br>";
if ($json['result']['challenge'] != '')
{
saveVariable('challenge', $json['result']['challenge']);
}

//echo "challenge is now [".$json['result']['challenge']."]<br>";

if ($return_result) { return $json; }

if ($json['result']['session_token'] != '')
{
saveVariable('session_token', $json['result']['session_token']);
//echo "OK"; // [$response]";
//echo "<br>session_token = [".$json['result']['session_token']."]";
return true;
}
else
{
if ($show_error)
{
echo "<br>Erreur d'authentification: ";
if ($json['msg'] != '')
{
echo "<b>".$json['msg']."</b><br><br>";
}
echo "[$response]<br>";
echo "Challenge was [$challenge]<br>";
}
return false;
}
}

// si la session est perdue il faudra regénérer le challenge puis le session_token, d'où les 3 essais
function sdk_freebox_query($url, $method = 'GET', $post = NULL, $allow_retry = 3, $return_xml = true)
{
$full_url = "http://".$GLOBALS['freebox_ip'].$url;
$session_token = loadVariable('session_token');
$headers = array("X-Fbx-App-Auth: ".stripslashes($session_token));

$response = httpQuery($full_url, $method, $post, NULL, $headers);
$json = sdk_json_decode($response);

if ($json['success'] != true)
{
// on réétabli la session
if ($allow_retry > 0)
{
sdk_session(/*$show_error*/ false);
$allow_retry--;
return sdk_freebox_query($url, $method, $post, $allow_retry);
}
}

if ($json['result']['challenge'] != '')
{
saveVariable('challenge', $json['result']['challenge']);
}

if ($return_xml)
{
// permet d'avoir une mise en forme plus lisible dans un browser
sdk_header('text/xml');
echo jsonToXML($response);
}
else
{
return $json;
}
}

switch($_GET['step'])
{
default:
case '1':
sdk_step1();
break;

case '2':
sdk_step2();
break;

case 'session':
// on essaie 2 fois
if (!sdk_session(/*$show_error*/ false))
{
sdk_session(/*$show_error*/ true);
}
echo "done";
break;

case 'wifi':
$action = getArg('action');
$post = '{ "ap_params": { "enabled": '.$action.' } }';
sdk_freebox_query('/api/v1/wifi/config/', 'PUT', $post);
break;

case 'parental':
$action = getArg('action');
$mac = getArg('mac');

// on commence par rechercher l'id de la règle
$id = '';
$json = sdk_freebox_query('/api/v1/parental/filter/', 'GET', NULL, 3, false);
foreach($json['result'] as $filter)
{
foreach($filter['macs'] as $cur_mac)
{
if (strtolower(trim($cur_mac)) == strtolower(trim($mac)))
{
$id = $filter['id'];
}
}
}

// on ajoute la règle
if ($action == 'status')
{
if ($id === '')
{
// aucun filtre trouvé, équivalent à pas de controle
sdk_header('text/xml');
echo '<root><result><forced_mode>allowed</forced_mode></result></root>';
}
else
{
sdk_freebox_query('/api/v1/parental/filter/'.$id, 'GET');
}
}
else
{
$post = '{ "macs": ["'.$mac.'"], "forced_mode": "'.$action.'", "forced": true}';
if ($id === '')
{
// on créé la règle
sdk_freebox_query('/api/v1/parental/filter/', 'POST', $post);
}
else
{
// on la met à jour
sdk_freebox_query('/api/v1/parental/filter/'.$id, 'PUT', $post);
}
}
break;

case 'reboot':
sdk_freebox_query('/api/v1/system/reboot/', 'POST');
break;

case 'api_get':
$api_url = getArg('api_url');
sdk_freebox_query($api_url);
break;
// CARTOON NETWORK
case 'CARTOON':
httpQuery("192.168.1.1/pub/remote_control?code=56318458&key=1&long=true", "GET");
httpQuery("192.168.1.1/pub/remote_control?code=56318458&key=4&long=true", "GET");
httpQuery("192.168.1.1/pub/remote_control?code=56318458&key=6", "GET");
break;
}

?>
zebess
 
Messages : 101
Inscription : 17 Déc 2015

Re: Macro telecommande freebox a 3 digit non fonctionnel

Messagepar romu@asnieres » 18 Déc 2016 21:55

et tu colles l'URL ci-dessous dans IE est-ce que le numéro de chaine s'affiche sur la freebox comme un appuie long :
192.168.1.1/pub/remote_control?code=56318458&key=1&long=true

au fait lorsque tu testes la commande tu es bien déjà dans Freebox TV ?
romu@asnieres
 
Messages : 32
Inscription : 31 Oct 2016

Re: Macro telecommande freebox a 3 digit non fonctionnel

Messagepar zebess » 21 Déc 2016 20:39

Voilà ce que me répond la freebox:
RESSOURCE NON TROUVÉE
La ressource que vous essayez de consulter n'existe pas, ou n'existe plus
:roll:
Par contre dans la macro sur l'eedomus ça fonctionne bien.
zebess
 
Messages : 101
Inscription : 17 Déc 2015

Re: Macro telecommande freebox a 3 digit non fonctionnel

Messagepar romu@asnieres » 21 Déc 2016 21:59

en gros il n'a pas trouvé l'adresse Web
t'es sûr de l'IP c'est bien ton player et non ta box ?
romu@asnieres
 
Messages : 32
Inscription : 31 Oct 2016

Re: Macro telecommande freebox a 3 digit non fonctionnel

Messagepar zebess » 21 Déc 2016 22:39

Et bah voilà ça marche!
J'ai corrigé dans le script également et ça fonctionne :-)
Merci bcp ... j'ai plus qu'à tout gérer mes chaines dans le script maintenant et op l'affaire sera traitée.
J’espère que ce post aura permis d’éclaircir certaine personnes qui comme moi n'avait pas compris ce détail.
J'ai mis en IP fixe le player pour éviter un souci au prochain reboot.
Encore merci.
A bientôt peut etre ;-)
Sébastien.
zebess
 
Messages : 101
Inscription : 17 Déc 2015

Re: Macro telecommande freebox a 3 digit non fonctionnel

Messagepar romu@asnieres » 22 Déc 2016 10:03

bonne nouvelle, super!

bonnes fêtes,
Romu
romu@asnieres
 
Messages : 32
Inscription : 31 Oct 2016


Retour vers Box eedomus

Qui est en ligne ?

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