MAJ Tempo EDF

Forum pour tous les autres protocoles : Enocean, X10, les cartes piface.razberry ...
Pour les questions concernant le choix de protocoles, merci d'utiliser le forum Les autres objets.
Alain78
Messages : 75
Inscription : 05 févr. 2022, 09:18

Re: MAJ Tempo EDF

Message par Alain78 »

salinois a écrit : 26 déc. 2024, 17:43 hello,
ce matin l'icon de "Demain" était en Undefined. A 10h00 toujours rien; donc j'ai changé l'heure dans le script et cela a fonctionné,
c'est Rouge ( j'ai remis la bonne heure apres dans le script). Par contre, pour Alain78, je n'ai pas reçu d'Email d'alerte; j'ai fait le test dans la partie Mail de Parametres de Domoticz, et cela fonctionne; c'est bien ce mail là qui est utilisé dans le script ?
il ne manquerai pas un "mailto"; je cherche.
est-ce que ça pourrait être ça la solution ?

Code : Tout sélectionner

 domoticz.email("Alerte TEMPO jour ROUGE", message, domoticz.PRIORITY_EMERGENCY)
au lieu de domoticz.notify et la suite de la ligne est correcte aussi ou faut-il modifier aussi qqch ?

a+

Salinois
Bonjour salinois,

Oui pour les messages cela dépend a quelle heure tu as exécuté ta modification. Il y a des conditions d'heures pour envoyé le message. j'ai réalisé une petite modification mais je la publierais si ok au prochain jour rouge.
As tu bien reçu les notifications de jours rouges provisoires lors des précédents jours rouges ?
Si oui la partie envoi de messages par mail est bonne.

Bonne journée

Alain
salinois
Messages : 330
Inscription : 08 févr. 2024, 19:10

Re: MAJ Tempo EDF

Message par salinois »

hello Alain78,

bon hier , c'est vrai que l'info avec Enedis n'a pas fonctionné de suite, donc hier en cherchant sur le net, j'ai vu que certains avaient mis
"domoticz.email; donc je l'ai modifié dans le script et ce matin j'ai bien reçu ce mail à "05:55", ce qui correspond pour l'horaire au script "script_time_Tempo_HP-HC"

sujet: Alerte TEMPO jour ROUGE
Aujourd'hui : 2024-12-27 La couleur TEMPO est: ROUGE


Est-ce que j'aurai dû le recevoir hier aussi ? oui je pense
Donc, est-ce que je laisse comme ça?

dans mes logs today: 2024-12-27 05:55:03.642 Notification sent (email) => Success

a+

salinois

ps: quand j'ai modifié le script pour email, il n'y avait pas eu de jours ROUGE après ma modif..
Pierrot72
Messages : 22
Inscription : 21 mai 2019, 19:10

Re: MAJ Tempo EDF

Message par Pierrot72 »

Juste pour retour d'information, de mon côté ça fonctionne simplement et parfaitement.
Pierrot72 a écrit : 10 sept. 2024, 01:37 J'amène ma pierre à l'édifice.
J'utilise deux variables utilisateur pour traiter couleur J et J+1
C'est un script en python, je le lance tous les jours à midi et ça marche nickel.

Veuillez à bien mettre l'IP de votre domoticz et l'IDX des deux variables (en haut du script tempo.py)

Donc dans /home/pi/domoticz/scripts j'ai deux fichier: tempo.sh et tempo.py

tempo.sh :

Code : Tout sélectionner

#!/bin/bash

python3 /home/pi/domoticz/scripts/tempo.py
et

tempo.py

Code : Tout sélectionner

#!/usr/bin/env python

import requests
from datetime import date
import time

# Variables pour Domoticz
domoticz_ip = '192.168.0.10:8080'
idx_couleur_jour = '109'
idx_couleur_jour_j1 = '110'
vname_couleur_jour = 'Couleur TEMPO J'
vname_couleur_jour_j1 = 'Couleur TEMPO J+1'

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&param=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 4.xx Windows 10 x64
lost
Messages : 1511
Inscription : 12 nov. 2016, 11:01

Re: MAJ Tempo EDF

Message par lost »

Alain78 a écrit : 27 déc. 2024, 09:08 As tu bien reçu les notifications de jours rouges provisoires lors des précédents jours rouges ?
Hello, ce jour va être un jour test: Ce sera rouge demain lundi et, vu de dehors, sans l'ombre d'une hésitation comme parfois ces derniers jours non bleu, car annoncé ici comme le plus souvent: entre 6h00 et 6h15.

