Aller au contenu
MAM78

Vacances Scolaires De Monsieur Steven Adapté

Recommended Posts

Ah ben j'avais pas vu la nouvelle version..je suis à la rue ;-)

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Testez moi ça, normalement si je ma pas gouré ça doit marcher.

local Ville = "Lille"
local dayofchange = 31 -- Jour du changement d'Année scolaire
local monthofchange = 8 -- Mois du changement d'Année scolaire
local Annee = ""
local data = fibaro:getGlobal("VacancesScolaire")
local i = 1
local now = os.time()
local holiday = false
local holidayd1 = false
local vacance = {}

-- --------------------------------------------------------------------------------------------------------------
-- Determine l'Année Scolaire par rapport aux paramètres monthofchange & dayofchange
-- --------------------------------------------------------------------------------------------------------------
local dateofchange = os.time({day=dayofchange,month=monthofchange,year=os.date("%Y"),hour=0,min=0,sec=0})
if now > dateofchange then
	Annee = os.date("%Y").."-"..(os.date("%Y") + 1)
else
	Annee = (os.date("%Y") -1).."-"..os.date("%Y")
end

-- --------------------------------------------------------------------------------------------------------------
-- Calcule le nombre de jours entre 2 dates
-- --------------------------------------------------------------------------------------------------------------
function delai(dated, dateparam)
  diff = os.difftime(dated, dateparam)
  return math.floor(diff / (60*60*24))
end

-- --------------------------------------------------------------------------------------------------------------
-- Transforme une date en string en date exploitable
-- --------------------------------------------------------------------------------------------------------------
function getDateFormat(sdate)
  year,month,day = sdate:match("(%d+)-(%d+)-(%d+)")
  return os.time({day=day,month=month,year=year,hour=0,min=0,sec=0})
end


local status, jsonTable = pcall(function() return json.decode(data) end)
for j = 1, #jsonTable do
  if jsonTable[j].fields.location == Ville and jsonTable[j].fields.annee_scolaire == Annee then
    local Description = jsonTable[j].fields.description
    local Annee_Scolaire = jsonTable[j].fields.annee_scolaire
    local Start_date = tostring(jsonTable[j].fields.start_date)
    local End_date = tostring(jsonTable[j].fields.end_date)
    Zone = jsonTable[j].fields.zones
    --local Ville = jsonTable[j].fields.location

    if (now > getDateFormat(Start_date) and now < getDateFormat(End_date)) then
     	holiday = true
    elseif ( getDateFormat(Start_date) > now and not holiday) then
		if nextholiday  ~= nil then
			if getDateFormat(Start_date) < nextholiday then nextholiday = getDateFormat(Start_date) end 
		else
			nextholiday = getDateFormat(Start_date)
        end
    end
    
    if (now+24*60*60  > getDateFormat(Start_date) and now+24*60*60 < getDateFormat(End_date)) then
       holidayd1 = true 
    end
	table.insert(vacance, getDateFormat(Start_date).." - "..getDateFormat(End_date).." | "..Description)
  end
end

fibaro:call(fibaro:getSelfId(), "setProperty", "ui.ville.value", Ville)
fibaro:call(fibaro:getSelfId(), "setProperty", "ui.zone.value", Zone)

table.sort(vacance)
for k, v in pairs(vacance) do
  local date1   = string.match(v, "(%d+)%s");
  local date2   = string.match(v, "-%s(%d+)%s");
  local libelle = string.match(v, "|%s(.+)");
  fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label"..k..".value", os.date("%d.%m.%Y", date1) .. " - " .. os.date("%d.%m.%Y", date2) .. " | " .. libelle)
end 

if holiday then
     fibaro:call(fibaro:getSelfId(), "setProperty", "ui.today.value", "Oui")
  else
     fibaro:call(fibaro:getSelfId(), "setProperty", "ui.today.value", "Non")
     fibaro:call(fibaro:getSelfId(), "setProperty", "ui.status.value", "Dans ".. delai(nextholiday, now) .. " Jours")
