BenjyNet Posté(e) le 6 février 2014 Signaler Posté(e) le 6 février 2014 Moi j'aimerai bien qu'ils implémentent le protocol ISCP pour piloter mon ampli onkyo @Benjy, est-ce que ton ampli est dans cette liste ? DTR-5.5 DTR-6.5 TX-SR702 "TX-NR1000TX-NR5000ETX-NA1000DTR-10.5RDC-7.1" "TX-SR703TX-SR803DTR-4.6DTR-5.6DTR-6.6DTR-7.6" TX-SR804 "DTR-7.7DTX-7.7" "DTR-5.8DTX-5.8" "TX-SR805TX-SA805" "DTR-7.8DTX-7.8" "TX-SR875TX-SA875" "TX-NR905TX-NA905" "DTR-8.8DTX-8.8" "DTC-9.8PR-SC885" TX-SR705 DTR-6.8 @Krokroff Non il n'est pas dans la liste mais c'est le même protocole que pour le TX-NR905 Je pense développer un truc à partir de ce document, mais franchement, je n'y comprends pas grand chose et je ne sais pas par où commencer
Krikroff Posté(e) le 6 février 2014 Signaler Posté(e) le 6 février 2014 @Benjy, nous avons le même alors ... je pourrais te donner un petit coup de mains peut-être la semaine prochaine
Krikroff Posté(e) le 6 février 2014 Signaler Posté(e) le 6 février 2014 lolomail, voir si cela marche avec ton ampli. (il faut changer avec l'IP de l'ampli) ON: local tcpSocket = Net.FTcpSocket("192.168.1.80", 80) local payload = [[ POST /YamahaRemoteControl/ctrl HTTP/1.1 Content-Length: 98 Cache-Control: no-cache <YAMAHA_AV cmd="PUT"><System><Power_Control><Power>On</Power></Power_Control></System></YAMAHA_AV> ]]; local bytes, errorcode = tcpSocket:write(payload); if errorcode == 0 then state = tcpSocket:read(); fibaro:debug(state or "nc"); end tcpSocket:disconnect(); OFF: local tcpSocket = Net.FTcpSocket("192.168.1.80", 80) local payload = [[ POST /YamahaRemoteControl/ctrl HTTP/1.1 Content-Length: 103 Cache-Control: no-cache <YAMAHA_AV cmd="PUT"><System><Power_Control><Power>Standby</Power></Power_Control></System></YAMAHA_AV> ]]; local bytes, errorcode = tcpSocket:write(payload); if errorcode == 0 then state = tcpSocket:read(); fibaro:debug(state or "nc"); end tcpSocket:disconnect();
lolomail Posté(e) le 7 février 2014 Signaler Posté(e) le 7 février 2014 Je vais tester et je te dis le résultat, thx
BenjyNet Posté(e) le 7 février 2014 Auteur Signaler Posté(e) le 7 février 2014 @Krikroff Pour info j'ai le TX NR-626, un modèle sorti en septembre 2013.
lolomail Posté(e) le 7 février 2014 Signaler Posté(e) le 7 février 2014 Bon je viens de tester, avec ton code Jean-Christophe le Yam ne veut rien savoir il est muet... Mais avec le code suivant que j'avais vu y a des mois sur le forum Fibaro cela marche: YAM = Net.FHttp("192.168.1.0",80) payload = '<YAMAHA_AV cmd="PUT"><Main_Zone><Power_Control><Power>On</Power></Power_Control></Main_Zone></YAMAHA_AV>' fibaro:log('START') response ,status, errorCode = YAM:POST('/YamahaRemoteControl/ctrl', payload) fibaro:sleep(3000) if errorCode == 0 then fibaro:log('status'..status) else fibaro:log("error") end Voici les commandes qu'ils listent sur le post: <YAMAHA_AV cmd="PUT"><Main_Zone><Vol><Lvl><Val>-500</Val><Exp>1</Exp><Unit>dB</Unit></Lvl></Vol></Main_Zone></YAMAHA_AV><YAMAHA_AV cmd="PUT"><Main_Zone><Power_Control><Power>Standby</Power></Power_Control></Main_Zone></YAMAHA_AV><YAMAHA_AV cmd="PUT"><Main_Zone><Power_Control><Power>On</Power></Power_Control></Main_Zone></YAMAHA_AV><YAMAHA_AV cmd="PUT"><Main_Zone><Input><Input_Sel>TUNER</Input_Sel></Input></Main_Zone></YAMAHA_AV><YAMAHA_AV cmd="PUT"><Main_Zone><Input><Input_Sel>NET RADIO</Input_Sel></Input></Main_Zone></YAMAHA_AV><YAMAHA_AV cmd="PUT"><Main_Zone><Surr><Pgm_Sel><Straight>Off</Straight><Pgm>7ch Stereo</Pgm></Pgm_Sel></Surr></Main_Zone></YAMAHA_AV><YAMAHA_AV cmd="PUT"><Main_Zone><Surr><Pgm_Sel><Straight>Off</Straight><Pgm>Surround Decode</Pgm></Pgm_Sel></Surr></Main_Zone></YAMAHA_AV><YAMAHA_AV cmd="PUT"><Tuner><Play_Control><Tuning><Band>FM</Band><Freq><Val>9990</Val><Exp>2</Exp><Unit>MHz</Unit></Freq></Tuning></Play_Control></Tuner></YAMAHA_AV><YAMAHA_AV cmd="PUT"><Main_Zone><Vol><Mute>On</Mute></Vol></Main_Zone></YAMAHA_AV> Je vais essayer de compléter le virtual device avec les codes supp. Le truc je comprends pas la première ligne qui semble pour le volume. Comment faire vol+ et vol-??? Merci pour le coup de main
Krikroff Posté(e) le 7 février 2014 Signaler Posté(e) le 7 février 2014 Je me suis planté, j’avais pas spécifié le main_zone mais system , tu as corrigé c'est cool . Pour le volume il y a deux methodes, la première celle que tu montres ou il faut passer la valeur en dB x 10 etc: -30db = -300 <YAMAHA_AV cmd="PUT"><Main_Zone><Vol><Lvl><Val>-300</Val><Exp>1</Exp><Unit>dB</Unit></Lvl></Vol></Main_Zone></YAMAHA_AV> et la seconde ou tu peux utiliser <YAMAHA_AV cmd="PUT"><Main_Zone><Vol><Up_Down>Up</Up_Down></Vol></Main_Zone></YAMAHA_AV> pour + et <YAMAHA_AV cmd="PUT"><Main_Zone><Vol><Up_Down>Down</Up_Down></Vol></Main_Zone></YAMAHA_AV> pour - pour demander des infos à l'ampli: <YAMAHA_AV cmd="GET"> ...
Shad Posté(e) le 7 février 2014 Signaler Posté(e) le 7 février 2014 Punaise, en plus d'une smart tv de samsung je vais devoir acheter un ampli -_-'
Moicphil Posté(e) le 7 février 2014 Signaler Posté(e) le 7 février 2014 Je te vend mon Yam si tu veux ( par contre bonjour les frais de port vers le Gabon )
lolomail Posté(e) le 7 février 2014 Signaler Posté(e) le 7 février 2014 Bon j'avance pas mal là , j'ai un peu galérer pour la partie sources car même si j'ai renomùer les entrées faut utiliser les noms standard de ces entrées, plus la partie mute et vol qui m'a donner du fil a retordre. Voila les commandes: <YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Lvl><Val>Down 1 dB</Val><Exp></Exp><Unit></Unit></Lvl></Volume></Main_Zone></YAMAHA_AV> <YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Lvl><Val>Up 1 dB</Val><Exp></Exp><Unit></Unit></Lvl></Volume></Main_Zone></YAMAHA_AV> <YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Mute>On</Mute></Volume></Main_Zone></YAMAHA_AV> <YAMAHA_AV cmd="PUT"><Main_Zone><Volume><Mute>Off</Mute></Volume></Main_Zone></YAMAHA_AV><YAMAHA_AV cmd="PUT"><Main_Zone><Input><Input_Sel>AV2</Input_Sel></Input></Main_Zone></YAMAHA_AV><YAMAHA_AV cmd="PUT"><Main_Zone><Input><Input_Sel>AUDIO1</Input_Sel></Input></Main_Zone></YAMAHA_AV> Et une capture d'écran du VD à date, il manque a mettre les modes sonores 2
Krikroff Posté(e) le 7 février 2014 Signaler Posté(e) le 7 février 2014 Classe ce périphérique virtuel
lolomail Posté(e) le 8 février 2014 Signaler Posté(e) le 8 février 2014 Et hop un VD de fini avec les modes qui m'en ont fait sueur (il a fallut que j'utilise le mode développement de Firefox pour choper les lignes de commandes) et l’icône qui va bien . Faudrait voir àfaire une main loop qui récupère les infos de l'ampli, Jean-Christophe si tu as une idée je suis preneur .
Shad Posté(e) le 8 février 2014 Signaler Posté(e) le 8 février 2014 Je te vend mon Yam si tu veux ( par contre bonjour les frais de port vers le Gabon ) Non merci ^^, bose recommande onkyo niveau compatibilité ^^
lolomail Posté(e) le 8 février 2014 Signaler Posté(e) le 8 février 2014 Bah Yam marche aussi avec du Bose mais les Bose sont gourmandes donc faut pas de l'entrée de gamme avec une petite alim . Testé chez un pote et c'était flagrant
lolomail Posté(e) le 8 février 2014 Signaler Posté(e) le 8 février 2014 Question, quelle est la différence entre le code de Jean-Christophe et celui du forum Fibaro? Merci
lolomail Posté(e) le 13 février 2014 Signaler Posté(e) le 13 février 2014 Question, il faudrait faire comment pour obtenir les infos de Yam avec le bout de code <YAMAHA_AV cmd="GET"> ?
i-magin Posté(e) le 18 février 2014 Signaler Posté(e) le 18 février 2014 Bravo @lolomail J'avais bien avancé un module virtuel pour ampli Yamaha RX-V673, mais mon départ ne m'a pas permis de le finaliser
i-magin Posté(e) le 22 février 2014 Signaler Posté(e) le 22 février 2014 J'ai repris le module virtuel pour ampli Yamaha RX-V673 que j'avais commencé il y a trois semaines J'ai ajouté les fonctions GET pour "power" et "mute" J'ai également laissé un bouton "test" pour les fonctions GET. (ici info retour du volume)... C'est dommage mais je ne récupère pour ainsi dire rien pour "Netradio" Attention, ce module virtuel est vraiment "brut de fonderie", avec récup de code à droite et à gauche... rien à voir avec les MV de @Krikroff avec fonctions, contrôles, etc Yamaha_RX-V673.vfib 2
lolomail Posté(e) le 22 février 2014 Signaler Posté(e) le 22 février 2014 Je vais regarder car je vois pas comment faire pour le get, la prog c'est pas mon métier sniff
i-magin Posté(e) le 22 février 2014 Signaler Posté(e) le 22 février 2014 Exemple pour récupérer le statut "Power" local selfId = fibaro:getSelfId(); local _deviceIp = fibaro:get(fibaro:getSelfId(), "IPAddress"); local _devicePort = fibaro:get(fibaro:getSelfId(), "TCPPort"); ​ YAM = Net.FHttp(_deviceIp,_devicePort) payload = '<YAMAHA_AV cmd="GET"><Main_Zone><Power_Control><Power>GetParam</Power></Power_Control></Main_Zone></YAMAHA_AV>' response ,status, errorCode = YAM:POST('/YamahaRemoteControl/ctrl', payload) fibaro:sleep(3000) if errorCode == 0 then fibaro:log('status'..status) fibaro:call(selfId,"setProperty","ui.powerStatus.value",response); else fibaro:log("error") fibaro:call(selfId,"setProperty","ui.powerStatus.value","erreur"); end En retour, tu obtiens au niveau du label "powerStatus" la chaîne de caractère suivante <YAMAHA_AV rsp="GET" RC="0"><Main_Zone><Power_Control><Power>Standby</Power></Power_Control></Main_Zone></YAMAHA_AV> Pour récupérer le paramètre "Standby" ou "On", j'ai ajouté un peu de code (3 lignes) qui vont bien faire rigoler les pros du codage local selfId = fibaro:getSelfId(); local _deviceIp = fibaro:get(fibaro:getSelfId(), "IPAddress"); local _devicePort = fibaro:get(fibaro:getSelfId(), "TCPPort"); ​ YAM = Net.FHttp(_deviceIp,_devicePort) payload = '<YAMAHA_AV cmd="GET"><Main_Zone><Power_Control><Power>GetParam</Power></Power_Control></Main_Zone></YAMAHA_AV>' response ,status, errorCode = YAM:POST('/YamahaRemoteControl/ctrl', payload) fibaro:sleep(3000) if errorCode == 0 then fibaro:log('status'..status) local testdebut = (string.find(response, "<Power>") + 7); local testfin = (string.find(response, "</Power>") - 1); response = string.sub(response, testdebut, testfin) fibaro:call(selfId,"setProperty","ui.powerStatus.value",response); else fibaro:log("error") fibaro:call(selfId,"setProperty","ui.powerStatus.value","erreur"); end
lolomail Posté(e) le 22 février 2014 Signaler Posté(e) le 22 février 2014 Merci pour le partage, je regarde cela demain et je posterais mon VD et le résultat de mes modifs
lolomail Posté(e) le 23 février 2014 Signaler Posté(e) le 23 février 2014 Je viens de regarder le retour d'info sur le yam, voici le code que j'ai mis dans la main loop et qui me donne le retour d'info sur le power/vol/mute/source/dsp: YAM = Net.FHttp("IP",PORT) -- retour information power payload = '<YAMAHA_AV cmd="GET"><Main_Zone><Power_Control><Power>GetParam</Power></Power_Control></Main_Zone></YAMAHA_AV>' response ,status, errorCode = YAM:POST('/YamahaRemoteControl/ctrl', payload) fibaro:sleep(3000) if errorCode == 0 then fibaro:log('status'..status) local testdebut = (string.find(response, "<Power>") + 7); local testfin = (string.find(response, "</Power>") - 1); response = string.sub(response, testdebut, testfin) fibaro:call(ID_VD,"setProperty","ui.Yamlabel.value",response); else fibaro:log("error") fibaro:call(ID_VD,"setProperty","ui.Yamlabel.value","erreur"); end -- retour information volume payload = '<YAMAHA_AV cmd="GET"><Main_Zone><Volume><Lvl>GetParam</Lvl></Volume></Main_Zone></YAMAHA_AV>' response ,status, errorCode = YAM:POST('/YamahaRemoteControl/ctrl', payload) fibaro:sleep(3000) if errorCode == 0 then fibaro:log('status'..status) local testdebut = (string.find(response, "<Val>") + 5); local testfin = (string.find(response, "</Val>") - 2); response = string.sub(response, testdebut, testfin) fibaro:call(ID_VD,"setProperty","ui.YamVolume.value",response); else fibaro:log("error") fibaro:call(ID_VD,"setProperty","ui.YamVolume.value","erreur"); end -- retour information mute payload = '<YAMAHA_AV cmd="GET"><Main_Zone><Basic_Status>GetParam</Basic_Status></Main_Zone></YAMAHA_AV>' response ,status, errorCode = YAM:POST('/YamahaRemoteControl/ctrl', payload) fibaro:sleep(3000) if errorCode == 0 then fibaro:log('status'..status) local testdebut = (string.find(response, "<Mute>") + 6); local testfin = (string.find(response, "</Mute>") - 1); response = string.sub(response, testdebut, testfin) fibaro:call(ID_VD,"setProperty","ui.YamMute.value",response); else fibaro:log("error") fibaro:call(ID_VD,"setProperty","ui.YamMute.value","erreur"); end -- retour information source payload = '<YAMAHA_AV cmd="GET"><Main_Zone><Basic_Status>GetParam</Basic_Status></Main_Zone></YAMAHA_AV>' response ,status, errorCode = YAM:POST('/YamahaRemoteControl/ctrl', payload) fibaro:sleep(3000) if errorCode == 0 then fibaro:log('status'..status) local testdebut = (string.find(response, "<Title>") + 7); local testfin = (string.find(response, "</Title>") - 1); response = string.sub(response, testdebut, testfin) fibaro:call(ID_VD,"setProperty","ui.Yamsource.value",response); else fibaro:log("error") fibaro:call(ID_VD,"setProperty","ui.Yamsource.value","erreur"); end -- retour information DSP payload = '<YAMAHA_AV cmd="GET"><Main_Zone><Basic_Status>GetParam</Basic_Status></Main_Zone></YAMAHA_AV>' response ,status, errorCode = YAM:POST('/YamahaRemoteControl/ctrl', payload) fibaro:sleep(3000) if errorCode == 0 then fibaro:log('status'..status) local testdebut = (string.find(response, "<Sound_Program>") + 15); local testfin = (string.find(response, "</Sound_Program>") - 1); response = string.sub(response, testdebut, testfin) fibaro:call(ID_VD,"setProperty","ui.YamMODE.value",response); else fibaro:log("error") fibaro:call(ID_VD,"setProperty","ui.YamMODE.value","erreur"); end En résumé avec le code: payload = '<YAMAHA_AV cmd="GET"><Main_Zone><Basic_Status>GetParam</Basic_Status></Main_Zone></YAMAHA_AV>' Tu obtiens beaucoup d'info sur l'état du yam et tu n'as qu'a extraire les morceaux que tu veux via le 'string.find" Pour trouver cela j'ai fais comme au début pour les codes commandes, je suis passé via le mode console de firefox en étant connecté sur la page web de contrôle du yam 1
i-magin Posté(e) le 23 février 2014 Signaler Posté(e) le 23 février 2014 Un petit détail : pourquoi "-2" pour ""</Val>" dans ton retour d'info volume ? Je suis allé un peu vite dans mon explication d'hier à propos des 3 lignes suivantes : local testdebut = (string.find(response, "<Power>") + 7); local testfin = (string.find(response, "</Power>") - 1); response = string.sub(response, testdebut, testfin) La valeur retournée par le Yam est toujours entourée de deux paramètres significatifs de l'info recherchée. Par exemple, si l'on souhaite l'état de "Power", la valeur retournée est précédée de <Power> et suivie de </Power> Je recherche donc en premier la position de <Power>. Obtenant la position du premier caractère "<" de <Power> j'ajoute à cette valeur le nombre de caractères de <Power>, soit +7 : ce qui me donne la position du 1er caractère de la variable retournée par le Yam A l'inverse, et pour obtenir la position du dernier caractère de cette variable, je retranche (toujours) 1 à la position de "<" le 1er caractère de </Power> Je voulais joindre un fichier contenant un maximum d'infos et de codes pour les amplis Yamaha , mais le téléchargement est impossible (taille = 2046Ko)... et ne figure pas apparamment le RX-V2067
lolomail Posté(e) le 23 février 2014 Signaler Posté(e) le 23 février 2014 Pour le volume, le Yam le retour sous format 480 pour 48,0 donc j'ai supprimé la décimale pour avoir juste les unités et les dizaines . Si tu sais comment convertir 480 en 48,0 je suis preneur
Messages recommandés