随着我了解更多,我将编辑这个问题。现在,我在猜测我需要什么。为了让人们更容易提供帮助,我会告诉你总体目的:
我已经编写了一个 ESP8266 来宣传它是电视并且它可以打开/关闭电视。ESP8266 实际上使用 IR 信号将绝对开/关代码传输到电视。我相信我已经为同一个 ESP8266 设备的另一个开/关功能添加了第二个“广告”。
但是,我真正想添加的是“相对音量”设备。我相信我需要通过使用 XML 来做到这一点。也就是说,我相信我需要修改传输到 Alexa 的 XML,不仅要宣传开/关设备,还要宣传相对音量的设备。
在哪里可以找到向 Alexa 宣传相对音量设备的示例?
为了阐明我的目标,让我添加一个例子:
如果我说
“Alexa,打开电视”
电视将打开。但是,如果我说
“Alexa,把电视音量调大”
Alexa 会回应
“电视不支持那个”
我首先使用这个 github.com 项目中的代码,并添加了额外的代码来处理将 IR 信号传输到电视。该项目似乎传输此 XML 以响应 Alex 询问 ESP8266 的功能:
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());
});
我假设,为了支持(提供给 Alexa)相对音量控制,所有需要做的就是将音量控制功能的描述添加到上述 XML 中。但是,我一直无法找到如何做到这一点。