Tu peux nous partager ton script ?
MAJ Tempo EDF
Re: MAJ Tempo EDF
Essayer quoi
Tu peux nous partager ton script ?
Tu peux nous partager ton script ?
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
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: MAJ Tempo EDF
Si c'est le script python au dessus, en plus de mettre la bonne url, il faut y inclure un user:password ou mettre son LAN en réseau de confiance.
Une réponse 401 c'est un pb d'autorisation.
Une réponse 401 c'est un pb d'autorisation.
Re: MAJ Tempo EDF
Je cherchais un script en bash 
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
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: MAJ Tempo EDF
Le script en python était appelé par un autre en bash qui incluait juste l'appel explicite via l'interpréteur, ce qui est en effet pas le plus évident et serait je pense évitable si le script en python avait ce genre de shebang plutôt qu'un env:
Assorti d'un chmod +x du fichier.
Au passage: En utilisant sans intermédiaire l'appel RTE utilisé par le site de ce script, de mon côté, c'est pour le moment 100% fiable avec l'info dès 6h15. A suivre aux 1ers jours blancs/rouges pour voir si le flag fallback correspond bien à ce que je pense...
Code : Tout sélectionner
#!/usr/bin/pythonAu passage: En utilisant sans intermédiaire l'appel RTE utilisé par le site de ce script, de mon côté, c'est pour le moment 100% fiable avec l'info dès 6h15. A suivre aux 1ers jours blancs/rouges pour voir si le flag fallback correspond bien à ce que je pense...
Dernière modification par Keros le 07 oct. 2024, 20:06, modifié 1 fois.
Raison : Citation supprimée. Merci de ne pas citer le message précédent lors d'une réponse directe.
Raison : Citation supprimée. Merci de ne pas citer le message précédent lors d'une réponse directe.
Re: MAJ Tempo EDF
J'ai du bleu qui remonte pour le moment. On verra au premier changement de couleur 
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
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Re: MAJ Tempo EDF
Salut Marcus,marcus_54 a écrit : 06 oct. 2024, 18:08 Bonsoir,
Je viens d'essayer
j'ai ceci au lancement :Code : Tout sélectionner
marc@test:~/domoticz/scripts $ ./tempo.sh Erreur lors de l'envoi du log à Domoticz: 401 Erreur lors de l'envoi du log à Domoticz: 401 Erreur lors de l'envoi du log à Domoticz: 401 Erreur lors de l'envoi du log à Domoticz: 401 Erreur lors de l'envoi du log à Domoticz: 401
As-tu bien adapté le script en créant dans ton DMTZ deux variables utilisateurs J , J+1 et renseigné l'IP de ton DMTZ?
Aussi comme l'a dit @lost il faut effectivement autoriser l'exécution du script par un chmod +x
Je suis loin d'être un pro du script et je ne vais pas vous cacher que GPT m'a bien aidé.
Il y a certainement plus simple et si @lost tu as des idées d'amélio du script que j'ai fourni n'hésite pas.
En fait si je passe par un script qui en lance un second c'est parce que je n'ai jamais réussi à lancer directement le .py sans erreurs, c'est crade mais fonctionnel, enfin tant que c'est bleu tous les jours
Domoticz 4.xx Windows 10 x64
Re: MAJ Tempo EDF
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: Le script (Version 1.5) du 10/01/2025: normalement les commentaires devraient suffire.
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:
Bonne journée.
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: Le script (Version 1.5) du 10/01/2025: 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 restants pour chaque couleur.
local scriptName = 'script_time_Tempo_Couleur_RTE'
local scriptVersion = '1.5'
local tempoCount = {blue=0, white=0, red=0}
local coloursFR = {BLUE = "BLEU", WHITE = "BLANC", RED = "ROUGE", 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 Hvalid = '10:30:00' -- Heure de validation d'ENEDIS pour la couleur TEMPO (10h30) valeur: hh:mm:ss.
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:51', 'at 10:00-22:00 at *:51' },
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 Time = require('Time')
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
local DateValid = Time(DateTempoJ..' '..Hvalid) -- Date et heure de validation d'ENEDIS pour la couleur TEMPO (10h30).
-- Si traitement déjà réalisé et validé apres 10h30.
if (TEMPOJ1.value ~= "GRIS" and DateValid.compare(TEMPOJ1.lastUpdate).compare == 1 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 1er 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 couleur tempo du jour.
elseif k == DateTempoJ1 then tempoColor.J1 = v -- Récupération de la couleur 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)
-- Envoi de mail pour information Jour Rouge demain.
if tempoDay.J1 == "ROUGE" and DateValid.compare(nowDate).compare == 1 then -- demain jour ROUGE
message = 'Demain le: '..DateTempoJ1..' la couleur TEMPO sera: ROUGE'
domoticz.notify("Alerte TEMPO jour ROUGE", message, domoticz.PRIORITY_EMERGENCY)
elseif tempoDay.J1 == "ROUGE" then -- demain jour ROUGE
message = 'Demain le: '..DateTempoJ1..' la couleur provisoire TEMPO sera: ROUGE'
domoticz.notify("Alerte TEMPO provisoire jour ROUGE", message, domoticz.PRIORITY_EMERGENCY)
end
-- Envoi de mail pour information Jour Blanc demain.
if tempoDay.J1 == "BLANC" and DateValid.compare(nowDate).compare == 1 then -- demain jour BLANC
message = 'Demain le: '..DateTempoJ1..' la couleur TEMPO sera: BLANC'
domoticz.notify("Alerte TEMPO jour BLANC", message, domoticz.PRIORITY_EMERGENCY)
elseif tempoDay.J1 == "BLANC" then -- demain jour BLANC
message = 'Demain le: '..DateTempoJ1..' la couleur provisoire TEMPO sera: BLANC'
domoticz.notify("Alerte TEMPO provisoire jour BLANC", message, domoticz.PRIORITY_EMERGENCY)
end
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
}
J'utilise un script dédié pour toutes les modifications de widgets
Exemples de Widgets:
Bonne journée.
Dernière modification par Alain78 le 10 janv. 2025, 08:57, modifié 9 fois.
Re: MAJ Tempo EDF
Hello,
Chez moi c'est un peu spécifique avec les changements auto de plannings sur jour rouge et le système de notif, donc j'avais en effet pas envoyé un truc complet mais juste la partie MAJ, à reprendre/réintégrer dans son système.
Comme indiqué avant dans le fil de messages, j'avais ajouté la partie info fallback sans MAJ des extraits de code (Lua) concernés. Pas certain néanmoins de l'intérêt de les reprendre pour Alain78 (dans sa version dzVent) tant que je n'ai pas pu confirmer mon hypothèse sur cette info, surtout si le script cherche l'info à partir de l'heure officielle de MAJ et non au plus tôt expérimentalement constaté (peu après 6h du matin) comme je le fais. Et cela pourrait être long (il faudra au moins un jour ou la pré-annonce couleur lendemain sera effectivement revue et ils ne sont pas forcément nombreux, peut-être même sur plusieurs saisons).
La MAJ version RTE avec récup fallback ajouté (FJ, Fallback J et FJ1 pour J+1)
Et la partie MAJ qui n'update couleur lendemain que si fallback est à false (qui semble expérimentalement être son état "normal"):
Côté logs sur ces 2 derniers jours (14 et 15 octobre), on voit la 1ère tentative de 6h00 KO et celle de 6h15 toujours OK (couleur renseignée et fallback à false, me semblant potentiellement indiquer une info anticipée non susceptible d'être modifiée d'ici 10h30 heure officielle). Et il en est ainsi depuis le changement pour RTE:
EDIT 02/12/2024 : Ajout du 'léger' oubli RED -> ROUGE dans le tableau couleurs francisées, qui donna une erreur de concaténation avec valeur 'nil' dans le script Lua au 1er jour rouge... 
Chez moi c'est un peu spécifique avec les changements auto de plannings sur jour rouge et le système de notif, donc j'avais en effet pas envoyé un truc complet mais juste la partie MAJ, à reprendre/réintégrer dans son système.
Comme indiqué avant dans le fil de messages, j'avais ajouté la partie info fallback sans MAJ des extraits de code (Lua) concernés. Pas certain néanmoins de l'intérêt de les reprendre pour Alain78 (dans sa version dzVent) tant que je n'ai pas pu confirmer mon hypothèse sur cette info, surtout si le script cherche l'info à partir de l'heure officielle de MAJ et non au plus tôt expérimentalement constaté (peu après 6h du matin) comme je le fais. Et cela pourrait être long (il faudra au moins un jour ou la pré-annonce couleur lendemain sera effectivement revue et ils ne sont pas forcément nombreux, peut-être même sur plusieurs saisons).
La MAJ version RTE avec récup fallback ajouté (FJ, Fallback J et FJ1 pour J+1)
Code : Tout sélectionner
-- RTE version
-- Check url extracted from browser/network log accessing :
-- https://www.services-rte.com/fr/visualisez-les-donnees-publiees-par-rte/calendrier-des-offres-de-fourniture-de-type-tempo.html
urlTempoRTE = 'https://www.services-rte.com/cms/open_data/v1/tempo?season='
local function getTempoRTE(time_epoch)
-- Match (old) EDF API
coloursFR = {BLUE = "BLEU", WHITE = "BLANC", RED = "ROUGE", UNDEFINED = "NON_DEFINI"}
tempoCount = {blue=0, white=0, red=0}
tempoColor = {J="UNDEFINED", J1="UNDEFINED", FJ="?", FJ1="?"}
tempoDay = {J="NON_DEFINI", J1="NON_DEFINI", FJ="?", FJ1="?"}
-- Build tempo season string (tempo year change at 1st of september) for RTE url
now = time_epoch
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("Current Tempo season : "..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)
if (tempoSeasonData == nil) then
print("TEMPO : Warning, no data/color received from RTE ; Network issue?")
return tempoDay, tempoCount
end
--print("\nValues :") -- DEBUG
--print(json:encode_pretty(tempoSeasonData.values))
tempoDate = {J=tostring(os.date("%Y-%m-%d", now)), J1=tostring(os.date("%Y-%m-%d", now + 86400))}
-- Table walk for day colour/current counts...
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
-- Get J/J1 fallback info
if k == tempoDate.J.."-fallback" then tempoColor.FJ = v
elseif k == tempoDate.J1.."-fallback" then tempoColor.FJ1 = v
end
--print(k.." = "..v) -- DEBUG
end
tempoDay = {J = coloursFR[tempoColor.J], J1=coloursFR[tempoColor.J1], FJ = tempoColor.FJ, FJ1 = tempoColor.FJ1}
return tempoDay, tempoCount
end
Code : Tout sélectionner
epoch = os.time()
dateDay = tostring(os.date("%A"), epoch)
dateNextDay = tostring(os.date('%A', epoch + 86400))
tempoDay, tempoCount = getTempoRTE(epoch)
--tempoDay, tempoCount = getTempoEDF(epoch)
tempoText = dateDay..":"..tempoDay.J.." - "..dateNextDay..":"..tempoDay.J1
print("TEMPO : "..tempoText.." (Fallback = "..tempoDay.FJ.."/"..tempoDay.FJ1..").")
-- Only update when next day "color" is defined and it's fallback info is false.
if ((tempoDay.J1 ~= "NON_DEFINI") and (tempoDay.FJ1 == "false")) then
commandArray[#commandArray+1]={['Variable:'..tempoVarJ] = tempoDay.J}
commandArray[#commandArray+1]={['Variable:'..tempoVarJ1] = tempoDay.J1}
tempoText = tempoText..' ('..tempoCount.blue..'/'..tempoCount.white..'/'..tempoCount.red..')'
commandArray[#commandArray+1]={['UpdateDevice'] = otherdevices_idx[tempoName].."|0|"..tempoText}
-- Send notification mail if today or tomorrow prices are high...
if ((tempoDay.J ~= "BLEU") or (tempoDay.J1 ~= "BLEU")) then
commandArray[#commandArray+1]={['SendEmail'] = 'TEMPO Demain : '..tempoDay.J1..'#'..tempoText..'#'..emailNotifyAlarm}
end
print("TEMPO : Updated !")
end
Code : Tout sélectionner
$ grep -i "lua: tempo" /tmp/domoticz.txt
2024-10-14 06:00:01.439 Status: LUA: TEMPO : Monday:BLEU - Tuesday:NON_DEFINI (Fallback = false/?).
2024-10-14 06:15:01.588 Status: LUA: TEMPO : Monday:BLEU - Tuesday:BLEU (Fallback = false/false).
2024-10-14 06:15:01.588 Status: LUA: TEMPO : Updated !
2024-10-15 06:00:01.477 Status: LUA: TEMPO : Tuesday:BLEU - Wednesday:NON_DEFINI (Fallback = false/?).
2024-10-15 06:15:00.916 Status: LUA: TEMPO : Tuesday:BLEU - Wednesday:BLEU (Fallback = false/false).
2024-10-15 06:15:00.916 Status: LUA: TEMPO : Updated !
Dernière modification par lost le 02 déc. 2024, 11:07, modifié 1 fois.
Re: MAJ Tempo EDF
Bonjour, merci pour vos réponses.
je me fais toujours avoir sur ce site car je ne reçois pas de notification par email et j'avais pas vu que l'on était passé à la page numéro 3 je continuai à rafraîchir la page 2 je suis nul
Je teste le programme Python ci-dessous
tempo.py et tempo.sh sont dans domoticz/scrits chmod en rwx
j'ai mes deux variables (D'ailleurs domoticz n'a pas accepté de me faire une variable avec J+1) j'ai deux widgets de type alerts
j'ai toujours l'erreur :
Le programme python que j'utilise:
je me fais toujours avoir sur ce site car je ne reçois pas de notification par email et j'avais pas vu que l'on était passé à la page numéro 3 je continuai à rafraîchir la page 2 je suis nul
Je teste le programme Python ci-dessous
tempo.py et tempo.sh sont dans domoticz/scrits chmod en rwx
j'ai mes deux variables (D'ailleurs domoticz n'a pas accepté de me faire une variable avec J+1) j'ai deux widgets de type alerts
J'ai le user password par défaut admin domoticz (je teste ça sur un raspberry PI de test et je suis sur un réseau de confiance)user:password ou mettre son LAN en réseau de confiance.
j'ai toujours l'erreur :
Code : Tout sélectionner
Erreur lors de l'envoi du log à Domoticz: 401
Code : Tout sélectionner
#!/usr/bin/env python
import requests
from datetime import date
import time
# Variables pour Domoticz
domoticz_ip = '192.168.0.203:8084'
idx_couleur_jour = '21'
idx_couleur_jour_j1 = '22'
vname_couleur_jour = 'Couleur TEMPO J'
vname_couleur_jour_j1 = 'Couleur TEMPO J1'
def map_code_to_color(code):
# Mapping des codes de jour à des couleurs spécifiques
mapping = {
0: "Non défini",
1: "Bleu",
2: "Blanc",
3: "Rouge"
}
return mapping.get(code, "Inconnu")
def get_tempo_colors():
# URLs de l'API
url_today = 'https://www.api-couleur-tempo.fr/api/jourTempo/today'
url_tomorrow = 'https://www.api-couleur-tempo.fr/api/jourTempo/tomorrow'
try:
# Requête pour obtenir la couleur du jour
response_today = requests.get(url_today)
if response_today.status_code == 200:
data_today = response_today.json()
couleur_jour = map_code_to_color(data_today.get('codeJour', 0))
else:
log_to_domoticz(f"Erreur lors de la requête pour la couleur du jour: {response_today.status_code}")
return None, None
# Requête pour obtenir la couleur du lendemain
response_tomorrow = requests.get(url_tomorrow)
if response_tomorrow.status_code == 200:
data_tomorrow = response_tomorrow.json()
couleur_jour_j1 = map_code_to_color(data_tomorrow.get('codeJour', 0))
else:
log_to_domoticz(f"Erreur lors de la requête pour la couleur du lendemain: {response_tomorrow.status_code}")
return couleur_jour, None
return couleur_jour, couleur_jour_j1
except Exception as e:
log_to_domoticz(f"Une erreur s'est produite: {e}")
return None, None
def update_domoticz_variables(couleur_jour, couleur_jour_j1):
# URL de l'API JSON de Domoticz
url_domoticz = f'http://{domoticz_ip}/json.htm'
# Paramètres pour mettre à jour la variable de couleur du jour (J) dans Domoticz
params_couleur_jour = {'type': 'command', 'param': 'updateuservariable', 'idx': idx_couleur_jour, 'vname': vname_couleur_jour, 'vtype': 2, 'vvalue': couleur_jour}
# Paramètres pour mettre à jour la variable de couleur du jour suivant (J+1) dans Domoticz
params_couleur_jour_j1 = {'type': 'command', 'param': 'updateuservariable', 'idx': idx_couleur_jour_j1, 'vname': vname_couleur_jour_j1, 'vtype': 2, 'vvalue': couleur_jour_j1}
try:
# Envoyer la requête pour mettre à jour la variable de couleur du jour (J) dans Domoticz
response_couleur_jour = requests.get(url_domoticz, params=params_couleur_jour)
# Vérifier si la requête a réussi
if response_couleur_jour.status_code != 200:
log_to_domoticz(f"Erreur lors de la mise à jour de la couleur TEMPO J dans Domoticz: {response_couleur_jour.status_code}")
# Envoyer la requête pour mettre à jour la variable de couleur du jour suivant (J+1) dans Domoticz
response_couleur_jour_j1 = requests.get(url_domoticz, params=params_couleur_jour_j1)
# Vérifier si la requête a réussi
if response_couleur_jour_j1.status_code != 200:
log_to_domoticz(f"Erreur lors de la mise à jour de la couleur TEMPO J+1 dans Domoticz: {response_couleur_jour_j1.status_code}")
except Exception as e:
log_to_domoticz(f"Une erreur s'est produite lors de la mise à jour des variables dans Domoticz: {e}")
def log_to_domoticz(message):
# URL pour ajouter un log dans Domoticz
url_log = f'http://{domoticz_ip}/json.htm?type=command¶m=addlogmessage&message={message}'
try:
response = requests.get(url_log)
if response.status_code != 200:
print(f"Erreur lors de l'envoi du log à Domoticz: {response.status_code}")
except Exception as e:
print(f"Une erreur s'est produite lors de l'envoi du log à Domoticz: {e}")
# Appel de la fonction pour obtenir les couleurs Tempo du jour en cours et du jour suivant
couleur_jour, couleur_jour_j1 = get_tempo_colors()
# Affichage des résultats et enregistrement des logs
if couleur_jour is not None and couleur_jour_j1 is not None:
log_to_domoticz("* Les valeurs EDF Tempo ont bien été mises à jour")
log_to_domoticz(f"* Aujourd'hui est un jour : {couleur_jour}")
log_to_domoticz(f"* Demain est un jour : {couleur_jour_j1}")
# Appel de la fonction pour mettre à jour les variables dans Domoticz
update_domoticz_variables(couleur_jour, couleur_jour_j1)
else:
log_to_domoticz("Impossible d'obtenir les couleurs Tempo.")
# Attendre 3 secondes avant de fermer
time.sleep(3)
Domoticz 2024.7
Domoticz sur RPI 4B+ : MQTT; MQTTMapper; Zigbee; RFlink DIY 433; Téléinfo; DS18B20; Capteur; compteur eau wmbusmeter, NanoLeaf...
Domoticz sur RPI 4B+ : MQTT; MQTTMapper; Zigbee; RFlink DIY 433; Téléinfo; DS18B20; Capteur; compteur eau wmbusmeter, NanoLeaf...
Re: MAJ Tempo EDF
à @lost et ceux qui touchent bien en code....
Y'aurai pas moyen que vous fassiez un plugin "tempo" pour les poireaux comme nous ???
Y'aurai pas moyen que vous fassiez un plugin "tempo" pour les poireaux comme nous ???
Domoticz 4.xx Windows 10 x64