Page 10 sur 23

Re: MAJ Tempo EDF

Publié : 19 nov. 2024, 22:24
par Alain78
Bonsoir salinois,

Il n'y a pas de widget HP-HC, j'ai 1 icône HP et HC pour chaque couleur. Bleu HP, Bleu HC, etc
Si tu ne veux pas gérer cela il suffit de renseigner dans le script la même icone pour le HP et le HC pour chaque couleur. Pas nécessaire pour le gris.

Bonne soirée.

Re: MAJ Tempo EDF

Publié : 20 nov. 2024, 09:49
par salinois
Bonjour,

OK merci Alain78;
j'ai supprimé le widget HP-HC, et je vais modifier mes icônes perso pour faire mieux apparaitre le HC et HP.

a+

salinois

Re: MAJ Tempo EDF

Publié : 20 nov. 2024, 13:42
par Sebastiii
Bonjour,

Déjà merci pour ce fil, mais franchement, je suis vraiment un noob, car je n'arrive pas à faire fonctionner ce nouveau script, j'utilisais un ancien, mais qui ne fonctionne plus différente URL que je comprends.

Merci à Salinois qui avait commencé un tuto pour les nuls, mais qui ne fonctionne pas non plus.

Du coup, c'est vrai que c'est difficile à suivre, il y a des scripts dans tous les sens, avec des liens pour aller là, de certaines modifs par-ci par-là, c'est vrai que c'est compliqué.

De ce que je comprends, j'ai créé 3 scripts dzVents dans domoticz en y recopiant ce que j'ai trouvé sur ce fil :

Nommé : Tempo_Script RTE_TEST

Code : Tout sélectionner

--[[Récupération des informations TEMPO de RTE. Couleurs Bleu, Blanc ou Rouge
Couleur du jour, et nombre de jours restants pour chaque couleur(BLEU, BLANC et ROUGE).
Inspiré du script de "Lost" ici https://easydomoticz.com/forum/viewtopic.php?p=122000#p122000 version de septembre 2024.
--------------------------------------------
------------ Variables à éditer ------------
--------------------------------------------
]]--
local urlTempoJoursRTE  = 'https://www.services-rte.com/cms/open_data/v1/tempo?season=' --- Nombre de jours restant pour chaque color
local scriptName        = 'script_time_Tempo_Couleur_RTE'
local scriptVersion     = '1.1'
local tempoCount        = {blue=0, white=0, red=0}
local coloursFR         = {BLUE = "BLEU", WHITE = "BLANC", UNDEFINED = "NON_DEFINI"}
local tempoColor        = {J="GRIS", J1="GRIS"} -- Couleur tempo sur jour J et J+1
local tempoDay          = {J="NON_DEFINI", J1="NON_DEFINI"} -- Jour Tempo J et J+1
local tempoSeason       = nil
local nbrTempoRouge     =  22  -- Nombre de jours Tempo ROUGE dans l'année.
local nbrTempoBlanc     =  43  -- Nombre de jours Tempo BLANC dans l'année.
local nbrTempoBleu      =  300 -- Nombre de jours Tempo BLEU dans l'année.
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------

