Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feat. Request] Integrar el portal web de Sorea #31

Open
diamant-x opened this issue Oct 29, 2024 · 7 comments
Open

[Feat. Request] Integrar el portal web de Sorea #31

diamant-x opened this issue Oct 29, 2024 · 7 comments
Labels
help wanted Extra attention is needed

Comments

@diamant-x
Copy link

diamant-x commented Oct 29, 2024

Hola, recientemente me he mudado de municipio y el agua ahora lo provee una empresa llamada Sorea. https://www.soreaonline.cat/login Pero la web me resultaba familiar y al parecer básicamente es otra marca del grupo Agbar.
Me preguntó cómo de posible sería que la integración permita si funcionalidad desde el portal de Sorea también?

https://es.m.wikipedia.org/wiki/Sorea

Quiero creer que el backe nd funciona igual aunque por delante la web se vea distinta.
Puedo confirmar que las cuentas en aigues no funcionan en la de Sorea... Con suerte es solo por BBDD.

@duhow
Copy link
Owner

duhow commented Nov 1, 2024

Sin usuario ni suministro poco puedo hacer para investigar.
Te invito a que analices cómo funciona, si dispone de API, y si ves que la forma de acceder se comporta parecido a la API de Aigues de Barcelona, puedes añadir más información y una PR con el cambio.

@duhow duhow closed this as not planned Won't fix, can't repro, duplicate, stale Nov 1, 2024
@duhow
Copy link
Owner

duhow commented Nov 11, 2024

Por lo pronto veo que Agbar, Sorea y Cassa usan el mismo portal.

https://www.agbarclients.cat/login
https://www.soreaonline.cat/login
https://www.cassa.es/login

@diamant-x
Copy link
Author

He estado mirando pero la cookie de ofexTokenJwt no aparece al iniciar sesion en Sorea... no se si significa que la plataforma de debajo es toalmente distinta o que.

Estas son las cookies que salen tras iniciar sesion. algunas ya aparecen al cargar el login publico https://www.soreaonline.cat/login

Cookie Value (or redacted)
COMPANY_ID 20116
COOKIE_SUPPORT true
CookieConsent {stamp:%27u0TMXqnIQS0LNlRrombBIgqS1+nBub8BWEDp0hO7pDng76BkFx+j2g==%27%2Cnecessary:true%2Cpreferences:false%2Cstatistics:false%2Cmarketing:false%2Cmethod:%27explicit%27%2Cver:3%2Cutc:1721733701343%2Cregion:%27es%27}
GUEST_LANGUAGE_ID es_ES
ID 493(redacted just in case, numbers and letters)d3d
JSESSIONID (generated on login page load)
LFR_SESSION_STATE_20120 1731599802868
LFR_SESSION_STATE_69627382 1731599887635
LR_LAST_CONTRACT (redacted, my water contract ID)
LR_ONLY_ONE_MUNICIPIO_765813 false
SERVERID 0d73(redacted just in case, numbers and letters)111
SERVERIDCORS 0d73(redacted just in case, numbers and letters)111
incap_ses_1394_2918190 SpObLSN(redacted just in case, mostly letters)XhLQ==
nlbi_2918190 YHLBe+a(redacted just in case, mostly letters)3o
showVideoTelelectura false
visid_incap_2918190 COce8(redacted just in case, mostly letters)6HDY

@duhow
Copy link
Owner

duhow commented Nov 14, 2024

Más allá de las cookies, hay alguna petición a API o algún sitio que devuelva la información del consumo?

@duhow duhow reopened this Nov 14, 2024
@duhow duhow added the help wanted Extra attention is needed label Nov 14, 2024
@diamant-x
Copy link
Author

Hace mucho que no hago ingeniería inversa asi que si tienes algun tip de como sacar lo que sería interesante lo puedo hacer.

He mirado en la pestaña de Red del debugger y al consultar los consumos, se puede hacer mensual, diario o horario. En el caso de horario le tira un GET a
https://www.soreaonline.cat/es/group/soreaonline/mis-consumos?p_p_id=MisConsumos&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&p_auth=BpdgVcoI&_MisConsumos_op=buscarConsumosHoraria&_MisConsumos_fechaInicio=12/11/2024&_MisConsumos_fechaFin=15/11/2024&_MisConsumos_inicio=0&_MisConsumos_fin=9

