Aller au contenu

Ampli Yamaha Et Hc2


BenjyNet

Messages recommandés

 

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

Lien vers le commentaire
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();
Lien vers le commentaire
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 :)

Lien vers le commentaire
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"> ...

 

:)

Lien vers le commentaire
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
Lien vers le commentaire
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

Lien vers le commentaire
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
Lien vers le commentaire
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
Lien vers le commentaire
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
Lien vers le commentaire
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

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...