return {
        on = {
            --timer =  { ' at 06:40', 'at 10:00-22:00 at *:40' }, 
            timer = { 'every minute' }, -- pour test
            system = { 'start' }, -- Pour execution en cas d'arret de plusieurs jours.
        	httpResponses = { scriptName } -- doit correspondre au "callback" passé par l'url à traiter.
         },
            logging =   {      level    =   domoticz.LOG_DEBUG,
                            -- level    =   domoticz.LOG_INFO,             -- Seulement un niveau peut être actif; commenter les autres
                            -- level    =   domoticz.LOG_ERROR,            -- Only one level can be active; comment others
                            -- level    =   domoticz.LOG_MODULE_EXEC_INFO,
                            marker = scriptName..' v'..scriptVersion },

	execute = function(domoticz, item)

        local nowDate     = domoticz.time -- Recupération heure du traitement.
        local TEMPOJ      = domoticz.variables('TempoJ') -- Variable Couleur TEMPO du jour.
        local TEMPOJ1     = domoticz.variables('TempoJ1') -- Variable Couleur TEMPO lu lendemain.
        local DateTempoJ  = domoticz.time.dateToDate(domoticz.time.rawDateTime,'yyyy-mm-dd hh:MM:ss','yyyy-mm-dd') -- Date du jour TEMPOJ
        local DateTempoJ1 = domoticz.time.dateToDate(domoticz.time.addDays(1).rawDateTime,'yyyy-mm-dd hh:MM:ss','yyyy-mm-dd') -- Date du jour TEMPOJ1

        -- Si traitement déjà réalisé et validé après 10h30.
	if (TEMPOJ1.value ~= "GRIS" and nowDate.hour > 10 and TEMPOJ1.lastUpdate.hoursAgo < 12) then  -- Test si le traitement apres 10h30 (validation RTE) est passé pour sortir.
	        return
	elseif TEMPOJ1.value == "GRIS" and nowDate.hour > 20 then  -- Test si aucune valeur récupérée durant la journée et alerte par email.
	        domoticz.notify("Alerte Tempo","Alerte pas de mise à jour de la couleur TEMPO pour demain", domoticz.PRIORITY_NORMAL)
        end

        -- Récupération saison tempo (démarrage au 1 er Septembre) pour url RTE.
        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
        domoticz.log("La saison tempo est: "..tempoSeason,domoticz.LOG_DEBUG)
        urlTempoJoursRTE = urlTempoJoursRTE..tempoSeason -- Mise à jour de l'url avec la saison Tempo. 
        domoticz.log("Url de récuperation des jours Tempo est: "..urlTempoJoursRTE,domoticz.LOG_DEBUG)
        
        if item.isTimer or item.isSystemEvent then
		domoticz.openURL({
                url = urlTempoJoursRTE,
		method = 'GET',
		headers = {["User-Agent"]= "Wget/1.20.3 (linux-gnu)",["Content-Type"]="application/json"},
		callback = scriptName, -- voir la reponse "httpResponses" à la suite.
		})

        elseif (item.isHTTPResponse) and (item.ok) then -- Traitement de la reponse à l'url chez RTE.
		   if (item.isJSON) then
                	local tempoSeasonData = domoticz.utils.fromJSON(item.data)
                	domoticz.log(tempoSeasonData, domoticz.LOG_DEBUG)
                	for k,v in pairs(tempoSeasonData.values) do
                    		-- Calcul du nombre de jours par couleur depuis le deput de la saison
                    		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 == DateTempoJ  then tempoColor.J  = v -- Récupération de la coucleur tempo du jour.
                    elseif k == DateTempoJ1 then tempoColor.J1 = v -- Récupération de la coucleur tempo du lendemain.
                    end
                end
            end
            tempoCount.blue = nbrTempoBleu - tempoCount.blue        -- nombre de jours BLEU restant pour la saison Tempo.
            tempoCount.white = nbrTempoBlanc - tempoCount.white     -- nombre de jours BLANC restant pour la saison Tempo.
            tempoCount.red = nbrTempoRouge - tempoCount.red         -- nombre de jours ROUGE restant pour la saison Tempo.
            tempoDay = {J = coloursFR[tempoColor.J], J1=coloursFR[tempoColor.J1]}   --Couleur des jours TEMPOJ et TEMPOJ1
            
            --- Update variables pour TEMPO RTE
            domoticz.variables('Tempo_J_Blanc').set(tempoCount.white)
            domoticz.variables('Tempo_J_Rouge').set(tempoCount.red)
            domoticz.variables('Tempo_J_Bleu').set(tempoCount.blue)
            domoticz.variables('TempoJ').set(tempoDay.J)
            domoticz.variables('TempoJ1').set(tempoDay.J1)
            
            domoticz.log("Nombre de jours bleu restant: "..tempoCount.blue, domoticz.LOG_DEBUG)
            domoticz.log("Nombre de jours blanc restant: "..tempoCount.white, domoticz.LOG_DEBUG)
            domoticz.log("Nombre de jours rouge restant: "..tempoCount.red, domoticz.LOG_DEBUG)
            domoticz.log("Couleur Tempo du jour: "..tempoDay.J, domoticz.LOG_DEBUG)
            domoticz.log("Couleur Tempo de demain: "..tempoDay.J1, domoticz.LOG_DEBUG)
        else
            domoticz.log('Réponse KO : '..item.statusText, domoticz.LOG_FORCE)            
        end
    end
}
Nommé : Tempo_HP-HC_TEST

