Page 6 sur 6

Re: API ecowatt RTE

Publié : 01 nov. 2025, 10:30
par TroisSix
Hello,
Je ne sais pas vous, mais j'ai parfois l'erreur avec dz.openURL:

Code : Tout sélectionner

Error: Error opening url: https://digital.iservices.rte-france.com/open_api/ecowatt/v5/signals
Error: dzVents: [ecowatt-15m]: HTTP/1.1 response: 500 ==>> Internal Server Error 
Je me demandais si ce n'était pas possible d'avoir une gestion d'erreur pour le openURL et d'ignorer ces rares fois où ça déconne? ou ignorer complet les erreurs avec openurl?
Dsl si la question a déjà été posée ^^
Merci bcp.

Re: API ecowatt RTE

Publié : 01 nov. 2025, 21:22
par Keros
Tu dois pouvoir modifier ton script pour que si cette ligne de log doit sortir, tu n'affiches rien.

Après, c'est aussi le risque que ton script tourne sans t'alerter sur un problème et que tu t'en rendes compte plusieurs jours après.

Re: API ecowatt RTE

Publié : 04 nov. 2025, 20:56
par TroisSix
J'ai tenté ça sans succès:

Code : Tout sélectionner

local status, err = pcall(function()
  dz.openURL({
    url = "https://digital.iservices.rte-france.com/open_api/ecowatt/v5/signals",
    method = 'GET',
    headers =  { ['Content-Type'] = 'application/soap+xml;charset=UTF-8', ['Authorization'] = 'Bearer '..dz.data.access_token.get(1).data},
    callback = callbackData, } )
end)
if not status then
  Display_Message('Error opening url rte...')
end
L'idée c'était d'éviter une erreur dans les logs, mais d'avoir plutôt un simple message :-)
Je vois d'ailleurs que today ça fail toutes les 2H.
Si quelqu'un a une idée pour améliorer ce code je suis preneur ^^
Merci.

Re: API ecowatt RTE

Publié : 04 nov. 2025, 21:06
par Keros
Non, c'est au niveau du item.isHTTPResponse qu'il faut regarder si tu peux gérer l'erreur. Regarde avec

Code : Tout sélectionner

if item.ok then

Re: API ecowatt RTE

Publié : 07 nov. 2025, 11:52
par TroisSix
Justement j'ai ce code:

Code : Tout sélectionner

elseif (item.isHTTPResponse) then
  if (item.trigger == callbackAuth) then
     ...
  elseif (item.trigger == callbackData) then
      if (item.statusCode == 200) then
      ...
  end
Donc "item.statusCode == 200" c'est pareil que "if item.ok" ?
Mais pour moi l'erreur c'est au moment de la requete (dz.openURL?) qu'il faut la gérer,
ou alors j'ai mal compris le fonctionnement avec dz.openURL et le callback ^^

Je voudrais juste éviter que ça me sorte des erreurs dans les logs pour juste ce script, et les rempalcer par de "l'info".
Merci :-)

Re: API ecowatt RTE

Publié : 07 nov. 2025, 16:25
par Keros
Le principe du dz.openURL est de déclencher l'ouverture d'un lien web. Le CallBack est le nom que tu donnes aux données en retour.

Le httpResponses = {"Nom du callback"} permet de relancer le script avec la variable item contenant le retour de l'ouverture du lien web. Et c'est, dans ce deuxième temps, que tu dois pouvoir vérifier les codes erreurs.

Re: API ecowatt RTE

Publié : 09 nov. 2025, 18:30
par TroisSix
Merci Keros pour ton retour ^^

En fait, j'ai déjà une gestion d'erreurs derrière le

Code : Tout sélectionner

elseif (item.trigger == callbackData) then
        if (item.statusCode == 200) then
            ...
        elseif (item.statusCode == 429) then
            ...
        elseif (item.statusCode == 500) then
            ...
        else
            ...
Mais jamais il ne tombe dans le else quand il fail à l'exécution du dz.openURL quand l'url est unreachable:

Code : Tout sélectionner

Error: Error opening url: https://digital.iservices.rte-france.com/open_api/ecowatt/v5/signals
Error: dzVents: [ecowatt-15m]: HTTP/1.1 response: 500 ==>> Internal Server Error
J'ai dû rater qqchose :?

Re: API ecowatt RTE

Publié : 09 nov. 2025, 22:51
par Keros
Tu as mis des "prints" pour débuger ton script et savoir quelles sont les valeurs des variables au moment des conditions ?

Re: API ecowatt RTE

Publié : 09 nov. 2025, 23:50
par Neutrino
Alors pour moi, c'est dzvent qui affiche directement l'erreur dans les log en plus du log.error
Donc pas moyen de les supprimer.

Re: API ecowatt RTE

Publié : 10 nov. 2025, 09:13
par TroisSix
@Keros, oui j'ai des prints, mais ils ne s'affichent pas car c'est dzvents qui remonte l'erreur comme le confirme Neutrino (merci, je pensais m'être mal exprimé ^^)
Donc comme c'est bien le dz.openURL qui fait remonter une erreur dzvents, d'où l'idée d'utiliser pcall car si j'ai bien compris ça doit pouvoir gérer les erreurs normalement? Je l'utilise très certainement mal ou il y a d'autres solutions? :D