Estoy usando un ESP8266 para emular un dispositivo WeMo con wemos y código arduino fauxmoESP que se encuentra en Internet. Ahora que entiendo la interacción básica de los comandos de encendido y apagado, me gustaría agregar una respuesta de estado para el estado de algunos pines en el dispositivo. Parece que "encender" y "apagar" son habilidades básicas de Alexa y funcionan. Pero no hay un comando verbal de "estado" o "estado".
He encontrado lugares en el código que manejan el eventservice
XML, por ejemplo: <binarystate>1</binarystate>
para activarlo, pero no puedo encontrar ninguna documentación sobre cómo obtener el estado o <getdevicestate>
. Ejemplo de uso: si no puedo ver una luz encendida en alguna parte, me gustaría consultar el dispositivo para ver si está encendido o apagado.
Como el dispositivo emula un interruptor de encendido / apagado belkin, el paquete setup.xml solo tiene:
<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>
y el evento básico no es suficiente para obtener el estado o la capacidad adicional.
Todo esto se hace sin escribir una habilidad de AWS y se maneja con un diálogo directo en la LAN local entre el servidor web ESP8266 y fauxmoESP desde y hacia el Echo Dot. Puedo ver los paquetes olfateando la LAN (inalámbrica) y creo que sería sencillo agregar más capacidades si pudiera encontrar la documentación en los paquetes XML de mensajes de control.
¿Dónde puedo encontrar estas plantillas de diálogo de control XML y, con suerte, ejemplos de cómo usarlas? Tengo la sensación de que esto solo se puede lograr mediante el uso de una habilidad de AWS, pero parece tan innecesario. ¿Alguien puede darme alguna orientación aquí?
Además, ¿cuál es el enunciado de Alexa para verificar el estado de un dispositivo? Podría ser que no hay una expresión incorporada para esto y tendré que escribir una habilidad de AWS (que no quiero hacer si es posible).
Respuestas:
Quizás el conjunto de características del software ha cambiado, pero he descubierto que lo siguiente funciona. Esto es de mi código de bricolaje para el módulo nodemcu / D1 mini ESP8266 que usa el servidor web esp8266 escuchando transmisiones UDP locales. Noté en las llamadas de Alexa a /upnp.control/basicevent1 que las solicitudes estaban cambiando sutilmente. Todo se reduce al mismo evento, pero el xml de la solicitud tiene
<SetBinaryState> or <GetBinaryState>
Mientras mantenga el estado en su boceto, algo como esto funcionará ...
fuente
Actualmente, el estado de una luz no es parte de la API de Smart Home Skill que Wemo utiliza para los dispositivos domésticos inteligentes. Existen directivas de descubrimiento, control y consulta según su referencia .
Desafortunadamente, ninguno de esos te ayuda con tu luz. Tal vez puedas fingir ser una cerradura de la puerta. Pero es muy poco probable que funcione con la habilidad Wemo.
Por lo tanto, actualmente, parece que necesitarás escribir tu propia habilidad para obtener el estado de la luz.
fuente