Dans ma recherche d'automatiser la gestion de mon chauffage, il fallait que le système puisse connaitre la couleur du jour pour l'abonnement Tempo d'EDF auquel je suis abonné.
Les pré-requis sont les suivants :
- Avoir un abonnement Tempo d'EDF
- 3 Switchs Virtuels On/Off "Aujourd'hui EDF Bleu", "Aujourd'hui EDF Blanc", "Aujourd'hui EDF Rouge"
- 3 Switchs Virtuels On/Off "Demain EDF Bleu", "Demain EDF Blanc", "Demain EDF Rouge"
Une fois cette info remontée dans Domoticz, je peux gérer différemment mon chauffage selon que nous sommes en BLEU, BLANC ou ROUGE (aïe !)
De même le script pour connaître la couleur du lendemain me permet de déclencher ensuite, depuis Domoticz, l'envoi d'un SMS qui me préviens à 15h (au lieu de 20h chez EDF) si l'on est en BLANC ou ROUGE le lendemain et ainsi m'organiser et prévenir Mme assez tôt (coefficient WAF) pour que nous puissions lancer des lessives, seche-linge et lave-vaisselle avant que nous ne soyons en tarification la plus chère...
Voici donc mes 2 scripts :
Couleur EDF du jour :
Code : Tout sélectionner
-- domoticz/scripts/lua/script_time_tempo_jour.lua
-- EDF Tempo Status Request from Domogeek API
-- http://domogeek.entropialux.com/tempoedf/now
-- Prerequis: 3 switch On/Off: "Aujourd'hui EDF Bleu", "Aujourd'hui EDF Blanc", "Aujourd'hui EDF Rouge"
-- Path to curl
-- Windows: curl = 'C:\\bin\\curl.exe'
curl = "curl"
-- Devices (Switch On/Off on virtual hardware)
switchBLEU = "Aujourd'hui EDF Bleu"
switchBLANC = "Aujourd'hui EDF Blanc"
switchROUGE = "Aujourd'hui EDF Rouge"
-- Function to get result of HTTP request
function os.capture(cmd, raw)
local f = assert(io.popen(cmd, 'r'))
local s = assert(f:read('*a'))
f:close()
if raw then return s end
s = string.gsub(s, '^%s+', '')
s = string.gsub(s, '%s+$', '')
s = string.gsub(s, '[\n\r]+', ' ')
return s
end
-- Function to update a switch
function updateZoneSwitch(zone, switch)
local cmd = curl .. " http://domogeek.entropialux.com/tempoedf/now"
local vac = os.capture(cmd, true)
print("¤¤¤ Couleur EDF Tempo du Jour: " .. cmd .. ": " .. vac)
if (vac == "BLEU") then
commandArray[switchBLEU] = "On"
commandArray[switchBLANC] = "Off"
commandArray[switchROUGE] = "Off";
elseif (vac == "BLANC") then
commandArray[switchBLEU] = "Off"
commandArray[switchBLANC] = "On"
commandArray[switchROUGE] = "Off";
elseif (vac == "ROUGE") then
commandArray[switchBLEU] = "Off"
commandArray[switchBLANC] = "Off"
commandArray[switchROUGE] = "On";
end
end
commandArray = {}
time = os.date("*t")
-- Trigger at 6:10 every day
if (time.min == 10 and time.hour == 6) then
-- BLEU
updateZoneSwitch("BLEU", switchBLEU)
-- BLANC
updateZoneSwitch("BLANC", switchBLANC)
-- ROUGE
updateZoneSwitch("ROUGE", switchROUGE)
end
return commandArrayCode : Tout sélectionner
-- domoticz/scripts/lua/script_time_tempo_jour.lua
-- EDF Tempo Status Request from Domogeek API
-- http://domogeek.entropialux.com/tempoedf/tomorrow
-- Prerequis: 3 switch On/Off: "Demain EDF Bleu", "Demain EDF Blanc", "Demain EDF Rouge"
-- Path to curl
-- Windows: curl = 'C:\\bin\\curl.exe'
curl = "curl"
-- Devices (Switch On/Off on virtual hardware)
switchBLEU = "Demain EDF Bleu"
switchBLANC = "Demain EDF Blanc"
switchROUGE = "Demain EDF Rouge"
-- Function to get result of HTTP request
function os.capture(cmd, raw)
local f = assert(io.popen(cmd, 'r'))
local s = assert(f:read('*a'))
f:close()
if raw then return s end
s = string.gsub(s, '^%s+', '')
s = string.gsub(s, '%s+$', '')
s = string.gsub(s, '[\n\r]+', ' ')
return s
end
-- Function to update a switch
function updateZoneSwitch(zone, switch)
local cmd = curl .. " http://domogeek.entropialux.com/tempoedf/tomorrow"
local vac = os.capture(cmd, true)
print("¤¤¤ Couleur EDF Tempo de demain: " .. cmd .. ": " .. vac)
if (vac == "BLEU") then
commandArray[switchBLEU] = "On"
commandArray[switchBLANC] = "Off"
commandArray[switchROUGE] = "Off";
elseif (vac == "BLANC") then
commandArray[switchBLEU] = "Off"
commandArray[switchBLANC] = "On"
commandArray[switchROUGE] = "Off";
elseif (vac == "ROUGE") then
commandArray[switchBLEU] = "Off"
commandArray[switchBLANC] = "Off"
commandArray[switchROUGE] = "On";
end
end
commandArray = {}
time = os.date("*t")
-- Trigger at 15:00 every day
if (time.min == 00 and time.hour == 15) then
-- BLEU
updateZoneSwitch("BLEU", switchBLEU)
-- BLANC
updateZoneSwitch("BLANC", switchBLANC)
-- ROUGE
updateZoneSwitch("ROUGE", switchROUGE)
end
return commandArray(Pour info, c'est une adaptation d'un script Vacances Scolaires dont je ne me rappelle plus du nom de l'auteur, mais je l'en remercie, si quelqu'un sait qui c'est, n'hésitez pas à me le signaler !)