Code : Tout sélectionner

--------------------------------------------
-- Changement des jours et HP - HC à 22h et 6h.
--------------------------------------------
local scriptName        = 'script_time_Tempo_HP-HC'
local scriptVersion     = '1.0'

return {
    on = {  
        --timer =     { 'at 05:55', 'at 22:07' },
        timer = { 'every minute' }, -- pour test
        system =    { 'start' },
        },

            logging =   {    level    =   domoticz.LOG_DEBUG,
                            -- level    =   domoticz.LOG_INFO,             -- Seulement un niveau peut être actif; commenter les autres
                            -- level    =   domoticz.LOG_ERROR,            -- Only one level can be active; comment others
                            -- level    =   domoticz.LOG_MODULE_EXEC_INFO,
 
            marker = scriptName..' v'..scriptVersion },

	execute = function(domoticz, item)

        local DateTempoJ = domoticz.time.dateToDate(domoticz.time.rawDateTime,'yyyy-mm-dd hh:MM:ss','yyyy-mm-dd')
        local Heure      = domoticz.time.dateToDate(domoticz.time.rawDateTime,'yyyy-mm-dd hh:MM:ss','hh')
        local TEMPOJ     = domoticz.variables('TempoJ') -- Variable Couleur TEMPO du jour.
        local TEMPOJ1    = domoticz.variables('TempoJ1') -- Variable Couleur TEMPO de demain.
        local TEMPOH     = domoticz.variables('Tempo_HP-HC') -- Variable HP-HC TEMPO.
        
        if item.isTimer then
            if Heure == "05" then -- Passage HP + changement de couleur TEMPO
                TEMPOH.set("HP")    -- Heure pleine
    			if TEMPOJ1.value == "ROUGE" then -- Aujourd'hui jour ROUGE
			        message = 'Aujourd\'hui : '..DateTempoJ..' La couleur TEMPO est: ROUGE'
        		    domoticz.notify("Alerte TEMPO jour ROUGE", message, domoticz.PRIORITY_EMERGENCY)
                    domoticz.variables('Color_Luxy').set("Rouge-Flash")
    			end
                TEMPOJ.set(TEMPOJ1.value)   -- passage de la couleur tempo avec celle de demain
                TEMPOJ1.set("GRIS") -- Mise à indéterminée pour la couleur du lendemain
            elseif Heure == "22" then -- Passage HC
                TEMPOH.set("HC") -- Heure creuse
            end
        elseif item.isSystemEvent then
            if (tonumber(Heure) >= 6 and tonumber(Heure) < 22) then
                TEMPOH.set("HP") -- Heure pleine
            else
                TEMPOH.set("HC") -- Heure creuse   
            end
        end
    end
} 
Nommé : Tempo_Widget_TEST

Code : Tout sélectionner

--[[ gestion des Icons sur les Widgets en fonction de leurs status
Couleur pour tempo:
    - GRIS ........... 110
    - Rouge .......... 107
    - Blanc .......... 101
    - Bleu  .......... 104
    - ROUGE HP ....... 109
    - Rouge HC ....... 108
    - Blanc HP ....... 103
    - Blanc HC ....... 102
    - Bleu HP  ....... 106
    - Bleu HC  ....... 105
    Tempo: 300 Jours Bleus (Tout au long de l’année) - 43 jours blancs (Tout au long de l’année, hors dimanche) - 22 jours rouges (Du 1er novembre au 31 mars, hors week-end et jours fériés).
--]]

local scriptName            = 'script_device_Change_Icone_Widget'
local scriptVersion         = ' 1.0'
local NbrJBleu              = 300 -- Tout au long de l’année
local NbrJBlanc             = 43  -- Tout au long de l’année, hors dimanche
local NbrJRouge             = 22  -- Du 1er novembre au 31 mars, hors week-end et jours fériés

