Estou usando um ESP8266 para emular um dispositivo WeMo com o wemos e o código do arduino do fauxmoESP encontrados na Internet. Agora que entendo a interação básica dos comandos liga e desliga, gostaria de adicionar uma resposta de status para o estado de alguns pinos no dispositivo. Parece que "ligar" e "desligar" são habilidades básicas do Alexa e funcionam. Mas não há comando verbal "status" ou "state".
Encontrei lugares no código que manipulam o eventservice
XML, por exemplo: <binarystate>1</binarystate>
para ativá-lo, mas não consigo encontrar nenhuma documentação sobre como obter status ou <getdevicestate>
. Exemplo de uso: se não conseguir ver uma luz acesa em algum lugar, gostaria de consultar o dispositivo para ver se está ligado ou desligado.
Como o dispositivo emula um botão liga / desliga belkin, o pacote setup.xml possui apenas:
<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>
e o evento básico não é suficiente para obter status ou capacidade adicional.
Isso tudo é feito sem a necessidade de escrever uma habilidade da AWS e é tratado com diálogo direto na LAN local entre o servidor da Web ESP8266 e o fauxmoESP de e para o Echo Dot. Posso ver os pacotes farejando a LAN (sem fio) e acredito que seria fácil adicionar mais recursos se eu encontrasse a documentação nos pacotes XML de controle de mensagens.
Onde posso encontrar esses modelos de diálogo XML de controle e, esperançosamente, exemplos de como usá-los? Estou sentindo que isso só pode ser realizado usando uma habilidade da AWS, mas parece tão desnecessário. Alguém pode me dar alguma orientação aqui?
Além disso, qual é o enunciado para o Alexa verificar o status de um dispositivo? Pode ser que não haja um enunciado incorporado para isso e precisarei escrever uma habilidade da AWS (o que não desejo, se possível).
Respostas:
Talvez o conjunto de recursos do software tenha mudado, mas descobri que o seguinte funciona. Isto é do meu código DIY para o módulo nodemcu / D1 mini ESP8266 usando o servidor da web esp8266 que escuta transmissões UDP locais. Notei nas chamadas do Alexa para /upnp.control/basicevent1 que os pedidos estavam mudando sutilmente. Tudo se resume ao mesmo evento, mas o xml da solicitação tem
<SetBinaryState> or <GetBinaryState>
Contanto que você mantenha o estado em seu esboço, algo assim funcionará ...
fonte
Atualmente, o estado da luz não faz parte da API do Smart Home Skill que o Wemo usa para os dispositivos domésticos inteligentes. Existem diretivas de descoberta, controle e consulta de acordo com suas referências .
Infelizmente, nada disso ajuda você com sua luz. Talvez você possa fingir ser uma fechadura. Mas é muito improvável que funcione com a habilidade Wemo.
Assim, atualmente, parece que você precisará escrever sua própria habilidade para obter o estado da luz.
fonte