もっと理解したら、この質問を編集します。今のところ、私は何が必要かを推測しています。人々が助けやすくするために、私はあなたにすべての目的を伝えます:
ESP8266をプログラミングして、それがテレビであることと、テレビをオン/オフにできることを宣伝しました。ESP8266は、実際にはIR信号を使用して絶対オン/オフコードをテレビに送信します。同じESP8266デバイスにさらに別のオン/オフ機能の2つ目の「アドバタイズメント」を追加したと思います。
ただし、本当に追加したいのは「相対ボリューム」デバイスです。XMLを使用してこれを行う必要があると思います。つまり、Alexaに送信されたXMLを変更して、オン/オフデバイスだけでなく、相対ボリュームデバイスもアドバタイズする必要があると思います。
相対ボリュームデバイスがAlexaにアドバタイズされる例はどこにありますか?
私の目的を明確にするために、例を追加しましょう:
私が言うなら
「アレクサ、テレビをつけて」
テレビがオンになります。しかし、私が言うなら
「アレクサ、テレビの音量を上げて」
Alexaが応答します
「テレビはそれをサポートしていません」
このgithub.comプロジェクトのコードを使用することから始め、テレビへのIR信号の送信を処理するためのコードを追加しました。このプロジェクトは、ESP8266が何を実行できるかをAlexが要求するのに応じて、このXMLを送信するようです。
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に追加するだけでよいと思います。しかし、私はそれを行う方法を見つけることができませんでした。