return  {   
        on = {  
                variables = { 'TempoJ',             -- Couleur Tempo du jour.
                              'TempoJ1',            -- Couleurl Tempo du lendemain.
                              'Tempo_HP-HC' },
            },
        
            logging =   {   -- La section de journalisation facultative vous permet de remplacer le paramètre de journalisation globale de dzVents.
                    -- comme défini dans Configuration> Paramètres> Autre> Système d'événements> Niveau de journalisation dzVents. 
                    -- Cela peut être pratique lorsque vous voulez que ce script ait une journalisation de débogage étendue pendant que le reste de votre script s'exécute en mode silencieux. 
                    level = domoticz.LOG_DEBUG, -- domoticz.LOG_INFO, domoticz.LOG_MODULE_EXEC_INFO, domoticz.LOG_DEBUG or domoticz.LOG_ERROR, domoticz.LOG_FORCE,
                    marker  = scriptName..' v'..scriptVersion
                    },

    execute = function(domoticz, item)

        local function logWrite(str,level)
            domoticz.log(tostring(str),level or domoticz.LOG_DEBUG)
        end
        
        local function text_color(text,color) -- Fonction pour écriture du texte en fonction de la couleur TEMPO.
            if color == "ROUGE"  then text = '<FONT COLOR=#FF0000>' .. text .. '</FONT>' end
            if color == "BLEU"   then text = '<FONT COLOR=#0000FF>' .. text .. '</FONT>' end
            if color == "GRIS"   then text = '<FONT COLOR=#708090>' .. text .. '</FONT>' end
            if color == "BLANC"  then text = '<FONT COLOR=#000000>' .. text .. '</FONT>' end
            return text
        end

        -- Variables et devices pour traitement des jours Tempo.
        local TEMPOJ  = domoticz.devices('Couleur Tempo Aujourd\'hui')
        local TEMPOJ1 = domoticz.devices('Couleur Tempo Demain')
        local TEMPOH  = domoticz.variables('Tempo_HP-HC') -- Variable HP-HC TEMPO.

	if item.isVariable then
            -------------------------
            -- Icones pour TEMPO J --        
            -------------------------
            if item.name == "TempoJ" then
                local icons = 110
                if item.value == "ROUGE" then
                    if TEMPOH.value == "HP" then
                        icons = 109
                    else
                        icons = 108
                    end
                    NbrJ = NbrJRouge
                    mode = item.value..'-'..TEMPOH.value
                    NbJours = domoticz.variables('Tempo_J_Rouge').value
                elseif item.value == "BLANC" then
                    if TEMPOH.value == "HP" then
                        icons = 103
                    else
                        icons = 102
                    end
                    NbrJ = NbrJBlanc
                    mode = item.value..'-'..TEMPOH.value
                    NbJours = domoticz.variables('Tempo_J_Blanc').value
                elseif item.value == "BLEU" then
                    if TEMPOH.value == "HP" then
                        icons = 106
                    else
                        icons = 105
                    end
                    NbrJ = NbrJBleu
                    mode = item.value..'-'..TEMPOH.value
                    NbJours = domoticz.variables('Tempo_J_Bleu').value
                else
                    icons = 110
                    mode = "GRIS"
                end
                if mode == "GRIS" then --- Couleur Indéfinie
                    texte = text_color('Pas de données communiquées. ',mode)
                else
                    texte = text_color('Nbr de jours restants: '..NbJours..'/'..NbrJ..'<br>'..'Couleur TEMPO Aujourd\'hui: '..item.value,item.value)
                end
                TEMPOJ.updateText(texte)
                TEMPOJ.setIcon(tonumber(icons))
            ----------------------
            -- Icones pour TEMPO J + 1 --        
            ----------------------
            elseif item.name == "TempoJ1" then
                
                local icons = 110
                if item.value == "ROUGE" then
                    icons = 107
                    NbrJ = NbrJRouge
                    mode = item.value
                    NbJours = domoticz.variables('Tempo_J_Rouge').value
                elseif item.value == "BLANC" then
                    icons = 101
                    NbrJ = NbrJBlanc
                    mode = item.value
                    NbJours = domoticz.variables('Tempo_J_Blanc').value
                elseif item.value == "BLEU" then
                    icons = 104
                    NbrJ = NbrJBleu
                    mode = item.value
                    NbJours = domoticz.variables('Tempo_J_Bleu').value
                else
                    icons = 110
                    mode = "GRIS"
                end
                if mode == "GRIS" then --- Couleur Indéfinie
                    texte = text_color('Pas de données communiquées. ',mode)
                else
                    texte = text_color('Nbr de jours restants: '..NbJours..'/'..NbrJ..'<br>'..'Couleur TEMPO demain: '..item.value,item.value)
                end
                TEMPOJ1.updateText(texte)
                TEMPOJ1.setIcon(tonumber(icons))
            end
        end
    end
}
Créé des devices dummy :

