Aller au contenu
BenjyNet

Ampli Yamaha Et Hc2

Recommended Posts

 

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-NR1000
TX-NR5000ETX-NA1000
DTR-10.5
RDC-7.1"    "TX-SR703
TX-SR803
DTR-4.6
DTR-5.6
DTR-6.6
DTR-7.6"    TX-SR804    "DTR-7.7
DTX-7.7"    "DTR-5.8
DTX-5.8"    "TX-SR805
TX-SA805"    "DTR-7.8
DTX-7.8"    "TX-SR875
TX-SA875"    "TX-NR905
TX-NA905"    "DTR-8.8
DTX-8.8"    "DTC-9.8
PR-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 :)

Partager ce message


Lien à poster
Partager sur d’autres sites

@Benjy, nous avons le même alors ... je pourrais te donner un petit coup de mains peut-être la semaine prochaine ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

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();

Partager ce message


Lien à poster
Partager sur d’autres sites

@Krikroff

Pour info j'ai le TX NR-626, un modèle sorti en septembre 2013.

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Je me suis planté, j’avais pas spécifié le main_zone mais system ;), tu as corrigé c'est cool :D.

 

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"> ...

 

:)

Partager ce message


Lien à poster
Partager sur d’autres sites

Punaise, en plus d'une smart tv de samsung je vais devoir acheter un ampli -_-'

Partager ce message


Lien à poster
Partager sur d’autres sites

Je te vend mon Yam si tu veux ( par contre bonjour les frais de port vers le Gabon :) )

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :)

 



 

post-16-0-12458700-1391812339_thumb.jpg

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Classe ce périphérique virtuel :)

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :D.

post-16-0-54048100-1391817613_thumb.jpg

Partager ce message


Lien à poster
Partager sur d’autres sites

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é ^^

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :(

Partager ce message


Lien à poster
Partager sur d’autres sites

Question, quelle est la différence entre le code de Jean-Christophe et celui du forum Fibaro? Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Question, il faudrait faire comment pour obtenir les infos de Yam avec le bout de code <YAMAHA_AV cmd="GET"> ?

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

 

gallery_12_6_10877.png

Yamaha_RX-V673.vfib

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Je vais regarder car je vois pas comment faire pour le get, la prog c'est pas mon métier sniff

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour le partage, je regarde cela demain et je posterais mon VD et le résultat de mes modifs ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ;)

  • Downvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :)

Partager ce message


Lien à poster
Partager sur d’autres sites

×