Page 11 sur 12
Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain
Publié : 03 févr. 2024, 18:41
par lost
Hello,
Pour ma part j'interroge de Lua via:
Code : Tout sélectionner
local function getUrlJson(url)
config = assert(io.popen('curl --retry 1 --connect-timeout 2 -m 4 \"'..url..'\"'))
tempo = config:read('*all')
config:close()
jsonOut = json:decode(tempo)
return(jsonOut)
end
Si je teste avec la commande curl de cette fonction c'est aussi la foire ce soir:
{"PARAM_NB_J_BLANC":20,"PARAM_NB_J_ROUGE":9,"PARAM_NB_J_BLEU":183}
{"PARAM_NB_J_BLANC":19,"PARAM_NB_J_ROUGE":9,"PARAM_NB_J_BLEU":181}
{"PARAM_NB_J_BLANC":19,"PARAM_NB_J_ROUGE":9,"PARAM_NB_J_BLEU":181}
Niveau historique de mon device text combiné couleurs/comptes, on voit qu'il y a eu bien des gags ces derniers jours:

- tempo.jpg (33.03 Kio) Consulté 2506 fois
J'avais surveillé au début et c'était bon. J'espère que les couleurs J/J1 reportées sont OK par compte, car cela va faire cher le gag. Si qqun ayant cela via téléinfo peut confirmer qu'au moins de ce côté c'est bon au vu de la capture ci dessus? Merci!
EDIT: Avec l'url couleur, sur date de ce jour c'est stable sur qq réponses mais celle d'hier, Yoloooo: Ca retourne 1 fois sur 3 des NON_DEFINI au lieu des couleurs passées...

Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain
Publié : 03 févr. 2024, 18:55
par Keros
Le problème n'est pas seulement chez moi, merci Lost.
Pour les couleurs de jour, cela correspond à leur site :
https://particulier.edf.fr/fr/accueil/c ... -jour.html# et c'est aussi ce que j'ai eu via la téléinfo.
Ce que je n'arrive pas à expliquer, c'est pourquoi quand je lance l'appel API via le navigateur, je n'ai jamais eu d'erreur.
J'essaierai de faire une recherche sur internet pour voir si d'autres ont rencontré le même souci.
Edit : Je n'ai pas trouvé d'autres cas sur internet. Je vais revenir à ce que je faisais avant : compter moi-même les jours restants.
Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain
Publié : 04 févr. 2024, 07:28
par lost
Keros a écrit : 03 févr. 2024, 18:55
Ce que je n'arrive pas à expliquer, c'est pourquoi quand je lance l'appel API via le navigateur, je n'ai jamais eu d'erreur.
Pour le navigateur, il peut y avoir l'effet cache dont ils usent et abusent: 1 requête initiale et plus rien derrière, ils recrachent juste l'info initiale qui ne bouge alors pas.
Quand j'avais ajouté cette info, j'avais pour ma part juste constaté que le compteur correspondant à la couleur du lendemain était décrémenté au moment ou la MAJ était faite peu après 11h: Le lendemain était déjà décompté en fait et on pouvait donc avoir une instabilité d'1j sur le seul compteur de la couleur à venir, entre avant et après la MAJ.
C'est pourquoi mon device text n'est renseigné que quand la couleur lendemain est sortie du NON_DEFINI, afin d'avoir toujours une prise du décompte courant après la MAJ et une info cohérente avant ces problèmes.
On peut en effet tenir le décompte personnel, mais il suffit alors d'un raté dans la MAJ pour se retrouver décalé. Je vais laisser ainsi pour le moment pour ma part, on verra s'ils corrigent. Et mettre leur appli débilophone à la con pour avoir l'info couleur lendemain, même si de ce côté ça semble fiable (pour la date du jour au moins), de 2 manières vu que j'ai pas de téléinfo.
Dans mon log on voit que ca cloche dès jeudi 1er, avec le jour blanc du lendemain non décompté et des infos décompte (bleu/blanc/rouge) restants inchangées vs mercredi 31... Le lendemain les 2 sont décomptés d'un coup et samedi c'est le pompon avec bleu/blanc qui montent de 2 et 5 jours... pour une info de décompte, oupsss!
Un device text semble limité à 16 jours et ça va pas plus loin histoire de voir si avant c'était tout bon ou pas.
Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain
Publié : 11 déc. 2024, 13:57
par bartras
Bonjour à tous,
Depuis un moment, le script LUA pour avoir la couleur du jour ne fonctionne plus.
Je viens de m'en apercevoir et je pense que c'est l'adresse qui a du changer mais après avoir fait des recherches sur le net je ne trouve pas :/
Voici le message d'erreur dans le log domoticz :
Code : Tout sélectionner
2024-12-10 11:50:00.557 Error: EventSystem: in 5_Couleur_EDF: /home/pi/domoticz/scripts/lua/JSON.lua:1348: /home/pi/domoticz/scripts/lua/JSON.lua:836: can't parse JSON at byte 1 of: RESTEASY003210: Could not find resource for full path: https://particulier.edf.fr/services/rest/referentiel/searchTempoStore?dateRelevant=2024-12-10
Et voici le code LUA que j'utilise, je m'étais inspiré de ce qui avait été fait ici.
Code : Tout sélectionner
commandArray = {}
time = os.date("*t") -- put the time/date table in variable time
local heure_execution = 11
local minute_execution = 50
local heure_execution1 = 1
local minute_execution1 = 1
local ttidx = 82
if (time.hour==heure_execution) and time.min==minute_execution or (time.hour==heure_execution1) and time.min==minute_execution1 then
print ("Tempo");
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()
--https://www.domoticz.com/wiki/Lua_-_json.lua
--https://easydomoticz.com/forum/viewtopic.php?t=9015&start=20
local today=tostring(os.date("%Y-%m-%d"))
local config=assert(io.popen('curl \"https://particulier.edf.fr/services/rest/referentiel/searchTempoStore?dateRelevant='..today..'\"'))
local tempo = config:read('*all')
-- print (location)
--modèle exemple {"couleurJourJ":"TEMPO_ROUGE","couleurJourJ1":"TEMPO_ROUGE"}
config:close()
local jsonTempo = json:decode(tempo)
--print (jsonTempo.couleurJourJ)
--print (jsonTempo.couleurJourJ1)
--local DateJour=tostring(os.date("%A"))
--local DateJourPlus1 = tostring(os.date('%A', (os.time()+ 60*60*24)))
--commandArray['UpdateDevice'] = ttidx.."|0|"..DateJour..":"..string.gsub(jsonTempo.couleurJourJ, "TEMPO_", "").." - "..DateJourPlus1..":"..string.gsub(jsonTempo.couleurJourJ1, "TEMPO_", "")
commandArray['UpdateDevice'] = ttidx.."|0| Aujourd'hui: "..string.gsub(jsonTempo.couleurJourJ, "TEMPO_", "").." - Demain: "..string.gsub(jsonTempo.couleurJourJ1, "TEMPO_", "")..""
end
return commandArray
Est ce que quelqu'un pourrait m'aider à trouver la nouvelle url à mettre ?
Surtout avec tous les jours rouges qui tombent en ce moment
Merci.
Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain
Publié : 11 déc. 2024, 15:46
par oeildefeu
Salut,
voici mon code qui fonctionne avec une nouvelle URL:
Code : Tout sélectionner
commandArray = {}
local heure_execution = 11
local minute_execution = 10
local minute_execution2 = 50
local id_device_text = 816 --device id ou est stocké l'info des jours Tempo
local nom_device_text = "Tempo" --device ou est stocké l'info des jours Tempo
local Text_sensor_update = ""
local alert_bleu = false
local alert_blanc = true
local alert_rouge = true
local debug = false
local t1 = os.time()
local s = otherdevices_lastupdate[nom_device_text]
local string_device = otherdevices_svalues[nom_device_text]
if debug then print ('Valeur actuelle: '..string_device) end
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = (os.difftime (t1, t2))
if debug then print(difference) end
time = os.date("*t") -- put the time/date table in variable time
if ( time.hour==heure_execution and (time.min==minute_execution or time.min==minute_execution2) or (difference > 88200 and time.min==30) or string.find(string_device, "NON_DEFINI") or debug == true) then
json = (loadfile "scripts/lua/JSON.lua")()
local config=assert(io.popen('curl -X \'GET\' \'https://www.api-couleur-tempo.fr/api/jourTempo/today\' -H \'accept: application/json\''))
local tempo = config:read('*all')
config:close()
if debug then print (tempo) end
local jsonTempo = json:decode(tempo)
if debug then print (jsonTempo.codeJour) end
couleurJourJ = jsonTempo.codeJour
if (couleurJourJ == 1) then
couleurJourJ = "BLEU"
elseif(couleurJourJ == 2) then
couleurJourJ = "BLANC"
elseif(couleurJourJ == 3) then
couleurJourJ = "ROUGE"
elseif(couleurJourJ == 0) then
couleurJourJ = "NON_DEFINI"
end
local config=assert(io.popen('curl -X \'GET\' \'https://www.api-couleur-tempo.fr/api/jourTempo/tomorrow\' -H \'accept: application/json\''))
local tempo = config:read('*all')
config:close()
if debug then print (tempo) end
local jsonTempo = json:decode(tempo)
if debug then print (jsonTempo.codeJour) end
couleurJourJ1 = jsonTempo.codeJour
if (couleurJourJ1 == 1) then
couleurJourJ1 = "BLEU"
elseif(couleurJourJ1 == 2) then
couleurJourJ1 = "BLANC"
elseif(couleurJourJ1 == 3) then
couleurJourJ1 = "ROUGE"
elseif(couleurJourJ1 == 0) then
couleurJourJ1 = "NON_DEFINI"
end
if debug then print (jsonTempo.couleurJourJ1) end
local DateJour=tostring(os.date("%A"))
local DateJourPlus1 = tostring(os.date('%A', (os.time()+ 60*60*24)))
daysFr = {Monday = "Lundi", Tuesday = "Mardi", Wednesday = "Mercredi", Thursday = "Jeudi", Friday = "Vendredi", Saturday = "Samedi", Sunday = "Dimanche"}
Text_sensor_update = daysFr[DateJour]..":"..couleurJourJ.." - "..daysFr[DateJourPlus1]..":"..couleurJourJ1
if(otherdevices_svalues[nom_device_text] ~= Text_sensor_update) then
commandArray['UpdateDevice'] = id_device_text.."|0|"..Text_sensor_update
if couleurJourJ1 == "ROUGE" and alert_rouge == true then
commandArray['SendNotification']='Tempo: Demain Rouge#Demain (à partir de 6h du matin) est annoncé comme un jour tempo ROUGE !'
elseif couleurJourJ1 == "BLANC" and alert_blanc == true then
commandArray['SendNotification']='Tempo: Demain Blanc#Demain (à partir de 6h du matin) est annoncé comme un jour tempo BLANC.'
elseif couleurJourJ1 == "BLEU" and alert_bleu == true then
commandArray['SendNotification']='Tempo: Demain Bleu#Demain (à partir de 6h du matin) est annoncé comme un jour tempo BLEU.'
end
end
end
return commandArray
Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain
Publié : 11 déc. 2024, 21:12
par Keros
Nous avons discuté de ce changement dans le sujet
MAJ Tempo EDF.
Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain
Publié : 13 déc. 2024, 15:01
par bartras
Merci oeildefeu, c'est tout bon grâce à ton code

Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain
Publié : 15 déc. 2024, 20:40
par oeildefeu
Et il y avait un bug : les notifications ne marchaient pas pour une erreur de nom de variable:
dans les tests de notification, il faut remplacer Jour1 par couleurJourJ1
J'ai corrigé mon post
Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain
Publié : 17 déc. 2024, 10:10
par lost
Hello,
Le script ne choppe pas l'info à la source (RTE) mais tant que cette alternative fonctionne pourquoi pas...
Par contre, au delà de conversions inutiles (chaines de caractères qui en sont déjà), la francisation des jours pique un peu! Il y a moyen de faire bien plus simple et efficace (surtout pour un langage totalement basé sur les tables) avec une simple table de conversion:
Code : Tout sélectionner
daysFr = {Monday = "Lundi", Tuesday = "Mardi", Wednesday = "Mercredi", Thursday = "Jeudi", Friday = "Vendredi", Saturday = "Samedi", Sunday = "Dimanche"}
local DateJour=os.date("%A")
print("Jour EN : "..DateJour.." / FR : "..daysFr[DateJour])
Ceci sauvé dans un fichier date.lua et appelé via l'interpréteur (si on l'a installé d'un "apt get lua", au delà de celui intégré à domoticz) donne ce jour:
lua date.lua
Jour EN : Tuesday / FR : Mardi
Je ne sais pas si c'est chatGPT qui a proposé ta version, mais si c'est le cas il semble partisan du "pourquoi faire simple quand on peut faire compliqué"
Le même principe peut bien entendu être appliqué aux codes couleur.
Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain
Publié : 17 déc. 2024, 15:55
par oeildefeu
Salut,
J'ai tenté de bidouiller un truc qui récupère chez RTE mais pas réussi. Donc j'ai pris ce site qui me semblait pas mal et facile à récupérer.
Merci pour la suggestion de la table de jour. Et non pas besoin de chatgpt pour faire ce niveau de simplicité

Oui c'est plus de ligne de code mais ma réflexion/recherche était "comment modifier une chaine de caractère?" et donc la réponse était à base de string.gsub(). C'était effectivement sale de réutiliser ça 14 fois mais sur le moment, mon temps étant compté pour remettre en marche ce script, j'ai pas cherché plus loin/une autre solution ! tout simplement !