Page 3 sur 3

Re: Récupérer les vacance scolaire

Publié : 20 oct. 2016, 13:43
par vil1driver
Voila comment vérifier,
CALENDRIER DES VACANCES DE L’ANNÉE SCOLAIRE 2016-2017 :
Vacances de la Toussaint : fin des cours mercredi 19 octobre 2016 après la classe, reprise des cours jeudi 3 novembre 2016.
http://domogeek.entropialux.com/schoolh ... 20-10-2016
http://domogeek.entropialux.com/schoolh ... 21-10-2016
Donc un jour de retard

http://domogeek.entropialux.com/schoolh ... /3-11-2016
http://domogeek.entropialux.com/schoolh ... /2-11-2016
La c'est bon

Idem pour Noël.

Domage donc, utiliser tomorrow ne va pas être la solution :(

Contact le pour qu'il rectifie car son api semble exclure le premier et dernier jour de la période.
Il serait préférable des les inclure et d'avancer d'une journée la fin de période qui contient actuellement le jour de reprise des cours..

Re: Récupérer les vacance scolaire

Publié : 20 oct. 2016, 13:53
par lcano
A priori L'API est décalée d'une journée... Également pour le dernier jour... donc tout va bien ;)

Re: Récupérer les vacance scolaire

Publié : 20 oct. 2016, 13:55
par vil1driver
Tu as lu de travers :geek:

Re: Récupérer les vacance scolaire

Publié : 20 oct. 2016, 13:59
par lcano
Désolé je n'avais pas vu tes tests

Re: Récupérer les vacance scolaire

Publié : 20 oct. 2016, 14:12
par gawel3164
Bien vu vil1driver. Vais essayer de le contacter.

Re: Récupérer les vacance scolaire

Publié : 20 oct. 2016, 16:08
par gawel3164
En attendant, j'ai bricolé ça, en laissant tomorrow. Je pense que ça devrait marcher pour le dernier jour des vacances:

Code : Tout sélectionner

if (vac == "False") then
    if (otherdevices[switch] == "On" and time.min == 59 and time.hour == 23 ) then
      commandArray[switch] = "Off";
    end
  else
    if (otherdevices[switch] == "Off") then
      commandArray[switch] = "On";
    end
  end
end

Re: Récupérer les vacance scolaire

Publié : 20 oct. 2016, 16:35
par vil1driver
Pas bête d'attendre la fin de la journée ;)

Re: Récupérer les vacance scolaire

Publié : 02 mars 2018, 22:26
par lmet
Bonsoir,
J'essaie le script sans succès, dans les log j'ai :
Sans titre 5.jpg
Sans titre 5.jpg (33.64 Kio) Consulté 7407 fois
Une piste ?
D'avance merci.

[Edit] J'ai retiré la ligne :

Code : Tout sélectionner

print("¤¤¤ School Holiday Status: " .. cmd .. ": " .. vac)
J'avais un problème de nommage du switch zone C, cela fonctionne maintenant.
@hobbe Merci pour le partage.

Re: Récupérer les vacance scolaire

Publié : 04 mars 2018, 17:42
par lmet
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.