que devuelve un json tal que:

{"ultimaPagina":false,"consumos":[{"fechaConsumo":"15 nov 2024","horaConsumo":"04:05","lectura":"100,745","consumo":"0,001","consumptionType":{"consumptionLiteral":"REAL","consumptionClass":"real"},"lecturaEstimada":false},{"fechaConsumo":"15 nov 2024","horaConsumo":"03:05","lectura":"100,744","consumo":"0","consumptionType":{"consumptionLiteral":"REAL","consumptionClass":"real"},"lecturaEstimada":false},{"fechaConsumo":"15 nov 2024","horaConsumo":"02:05","lectura":"100,744","consumo":"0","consumptionType":{"consumptionLiteral":"REAL","consumptionClass":"real"},"lecturaEstimada":false},{"fechaConsumo":"15 nov 2024","horaConsumo":"01:05","lectura":"100,744","consumo":"0,001","consumptionType":{"consumptionLiteral":"REAL","consumptionClass":"real"},"lecturaEstimada":false},{"fechaConsumo":"15 nov 2024","horaConsumo":"00:06","lectura":"100,743","consumo":"0,003","consumptionType":{"consumptionLiteral":"REAL","consumptionClass":"real"},"lecturaEstimada":false},{"fechaConsumo":"14 nov 2024","horaConsumo":"23:06","lectura":"100,74","consumo":"0,005","consumptionType":{"consumptionLiteral":"REAL","consumptionClass":"real"},"lecturaEstimada":false},{"fechaConsumo":"14 nov 2024","horaConsumo":"22:06","lectura":"100,735","consumo":"0,007","consumptionType":{"consumptionLiteral":"REAL","consumptionClass":"real"},"lecturaEstimada":false},{"fechaConsumo":"14 nov 2024","horaConsumo":"21:06","lectura":"100,728","consumo":"0,155","consumptionType":{"consumptionLiteral":"REAL","consumptionClass":"real"},"lecturaEstimada":false},{"fechaConsumo":"14 nov 2024","horaConsumo":"15:59","lectura":"100573","consumo":"0,001","consumptionType":{"consumptionLiteral":"REAL","consumptionClass":"real"},"lecturaEstimada":false},{"fechaConsumo":"14 nov 2024","horaConsumo":"14:59","lectura":"100,572","consumo":"0","consumptionType":{"consumptionLiteral":"REAL","consumptionClass":"real"},"lecturaEstimada":false}]}

La respuesta está paginada, pero se puede forzar via url los parametros el rango que quieres que devuelva (ambos son aplicados, i.e. si le pides 200 pero el rango es de 1 dia -> te devuelve un dia de datos solo, si le pides el rango del mes pero solo 10 entradas -> te devuelve 10 entradas.
&_MisConsumos_fechaInicio=12/11/2024 <- 'desde'
&_MisConsumos_fechaFin=15/11/2024 <- 'hasta'
&_MisConsumos_inicio=0 <- "indice de la entrada más reciente a consultar"
&_MisConsumos_fin=30 <- "indice de la entrada más antigua a a consultar"

Lo que el p_auth que sale ahi no coincide con ningun valor que haya encontrado en la lista de cookies, asi que no se donde se genera.

@duhow
Copy link
Owner

duhow commented Nov 17, 2024

Vale, entonces es factible crear una clase en Python para procesar datos de Sorea o de Aigues de Barcelona. Mismos métodos pero con diferentes ejecuciones. 👍🏻
Puedes con ello? Si no, tendría que pedirte un usuario para investigar las llamadas que se hacen con detalle. Puedes darme un toque por Telegram si lo necesitas.

@diamant-x
Copy link
Author

Buf, aunque he programado en Python, nunca lo he hecho con un buen orden o estructura :).
Puedo dar soporte y hacer de beta testing.
Lo que haré es intentar implementarlo con https://github.com/danieldotnl/ha-multiscrape y ver si consigo al menos acceder al ultimo valor del contador (y de ahi agregarlo al panel de Energia y que HA me haga el horario) y podemos dejar el hilo abierto para ver si hay más gente interesada que valga la pena extender esta integración.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants