Forum

Browse topics, discover Works With Legrand community!

x8000 HomeAssistant API

Good morning, I’m trying to configure a custom component to manage two x8000 (V1) thermostats in homeassistant. Everything works correctly except the synchronization with the Legrand cloud: the thermostats are correctly associated and seen by the API but then they do not synchronize. I wanted to know which subnets should be whitelisted in the cloudflare tunnel that manages my external connection. I’ve added all this but I would like to keep it clean removing unneccesary:

Australia     Australia East     20.37.194.0/24
Australia South East     20.42.226.0/24
Brazil     Brazil South     191.235.226.0/24
Canada     Central Canada     52.228.82.0/24
Asia Pacific     Southeast Asia (Singapore)     20.195.68.0/24
India     South India     20.41.194.0/24
Central India     20.204.197.192/26
United States     Central United States     20.37.158.0/23
West Central United States     52.150.138.0/24
East United States     20.42.5.0/24
East 2 United States     20.41.6.0/23
North United States     40.80.187.0/24
South United States     40.119.10.0/24
West United States     40.82.252.0/24
West 2 United States     20.42.134.0/23
West 3 United States     20.125.155.0/24
Europe     Western Europe     40.74.28.0/23
North Europe     20.166.41.0/24
United Kingdom     United Kingdom South     51.104.26.0/24

Hello Davide,

As our Cloud servers are based in the Netherlands I would say Western Europe

Have a good day,

Leslie – Community Manager

<p class=”font-claude-response-body break-words whitespace-normal” dir=”ltr”>Hi,</p><p class=”font-claude-response-body break-words whitespace-normal” dir=”ltr”>I’m trying to connect my Bticino Smarther X8000 thermostat via the Smarther legacy v2.0 API (Starter Kit for Legrand APIs subscription) using the <code class=”bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]”>bticino_x8000_component Home Assistant integration.</p><p class=”font-claude-response-body break-words whitespace-normal” dir=”ltr”>Issue: Every token refresh / new authorization attempt fails with:</p><div class=”relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100″ tabindex=”0″ role=”group” aria-label=”Code”><div class=”sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right”><div class=”absolute right-0 h-8 px-2 items-center inline-flex z-10″> </div></div><div class=”overflow-x-auto”>

<code style="color: #14181f; background: transparent; font-family: var(--font-mono); white-space: pre-wrap;">HTTP 429
{ "message": "Rate limit is exceeded", "code": 7 }

</div></div><p class=”font-claude-response-body break-words whitespace-normal” dir=”ltr”>What I’ve already tried:</p><ul class=”[li_&]:mb-0 [li_&]:mt-1 [li_&]:gap-1 [&:not(:last-child)_ul]:pb-1 [&:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3 print:block print:space-y-1″ dir=”ltr”><li class=”font-claude-response-body whitespace-normal break-words pl-2″>Completely removed the integration/client from Home Assistant and made zero API calls for several days.<li class=”font-claude-response-body whitespace-normal break-words pl-2″>Re-authorized from scratch (fresh authorization code, used immediately) — still get the 429 immediately on the very first token request.<li class=”font-claude-response-body whitespace-normal break-words pl-2″>Verified I’m authenticating with my Home + Control / Bticino app end-user account (same email as in the mobile app), not my developer account.<li class=”font-claude-response-body whitespace-normal break-words pl-2″>Tested with both Primary and Secondary subscription key.<p class=”font-claude-response-body break-words whitespace-normal” dir=”ltr”>Since the Starter Kit is supposed to allow 500 calls/day/user, and I’ve made no calls at all for several days before this latest attempt, this doesn’t look like a normal rate-limit window — it looks like my subscription or account may be flagged/blocked.</p><p class=”font-claude-response-body break-words whitespace-normal” dir=”ltr”>Details:</p><ul class=”[li_&]:mb-0 [li_&]:mt-1 [li_&]:gap-1 [&:not(:last-child)_ul]:pb-1 [&:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3 print:block print:space-y-1″ dir=”ltr”><li class=”font-claude-response-body whitespace-normal break-words pl-2″>Client ID: <code class=”bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]”>9b26b32f-5f4f-4b4c-b342-400bb996e620<li class=”font-claude-response-body whitespace-normal break-words pl-2″>Subscription: Starter Kit for Legrand APIs<li class=”font-claude-response-body whitespace-normal break-words pl-2″>API: Smarther legacy v2.0<li class=”font-claude-response-body whitespace-normal break-words pl-2″>Auth issuer: <code class=”bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]”>login.eliotbylegrand.com<p class=”font-claude-response-body break-words whitespace-normal” dir=”ltr”>Could someone check whether my subscription/client has an active block or reduced quota, and confirm whether the “legacy” auth path has different (lower) limits than the current Smarther v2.0 API?</p><p> </p><p class=”font-claude-response-body break-words whitespace-normal” dir=”ltr”>Thanks in advance!</p>

