Pelo que entendi mais, editarei esta pergunta. Por enquanto, estou adivinhando o que preciso. Para facilitar a ajuda das pessoas, eu lhe direi o objetivo geral:
Programei um ESP8266 para anunciar que é a TV e que pode ligar / desligar a TV. O ESP8266 na verdade transmite os códigos absolutos de ligado / desligado para a TV usando sinais IR. Acredito que adicionei um segundo "anúncio" para mais um recurso de ativação / desativação no mesmo dispositivo ESP8266.
No entanto, o que realmente quero adicionar é um dispositivo de "volume relativo". Acredito que preciso fazer isso usando XML. Ou seja, acredito que preciso modificar o XML transmitido ao Alexa para não apenas anunciar o dispositivo on / off, mas também para anunciar um dispositivo de volume relativo.
Onde posso encontrar exemplos em que um dispositivo de volume relativo é anunciado para o Alexa?
Para esclarecer meu objetivo, deixe-me adicionar um exemplo:
Se eu disser
"Alexa, ligue a TV"
a TV liga. Mas se eu disser
"Alexa, aumente o volume na TV"
Alexa responderá
"A TV não suporta isso"
Comecei usando o código aqui neste projeto do github.com e adicionei um código adicional para lidar com a transmissão dos sinais de infravermelho para a TV. Este projeto parece transmitir esse XML em resposta a um Alex solicitando o que o ESP8266 é capaz de fazer:
HTTP.on("/eventservice.xml", HTTP_GET, [](){
Serial.println(" ########## Responding to eventservice.xml ... ########\n");
String eventservice_xml = "<scpd xmlns=\"urn:Belkin:service-1-0\">"
"<actionList>"
"<action>"
"<name>SetBinaryState</name>"
"<argumentList>"
"<argument>"
"<retval/>"
"<name>BinaryState</name>"
"<relatedStateVariable>BinaryState</relatedStateVariable>"
"<direction>in</direction>"
"</argument>"
"</argumentList>"
"</action>"
"<action>"
"<name>GetBinaryState</name>"
"<argumentList>"
"<argument>"
"<retval/>"
"<name>BinaryState</name>"
"<relatedStateVariable>BinaryState</relatedStateVariable>"
"<direction>out</direction>"
"</argument>"
"</argumentList>"
"</action>"
"</actionList>"
"<serviceStateTable>"
"<stateVariable sendEvents=\"yes\">"
"<name>BinaryState</name>"
"<dataType>Boolean</dataType>"
"<defaultValue>0</defaultValue>"
"</stateVariable>"
"<stateVariable sendEvents=\"yes\">"
"<name>level</name>"
"<dataType>string</dataType>"
"<defaultValue>0</defaultValue>"
"</stateVariable>"
"</serviceStateTable>"
"</scpd>\r\n"
"\r\n";
HTTP.send(200, "text/plain", eventservice_xml.c_str());
});
Suponho que, para oferecer suporte ao controle de volume relativo (ofereça até Alexa), tudo o que precisa ser feito é adicionar uma descrição do recurso de controle de volume ao XML acima. No entanto, não consegui descobrir como fazer isso.
Respostas:
Não acredito que você possa fazer isso com um único dispositivo local. O suporte do WeMo é uma abordagem herdada que possui recursos muito limitados.
Você precisa criar um Alexa Smart Home Skill que exija um componente de nuvem (com um lambda para acioná-lo).
A habilidade relata os recursos do dispositivo. ( https://developer.amazon.com/docs/smarthome/smart-home-skill-api-message-reference.html#discovery-messages )
fonte
alexa
que quero dizer todo o sistema Alexa, o dispositivo e seu serviço de backup em nuvem. As negociações habilidade para o serviço Alexa nuvem não o dispositivo diretamenteEssa questão gerou considerável interesse (7 até o momento em que este artigo foi escrito). Então, eu estou postando uma resposta de acompanhamento com uma solução apenas local.
Aceitei a resposta @hardillb porque ainda não encontrei um método que permita ao Alexa controlar o volume relativo usando um dispositivo apenas local.
No entanto, existe uma maneira de controlar os níveis relativos de som da TV usando um dispositivo somente local. Ao usar um nome de dispositivo como "som da TV" e frases como "Alexa, aumentar o som da TV", o Alexa pode ser convencido a pensar que está aumentando e diminuindo o brilho de um dispositivo chamado "som da TV". Ao aceitar essa abordagem, somos forçados a usar os níveis absolutos de brilho do Alexa enquanto tentamos controlar uma TV com nível de som relativo. A primeira coisa que notamos é que só podemos desligar o som da TV algumas vezes antes de esgotar o alcance do brilho do Alexa (o Alexa salta cerca de 25% para cada comando de escurecimento). Mas também podemos dizer ao Alexa o brilho que nosso dispositivo está definido no final de cada comando. Se dissermos ao Alexa que o brilho é sempre 50%, o Alexa sempre responderá com mais de 50% quando dizemos ao Alexa "
fonte