Code : Tout sélectionner

Couleur Tempo Aujourd'hui et Couleur Tempo Demain
Créé des variables :

Code : Tout sélectionner

Tempo_HP-HC   Entier
Tempo_J_Blanc Entier
Tempo_J_Bleu  Entier
Tempo_J_Rouge Entier
TempoJ        Chaine
TempoJ1       Chaine
Au niveau des timers, j'ai utilisé ce code :

Code : Tout sélectionner

timer = { 'every minute' }, -- pour test
Pour lancer le script toutes les minutes afin de voir le résultat, configurer en Debug mais ça ne fonctionne pas et si je regarde l'URL du script, j'ai une erreur "404"
Alain78 parle d'une version 1.1 que je n'ai pas trouvé :(

Sinon les logs que j'ai :

Code : Tout sélectionner

2024-11-20 13:19:28.085 Status: dzVents: Write file: /opt/domoticz/userdata/scripts/dzVents/generated_scripts/Tempo_HP-HC_TEST.lua
2024-11-20 13:19:28.085 Status: dzVents: Write file: /opt/domoticz/userdata/scripts/dzVents/generated_scripts/Tempo_Script RTE_TEST.lua
2024-11-20 13:19:28.085 Status: dzVents: Write file: /opt/domoticz/userdata/scripts/dzVents/generated_scripts/Tempo_Widget_TEST.lua
2024-11-20 13:20:02.124 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:20:02.125 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:20:02.126 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:20:02.126 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script RTE_TEST
2024-11-20 13:21:02.327 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:21:02.329 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:21:02.329 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:21:02.330 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script RTE_TEST
2024-11-20 13:22:02.107 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:22:02.108 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:22:02.108 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:22:02.109 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script RTE_TEST
2024-11-20 13:23:02.098 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:23:02.100 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:23:02.101 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:23:02.101 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script RTE_TEST
2024-11-20 13:24:02.089 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:24:02.090 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:24:02.090 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:24:02.090 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script RTE_TEST
2024-11-20 13:25:00.339 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:25:00.340 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:25:00.341 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:25:00.341 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script RTE_TEST
2024-11-20 13:26:02.108 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:26:02.111 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:26:02.111 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:26:02.112 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script RTE_TEST
2024-11-20 13:27:02.109 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:27:02.111 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:27:02.112 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:27:02.112 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script RTE_TEST
2024-11-20 13:28:02.084 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:28:02.086 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:28:02.086 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:28:02.086 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script RTE_TEST
2024-11-20 13:29:02.127 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:29:02.129 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:29:02.129 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:29:02.130 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script RTE_TEST
2024-11-20 13:30:02.470 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:30:02.471 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:30:02.471 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:30:02.472 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script RTE_TEST
2024-11-20 13:31:02.106 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:31:02.107 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:31:02.107 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:31:02.107 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script RTE_TEST
2024-11-20 13:32:02.102 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:32:02.103 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:32:02.104 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:32:02.104 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script RTE_TEST
2024-11-20 13:33:02.119 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:33:02.120 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:33:02.120 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:33:02.121 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script RTE_TEST
2024-11-20 13:34:02.169 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:34:02.170 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:34:02.170 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:34:02.170 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script RTE_TEST
2024-11-20 13:35:02.116 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:35:02.118 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:35:02.118 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:35:02.119 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script RTE_TEST
2024-11-20 13:36:02.150 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Start internal script: Tempo_HP-HC_TEST:, trigger: "every minute"
2024-11-20 13:36:02.151 Status: dzVents: Info: script_time_Tempo_HP-HC v1.0: ------ Finished Tempo_HP-HC_TEST
2024-11-20 13:36:02.151 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Start internal script: Tempo_Script RTE_TEST:, trigger: "every minute"
2024-11-20 13:36:02.152 Status: dzVents: Info: script_time_Tempo_Couleur_RTE v1.1: ------ Finished Tempo_Script 
Voila, je pense que l'url n'est pas la bonne déja et surement le script aussi.
Dans l'ancien script, je pouvais envoyer un email lors du changement de type de journée, on dirait que le script n'utilise plus cette fonction, lorsque que ça fonctionnera, je pense que je pourrais rajouter la ligne quelque part mais pour ça il faut que ce soit un peu plus clair dans ma tete et surtout savoir ou trouver les infos à un seul endroit :)

