Aller au contenu

Retour D'info Net.ftcpsocket


c-lol

Messages recommandés

Salut à  tous, 

 

j'adapte le virtual device pour contrôler une squeezebox, pour le cas c'est plus une squeezeplug.

J'ai réussi à  pas mal rendre le code plus simple d'utilisation, mais je cherche une fonctionnalité.

En effet je voudrais pouvoir recevoir le résultat d'une commande envoyer avec la fonction Net.FTcpSocket.

En gros je voudrais récupérer le titre de la piste en cours pour l'afficher dans mon label.

En telnet lorsque je tape la requête 192.168.1.10 current_title ? le serveur me retourne 3c%3A99%3A25%3A8b%3B27%3A3f current_title Adrenaline%20Rush

et idem pour le volume(192.168.1.10 mixer volume ?, le serveur me retourne 3c%3A99%3A25%3A8b%3B27%3A3f mixer volume 65

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

bonsoir, sur le forum officiel il y a robert aka robmac qui a fait un vd pour Squeezebox.

c'est par ici http://forum.fibaro.com/viewtopic.php?t=3685

 

Robert code très bien pas de soucis :)

Lien vers le commentaire
Partager sur d’autres sites

Tu peux faire un truc comme cela pour traiter la réponse...

local result = string.upper(_tcpSocket:read() or string.char());
local data= result:match("mixer volume %d") or "n/a";
fibaro:debug(data);
--etc..
Lien vers le commentaire
Partager sur d’autres sites

Super cool Krikroff de m'avoir mis sur le chemin j'ai trouvé ce que je souhaitais faire.

 

Pour rappel la commande passé en telnet est : 192.168.1.10 mixer volume ? et le serveur retourne 3c%3A99%3A25%3A8b%3B27%3A3f mixer volume 65

Voici le code pour ne récupérer seulement que le 65

Bon c'est peut être pas très optimisé, je suis pas dev!! mais s'il y 'en a qui peuvent alléger je suis preneur.

J'ai détaillé le code pour bien comprendre les étapes pour ceux qui auront besoin.

 

local result = tcpSocket:read() or string.char();
-- Transforme "result" en chaine de caractere
local data = string.format("%s", result);
fibaro:debug("le resultat 1 est " ..data)
-- Recherche l'index de caractere ou il trouve la chaine "MIXER VOLUME"
index = string.find(data, "mixer volume %d");
fibaro:debug("le resultat 2 est " ..index)
-- Recupere la chaine la chaine de caractere apres l'index
data = string.sub(data, index)
fibaro:debug("le resultat 3 est " ..data)
-- Recherche l'index de caractere ou il trouve le caractere numerique dans la chaine
index = string.find(data, "%d");
fibaro:debug("le resultat 4 est " ..index)
-- Recupere la chaine la chaine de caractere apres l'index
data = string.sub(data, index)
fibaro:debug("le resultat 5 est " ..data)
 
Allé maintenant je m'occupe du titre et je vous post ça.
Lien vers le commentaire
Partager sur d’autres sites

Super !

 

Je pense que tu peux faire plus court:

-- Transforme "result" en chaine de caractere
loca data = string.upper(tcpSocket:read() or string.char());
-- Recupere le volume...
local cmd = data:match("mixer volume %d");
local cmd_value = cmd:match("%d") or "NaN";
fibaro:debug("le volume est " .. cmd_value)
Lien vers le commentaire
Partager sur d’autres sites

ah ouai effectivement bien plus court.

 

]-- Transforme "result" en chaine de caractere
local data = string.upper(tcpSocket:read() or string.char());
fibaro:debug(data);
-- Recupere le volume...
local cmd = string.match(data, "MIXER VOLUME %d%d");
fibaro:debug(cmd);
local cmd_value = cmd:match("%d%d") or "NaN";
fibaro:debug("le volume est " .. cmd_value)
 
1) comme tu passes la commande en Majuscule, dans la commande "MATCH" il faut respecter la casse
 
Voila j’espère que ça aidera les autres aussi
 
Encore merci
Lien vers le commentaire
Partager sur d’autres sites

yes merci!! je vais mettre ça précieusement de coté!

 

A la base je voulais faire comme toi du script dans un main loop, mais je sais pas comment réagit le main loop.

Si trop de main loop dans les device virtuel, ça peut saturé la box ou alors ils sont exécuté seulement lorsqu'on utilise le virtuel device?

Et aussi pour pas faire des requête toutes les secondes à  mon serveur NAS, mais j'avais pas pensé au fibaro:sleep.

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...