Un embryon de script de test Lua (brut/hors intégration domoticz) pour la partie récupération de l'info, testé avec l'interpréteur Lua installé par ailleurs sur ma Debian 12 sur mon PC:
Code : Tout sélectionner
jsonLib = assert(loadfile("JSON.lua"))
json = (jsonLib)()
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
-- Build tempo season string (tempo year change at 1st of september) for RTE url
now = os.time()
nowDate = os.date("*t", now)
if (nowDate.month >= 1) and (nowDate.month <= 8) then
tempoSeason=tostring(nowDate.year - 1)..'-'..tostring(nowDate.year)
else
tempoSeason=tostring(nowDate.year)..'-'..tostring(nowDate.year + 1)
end
print("Annee Tempo en cours : "..tempoSeason.."\n") -- DEBUG
-- Get all data for current tempo season
tempoSeasonURL = 'https://www.services-rte.com/cms/open_data/v1/tempo?season='..tempoSeason
tempoSeasonData = getUrlJson(tempoSeasonURL)
print("\nValues :") -- DEBUG
print(json:encode_pretty(tempoSeasonData.values))
tempoCount = {blue=0, white=0, red=0}
tempoColor = {J="UNDEFINED", J1="UNDEFINED"}
tempoDate = {J=tostring(os.date("%Y-%m-%d", now)), J1=tostring(os.date("%Y-%m-%d", now + 86400))}
print("\nDates J/J1 : "..tempoDate.J.."/"..tempoDate.J1)
print("\nParcours table...")
for k,v in pairs(tempoSeasonData.values) do
-- Calculate current tempo year colours count
if v == "BLUE" then tempoCount.blue = tempoCount.blue + 1
elseif v == "WHITE" then tempoCount.white = tempoCount.white + 1
elseif v == "RED" then tempoCount.red = tempoCount.red + 1
end
-- Get J/J1 colors
if k == tempoDate.J then tempoColor.J = v
elseif k == tempoDate.J1 then tempoColor.J1 = v
end
print(k.." = "..v) -- DEBUG
end
print("\nTotaux Bleu/Blanc/Rouge : "..tempoCount.blue.."/"..tempoCount.white.."/"..tempoCount.red)
print("Tempo J/J1 : "..tempoColor.J.."/"..tempoColor.J1)
A placer dans un répertoire de test dans un fichier testTempoRTE.lua dans lequel on aura aussi recopié la lib JSON incluse avec Domoticz sous ~/domoticz/scripts/lua/JSON.lua qui sert à construire la table Lua utilisée à partir du JSON de la saison en cours récupéré chez RTE.
Il suffit ensuite, de ce répertoire, d'executer ce source à travers l'interpréteur lua du système (après avoir fait, par exemple, "sudo apt install lua"):
Code : Tout sélectionner
$ lua testTempoRTE.lua
Annee Tempo en cours : 2024-2025
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 212 0 212 0 0 508 0 --:--:-- --:--:-- --:--:-- 508
Values :
{
"2024-09-01": "BLUE",
"2024-09-01-fallback": "false",
"2024-09-02": "BLUE",
"2024-09-02-fallback": "false",
"2024-09-03": "BLUE",
"2024-09-03-fallback": "false",
"2024-09-04": "BLUE",
"2024-09-04-fallback": "false"
}
Dates J/J1 : 2024-09-03/2024-09-04
Parcours table...
2024-09-03-fallback = false
2024-09-04 = BLUE
2024-09-03 = BLUE
2024-09-01 = BLUE
2024-09-01-fallback = false
2024-09-02-fallback = false
2024-09-04-fallback = false
2024-09-02 = BLUE
Totaux Bleu/Blanc/Rouge : 4/0/0
Tempo J/J1 : BLUE/BLUE
On récupère au milieu de ces affichages pour le debug les totaux de la saison tempo en cours et les couleurs J/J1 comme on les avait via EDF (mais en anglais).
J'intègrerais ce proto quick&dirty à mon script existant, utilisant l'interpréteur et le système de scripts de Domoticz, quand j'aurais mieux ciblé l'heure de bascule avec qq essais manuels ces prochains jours (tant que l'on aura Tempo J1 à "UNDEFINED", sans doute avant 10h du matin ou un peu plus tôt, c'est que l'info du lendemain n'est pas encore là).