Snips / Jeedom /Freebox V6 - Télécommande vocale


#1

Bonjour,

Je reprend ici ce que j’ai mis à un autre endroit du forum, ça place y est plus adéquat :slight_smile:

Je m’amuse comme un petit fou avec snips, je me suis dit que ca serais bien de pouvoir utiliser snips pour aller sur n’importe quelle chaîne de la freebox V6.

Pour ce faire

I - j’ai d’une part utiliser le fichier de Jeandhom que l’on trouve

Sur l’assistant snips lui même dans l’intent TvChannelJeedom j’ai supprimé toutes les values de tvChannels et j’ai importé le fichier de Jeandhom. Je me trouve donc avec une liste de chaine allant de 0 a 1024

Jai ensuite mis a jour mon snips

sam update-assistant

II - Je crée un scénario qui va contenir un bloc de code avec le code suivant


//Code de votre télécommande freebox
$FreeRemoteCode = "XXXXX";

//Récupération des tags du scenario
$Tags= $scenario->getTags();

//Récupération de la valeur du tag #channel#
$TvChannel = $Tags['#channel#'];

//Récuperation dans un tableau de chaque caractère du tags
//Exemple pour TF1 le tags contient 1 le tableau serra [1]
//Exemple pour France 4 le tags contient 14 le tableau serra [1][4]
$TvChannel=str_split($TvChannel);

//On parcours le tableau
for ($i=0; $i<count($TvChannel); $i++ )
{
  //On crée l'url contenant le code de la telecommande freebox ainsi qu'un caractère du channel
  $url="http://hd1.freebox.fr/pub/remote_control?code=$FreeRemoteCode&key=$TvChannel[$i]";
  //On "exéccute" cette url qui dans l'exemple de france 4 envoie la première fois 1 puis une deuxième fois 4
  file_get_contents($url);
} 

III - Dans le plugin snips de jeedom et dans l’intent TvChannelJeedom j’ajoute une action qui lance un scenario et qui passe en tag #[Snips-Intents][TvChannelJeedom][channel]#

IV - Ce que je fais d’autre :
Je penses utiliser ce scenario pour gerer toute la télécommande de le freebox, j’ai par exemple en début de scenario testé si le tag channel contient le mot “twitch” si c’est le cas je lance un autre script qui simule les pression sur le touche Free, les touche fléchée, pour arriver a un endroit particulier de l’application twitch.

V - Ce que je vais faire :
Je vais également ajouter les commande pour mettre en pause le direct, avancer dans le direct, reculer et reprendre le direct

Soucis présent :
Je n’ai pas encore compris pourquoi snips de temps en temps m’envois le nom de la chaine et non pas son numéro
Par exemple je vais lui dire 5 fois de suite : “mets canal plus”, 4 fois il va me retourner 4 et une fois canal plus je ne sais pas si c’est normal ou non. Si certain on la réponse à ce sujet je la veux bien.

j’espère que j’ai été clair :slight_smile:

=====

Petite video de démonstration : https://youtu.be/ntSlGBUQ0c0


#2

Très très cool démo !!

Pourrais-tu nous montrer ce que tu as dans les logs quand tu fais “snips-watch -vv”? On veux voir ce qui sort de l’ASR et ce qui va dans le NLU quand tu as ces “bugs”


#3

Discussion déjà en cours ici -> Problème des synonymes dans les slots

je t’invite à la suivre


#4

DU coup je vais répondre la bas histoire de centraliser :wink:


#5

Vu que ça commence à bien me plaire cette télécommande, je me suis dit pourquoi ne pas continuer

Pour ceux qui seraient intéressés je mets sur github mon petit bout de script : https://github.com/Desaydrone/freebox_remote_jeedom_snips

De mon côté ça fonctionne bien, certain pourrait trouver que le temps de réaction de la freebox est lent, c’est volontaire de mon côté car l’interface de ma freebox est assez lente sur certain menu, d’ou les sleeps plus ou moins long. J’ai remarqué que sur certaine freebox l’interface est plus rapide (est-ce que l’électronique interner a changer depuis que j’ai eu la mienne peut être…) ou alors la mienne vieilli mal.

En attendant je vais ajouter progressivement des fonctionnalités.

Par contre je trouve que une version comme ce script est assez simple a mettre en place mais pas forcement optimisée. Je vais voir si il ne serais pas plus judicieux d’utiliser des fonctions (un peu moins trivial à mettre en place il me semble sous jeedom), ou carrément en faire un plugin, reste à lire la documentation jeedom à ce sujet :slight_smile:


#6

On peux sans problème faire des fonctions dans les scripts jeedom, j’en utilise plein.

Par contre vue que tu fais des requêtes directe sur la freebox, tu pourrai ne pas passer par jeedom et faire un snippet python sur l’action. Ça évite de charger jeedom


#7

@KiboOst j’avais essayé les fonctions dans un bloc code de scénario mais je n’avais pas de réponse, en lisant la doc de jeedom j’ai cru que ca ne pouvais fonctionner que si on créer une class en passant par l’éditeur de ficher et en ajoutant tout cela au fichier : user.function.class.php

C’est tentant ton idée de passer par du python, je passe par jeedom car je suis à l’aise avec le php et ça m’évite d’installer php sur snips pour gérer cela
De plus je n’y connais vraiment rien en python, même si je me doute que pour ce que je veux faire ça ne doit pas être trop compliquer. Mais j’aimerais bien m’y mettre, peut être dans une version v2 :stuck_out_tongue:

SI jamais tu as des sources sympa pour apprendre le python je dis pas non :wink: Car ce petit projet sans prétention de télécommande vocal me plait bien

Mais sache que je me rend bien compte que ça alourdi le traitement, car même si c’est réactif passer la commande a snips pour la passer a jeedom c’est un peu useless

En tout cas merci de m’inciter à faire mieux :smiling_face_with_three_hearts:

En plus pour le moment le app snips utilisant un code ne fonctionne pas sur mon snips et je ne comprend pas pourquoi, j’ai essayé une app météo, la commande que je dis est bien reconnue mais ensuite l’app ne me renvoi aucune information :P, ça ma un peu refroidi de ne pas y arriver


#8

Le python c’est juste un autre language, tu trouvera pleins de tutos sur le net.

Pour l’app météo, idem j’ai installé le git, mis ma clé api etc çà n’a jamais marché.

J’essayerai de faire un petit tuto sur github pour créer une app, un intent, et l’action python snippet qui va avec, avec des astuces pour debugger direct sur le pi etc. Au final j’ai un workflow assez efficace et rapide, çà me servira de pense bête en même temps.


#9

J’ai commencé a regarder un peu le python ce matin je vais voir ça :slight_smile:
Je ne peux qu’encourager ton initiative :slight_smile:


#10

Et bien voila qui est fait ma première app pour snips en python : https://console.snips.ai/store/fr/bundle_61l6k8xV0m2Y

J’ai cependant une soucis que je n’arrive pas a debugger, au bout d’un certain temps quand je demande a snips quelque chose il comprend ce que je lui demande mais il ne ce passe plus rien, comme si le snips-skill-server n’arrivait pas a relancer mon script, avec un petit

systemctl restart snips-skill-server

Ca fonctionne à nouveau. Je n’ai pas l’impression d’avoir mal codé (mal optimisé c’est possible) mon app, y a t’il un bug connu sur le service snips-skill-serveur ?