Aller au contenu
JossAlf

Mini Clavier Pour Hc2 ... Mais Gros Potentiel !

Recommended Posts

Pour fêter ma nomination à  l'élection du "Membre du mois de mai" je vous propose mon nouveau jouet...

Il y a 2 jours, j'ai rêvé d'envoyer un message à  la HC2 par sms pour qu'il soit diffusé sur squeeze, Karotz, sonos ou tout autre système du même type.
La HC2 ne peut pas recevoir de sms (pour le moment du moins), je me suis donc dit qu'il fallait utiliser un autre moyen.

L'idée est donc de modifier le contenu d'une variable qui sera ensuite utilisée avec google Translate pour être prononcée :

http://translate.google.com/translate_tts?tl=FR&ie=UTF-8&q=j'arrive%20dans%205%20minutes

Il me fallait donc un moyen pour modifier le texte "j'arrive dans 5 minutes" de cette variable -> Donc créer un clavier ! B)

Comme ce clavier sera utilisé sur téléphone ou tablette pour écrire des petits messages :
Premièrement, je ne me suis pas embêté avec :
• la ponctuation qui se résume à  un "point" et un "Espace" (placés 2 fois en haut et bas du clavier pour plus de souplesse).
• les caractères spéciaux puisque l'on peut s'en passer et se débrouiller ("français" s'écrira "fransser" ; "Porte d'entrée" s'écrira "porte d'entrer" ou porte dantrer").

Deuxièmement, je me suis créé des petits boutons raccourcis qui écrivent directement dans la variable :
• "J'arrive d" -> "J'arrive dans "
• "minutes" -> " minutes "
• "Merci" -> " merci "
• "Devoirs" -> "C'est l'heure de faire les devoirs" :P
• "C'est l'heure" -> "C'est l'heure d'y aller"

Du coup en utilisant 4 boutons je peux dire "J'arrive dans 15 minutes".

Passons au visuel du clavier :
487498Image1.png


Je ne suis pas chez moi, alors je ne peux pas exporter le module virtuel. Mais je le poste dès demain (à  moins que quelqu'un sache comment faire de l'extérieur - même pas réussi avec un VPN...). :13:

 

MAJ : Voici le Module à  télécharger :

N'oubliez pas de renseigner l'adresse MAC de votre/vos Squezebox dans le bouton lecture.

 

Messager.vfib

L'utilisation du clavier pour modifier le contenu d'une variable pourra être décliné pour d'autres utilisations que celle-ci.
Je pensais à  afficher un message sur les squeezerbox ou un autre support (en guise de Post It)... à  envoyer un message en push sur la tablette des gamins, ou le téléphone de madame qui ne capte pas le réseau 3G/GSM mais qui est connecté au wifi...

Si vous avez d'autres idées n'hésitez pas ! :)

Modifié par JossAlf
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

On crée une variable globale "Messager" pour y enregistrer le texte tapé et une autre "NivSonore" pour la puissance de diffusion sur les squeezebox.

 

En suite il faut créer tous les boutons (je vous fournirai le VD ça ira plus vite) ;)

 

Voici ce que ça donne pour le bouton "A"

local Vmessager = fibaro:getGlobalValue('Messager') .. "a"
fibaro:setGlobal('Messager' , Vmessager)
fibaro:call(118, "setProperty", "ui.Label1.value", Vmessager);

le bouton "J'arrive d" ce sera :

local Vmessager = fibaro:getGlobalValue('Messager') .. "J'arrive dans "
fibaro:setGlobal('Messager' , Vmessager)
fibaro:call(118, "setProperty", "ui.Label1.value", Vmessager);

La variable se nourrit mais il faut la préparer pour google translate qui n'aime pas les espaces !

 

Le bouton "â–º Squeeze" va donc modifier le contenu de la variable et envoyé le message sur la squeeze :

-- Adresse IP du Logitech Media Server 
local ipadd = "192.168.0.46" 
-- le port du serveur
local portno = 9090 
-- L'adresse MAC de la squeeze
local player = "00:xx:xx:xx:xx:xx " 
local playername = "SqueezeBox " 

-- réglage du niveau sonore
local NiveauSo = fibaro:getGlobalValue('NivSonore')

local notification = ""
 
-- Allumage de la squeezebox
local cmnd = "Power 1 "
local stringtosend = player .. cmnd .. string.char(10)
tcpSocket = Net.FTcpSocket(ipadd, portno) 
tcpSocket:setReadTimeout(2*1000) 
bytes, errorCode = tcpSocket:write(stringtosend)
 
-- On règle le volume sonore ici
local cmnd = "mixer volume " .. NiveauSo .. " "
local stringtosend = player .. cmnd .. string.char(10)
tcpSocket = Net.FTcpSocket(ipadd, portno) 
tcpSocket:setReadTimeout(2*1000) 
bytes, errorCode = tcpSocket:write(stringtosend)
 