Sinon pour info j'envoie pour ma part des notifs mail si J ou J1 non bleu (passé la période J1 indéfinie éventuelle): AInsi cela annonce certes blanc/rouge (même si blanc, c'est du "best effort" pour ma part, sans sélection d'un timer-plan qui coupe tous les gros consommateurs) mais aussi les transitions blanc/rouge vers bleu (car on aura alors toujours J non bleu).

C'est certes plus de mails, mais cela donne aussi une chance de se rendre compte d'un pb de notif sur du blanc, donc généralement avant les 1ers rouges.
salinois
Messages : 330
Inscription : 08 févr. 2024, 19:10

Re: MAJ Tempo EDF

Message par salinois »

hello Alain78,

ce matin pas de mail mais des erreurs dans les logs
024-12-29 06:40:05.582 Error: SMTP Mailer: Error sending Email to: <2> !
2024-12-29 06:40:05.582 Error: libcurl: (55)
2024-12-29 06:40:05.582 Error: RCPT failed: 550
2024-12-29 06:40:05.582
2024-12-29 06:40:05.582 Error: Notification failed (Email)
salinois
Alain78
Messages : 75
Inscription : 05 févr. 2022, 09:18

Re: MAJ Tempo EDF

Message par Alain78 »

Bonjour salinois,

Pour moi cela a bien fonctionné, a priori vu le message , le destinataire n'existe pas. As-tu bien vérifié dans paramètre et e-mail, le test fonctionne toujours?

As-tu modifier quelque chose dans le script ?

Les lignes ( autour de la ligne 95) que j'ai dans le script: "script_time_Tempo_Couleur_RTE" :

Code : Tout sélectionner

            -- Envoi de mail pour information Jour Rouge demain
            if tempoDay.J1 == "ROUGE" and ((nowDate.hour >= 10 and nowDate.minutes > 30) or (nowDate.hour > 10 )) 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" and nowDate.hour <= 10 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
Bonne journée

Alain
salinois
Messages : 330
Inscription : 08 févr. 2024, 19:10

Re: MAJ Tempo EDF

Message par salinois »

bonjour Alain,

oui le test fonctionne toujours
bizarre

salinois
salinois
Messages : 330
Inscription : 08 févr. 2024, 19:10

Re: MAJ Tempo EDF

Message par salinois »

re Alain,

j'avais mis ça dans le script car le jour du "Rouge", j'avais reçu un mail avec cette modif.

Code : Tout sélectionner

   -- Envoi de mail pour information Jour Rouge demain
            if tempoDay.J1 == "ROUGE" and nowDate.hour > 10 then -- demain jour ROUGE
			    message = 'Demain le: '..DateTempoJ1..' la couleur TEMPO sera: ROUGE'
        	    domoticz.email("Alerte TEMPO jour ROUGE", message, domoticz.PRIORITY_EMERGENCY)
            elseif tempoDay.J1 == "ROUGE" and nowDate.hour < 10 then -- demain jour ROUGE
			    message = 'Demain le: '..DateTempoJ1..' la couleur provisoire TEMPO sera: ROUGE'
        	    domoticz.email("Alerte TEMPO provisoire jour ROUGE", message, domoticz.PRIORITY_EMERGENCY)
    	    end
mais si cela a marché pour toi, je vais remettre comme à l'origine ( le test fonctionne bien sur mon email)

voilà c'est fait, je vais attendre donc.

salinois
salinois
Messages : 330
Inscription : 08 févr. 2024, 19:10

Re: MAJ Tempo EDF

Message par salinois »

hello Alain78,

ce matin , j'ai reçu le mail:
Aujourd'hui : 2024-12-30 La couleur TEMPO est: ROUGE
là ça fonctionne, mais pas le jour d'avant , pourquoi !!!

salinois
Alain78
Messages : 75
Inscription : 05 févr. 2022, 09:18

Re: MAJ Tempo EDF

Message par Alain78 »

Bonjour salinois,

Le mail reçu ce matin viens du script : "script_time_Tempo_HP-HC" exécuter à 5h55.

Le mail pour le jour Rouge du lendemain ( provisoire et définitif) est généré par le script: "script_time_Tempo_Color_RTE"

J'ai mis ce dernier script en version 1.4 (viewtopic.php?p=122438#p122438)
Il intègre une variable au début pour indiquer l'heure de validation d'ENEDIS.
Traitement du mail d'envoi en provisoire et définitif en cas de jours rouges.
Testé et validé par le jour rouge annoncé hier.
Je crois que tous les petits bugs sont maintenant réglés.
Ne pas oublier pour bien recevoir des mails avec la commande "notify" d'activer dans les paramètres de domoticz dans l'onglet "e-mail" les notifications par e-mail.

Bonne journée
Alain
Répondre