[LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
oeildefeu
Messages : 31
Inscription : 18 févr. 2022, 19:28

Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain

Message par oeildefeu »

Salut,
j'ai mis à jour mon script pour ajouter un dummy sensor pour le prix associé au code couleur et HC/HP pour que Domoticz puisse calculer le cout à la journée correctement. Il faut donc choisir le capteur dans les paramètres aussi ! (meter/counter => Electricity Price device )

Code : Tout sélectionner

commandArray = {}
alert = {}
tarif_HP = {}
tarif_HC = {}
code_couleur = {}

local debug = false --quand true: active mise à jour toutes les minutes
local heure_execution = 8
local minute_execution = 01
local minute_execution2 = 59
local id_device_text = 816 --device id ou est stocké l'info des jours Tempo
local nom_device_text = "Tempo" --nom device ou est stocké l'info des jours Tempo
local Text_sensor_update = ""
alert[1] = false --alerte jour bleu
alert[2] = true --alerte jour blanc
alert[3] = true --alerte jour rouge

local id_tarif_tempo = 885 --device id capteur dummy recevant le prix du kwh "Tarif Tempo" - Mette nil pour désactiver
tarif_HP[1] = 0.1609 --tarif HP bleu
tarif_HP[2] = 0.1894 --tarif HP blanc
tarif_HP[3] = 0.7562 --tarif HP rouge
tarif_HC[1] = 0.1296 --tarif HC bleu
tarif_HC[2] = 0.1486 --tarif HC blanc
tarif_HC[3] = 0.1568 --tarif HC rouge

code_couleur[0] = "NON_DEFINI"  -- 0, 1, 2, 3 valeur retournée par l'API
code_couleur[1] = "BLEU"
code_couleur[2] ="BLANC"
code_couleur[3] = "ROUGE"
daysFr = {Monday = "Lundi", Tuesday = "Mardi", Wednesday = "Mercredi", Thursday = "Jeudi", Friday = "Vendredi", Saturday = "Samedi", Sunday = "Dimanche"}

if debug then print ('Valeur actuelle: '..otherdevices_svalues[nom_device_text]) end

local t1 = os.time()
local s = otherdevices_lastupdate[nom_device_text]
local year = string.sub(s, 1, 4)
local month = string.sub(s, 6, 7)
local day = string.sub(s, 9, 10)
local hour = string.sub(s, 12, 13)
local minutes = string.sub(s, 15, 16)
local seconds = string.sub(s, 18, 19)
local t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
local difference = (os.difftime (t1, t2))
if debug then print(difference) end
time = os.date("*t") -- put the time/date table in variable time


function recup_codejour_tempo(jour)
    json = (loadfile "scripts/lua/JSON.lua")()
    local config=assert(io.popen('curl -X \'GET\' \'https://www.api-couleur-tempo.fr/api/jourTempo/'..jour..'\' -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
    return jsonTempo.codeJour
end


--update custom sensor tarif tempo
if ((((time.hour==6 or time.hour==22) and time.min==01) or debug == true) and id_tarif_tempo ~= nil) then
    couleurJourJ = recup_codejour_tempo("today")
    if (time.hour>5 and time.hour<22) then  commandArray['UpdateDevice'] = id_tarif_tempo .. '|0|' .. tarif_HP[couleurJourJ]
    else commandArray['UpdateDevice'] = id_tarif_tempo .. '|0|' .. tarif_HC[couleurJourJ] end
end

--update custom sensor couleur jour tempo
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(otherdevices_svalues[nom_device_text], "NON_DEFINI") and time.min==30) or debug == true) then 
    if debug then print ("Récupération jour Tempo") end
    couleurJourJ = recup_codejour_tempo("today")
    couleurJourJ1 = recup_codejour_tempo("tomorrow")
    DateJour=tostring(os.date("%A"))
    DateJourPlus1 = tostring(os.date('%A', (os.time()+ 60*60*24)))
    
    Text_sensor_update = daysFr[DateJour]..":"..code_couleur[couleurJourJ].." - "..daysFr[DateJourPlus1]..":"..code_couleur[couleurJourJ1]
    if debug then print (Text_sensor_update) end
    if(otherdevices_svalues[nom_device_text] ~= Text_sensor_update) then
        commandArray['UpdateDevice'] = id_device_text.."|0|"..Text_sensor_update
        if alert[couleurJourJ1] == true then
            commandArray['SendNotification']='Tempo: Demain '..code_couleur[couleurJourJ1]..'#Demain '..daysFr[DateJourPlus1]..' (à partir de 6h du matin) est annoncé comme un jour tempo '..code_couleur[couleurJourJ1]..' !'
        end
        
    end
end

return commandArray
cadkey
Messages : 5
Inscription : 20 janv. 2018, 11:52

Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain

Message par cadkey »

Bonjour,
Cette URL issue d'une API RTE permet d'avoir la couleur tempo du jour et de demain.
https://www.services-rte.com/cms/open_d ... tempoLight
Elle renvoie un json, comme toutes API.
Prendre l'info chez RTE est intéressant car RTE est le décideur de la couleur du jour Tempo. Ainsi la valeur tempo demain est disponible la veille avant 7h (je la récupère à 6h48), bien avant que les autres services ne relaient l'information.
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain

Message par knasson »

bonjour,

Comme souvent chez RTE ou chez Enedis il y a des changements
le lien fourni par cadkey ne fonctionne pas ou plus..
https://www.api-couleur-tempo.fr/api
cette API parait fonctionelle
je me demande seulment comment faire pour recuperer la couleur dans mon domoticz?
Capture d’écran 2025-09-04 191047.jpg
Capture d’écran 2025-09-04 191047.jpg (124.79 Kio) Consulté 2967 fois
Capture d’écran 2025-09-04 190842.jpg
Capture d’écran 2025-09-04 190842.jpg (78.9 Kio) Consulté 2967 fois
oeildefeu
Messages : 31
Inscription : 18 févr. 2022, 19:28

Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain

Message par oeildefeu »

ah bah regarde 2 posts au dessus du tiens...
knasson
Messages : 245
Inscription : 26 mars 2021, 08:59

Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain

Message par knasson »

Merci oeildefeu de m'avoir mis le nez dessus...
effectivement on implique l'URL dont je fais mention et qui fonctionne...
je vais regarder comment adpater ton script a ma configuration en tous cas merci beaucoup.
lost
Messages : 1511
Inscription : 12 nov. 2016, 11:01

Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain

Message par lost »

Sinon, le sujet avait été abondamment discuté (avec aussi des scripts) également sous ce fil, il y a ~1an, quand EDF avait viré au changement d'année Tempo son ancienne URL simple à utiliser (sans authentification):
viewtopic.php?t=14136

L'URL api-couleur-tempo fait d'ailleurs usage de celle de RTE donnée dans le fil ci dessus (dès le 3ème message et elle aussi sans authentification), c'est visible dans le code de ce site que l'auteur publie sur github.

L'intérêt est que RTE donne l'info très tôt, en général entre 6h et 6h15 du matin... soit bien avant les 10h officiels. Et cette API reste fonctionnelle (même si c'est moi qui cette année pèse l'intérêt de Tempo depuis la dernière évolution tarifaire: Possible que je repasse en prix fixe avant les 1ers rouges).
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain

Message par Wolfen38 »

Bonjour

Je n'avais plus de remontée tempo, mais sans erreur, mais ca ne fonctionnait plus.

Je viens de mettre le script de oeildefeu, qui a l'air de bien fonctionner, mais depuis j'ai cette erreur récurrente

Code : Tout sélectionner

2025-11-29 11:30:00.569 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_chauffage-PID.lua: /home/pi/domoticz/scripts/lua/modules.lua:369: field 'day' missing in date table
Quelqu'un a une solution ?

Ca correspond a cette martie du module.lua :

Code : Tout sélectionner

-- retourne le temps en seconde depuis la dernière maj du péréphérique
function lastSeen(device)
  timestamp = otherdevices_lastupdate[device] or device
  y, m, d, H, M, S = timestamp:match("(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)")
  difference = os.difftime(os.time(), os.time{year=y, month=m, day=d, hour=H, min=M, sec=S})
  return difference
end
Merci.
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain

Message par denis_brasseur »

L'erreur provient de script_time_chauffage-PID.lua
Quel rapport avec tempo ?
Fait un

Code : Tout sélectionner

print(device)
dans le script en erreur
Et vérifie si le nom du device est bien existant
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: [LUA] Script pour connaitre la couleur du jour pour Tempo d'EDF et script pour la couleur Tempo du lendemain

Message par Keros »

Il y a quelques jours, j'ai eu des problèmes avec les fonctions de temps dans DomoticZ.

@Wolfen38, s'il n'y a pas de lien avec le script Tempo du sujet, je déplacerai les messages dans un nouveau sujet.
J'attends de voir la suite de la discussion.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Répondre