Merci.

Re: MAJ Tempo EDF

Publié : 20 nov. 2024, 14:08
par Alain78
Bonjour Sebastiii,

Le script 1.1 est ici: viewtopic.php?p=122438#p122438
c'est le script principal qui a été mis à jours. C'est mentionné au début du script.
Si tu regardes tes logs, tu as bien la version 1.1 qui apparait.

Pour les tests l'exécution toute les minutes est complétement inutile. Les mises à jours des widgets ce font sur un changement d'état d'une variable.
Ce sont tes variables qu'il faut regarder si elles sont à jours et l'heure de la dernière modification.

Et pour l'url si tu avais regardé le script tu aurais pu voir :

Code : Tout sélectionner

 urlTempoJoursRTE = urlTempoJoursRTE..tempoSeason
Aujourd'hui tempoSeason =2024-2025

Regarde un peu le script avant de faire du copier/coller, cela te permettra de l'adapter à ton besoin et comprendre le fonctionnement de celui-ci

Cordialement

Alain

Re: MAJ Tempo EDF

Publié : 20 nov. 2024, 14:37
par Datawolf
Keros a écrit : 12 nov. 2024, 12:36 A mon avis, il n'est pas nécessaire de suivre le nombre de jours bleu restant. Les étés se finiront toujours en bleu et il ne faut pas oublié que les années ont 365 ou 366 jours > c'est le nombre de jours bleu qui s'adapte ;)
Ca permet au moins de vérifier, en tout début de saison, que l'API fonctionne. ;)

Re: MAJ Tempo EDF

Publié : 20 nov. 2024, 14:43
par Datawolf
Salut,

A partir de quelle heure la couleur du lendemain est-elle disponible ?

@+

Re: MAJ Tempo EDF

Publié : 20 nov. 2024, 15:02
par Alain78
Bonjour,

L'heure est publiée à 6h30 mais la valeur officielle est à 10h30.
C'est pris en compte dans le script.

Cordialement
Alain

Re: MAJ Tempo EDF

Publié : 20 nov. 2024, 15:08
par Datawolf
Moi qui la prenais à 16h30 !

Je modifie ça tout de suite.

Merci !

Re: MAJ Tempo EDF

Publié : 20 nov. 2024, 15:17
par manuloup
Merci pour ton explication.

J'ai donc crée le script lua avec le contenu et j'ai ajouté les variables dans la partie user.

Comment intégrer les widgets ensuite ?

Je ne fais jamais de LUA, en règle générale je fais tout en shell script.

Les 2 widgets que tu montres ensuite m'iraient parfaitement.

Merci pour ton aide.

Alain78 a écrit : 15 oct. 2024, 08:14 Bonjour,

J'utilise depuis plusieurs année l'API officielle de RTE pour les jours Tempo, mais depuis l’arrêt des infos sur le site EDF pour récupérer le nombre de jours Tempo restant, je ne peux plus traiter ces jours Tempo. J'ai pu voir le dernier script de @lost qui m'a poussé à le rependre et à le modifier pour avoir un seul script qui gère l'ensemble. je vous le partage pour ceux qui sont intéressés.
Merci à @lost pour ces idées et certaines méthodes que je n'utilise pas.

1ere étape créer les variables suivantes si non existantes:
Variables pour script Temp RTE.jpg

Le script (Version 1.1): normalement les commentaires devraient suffire.

Code : Tout sélectionner

--[[Récupération des informations TEMPO de RTE. Couleurs Bleu, Blanc ou Rouge
Couleur du jour, et nombre de jours restants pour chaque couleur(BLEU, BLANC et ROUGE).
Inspiré du script de "Lost" ici https://easydomoticz.com/forum/viewtopic.php?p=122000#p122000 version de septembre 2024.
--------------------------------------------
------------ Variables à éditer ------------
--------------------------------------------
]]--
local urlTempoJoursRTE  = 'https://www.services-rte.com/cms/open_data/v1/tempo?season=' --- Nombre de jours restant pour chaque color
local scriptName        = 'script_time_Tempo_Couleur_RTE'
local scriptVersion     = '1.1'
local tempoCount        = {blue=0, white=0, red=0}
local coloursFR         = {BLUE = "BLEU", WHITE = "BLANC", UNDEFINED = "NON_DEFINI"}
local tempoColor        = {J="GRIS", J1="GRIS"} -- Couleur tempo sur jour J et J+1
local tempoDay          = {J="NON_DEFINI", J1="NON_DEFINI"} -- Jour Tempo J et J+1
local tempoSeason       = nil
local nbrTempoRouge     =  22  -- Nombre de jours Tempo ROUGE dans l'année.
local nbrTempoBlanc     =  43  -- Nombre de jours Tempo BLANC dans l'année.
local nbrTempoBleu      =  300 -- Nombre de jours Tempo BLEU dans l'année.
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------

