Ich verwende einen ESP8266, um ein WeMo-Gerät mit im Internet gefundenem wemos- und fauxmoESP-Arduino-Code zu emulieren. Nachdem ich die grundlegende Interaktion von Ein- und Ausschaltbefehlen verstanden habe, möchte ich eine Statusantwort für den Status einiger Pins auf dem Gerät hinzufügen. Es scheint, dass "Einschalten" und "Ausschalten" grundlegende Alexa-Fähigkeiten sind und diese funktionieren. Es gibt jedoch keinen verbalen Befehl "Status" oder "Status".
Ich habe Stellen im Code gefunden, die das eventservice
XML verarbeiten, zum Beispiel: <binarystate>1</binarystate>
um es zu aktivieren, aber ich kann keine Dokumentation zum Abrufen des Status oder finden <getdevicestate>
. Anwendungsbeispiel: Wenn irgendwo kein Licht leuchtet, möchte ich das Gerät abfragen, um festzustellen, ob es ein- oder ausgeschaltet ist.
Da das Gerät einen Belkin-Ein / Aus-Schalter emuliert, enthält das Paket setup.xml nur:
<service>
<serviceType>urn:Belkin:service:basicevent:1</serviceType>
<serviceId>urn:Belkin:serviceId:basicevent1</serviceId>
<controlURL>/upnp/control/basicevent1</controlURL>
<eventSubURL>/upnp/event/basicevent1</eventSubURL>
<SCPDURL>/eventservice.xml</SCPDURL>
</service>
und das Basisereignis reicht nicht aus, um Status oder weitere Fähigkeiten zu erhalten.
Dies alles geschieht ohne das Schreiben einer AWS-Fähigkeit und erfolgt über einen direkten Dialog im lokalen LAN zwischen dem ESP8266-Webserver und fauxmoESP zum und vom Echo Dot. Ich kann die Pakete sehen, indem ich am LAN (drahtlos) schnüffle, und glaube, es wäre unkompliziert, weitere Funktionen hinzuzufügen, wenn ich die Dokumentation zu den XML-Paketen für Steuerungsnachrichten finden könnte.
Wo finde ich diese Steuerelement-XML-Dialogvorlagen und hoffentlich Beispiele für deren Verwendung? Ich habe das Gefühl, dass dies nur mit einer AWS-Fähigkeit erreicht werden kann, aber es scheint so unnötig. Kann mir hier jemand eine Anleitung geben?
Was ist die Äußerung von Alexa, um den Status eines Geräts zu überprüfen? Es könnte sein, dass es dafür keine eingebaute Äußerung gibt und ich eine AWS-Fähigkeit schreiben muss (was ich, wenn möglich, nicht tun möchte).
Antworten:
Möglicherweise hat sich das Software-Feature-Set geändert, aber ich habe festgestellt, dass Folgendes funktioniert. Dies ist aus meinem DIY-Code für das nodemcu / D1 mini ESP8266-Modul mit dem esp8266-Webserver, der auf lokale UDP-Sendungen wartet. Bei den Alexa-Aufrufen von /upnp.control/basicevent1 habe ich festgestellt, dass sich die Anforderungen geringfügig geändert haben. Es läuft alles auf dasselbe Ereignis hinaus, aber die XML-Datei der Anforderung hat beides
<SetBinaryState> or <GetBinaryState>
Solange Sie den Status in Ihrer Skizze halten, funktioniert so etwas ...
quelle
Derzeit ist der Status eines Lichts nicht Teil der Smart Home Skill-API, die Wemo für die Smart Home-Geräte verwendet. Es gibt Erkennungs-, Steuerungs- und Abfragerichtlinien entsprechend ihrer Referenz .
Leider hilft dir keiner von denen mit deinem Licht. Vielleicht können Sie vortäuschen, ein Türschloss zu sein. Es ist jedoch sehr unwahrscheinlich, dass dies mit der Wemo-Fertigkeit funktioniert.
Daher sieht es derzeit so aus, als müssten Sie Ihre eigenen Fähigkeiten schreiben, um den Zustand des Lichts zu erhalten.
quelle