<p>Sorry. I post again:</p><p>I’m trying to connect my Bticino Smarther X8000 thermostat via the Smarther legacy v2.0 API (Starter Kit for Legrand APIs subscription) using the bticino_x8000_component Home Assistant integration.</p><p>Issue: Every token refresh / new authorization attempt fails with:</p><p>HTTP 429</p><p>{ “message”: “Rate limit is exceeded”, “code”: 7 }</p><p>What I’ve already tried:</p><p>Completely removed the integration/client from Home Assistant and made zero API calls for several days.</p><p>Re-authorized from scratch (fresh authorization code, used immediately) — still get the 429 immediately on the very first token request.</p><p>Verified I’m authenticating with my Home + Control / Bticino app end-user account (same email as in the mobile app), not my developer account.</p><p>Tested with both Primary and Secondary subscription key.</p><p>Since the Starter Kit is supposed to allow 500 calls/day/user, and I’ve made no calls at all for several days before this latest attempt, this doesn’t look like a normal rate-limit window — it looks like my subscription or account may be flagged/blocked.</p><p>Details:</p><p>Client ID: 9b26b32f-5f4f-4b4c-b342-400bb996e620<br />Subscription: Starter Kit for Legrand APIs<br />API: Smarther legacy v2.0<br />Auth issuer: login.eliotbylegrand.com</p><p>Could someone check whether my subscription/client has an active block or reduced quota, and confirm whether the “legacy” auth path has different (lower) limits than the current Smarther v2.0 API?</p><p>Thanks in advance!</p>

<p>Same problem here – identical setup and identical error.</p><p> </p><p>BTicino Smarther X8000 (first series), Smarther legacy API, Starter Kit subscription, via the bticino_x8000 Home Assistant custom component.</p><p> </p><p>Every authorization/token attempt fails with HTTP 429, body “Rate limit is exceeded”, code 7 – even on the very first token request, on an account left idle for over a day, and even with a brand-new application created today. The Home+Control (lights/shutters) integration on the SAME account works fine – only the Smarther X8000 legacy OAuth token step fails.</p><p> </p><p>This is clearly not a normal rate-limit window – it looks like an account/subscription-level block on the legacy path. Older forum threads show this component authenticated fine back in 2024, so this looks like a recent regression on the legacy API.</p><p> </p><p>Two of us now report the exact same issue. Could a Legrand admin please look into it? I’m happy to provide my account email and Client IDs privately.</p><p> </p><p>Thanks!</p>

Hello,

We performed some tests and checked the logs, we don’t see any problem on our API side. Other users haven’t contacted me about a similar problem. Also, our quota rules haven’t changed for years

Our calls API rate causing a 429 error are the following :

  • 500 calls per minute
  • 1000 calls per hour
  • 10 calls per minute in case of 4xx error codes returned

My guess is that for any reason the bticino_x8000_component fails to correctly perform the token request, send it in a loop, and finally reach the 10 calls per minute quota

As it’s a third-party service we are not linked to them or to their development. I invite you to contact directly the developer : https://github.com/andrea-mattioli/bticino_x8000_component/issues

Have a good day,

Leslie – Community Manager

 

Hello Leslie,

thank you for your answer. Following your suggestion I contacted the developer of the third-party component, but in the meantime I ran the whole flow manually, without any third-party software, and I would like to share the results because they point to something on the account/subscription side.

  1. The OAuth flow works

GET

https://partners-login.eliotbylegrand.com/authorize?client_id=<my_client_id>&response_type=code&redirect_uri=<my_registered_redirect_uri&gt;

returns the authorization code correctly after login and scope acceptance.

POST

https://partners-login.eliotbylegrand.com/token

(client_id, client_secret, grant_type=authorization_code, redirect_uri, code sent as form data)

returns HTTP 200 with a valid access_token, a refresh_token, and the expected scopes:

“scp”: “topology.read comfort.write comfort.read”

So authentication is not the problem.

  1. Every API call returns 401

Using that fresh access token:

GET

https://api.developer.legrand.com/smarther/v2.0/plants

Authorization: Bearer <access_token>

Ocp-Apim-Subscription-Key:

Response:

HTTP/1.1 401 Unauthorized

{“statusCode”:”401″,”message”:”Unauthorized”}

I get exactly the same result using the secondary key.

  1. Your own “Try it” console also returns 401

This is the key point. On portal.developer.legrand.com, API Reference, Smarther legacy v2.0, operation Plants, with:

  • Authorization flow: authorization_code (your console handled the login and filled the Authorization header itself)
  • Subscription key: Primary: home assistant

pressing Send returns:

HTTP/1.1 401 Unauthorized

warning: Unauthorized

http.status: 401

service_release: 3.27.1

{“statusCode”:”401″,”message”:”Unauthorized”}

So the request is rejected using your own token, your own subscription key and your own tool.

No third-party software is involved at this point.

  1. Subscription status

In My Subscription the subscription named “home assistant” is listed as Active, product Starter Kit, with both a primary and a secondary key. The application was approved on 2026-06-08 with scopes topology.read, comfort.read and comfort.write all enabled.

Question

Since the token is issued correctly with the right scopes, and the subscription shows as Active, could you please check on your side whether my subscription is actually entitled to call the Smarther v2.0 endpoints?

From the outside everything looks correctly configured, yet every call, including the ones made from your own console, is rejected with 401.

I am happy to provide client id, subscription name or any request/response trace you need.

Thank you,

Marco

Viewing 7 posts - 1 through 7 (of 7 total)

You must be logged in to reply to this topic.

Information

6 replies
4 participants