-- On envoie le message
local notification = fibaro:getGlobalValue('Messager')
-- On remplace les espaces par des %20
local notification = string.gsub((notification)," ", "%%20"); 
fibaro:debug(notification)

local cmnd = "playlist play http://translate.google.com/translate_tts?tl=FR&ie=UTF-8&q=" .. notification;
local stringtosend = player .. cmnd .. string.char(10) 
tcpSocket = Net.FTcpSocket(ipadd, portno)  
tcpSocket:setReadTimeout(2*1000) 
bytes, errorCode = tcpSocket:write(stringtosend)

fibaro:call(118, "setProperty", "ui.Label1.value", "Message diffusé");
fibaro:sleep(3*1000)
fibaro:call(118, "setProperty", "ui.Label1.value", fibaro:getGlobalValue('Messager'));

-- OFF des squeezeBoxs après 10 secondes
fibaro:sleep(10*1000)
 
local cmnd = "power 0 "
local stringtosend = player .. cmnd .. string.char(10)
tcpSocket = Net.FTcpSocket(ipadd, portno) 
tcpSocket:setReadTimeout(2*1000) 
bytes, errorCode = tcpSocket:write(stringtosend)

Pour les propriétaires de Karotz :

local notification = fibaro:getGlobalValue('Messager')
-- On remplace les espaces par des %20
local notification = string.gsub((notification)," ", "%%20"); 
fibaro:debug(notification)

-- message Karotz
HC2 = Net.FHttp("192.168.0.55")
response = HC2:GET("/cgi-bin/tts?voice=claire&text="..notification.."!&nocache=1")

fibaro:call(118, "setProperty", "ui.Label1.value", "Message diffusé");
fibaro:sleep(3*1000)
fibaro:call(118, "setProperty", "ui.Label1.value", fibaro:getGlobalValue('Messager'));

Voilà  pour les grandes lignes.

 

Petites précisions sur les 3 boutons situés sous la valeur du volume et au dessus du message :

Le bouton "Effacer" : efface tout le contenu de la variable

 

Le bouton "Txt/Vol?" : affiche le message et le réglage du volume sonore mais devient presque inutile avec le main loop :

local Vmessager = fibaro:getGlobalValue('Messager')
fibaro:call(118, "setProperty", "ui.Label1.value", Vmessager);
fibaro:debug(fibaro:getGlobalValue('Messager'))
fibaro:call(118, "setProperty", "ui.Label2.value", fibaro:getGlobalValue('NivSonore'));

Le bouton "â†" Efface le dernier caractère du message (merci Steven)  B)

 

Les autres boutons parlent d'eux mêmes je pense...

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Super boulot JossAlf !  :60:

 

Pour le VFID, envoie le moi par e-mail, je l'intégrerais dans ton post.

Partager ce message


Lien à poster
Partager sur d’autres sites

Du rêve àla réalité, il n'y a qu'un pas, en voici la preuve!

Merci pour le partage :-)

Heu, ce serait possible d'afficher le message sur la TV?

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour le VFID, envoie le moi par e-mail, je l'intégrerais dans ton post.

Le problème n'est pas de le mettre sur le forum, mais de le récupère de ma HC2 alors que je ne suis pas chez moi... ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

J eme suis inscrit sur le forum parce que je suis tombé sur votre message et que je veux l'utiliser. Est-ce que je peux utiliser votre clavier ?


Partager ce message


Lien à poster
Partager sur d’autres sites

Oui bien sur le forum est fait pour ça ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci. Es se que ca va marcher avec une HCL car je suis pas bon en programmation 

Je sais pas si je dois acheter un HC2 ou HCL.

Partager ce message


Lien à poster
Partager sur d’autres sites

Non ça ne fonctionnera pas avec le HCL : la prochaine version du logiciel permettra peut être d'utiliser les Modules virtuels des autres mais les MD nécessitent souvent de changer quelques lignes du code pour l'adapter àvotre installation.

Si vous voulez utiliser le code lua il vous faudra la HC2... Point de salut :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Chapeau le vd avec toutes les touches, t'as du bien te marrer, je comprends pourquoi tu chercher a tronquer une chaine maintenant ( pour la touche efface)..

Pour cette problématique, je suis trop fainéant, je me demandais s'il n'y a pas moyen d'exploiter qd meme les sms natifs de son telephone.

 

as-tu regardé sur ifttt ?

un truc genre sms to delicious  et le hc2 qui check toutes les minutes pour un nouveau message à  lire...

Partager ce message


Lien à poster
Partager sur d’autres sites

Il va falloir que je regarde ça, parçe que c'est certain qu'un sms ça peut être plus rapide. Surtout avec Siri !!!

C'est un peu la genèse de mon rêve :

