Compare commits

...

2 Commits

Author SHA1 Message Date
220fefc1ad Fixes 2023-11-08 20:53:42 +01:00
ebd6172329 PoC (pas testes en utilisant les API EDF) 2023-11-08 20:47:53 +01:00
2 changed files with 99 additions and 48 deletions

View File

@ -3,6 +3,9 @@
# EcoDevice (not the RT one) can be ip address or FQDN # EcoDevice (not the RT one) can be ip address or FQDN
ecodevice = "192.0.2.1" ecodevice = "192.0.2.1"
# Use EcoDevice or EDF "API"
use_eco = True
# MQTT Broker (or GX with MQTT enabled) # MQTT Broker (or GX with MQTT enabled)
gx = "192.0.2.2" gx = "192.0.2.2"

View File

@ -7,8 +7,10 @@ import time
import pyprowl import pyprowl
#import syslog #import syslog
from datetime import date,datetime
# Settings # Settings
from secret import ecodevice,gx,gxsn,chgbleu,chgblanc,chgrouge,minbleu,minblanc,minrouge,prowlkey from secret import ecodevice,use_eco,gx,gxsn,chgbleu,chgblanc,chgrouge,minbleu,minblanc,minrouge,prowlkey
# Lancer ceci du 01 Oct au 31 mai # Lancer ceci du 01 Oct au 31 mai
# une fois avant 22h / une fois apres 22h # une fois avant 22h / une fois apres 22h
@ -115,64 +117,110 @@ except Exception as e:
print("Error verifying Prowl API key: {}".format(e)) print("Error verifying Prowl API key: {}".format(e))
exit() exit()
# Setup EcoDevice
http = urllib3.PoolManager() http = urllib3.PoolManager()
resp = http.request("GET", "http://"+ecodevice+"/api/xdevices.json?cmd=10") if use_eco:
# Setup EcoDevice
resp = http.request("GET", "http://"+ecodevice+"/api/xdevices.json?cmd=10")
if resp.status == 200: if resp.status == 200:
teleinfo = json.loads(resp.data) teleinfo = json.loads(resp.data)
# Value of var today daynight # Value of var today daynight
# HPJB = Bleu 0 1 # HPJB = Bleu 0 1
# HCJB = Bleu 0 0 # HCJB = Bleu 0 0
# HPJW = Blanc 1 1 # HPJW = Blanc 1 1
# HCJW = Blanc 1 0 # HCJW = Blanc 1 0
# HPJR = Rouge 2 1 # HPJR = Rouge 2 1
# HCJR = Rouge 2 0 # HCJR = Rouge 2 0
curtarif = teleinfo['T1_PTEC'] curtarif = teleinfo['T1_PTEC']
if curtarif == "HPJB": if curtarif == "HPJB":
today = 0
daynight = 1
elif curtarif == "HCJB":
today = 0
daynight = 0
elif curtarif == "HPJW":
today = 1
daynight = 1
elif curtarif == "HCJW":
today = 1
daynight = 0
elif curtarif == "HPJR":
today = 2
daynight = 1
elif curtarif == "HCJR":
today = 2
daynight = 0
else:
today = 0
daynight = 0
# Value of var tomorrow
# ---- = Bleu 0
# BLEU = Bleu 0
# BLAN = Blanc 1
# ROUG = Rouge 2
demaintarif = teleinfo['T1_DEMAIN']
if demaintarif == "----":
tomorrow = 0
elif demaintarif == "BLEU":
tomorrow = 0
elif demaintarif == "BLANC":
tomorrow = 1
elif demaintarif == "ROUG":
tomorrow = 2
else:
tomorrow=0
loggerinfo("Current tarif: " + curtarif + " ("+str(today)+" / "+str(daynight) + ")")
loggerinfo("Demain tarif: " + demaintarif + " ("+str(tomorrow)+")")
else:
# Use EDF "API"
# TODO:
today=date.today()
resp = http.request("GET", "https://particulier.edf.fr/services/rest/referentiel/searchTempoStore?dateRelevant="+str(today.strftime("%Y-%m-%d")))
if resp.status == 200:
edfapi = json.loads(resp.data)
curcouleur = edfapi['couleurJourJ']
demaincouleur = edfapi['couleurJourJ1']
if curcouleur == "TEMPO_BLEU":
today = 0 today = 0
daynight = 1 elif curcouleur == "TEMPO_BLANC":
elif curtarif == "HCJB":
today = 0
daynight = 0
elif curtarif == "HPJW":
today = 1 today = 1
daynight = 1 elif curcouleur == "TEMPO_ROUGE":
elif curtarif == "HCJW":
today = 1
daynight = 0
elif curtarif == "HPJR":
today = 2 today = 2
else:
today = -1
if demaincouleur == "TEMPO_BLEU":
tomorrow = 0
elif domaincouleur == "TEMPO_BLANC":
tomorrow = 1
elif demaincouleur == "TEMPO_ROUGE":
tomorrow = 2
elif demaincouleur == "NON_DEFINI":
tomorrow = -1
else:
tomorrow = -1 # trop tot.
now = datetime.now()
#Heures creuses: 22h00 -> 06h00
if now.hour >= 6 and now.hour <=22:
daynight = 1 daynight = 1
elif curtarif == "HCJR": else:
today = 2
daynight = 0
else:
today = 0
daynight = 0 daynight = 0
# Value of var tomorrow loggerinfo("La couleur aujourd'hui "+str(curcouleur))
# ---- = Bleu 0 loggerinfo("La couleur demain "+str(demaincouleur))
# BLEU = Bleu 0 if tomorrow == -1:
# BLAN = Blanc 1 loggerinfo("La couleur de demain n'est pas definie -> exit")
# ROUG = Rouge 2 quit()
demaintarif = teleinfo['T1_DEMAIN']
if demaintarif == "----":
tomorrow = 0
elif demaintarif == "BLEU":
tomorrow = 0
elif demaintarif == "BLANC":
tomorrow = 1
elif demaintarif == "ROUG":
tomorrow = 2
else:
tomorrow=0
loggerinfo("Current tarif: " + curtarif + " ("+str(today)+" / "+str(daynight) + ")")
loggerinfo("Demain tarif: " + demaintarif + " ("+str(tomorrow)+")")
# daynight : 1 = jour / 0 nuit # daynight : 1 = jour / 0 nuit
# Today Tomorrow Daynight Action # Today Tomorrow Daynight Action
# 0 0 O Rien # 0 0 O Rien