return {
        on = {  timer =  { ' at 06:40', 'at 10:00-22:00 at *:40' }, 
            system = { 'start' }, -- Pour execution en cas d'arret de plusieurs jours.
        	httpResponses = { scriptName } -- doit correspondre au "callback" passé par l'url à traiter.
         },
            logging =   {   -- level    =   domoticz.LOG_DEBUG,
                            -- level    =   domoticz.LOG_INFO,             -- Seulement un niveau peut être actif; commenter les autres
                               level    =   domoticz.LOG_ERROR,            -- Only one level can be active; comment others
                            -- level    =   domoticz.LOG_MODULE_EXEC_INFO,
                            marker = scriptName..' v'..scriptVersion },

	execute = function(domoticz, item)

        local nowDate     = domoticz.time -- Recupération heure du traitement.
        local TEMPOJ      = domoticz.variables('TempoJ') -- Variable Couleur TEMPO du jour.
        local TEMPOJ1     = domoticz.variables('TempoJ1') -- Variable Couleur TEMPO lu lendemain.
        local DateTempoJ  = domoticz.time.dateToDate(domoticz.time.rawDateTime,'yyyy-mm-dd hh:MM:ss','yyyy-mm-dd') -- Date du jour TEMPOJ
        local DateTempoJ1 = domoticz.time.dateToDate(domoticz.time.addDays(1).rawDateTime,'yyyy-mm-dd hh:MM:ss','yyyy-mm-dd') -- Date du jour TEMPOJ1

        -- Si traitement déjà réalisé et validé après 10h30.
	if (TEMPOJ1.value ~= "GRIS" and nowDate.hour > 10 and TEMPOJ1.lastUpdate.hoursAgo < 12) then  -- Test si le traitement apres 10h30 (validation RTE) est passé pour sortir.
	        return
	elseif TEMPOJ1.value == "GRIS" and nowDate.hour > 20 then  -- Test si aucune valeur récupérée durant la journée et alerte par email.
	        domoticz.notify("Alerte Tempo","Alerte pas de mise à jour de la couleur TEMPO pour demain", domoticz.PRIORITY_NORMAL)
        end

        -- Récupération saison tempo (démarrage au 1 er Septembre) pour url RTE.
        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
        domoticz.log("La saison tempo est: "..tempoSeason,domoticz.LOG_DEBUG)
        urlTempoJoursRTE = urlTempoJoursRTE..tempoSeason -- Mise à jour de l'url avec la saison Tempo. 
        domoticz.log("Url de récuperation des jours Tempo est: "..urlTempoJoursRTE,domoticz.LOG_DEBUG)
        
        if item.isTimer or item.isSystemEvent then
		domoticz.openURL({
                url = urlTempoJoursRTE,
		method = 'GET',
		headers = {["User-Agent"]= "Wget/1.20.3 (linux-gnu)",["Content-Type"]="application/json"},
		callback = scriptName, -- voir la reponse "httpResponses" à la suite.
		})

        elseif (item.isHTTPResponse) and (item.ok) then -- Traitement de la reponse à l'url chez RTE.
		   if (item.isJSON) then
                	local tempoSeasonData = domoticz.utils.fromJSON(item.data)
                	domoticz.log(tempoSeasonData, domoticz.LOG_DEBUG)
                	for k,v in pairs(tempoSeasonData.values) do
                    		-- Calcul du nombre de jours par couleur depuis le deput de la saison
                    		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 == DateTempoJ  then tempoColor.J  = v -- Récupération de la coucleur tempo du jour.
                    elseif k == DateTempoJ1 then tempoColor.J1 = v -- Récupération de la coucleur tempo du lendemain.
                    end
                end
            end
            tempoCount.blue = nbrTempoBleu - tempoCount.blue        -- nombre de jours BLEU restant pour la saison Tempo.
            tempoCount.white = nbrTempoBlanc - tempoCount.white     -- nombre de jours BLANC restant pour la saison Tempo.
            tempoCount.red = nbrTempoRouge - tempoCount.red         -- nombre de jours ROUGE restant pour la saison Tempo.
            tempoDay = {J = coloursFR[tempoColor.J], J1=coloursFR[tempoColor.J1]}   --Couleur des jours TEMPOJ et TEMPOJ1
            
            --- Update variables pour TEMPO RTE
            domoticz.variables('Tempo_J_Blanc').set(tempoCount.white)
            domoticz.variables('Tempo_J_Rouge').set(tempoCount.red)
            domoticz.variables('Tempo_J_Bleu').set(tempoCount.blue)
            domoticz.variables('TempoJ').set(tempoDay.J)
            domoticz.variables('TempoJ1').set(tempoDay.J1)
            
            domoticz.log("Nombre de jours bleu restant: "..tempoCount.blue, domoticz.LOG_DEBUG)
            domoticz.log("Nombre de jours blanc restant: "..tempoCount.white, domoticz.LOG_DEBUG)
            domoticz.log("Nombre de jours rouge restant: "..tempoCount.red, domoticz.LOG_DEBUG)
            domoticz.log("Couleur Tempo du jour: "..tempoDay.J, domoticz.LOG_DEBUG)
            domoticz.log("Couleur Tempo de demain: "..tempoDay.J1, domoticz.LOG_DEBUG)
        else
            domoticz.log('Réponse KO : '..item.statusText, domoticz.LOG_FORCE)            
        end
    end
}