Siri envoie un sms -> HC2 traite -> squeeze balance la sauce !

L'intérêt du VD ici c'est que je peux choisir le niveau sonore et l'émetteur (squeeze, Karotz mais làpas de niveau sonore réglable en soft) et que le messages est diffusé dans la seconde qui suit l'appui sur lecture !

J'ai même amélioré le code pour choisir de diffuser sur toutes les squeezeboxes ou une seule des 4.

Maintenant c'est vrai qu'avec IFTTT il y a du potentiel...

Partager ce message


Lien à poster
Partager sur d’autres sites

t'avais regardé sinon le panel sms de la hc2 , car elle peut recevoir des commandes en sms, mais je ne sais pas s'ils ont ouvert à  l'API  ( auquel cas ça serait bien simple)

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui déjàregardé mais c'est pas possible. Il utilisent des commandes bien spécifiques de mémoire.

En y réfléchissant le Sms est pratique, rapide mais on a pas de retour d'état.

Dans mon VD j'affiche un petit message disant de le son àété diffusé.

Il faudrait que je trouve un moyen de me passer du clavier pour renseigner rapidement la variable en la préparant pour Google translate...

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut

Si tu veut avoir la même voix pour le lapin et pour ta squeeeze box, tu peut faire la manip suivante :

 

Applique le patch 2.1.7 que je viens de publier sur ton OpenKarotz (Sans ce patch, ou une version ultérieure cela ne fonctionnera pas)

 

 

Losrsque tu apelle la fonction tts d'OpenKarotz, met le paramètre nocache à  0

/cgi-bin/tts?voice=claire&text="..notification.."!&nocache=0"

Tu as maintenant dans la valeur de retour de la fonction tts le nom du fichier dans le paramètre id

{"id":"457208076ba6a9b35c836e3e1338ee6e","played":"1","cache":"0","return":"0","voice":"alice","mute":"0"}

Ensuite tu peut utiliser l'url ci dessous comme nom de fichier pour ta squeezebox et tu utilisera la voix généré par OpenKarotz.

http://<ip de ton lapin>/tts_cache/457208076ba6a9b35c836e3e1338ee6e.mp3

Si tu ne veut pas encombrer ton lapin, tu peut ensuite supprimer ton annonce du cache en utilisant la commande ci-dessous.

http://<ip de ton lapin>/clear_cache?id=457208076ba6a9b35c836e3e1338ee6e
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites
 

Merci Massalia ;) C'est vrai que la voix google est sous Prozac.

 

En revanche j'ai peur d'avoir un temps de latence important. Je ferai l'essai.

Partager ce message


Lien à poster
Partager sur d’autres sites

Message #1 mis à  jour avec le Module virtuel à  télécharger.  B)

Partager ce message


Lien à poster
Partager sur d’autres sites

ça marche avec ma manip ?
Même si tu as une ou deux secondes de latence .... tu ne sera pas encore arrivé ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites
 

:)

 

Alors j'ai appliqué le patch, j'ai vu une fois l'id du morceau (457208076ba6a9b35c836e3e1338ee6e) mais impossible de le lire dans safari -> 404 fichier introuvable ...

http://192.168.0.55/tts_cache/457208076ba6a9b35c836e3e1338ee6e.mp3

J'essaye sur un autre truc :

http://192.168.0.55/cgi-bin/tts?voice=claire&text=merci&nocache=0

Et la plus rien dans l'ID ?!

{"id":"","played":"1","cache":"1","return":"0","voice":"claire","mute":"0"}

Partager ce message


Lien à poster
Partager sur d’autres sites

Sur le Lapin je suis en :

Web Version : 210
RootFs : 2.0.r7
Patch Level : 217

Partager ce message


Lien à poster
Partager sur d’autres sites

Désolé j'ai fait ça un peu vite, applique la 2.1.8, passe en 2.0r8 sur le Firmware et dis moi ce que ça donne STP.

Partager ce message


Lien à poster
Partager sur d’autres sites
 

Désolé je ne vais pas pouvoir tout de suite... Je suis un peu chargé ce soir... Et la version 217 est stable chez moi. Je ne voudrais pas la mettre par terre un dimanche soir... :) J'essayerai dès que possible dans la semaine. 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir

Cela pourrais t-il fonctionner avec SONOS ?

Quel serait la modification a apporter au fichier messager.vfib

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites
 

Il faut trouver la commande pour lire sur un SONOS un mp3 stocké sur un NAS.

Après c'est dans le bouton en haut à  gauche du module virtuel "â–º Squeeze" qu'il faudra modifier légèrement la fabrication de la commande http.

 

Voir dans le post #2 le code du bouton "â–º Squeeze"

 

A voir avec les pro Sonos (je n'en ai pas) mais ça doit pas être compliqué.

Partager ce message


Lien à poster
Partager sur d’autres sites

×