end

if holidayd1 then
   fibaro:call(fibaro:getSelfId(), "setProperty", "ui.tomorrow.value", "Oui")
  else
   fibaro:call(fibaro:getSelfId(), "setProperty", "ui.tomorrow.value", "Non")
end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

ça marche pas :-)

 

Erreur ligne 34

  year,month,day = sdate:match("(%d+)-(%d+)-(%d+)")

 

  [ERROR] 21:35:19: line 34: attempt to index local 'sdate' (a number value)

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 9 heures, BenjyNet a dit :

J'ai corrigé, test.

SAlut

Tu tests ou tu me demandes de tester?

AS tu partagé la correction?

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui test avec le code du dessus. Moi j'ai pas ce code là, j'ai un code particulier correspondant à mon besoin.

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai encore un truc qui me gène à résoudre, c'est le changement d'année scolaire, faut que je le rende automatique celui là.

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est déjà fait ça BenJ, ou alors j'ai pas compris

Envoyé de mon Nexus 5X en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui mais sans utiliser le jour/mois de basculement. Faudrait que cette date se mette à jour et corresponde au jour de la rentrée + 1, qui change tous les ans. J'ai peur qu'en codant une date en dur on ne soit plus considéré en vacances entre le 31/08 et le 03/09 par exemple.

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour bonjour,

 

Le fichier renvoie la date de rentree ? pas vu :-(

 

Demande modif @ADN182

En cas e vacances, on peut peut-etre rajouter cela : "En Vacances" si je suis en vacances, ca permet de recuperer l'info des vacances depuis n'importe où, GEA ou autre  ;-)

 if holiday then
     fibaro:call(fibaro:getSelfId(), "setProperty", "ui.today.value", "Oui")
     fibaro:call(fibaro:getSelfId(), "setProperty", "ui.status.value", "En Vacances")

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello, 

 

J'ai pas tout compris, il faut créer une scène aussi avec ce VD ? Je ne vois pas de code. 

Est-ce que ça fonctionne sans GEA ? 

 

[EDIT] J'ai une erreur a la ligne 176...

 

Merci,

bug_vacs.png

Modifié par mikael2235

Partager ce message


Lien à poster
Partager sur d’autres sites

Je ne sais pas si il y a un bug dans le code ou pas, mais la dernière date de vacances qu'il trouve, ce sont les vacances d'été 2019.

J'ai rajouté des debug pour essayer de comprendre, ça marche sans erreur, mais le code est bizarre

vacs.png

Partager ce message


Lien à poster
Partager sur d’autres sites

T'es sur que t'as ta scène pour récupérer le json qui fonctionne ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Il faut que tu utilises le code scene/VD d ADN182

Envoyé de mon BND-L21 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Parfait !! Tout fonctionne bien maintenant ! Un grand merci pour votre aide. 

J'ai juste changer les noms des labels dans les VD, mais c'est un détail ça :-)

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

j"ai mis à jour également car @pepite avait raison il y a des données qui ne remontaient plus.

 

merci en tout cas pour le taf !

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello les potos, pourquoi avoir créé une scene et plus et pas tout mis dans le VD ?

Partager ce message


Lien à poster
Partager sur d’autres sites

ah effectivement, c'est ce que j'avais pensé une fois mon message envoyé. Argh ;)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Après la scène elle n'est pas obligé de se lancer plusieurs fois. Me semble qu'une seule fois par an ça suffit.

Partager ce message


Lien à poster
Partager sur d’autres sites

Dommage, il va me falloir faire plusieurs scènes. une pour chaque enfants qui ne sont pas dans la même zone. Alors qu'avant il suffisait de faire un deuxième VD en changent le département.

Partager ce message


Lien à poster
Partager sur d’autres sites

×