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

[linky] Fixes for change in Enedis API on 2024 December 20 #17945

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

lo92fr
Copy link
Contributor

@lo92fr lo92fr commented Dec 21, 2024

Fixes for Linky Enedis December web site change

This pull request is about fixing the linky addon after the change that was made on Enedis side to the Web Site.
This is linked to issue:
#17936

Description

Mainly, changes are :
- URL for data is now mes-mesures-prm and not mes-mesures.
- Dto format have changed : mainly merge data & date, field renaming, and moving.
- Some changes on date format.

- URL for data is now mes-mesures-prm and not mes-mesures.
- Dto format have changed : mainly merge data & date, field renaming, and moving.
- Some changes on date format.

Signed-off-by: Laurent ARNAL <[email protected]>
@wborn wborn linked an issue Dec 21, 2024 that may be closed by this pull request
@lolodomo
Copy link
Contributor

Thank you @lo92fr , I will review and test.

@lolodomo
Copy link
Contributor

I still have Java 17 and Java 21 on my dev PC so it should be easy to build a JAR for Java 17.
But in case I would have only Java 21, do you know what is the maven command to execute to build a JAR compatible with Java 17 / OH 4.3 ?
@holgerfriedrich I am sure you know ;)

@jlaur jlaur changed the title Linky : Fixes for change in Enedis API on 2024 December 20 ! [linky] Fixes for change in Enedis API on 2024 December 20 Dec 21, 2024
@holgerfriedrich
Copy link
Member

@lolodomo Hopefully it is just:

mvn install -Pj17 -Dohc.version=4.3.0

https://community.openhab.org/t/openhab-5-x-snapshot-requires-java-21/160890/5

@lolodomo
Copy link
Contributor

@lo92fr : does not work for me => Error requesting 'https://alex.microapplications.enedis.fr/mes-mesures-prm/api/private/v1/personnes/xxxxx/prms/yyyyy/donnees-energetiques?mesuresTypeCode=ENERGIE&mesuresCorrigees=false&typeDonnees=CONS&dateDebut=2023-01-01': {"message":"Internal server error. Please try again","code":"INTERNAL_SERVER_ERROR"}

Will see if it work in next tries (next hours).

@lolodomo lolodomo added the bug An unexpected problem or unintended behavior of an add-on label Dec 21, 2024
@lo92fr
Copy link
Contributor Author

lo92fr commented Dec 21, 2024

if it work in next tries (next

It still work on my side, strange.
Does the xxx in URL correctly formatted with something like MPSxxxYYY ?

Laurent.

@lolodomo
Copy link
Contributor

lolodomo commented Dec 21, 2024

Does the xxx in URL correctly formatted with something like MPSxxxYYY ?

3 letters then 3 numbers and then 3 letters.
Starts by N in my case.
If I correctly remember, it is the reference of my counter?

@lo92fr
Copy link
Contributor Author

lo92fr commented Dec 21, 2024

If it's still does not work, can you please:

  • check that you have the new version of the website. Look like this:
    image

  • When you load the page, take a look on the browser debugger, new URL appears at the bottom of the list.
    Is it the same and does it works correctly in your browser session ?

image

Thks,
Laurent.

@lolodomo
Copy link
Contributor

lolodomo commented Dec 21, 2024

Yes, I have the same page on their website.
The requests are similar, the binding request just has an additional parameter "dateDebut".
When I run in my browser session while I am logged to the website, the binding URL works well!

@lolodomo
Copy link
Contributor

Now the binding is working! Even after I disconnect from the website in my browser.
Maybe you need to connect at least one time to the new website version ?

Comment on lines +220 to +221
updateState(PEAK_TIMESTAMP, new DateTimeType(
days.datas.get(days.datas.size() - 1).dateDebut.atZone(this.timeZoneProvider.getTimeZone())));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was changed very recently, just before releasing 4.3. We don't need to pass a ZonedDateTipe; DateTimeType just needs an Instant as parameter. So you do not need TimeZoneProvider .

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @lolodomo,

I'm not sure to understant. Do you say to use the DateTimeType constructor that take an instant, something like this.
updateState(PEAK_TIMESTAMP,
new DateTimeType(days.datas.get(days.datas.size() - 1).dateDebut.toInstant(zoneOffset)));

The matter is that I still need to find a zoneOffset in this case.
The Enedis API return a LocalDateTime at offset of the current zone.
The DateTimeType if I undestand correctly want a universal time.

So somewhere we need to convert from local to universal using a timezone ?

Laurent.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jlaur is our specialist with date. Please advice.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If days.datas.get(days.datas.size() - 1).dateDebut is a LocalDateTime, the implementation is already correct. If it is an Instant there is no need to convert to ZonedDateTime.

@lolodomo
Copy link
Contributor

The fix fails for me.
It worked just one time apparently because.i previously opened a session on the website but the next days it failed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug An unexpected problem or unintended behavior of an add-on
Projects
None yet
Development

Successfully merging this pull request may close these issues.

New version of Enedis website,
4 participants