Je vous laisse intégrer les informations dans les widgets de votre choix.
J'utilise un script dédié pour toutes les modifications de widgets

Exemples de Widgets:
Widget Tempo.jpg


Bonne journée.

Re: MAJ Tempo EDF

Publié : 20 nov. 2024, 18:54
par Sebastiii
Alain78 a écrit : 20 nov. 2024, 14:08 Bonjour Sebastiii,

Le script 1.1 est ici: viewtopic.php?p=122438#p122438
c'est le script principal qui a été mis à jours. C'est mentionné au début du script.
Si tu regardes tes logs, tu as bien la version 1.1 qui apparait.
Bonjour Alain,
Merci, effectivement, je n'avais pas fait gaffe à la version, enfin maintenant que tu me mets le doigt dessus, j'avais bien vu 1.1 mais je n'ai pas capté, un comble, car là, c'est plutôt compréhensible quand même :)
Pour les tests l'exécution toute les minutes est complétement inutile. Les mises à jours des widgets ce font sur un changement d'état d'une variable.
Merci aussi, ce que je veux faire c'est l'interrogation du site toutes les minutes et voir si les variables se remplissent et ce n'est pas le cas, je dois encore louper un truc dans le script pour la compréhension.
Ce sont tes variables qu'il faut regarder si elles sont à jours et l'heure de la dernière modification.
Ok, et effectivement, si je change à la mano dans les variables, le script essaye de remplir un device que je n'ai effectivement pas créé, car la dernière fois, ça fait des lustres et donc il faut créer des capteurs virtuels en mode TEXT apparemment.
Et pour l'url si tu avais regardé le script tu aurais pu voir :

Code : Tout sélectionner

 urlTempoJoursRTE = urlTempoJoursRTE..tempoSeason
Aujourd'hui tempoSeason =2024-2025
Effectivement avec le 2024-2025, on obtient un résultat avec pas mal d'info via un navigateur, maintenant pourquoi lorsque j'exécute le script régulièrement, il ne vient pas récupérer les infos ?
Regarde un peu le script avant de faire du copier/coller, cela te permettra de l'adapter à ton besoin et comprendre le fonctionnement de celui-ci
Oui, je le regarde et je vais le regarder de nouveau, il faudrait attacher un débugueur en exécutant le code ligne par ligne pour comprendre ce qu'il se passe, car là, en le regardant, tout n'est pas clair pour moi, mais c'est logique, je ne connais pas le langage, enfin heureusement que tu commentes, mais tu vois, j'ai encore du mal.

Encore merci pour ta disponibilité