Bonsoir,
J'ai préféré ce script car plus simple (pas de Xml à parser) grâce à l'utilisation de l'API
Domogeek mise à disposition par Guiguiabloc.
Reste la pérennité liée à la disponibilité du serveur utilisé. Si cette API vous est utile il y a la case
"PayPal" ça aide l'auteur et devrait être une action naturelle.
Je vous propose une mise à jour du script de
hobbe légèrement modifié :
° Ne nécessite pas de créer 3 interrupteurs (un seul suffit).
° Script traduit.
° Utilise le serveur réel
http://domogeek.entropialux.com/ qui n'existait pas à l'époque.
Nb : Pas testé sous Windows, histoire de "curl" à voir.
Code : Tout sélectionner
-- Script de type "Time" : Renseigne un ou des switch(s) virtuel(s) sur les vacances scolaires
-- Utilise "School Holiday Status" de l'API Domogeek
-- D'après le script de hobbe --> https://easydomoticz.com/forum/viewtopic.php?f=8&t=234#p1468
-- Doc : http://api.domogeek.fr/static/doc/index.html#api-Domogeek-GetSchoolHoliday
-- Prérequis: de 1 à 3 switch(s) vituel(s) On/Off: "Zone A", "Zone B", "Zone C"
----------------------- Variables à éditer --------------------------
local zoneA = false -- Si true --> J'ai créé un switch nommé "Zone A"
local zoneB = false -- Si true --> J'ai créé un switch nommé "Zone B"
local zoneC = true -- Si true --> J'ai créé un switch nommé "Zone C"
-------------------------- Fin édition ------------------------------
-- Fonction renvoyant le résultat d'une requète HTTP
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
-- Fonction de mise à jour du (des) switch(s) virtuel(s)
function updateZoneSwitch(zone, switch)
local cmd = "curl http://domogeek.entropialux.com/schoolholiday/" .. zone .. "/now"
local vac = os.capture(cmd, true)
if (vac == "False") then
commandArray[switch] = 'Off'
elseif (vac ~= "False") then
commandArray[switch] = 'On'
end
end
commandArray = {}
time = os.date("*t")
-- Déclenchement tous les jours à 0:02
if (time.min == 2 and time.hour == 0) then
-- Zone A
if zoneA == true then updateZoneSwitch("A", "Zone A") end
-- Zone B
if zoneB == true then updateZoneSwitch("B", "Zone B") end
-- Zone C
if zoneC == true then updateZoneSwitch("C", "Zone C") end
end
return commandArray
Je débute, merci de votre indulgence.