Open duhow opened 1 year ago
Existen servicios como 2captcha que permiten resolver captchas de forma "manual", pagando. Siempre se puede hacer que se pidan donativos para este proyecto y se destine parte de los fondos a este sistema. :)
No se si se puede aplicar la misma solución, pero hay otras integraciones que en el momento del alta, o cuando se requiere, facilitan en el LOG el enlace a la página donde validar manualmente el captcha. Un ejemplo es https://github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor
Otra opción que se me ocurre es, suponiendo que las cookies de sesión puedan ser validas durante un rato siempre que haya actividad (y asumiendo no se cierre la cookie unilateralmente), pedir al usuario que busque la cookie de sesión tras iniciar sesión manualmente, y utilizarla en las cabeceras de la integración. Y hacer que la integración repita las llamadas de manera constante (ajustando en prueba y error) para que no caduque la sesión.
Es más rocambolesco, pero hasta que Agbar no facilite una API oficial poco más se me ocurre para saltarse un reCaptcha sin pagar.
Otra opción que se me ocurre es, suponiendo que las cookies de sesión puedan ser validas durante un rato siempre que haya actividad (y asumiendo no se cierre la cookie unilateralmente), pedir al usuario que busque la cookie de sesión tras iniciar sesión manualmente, y utilizarla en las cabeceras de la integración. Y hacer que la integración repita las llamadas de manera constante (ajustando en prueba y error) para que no caduque la sesión.
Es más rocambolesco, pero hasta que Agbar no facilite una API oficial poco más se me ocurre para saltarse un reCaptcha sin pagar.
Cierto. La integración de Google Maps funciona de esta manera, y correctamente por cierto. Hay extensiones para Chrome y para Mozilla que facilitan al usuario la exportación de las cookies.
Usar las cookies no es mala opción, y más teniendo en cuenta que los usuarios de home assistant suelen ser más "tech savvy", y con un manual simple de cómo sacarlas podrán hacerlo.
@oalbaf me suena haberlo visto con una integración de Alexa, pero no sé hasta qué punto es viable hacer algo así (si el sistema de captcha lo permite, vamos).
Es más rocambolesco, pero hasta que Agbar no facilite una API oficial poco más se me ocurre para saltarse un reCaptcha sin pagar.
@diamant-x Tengo mis serias dudas de que vayan a sacar una API (más allá del Open Data que ofrece la Generalitat), ya que seguramente piensen que usando su portal los usuarios tienen mucho más que suficiente.
@diamant-x Tengo mis serias dudas de que vayan a sacar una API (más allá del Open Data que ofrece la Generalitat), ya que seguramente piensen que usando su portal los usuarios tienen mucho más que suficiente.
Desconozco si @duhow tiene la posibilidad de buscar y contactar con el departamento que corresponda de AGBAR en estas cuestiones, y solicitar colaboración para poder trasladar los datos de consumo a una plataforma de domótica. No perdemos nada, y quizás a ellos también les interese.
Contacté por Twitter con Agbar para ver qué respuesta nos daban y esta es su respuesta:
Es curioso que argumenten que por 'seguridad de datos' no procede, cuando los bancos estan obligados por ley a permitir una API a sus datos y las distribuidoras eléctricas también, y veo más sensibles esos datos. No se si igual si les hacemos llegar muchas sugerencias a titulo individual se abran a crear una API pública.
¿Fue por mensaje privado, no? Podemos mandar directamente un tweet solicitando el acceso y lo así podemos retwittear y hacer un poco de presión. ¿Qué os parece?
@diamant-x eso no es del todo correcto. La API "ya es pública". Requiere autenticación para poder usarla, y la podemos obtener. Está todo correcto. El único problema es que "necesita un captcha" para obtener el token. Y esto es el impedimento que tenemos ahora... Trataré de obtener un correo de contacto con el departamento técnico o soporte, pero si alguien lo saca antes pues también me vale. Mejor que no preguntarles por Twitter o teléfono....
Les he enviado un correo. 🤞🏻
Hola,
He visto esta integración y la he instalado via HACS. Me ha sido imposible iniciar sesión (y he probado la contraseña en la web y funciona). He visto el post, hay actualmente alguna manera de iniciar sesión?
Saludos,
De momento no, quedo a la espera de respuesta o bien PRs con alguna solución propuesta.
De momento, sin mensajes recibidos de Agbar.
buenas, yo he estado con la cookie metida varios meses en HA, podríamos intentar optar por esta opción
¿Puedes explicar como hacerlo? ¡Gracias!
Por el momento, he implementado que pida el token
de login, se puede extraer de las cookies. (ofexTokenJwt
)
Probad los cambios disponibles en master
y dadme feedback.
Es posible que haya que reinstalar la integración (borrar los datos anteriores), avisadme si es así.
Por el momento, he implementado que pida el
token
de login, se puede extraer de las cookies. (ofexTokenJwt
) Probad los cambios disponibles enmaster
y dadme feedback.
Lo acabo de probar ahora mismo y no me va, dice que "invalid credentials". En mi caso es una instalación nueva.
Lo mismo: desinstalé, volví a instalar, y después de poner el token sale "invalid credentials".
Hola, He probado master y copiando el token de las cookies y me funciona correctamente. Igual estaría bien explicarle a la gente el paso a paso, por si se pierden un poco:
Un saludo
Igual estaría bien explicarle a la gente el paso a paso, por si se pierden un poco: [...]
Gracias por los pasos detallados, no dudo que sean de utilidad. Pero en mi caso sé perfectamente cómo obrar y el resultado es el que es. Pensando... no sé si podrá tener algo que ver que haya varios contratos sobre la cuenta. Intentaré hacer pruebas esta noche si tengo tiempo. Y, por cierto, muchas gracias @duhow por el trabajo!
Yo acabo de hacerlo y me ha funcionado.
Lo que si he tenido que hacer antes es:
Muchas gracias por el trabajo :). Yo creo que puedes publicarlo como nueva release ya que igualmente las anteriores no funcionan, y HACS sugiere primero las numeradas (0.1.0) antes que 'master' e igual puede llevar a equívocos.
De nuevo, lo mismo: hice los pasos correctamente y tengo varios contratos. Gracias a todos por vuestro trabajo.
Acabo de probar lo del master+token y me ha cargado, falta comprobar que la lectura sea la misma o parecida en el contador pero vaya, que me ha cargado.
Muchas gracias!
Hola, Solamente comentar que la lectura de la web no es exactamente la misma que el complemento. En la web tengo 358646 l a las 4:00 AM del 4/3/2023 mientras que HA lee 358,620 m3 (según atributos con ultima actualizacion a las 4:00 AM del 4/3/2023). Tengo que irme al dia anterior a las 9:00PM para tener una lectura 358622 l.
No sé si es que ataca dos bases de datos diferentes pero parece que hay un desfase.
Tampoco es que sea un problemón. Seguiré haciendo seguimiento a ver cómo continúa.
Un saludo,
Acabo de probar lo del master+token y me ha cargado, falta comprobar que la lectura sea la misma o parecida en el contador pero vaya, que me ha cargado.
Muchas gracias!
Bueno.... pues oye.. no me funciona otra vez.... ha perdido el OATH token, lo vuelvo a introducir cuando me lo pide y me dice que nanai, unknown error ocurred.... volveré a empezar de nuevo porqué sí he obtenido una lectura la primera vez
Hola,
Creo que si reinicias has de volver a introducir el token.
Saludos
El lun, 6 mar 2023 15:17, Arves @.***> escribió:
Acabo de probar lo del master+token y me ha cargado, falta comprobar que la lectura sea la misma o parecida en el contador pero vaya, que me ha cargado.
Muchas gracias!
Bueno.... pues oye.. no me funciona otra vez.... ha perdido el OATH token, lo vuelvo a introducir cuando me lo pide y me dice que nanai, unknown error ocurred.... volveré a empezar de nuevo porqué sí he obtenido una lectura la primera vez
— Reply to this email directly, view it on GitHub https://github.com/duhow/hass-aigues-barcelona/issues/5#issuecomment-1456218968, or unsubscribe https://github.com/notifications/unsubscribe-auth/AXLZ56RHISWWUQ332TDS543W2XWXBANCNFSM6AAAAAAUEGQNKQ . You are receiving this because you commented.Message ID: @.***>
Hola, Solamente comentar que la lectura de la web no es exactamente la misma que el complemento. En la web tengo 358646 l a las 4:00 AM del 4/3/2023 mientras que HA lee 358,620 m3 (según atributos con ultima actualizacion a las 4:00 AM del 4/3/2023). Tengo que irme al dia anterior a las 9:00PM para tener una lectura 358622 l.
No sé si es que ataca dos bases de datos diferentes pero parece que hay un desfase.
Tampoco es que sea un problemón. Seguiré haciendo seguimiento a ver cómo continúa.
Un saludo,
Si, yo también me he dado cuenta. Mi última lectura según el sensor del contador era del 4 de marzo.... pero en la página de AGBAR me dice que es la del dia 3.... quizás hay algo en el tema de las unidades. La página me da los litros desde principio de mes pero el sensor está en m3 con lo que hasta que no suba 1000litros 1m3 no creo que me actualice el sensor.
Hola, Creo que si reinicias has de volver a introducir el token. Saludos El lun, 6 mar 2023 15:17, Arves @.***> escribió: …
Si, ya lo he hecho pero es cuando me da el error de unknown error ocurred.... por la tarde volveré a empezar. Ya me había creado ya un sensor que restara la última lectura de la factura de la lectura actual del sensor para saber los m3 de la siguiente factura para ir probando cosas
He estado haciendo pruebas desde el REPL de python jugando con el módulo api y ahí funciona todo perfectamente, incluso consumos y facturas cuando le especifico manualmente el número del contrato. Así que no entiendo por qué el HA no crea la integración. Descubrí este módulo hace apenas un par de semanas, así que no es posible que tenga "algo" viejo que lo haga cascar. Mirando el código tampoco veo que el hecho de tener varios contratos no permita iniciar la integración, en todo caso no debería dar el error de "invalid credentials". Lo otro que se me ocurre es que sea problema de la versión, tengo una 2023.2.1.
He estado haciendo pruebas desde el REPL de python jugando con el módulo api y ahí funciona todo perfectamente, incluso consumos y facturas cuando le especifico manualmente el número del contrato. Así que no entiendo por qué el HA no crea la integración. Descubrí este módulo hace apenas un par de semanas, así que no es posible que tenga "algo" viejo que lo haga cascar. Mirando el código tampoco veo que el hecho de tener varios contratos no permita iniciar la integración, en todo caso no debería dar el error de "invalid credentials". Lo otro que se me ocurre es que sea problema de la versión, tengo una 2023.2.1.
Bueno, pues nada, acabo de volver a intentarlo y esta vez ha cargado correctamente.... con el token claro.
Hola, He probado master y copiando el token de las cookies y me funciona correctamente. Igual estaría bien explicarle a la gente el paso a paso, por si se pierden un poco:
- Cambiar version a master
- Reiniciar
- Añadir dispositivo
- Abrir en otro navegador la web de aigües de barcelona y hacer login
- Como sacar el token en chrome: click derecho inspeccionar sobre la web de aigües de barcelona
- Ir a la pestaña de application
- Ir a cookies en el lado izquierdo y buscar ofexTokenJwt
- Copiar el valor de la cookie a la pantalla de Token de HA
Un saludo
¡Genial!
@duhow, estas instrucciones son tan buenas que quizás sería bueno tenerlas con la info del complemento.
Hola,
Os ha caducado el token? He visto en el registro que el token caducaba y ya no actualizaba el valor del contador. Otro tema es que al caducar el token si no miras el registro no te das cuenta.
Un saludo,
Hola,
Os ha caducado el token? He visto en el registro que el token caducaba y ya no actualizaba el valor del contador. Otro tema es que al caducar el token si no miras el registro no te das cuenta.
Un saludo,
Buenas. Sí, caduca, alguien lo comentó. Creo que se dijo que es válido por 1 hora. Luego tienes que volver a loguear y volver a recuperar el token OAUTH (porque es distinto). Luego es simplemente clicar en Reconfigurar la integración y sólo te pide el OAUTH (lo acabo de hacer ahora).
Yo acabo de probar de usar el Helper de varios sensores (sólo con el sensor del contador)-->y la opción MAX, para ver si al menos, el último valor leído se queda guardado, así podré usar ese valor guardado (aunque no esté actualizado al día) sin que se pierdan las otras historias que quiero relacionar con la lectura del agua. De aquí a un rato digo si se ha perdido o no cuando pierda el token. Saludos
Hola, Os ha caducado el token? He visto en el registro que el token caducaba y ya no actualizaba el valor del contador. Otro tema es que al caducar el token si no miras el registro no te das cuenta. Un saludo,
Buenas. Sí, caduca, alguien lo comentó. Creo que se dijo que es válido por 1 hora. Luego tienes que volver a loguear y volver a recuperar el token OAUTH (porque es distinto). Luego es simplemente clicar en Reconfigurar la integración y sólo te pide el OAUTH (lo acabo de hacer ahora).
También he tenido que reintroducir el token después de 1 hora, pero después de reiniciar HA porque anteriormente no me aceptaba el token. Tras reiniciar sí, y era el mismo token.
También he tenido que reintroducir el token después de 1 hora, pero después de reiniciar HA porque anteriormente no me aceptaba el token. Tras reiniciar sí, y era el mismo token.
Buenas, pues ahora mismo acabo de ver que: 1) El sensor con el helper MAX no guarda el valor. Cuando pierde información el sensor contador, el helper pierde el valor. Supongo que habrá alguna forma de guardar EFECTIVAMENTE el valor máximo registrado en algun espacio de memoria, pero no sé como hacerlo, lo tengo que buscar. 2) Antes de reiniciar HA, he intentado recargar la integración y NO me pide el token pero es cuando pierde la lectura, y cuando leo la información de la configuración de la entidad me dice que "esta información ya no está proporcionada por AGBAR" (o algo similar) 3) Efectivamente, al recargar HA entero (antes he probado sólo recargar el .yaml), entonces sí aparece en rojo la opción de reconfigurar. 4) A mí el token me ha cambiado. Los 3 últimos caracteres eran distintos cuando he vuelto a logear ahora que hace una hora.
- Efectivamente, al recargar HA entero (antes he probado sólo recargar el .yaml), entonces sí aparece en rojo la opción de reconfigurar.
Aquí igual, sale en los registros del sistema, pero no hay un a notificación de usuario. Además, tener que reiniciar todo HA es un poco inconveniente.
Gracias!
Hola. Lo acabo de montar y ha funciona tanto el nie como el Token. Lastima de su corta duracion.
De vez en cuando me ocurre lo de que añadir el nuevo token falla con "Invalid error". Este es el log de los registros:
Logger: aiohttp.server
Source: config_entries.py:1327
First occurred: 10:34:24 (8 occurrences)
Last logged: 10:36:26
Error handling request
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/aiohttp/web_protocol.py", line 433, in _handle_request
resp = await request_handler(request)
File "/usr/local/lib/python3.10/site-packages/aiohttp/web_app.py", line 504, in _handle
resp = await handler(request)
File "/usr/local/lib/python3.10/site-packages/aiohttp/web_middlewares.py", line 117, in impl
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 67, in security_filter_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 100, in forwarded_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 80, in ban_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 235, in auth_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 146, in handle
result = await result
File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 180, in post
return await super().post(request, flow_id)
File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 72, in wrapper
result = await method(view, request, data, *args, **kwargs)
File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 110, in post
result = await self._flow_mgr.async_configure(flow_id, data)
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 271, in async_configure
result = await self._async_handle_step(
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 367, in _async_handle_step
result: FlowResult = await getattr(flow, method)(user_input)
File "/config/custom_components/aigues_barcelona/config_flow.py", line 132, in async_step_reauth_confirm
self.hass.config_entries.async_update_entry(self.entry, data=user_input)
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1327, in async_update_entry
if data is not UNDEFINED and entry.data != data:
AttributeError: 'dict' object has no attribute 'data'
No se a qué puede deberse. Gracias!
PD: Igual podemos cerrar este ticket como resuelto y abrir otro nuevo, asumiendo que hasta nuevo aviso el login es solo con Cookie.
Invalid credentials Me aparece cada vez que pongo usuario y pass, y luego el token de la cookie. He probado la versión master, la 0.2, reiniciando, desinstalando e instalando... y nada.
De vez en cuando me ocurre lo de que añadir el nuevo token falla con "Invalid error". Este es el log de los registros:
Logger: aiohttp.server No se a qué puede deberse. Gracias! PD: Igual podemos cerrar este ticket como >resuelto y abrir otro nuevo, asumiendo que >hasta nuevo aviso el login es solo con >Cookie. A mí me pasa esto cuando estoy mucho tiempo sin introducir el nuevo token. Entonces tengo que reiniciar HA y ya me acepta el token sin más problema. No puedo especificar cuanto tiempo pero al menos 18 horas sí habían pasado desde la última vez.
me pasa esto cuando estoy mucho tiempo sin introducir el nuevo token. Entonces tengo que reiniciar HA y ya me acepta el token sin más problema. No puedo especificar cuanto tiempo pero al menos 18 horas sí habían pasado desde la última vez.
Incluso menos, me acaba de pasar y no hace ni 8 horas que lo puse:
Logger: aiohttp.server
Source: config_entries.py:1327
First occurred: 18:02:19 (3 occurrences)
Last logged: 18:02:22
Error handling request
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/aiohttp/web_protocol.py", line 433, in _handle_request
resp = await request_handler(request)
File "/usr/local/lib/python3.10/site-packages/aiohttp/web_app.py", line 504, in _handle
resp = await handler(request)
File "/usr/local/lib/python3.10/site-packages/aiohttp/web_middlewares.py", line 117, in impl
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 67, in security_filter_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 100, in forwarded_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 80, in ban_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 235, in auth_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 146, in handle
result = await result
File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 180, in post
return await super().post(request, flow_id)
File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 72, in wrapper
result = await method(view, request, data, *args, **kwargs)
File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 110, in post
result = await self._flow_mgr.async_configure(flow_id, data)
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 271, in async_configure
result = await self._async_handle_step(
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 367, in _async_handle_step
result: FlowResult = await getattr(flow, method)(user_input)
File "/config/custom_components/aigues_barcelona/config_flow.py", line 132, in async_step_reauth_confirm
self.hass.config_entries.async_update_entry(self.entry, data=user_input)
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1327, in async_update_entry
if data is not UNDEFINED and entry.data != data:
AttributeError: 'dict' object has no attribute 'data'
Bueno, parece que esto es cosa de que AGBAR quiera colaborar y, por lo que parece, de momento no están por la labor.
El token que proporcionan dura solo 1 hora. Y si se renueva con asiduidad, solicita un captcha....
Necesitamos que nos proporcionen un token de larga duración. Y si no nos lo proporcionan.. Estoy por comprar un sensor de caudal e implementarlo en mi instalación a partir del contador. Aunque es una solución que no me gusta, viviendo como vivo en una comunidad de vecinos.
De vez en cuando me ocurre lo de que añadir el nuevo token falla con "Invalid error". Este es el log de los registros:
A día de hoy, y con las limitaciones conocidas, este es el problema que más molesta. Tener que reiniciar TODO HA para que la integración acepte el nuevo Token es bastante molesto... Estaría bien ver por qué ocurre y ver si se puede arreglar para que acepte un nuevos Token sin problemas, o almenos solo recargando la integracion de Agbar y no todo HA. Gracias.
Les he enviado un correo. 🤞🏻
FYI, he reenviado la petición y está vez confirmo recepción. Esperamos poder seguir adelante 🙂
Me ha funcionado esta misma mañana!
El jue, 30 mar 2023 a las 13:03, David Girón @.***>) escribió:
Les he enviado un correo. 🤞🏻
FYI, he reenviado la petición y está vez confirmo recepción. Esperamos poder seguir adelante 🙂
— Reply to this email directly, view it on GitHub https://github.com/duhow/hass-aigues-barcelona/issues/5#issuecomment-1490107412, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHQMGEB6V47CCD2YNZLOP5DW6VSBPANCNFSM6AAAAAAUEGQNKQ . You are receiving this because you commented.Message ID: @.***>
Sorry, acabo de probar este integracion justatemente, entonces puede ser que no veo el "big picture":
Por que no usamos este para generar access_token
con el refresh_token
?
https://identity.aiguesdebarcelona.cat/.well-known/openid-configuration
{
"issuer":"https://identity.aiguesdebarcelona.cat",
"jwks_uri":"https://identity.aiguesdebarcelona.cat/.well-known/openid-configuration/jwks",
"authorization_endpoint":"https://identity.aiguesdebarcelona.cat/connect/authorize",
"token_endpoint":"https://identity.aiguesdebarcelona.cat/connect/token",
"userinfo_endpoint":"https://identity.aiguesdebarcelona.cat/connect/userinfo",
"end_session_endpoint":"https://identity.aiguesdebarcelona.cat/connect/endsession",
"check_session_iframe":"https://identity.aiguesdebarcelona.cat/connect/checksession",
"revocation_endpoint":"https://identity.aiguesdebarcelona.cat/connect/revocation",
"introspection_endpoint":"https://identity.aiguesdebarcelona.cat/connect/introspect",
"device_authorization_endpoint":"https://identity.aiguesdebarcelona.cat/connect/deviceauthorization",
"frontchannel_logout_supported":true,
...
}
@neugartf si consigues hacerlo funcionar, se aceptan PRs 🙂
La API ahora pide validar el captcha, así que el login no funcionará.
EDIT: Workaround desde 0.2.0 para hacer login via Token OAuth.
El token dura 1 hora. Después de eso, la integración fallará y tendrás que volver a poner otro token nuevo para actualizar el contador de agua.
Igualmente el endpoint de login sigue pidiendo catpcha.