Wenn ich mehr verstehe, werde ich diese Frage bearbeiten. Im Moment rate ich, was ich brauche. Um es den Menschen zu erleichtern, zu helfen, erkläre ich Ihnen den allgemeinen Zweck:
Ich habe einen ESP8266 so programmiert, dass er für das Fernsehgerät wirbt und das Fernsehgerät ein- und ausschalten kann. Der ESP8266 überträgt die absoluten Ein / Aus-Codes mithilfe von IR-Signalen an das Fernsehgerät. Ich glaube, ich habe dem gleichen ESP8266-Gerät eine zweite "Werbung" für eine weitere Ein / Aus-Funktion hinzugefügt.
Was ich jedoch wirklich hinzufügen möchte, ist ein Gerät mit "relativer Lautstärke". Ich glaube, ich muss dies mithilfe von XML tun. Das heißt, ich glaube, ich muss das an Alexa übertragene XML ändern, um nicht nur für das Ein / Aus-Gerät zu werben, sondern auch für ein Gerät mit relativem Volumen.
Wo finde ich Beispiele, bei denen Alexa für ein Gerät mit relativem Volumen geworben wird?
Lassen Sie mich zur Verdeutlichung meines Ziels ein Beispiel hinzufügen:
Wenn ich sage
"Alexa, mach den Fernseher an"
Der Fernseher schaltet sich ein. Aber wenn ich sage
"Alexa, dreh die Lautstärke am Fernseher auf"
Alexa wird antworten
"TV unterstützt das nicht"
Ich habe zunächst den Code hier in diesem github.com-Projekt verwendet und zusätzlichen Code hinzugefügt, um die Übertragung der IR-Signale zum Fernseher zu handhaben. Dieses Projekt scheint dieses XML als Antwort auf eine Frage von Alex zu übertragen, wozu der ESP8266 in der Lage ist:
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());
});
Ich gehe davon aus, dass zur Unterstützung der relativen Lautstärkeregelung (bis zu Alexa) nur eine Beschreibung der Lautstärkeregelungsfunktion zum obigen XML hinzugefügt werden muss. Ich konnte jedoch nicht herausfinden, wie das geht.
Antworten:
Ich glaube nicht, dass Sie dies mit einem lokalen Gerät tun können. Die WeMo-Unterstützung ist ein Legacy-Ansatz mit sehr begrenzten Funktionen.
Sie müssen eine Alexa Smart Home-Fähigkeit erstellen, für die eine Cloud-Komponente erforderlich ist (mit einem Lambda, um sie auszulösen).
Die Fertigkeit gibt die Funktionen des Geräts an. ( https://developer.amazon.com/docs/smarthome/smart-home-skill-api-message-reference.html#discovery-messages )
quelle
alexa
ich das gesamte Alexa-System, das Gerät und den Cloud-Backing-Service meine. Die Fähigkeit spricht mit dem Alexa Cloud-Dienst nicht direkt mit dem GerätDiese Frage stieß auf großes Interesse (7 zum Zeitpunkt dieses Schreibens). Daher poste ich eine Antwort mit einer Lösung nur vor Ort.
Ich habe die Antwort von @hardillb akzeptiert, da ich noch keine Methode gefunden habe, mit der Alexa die relative Lautstärke mit einem lokalen Gerät steuern kann.
Es gibt jedoch eine Möglichkeit, die relativen TV-Schallpegel mit einem lokalen Gerät zu steuern. Durch die Verwendung eines Gerätenamens wie "TV-Sound" und von Sätzen wie "Alexa, drehen Sie den TV-Sound auf" kann Alexa dazu gebracht werden, zu glauben, dass die Helligkeit eines Geräts namens "TV-Sound" auf und ab geht. Wenn wir diesen Ansatz akzeptieren, müssen wir die absoluten Helligkeitsstufen von Alexa verwenden, während wir versuchen, einen Fernseher mit relativem Schallpegel zu steuern. Das erste, was wir bemerken, ist, dass wir den TV-Ton nur einige Male leiser stellen können, bevor wir den Helligkeitsbereich von Alexa ausschöpfen (Alexa springt für jeden Dimmbefehl um etwa 25%). Wir können Alexa aber auch mitteilen, auf welche Helligkeit unser Gerät am Ende jedes Befehls eingestellt ist. Wenn wir Alexa sagen, dass die Helligkeit immer 50% beträgt, antwortet Alexa immer mit mehr als 50%, wenn wir Alexa sagen, dass "
quelle