dmoranf / home-assistant-wattio

Wattio Smart Home custom integration for Home Assistant
MIT License
7 stars 0 forks source link

No pasa del "paso 2" #5

Closed juanpega closed 3 years ago

juanpega commented 3 years ago

Buenos días.

Lo primero gracias por el código generado!

Una vez voy a supera el paso 2 con ID y clave me sale esto en la web:

image

Cómo respuesta al último paso, tienes idea de que puede ser?

Muchas gracias!

dmoranf commented 3 years ago

Hola,

Parece que wattio por algún motivo no te está validando el usuario y contraseña y no te devuelve el token necesario, el usuario y contraseña que tienes que meter no es el de tu cuenta, si no que el soporte te tiene que dar un usuario específico para la API (hay que pedirlo por corro electrónico?, ¿Te han llegado a facilitar usuario y contraseña para la API y aún así te falla la validación?

Saludos!

juanpega commented 3 years ago

Buenas!

Sí Sí, ha costado unos ideas, pero me han pasado el client_id y el client_secret.

Pero no me acaba de tirar... No se si hay que implementar el "login". https://api.wattio.com/public/oauth2/login

Gracias!

dmoranf commented 3 years ago

Hola!

En principio está implementado, pero por si algo estuviera fallando lo que podemos hacer es intentar obtener el token directamente contra wattio desde fuera de home assistant, luego ya solo sería meter los datos en el fichero de config de hass y a correr ... voy a ver si recupero los pasos a seguir, que en su día los había posteado en el foro de wattio (pero veo que hace tiempo que se lo han cargado).

En cuanto lo tenga lo pongo aquí y probamos, de esta forma descartamos que no haya problema con la cuenta de wattio (que no eres el primero) :)

Saludos,

juanpega commented 3 years ago

pues muchas gracias!!

estaba pensando en pillar tu proyecto pywattio e ir paso a paso, pero hubiera tardado siglos sin ayuda.

Pues cuando tu me digas!

dmoranf commented 3 years ago

Buenas,

Sería algo tal que así, necesitas un cliente para trabajar con APIS, por ejemplo POSTMAN, o INSOMNIA, las capturas son del postman que se puede descargar en su versión gratuita de www.postman.com

1) Para probar que el postman nos está funcionando bien, vamos a hacer una petición a la API de wattio pidiendo el estado de los appliances, lógicamente dará unauthorized ya que no estamos pasando token.

Desde postman hacemos una petición tipo GET a https://api.wattio.com/public/v1/appliances/status

image

En la parte inferior, en la sección Body nos saldrá la respuesta de la API, que en este caso va a ser “Unauthorized”, además en la parte derecha vemos el código de respuesta 401 Unauthroized:

image

2) Es necesario obtener un “code” para, posteriormente solicitar el TOKEN, para ello abrimos un navegador y hacemos una petición similar a la siguiente:

https://api.wattio.com/public/oauth2/authorize?client_id=TU_CLIENT_ID&redirect_uri=http://127.0.0.1/hass&response_type=code

Es necesario modificar TU_CLIENT_ID, por el client id que te haya pasado wattio, te aparecerá una pantalla que te pide tu usuario y contraseña de wattio (la que usas para acceder a la app de wattio):

image

Tras meter tus datos de acceso te saldrá una pantalla solicitando acceso, similar al a siguiente:

image

Le damos a allow y nos deberá redirigir a la url que le hemos pasado, en este caso http://127.0.0.1/hass, fallará porque no tenemos un servidor web escuchando, pero lo importante es que la URL tendremos el parámetro code que tendremos que guardar para después.

image

3) Una vez que tenemos el code solo nos falta obtener el TOKEN de acceso para HASS, en este caso desde POSTMAN tendremos que crear una petición de este tipo:

- URL: https://api.wattio.com/public/oauth2/token
- Tipo: POST
- Parámetros en la sección Body de postman:
    - code: el código del punto anterior
    - redirect_uri: http://127.0.0.1/hass
    - grant_type: “authorization_code”
    - client_id: EL CLIENT ID DE WATTIO
    - client_secret: EL SECRET DE WATTIO

Como en la siguiente captura, en Params no tiene que haber nada, se pasa todo a Body, y tipo form-urlencoded:

image

Si todo va bien responderá con un 200 y con un access_token, como se ve en la captura, en caso de que algún campo esté mal nos dará un error descriptivo, si falla el client_id o el secret dirá unauthorized.

Si has llegado hasta ahí y tienes el access_token, solo tienes que meterlo en el wattio.conf donde está el componente de home assistant:

{ "access_token": "elchurrodetoken", "client_id": "tu_client_id", "client_secret": "tu_secret" ... }

juanpega commented 3 years ago

Hola!

Que va! Se me queda en el segundo paso.

image

Y si me lleva a la pantalla de login (pq en el navegador de otro pc si ha ido a la pantalla de login y en el mobil). Poniendo usuario y contraseña de la app.. me genera un error parecido.

Merci!

dmoranf commented 3 years ago

Hola,

Teniendo en cuenta que la prueba es toda contra Wattio (ajeno al componente y a hass), y que no pasas del paso de autorización (el primero del oauth), tiene pinta de que algo le pasa al usuario, prueba a abrir un ticket con wattio y que lo revisen, me suena que a algún usuario le pasó lo mismo, pero no llegamos a saber cuál era el motivo. Coméntales que has probado a solicitar el código de autorización y que te devuelve ese error (que parece una traza).

Al final el componente falla por lo mismo ...

Me cuentas :)

Un Saludo,