Aller au contenu
MAM78

Vacances Scolaires De Monsieur Steven Adapté

Recommended Posts

ou faire un boucle dans la scène pour chaque zone.

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

Heu non même pas tu fais ça dans le VD, normalement le JSON a toutes les zones.

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors pourquoi tu indiques la ville dans ton VD ?

 

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

Donc il faut bien 2 scenes ou une boucle pour traiter chacune des académies.

Partager ce message


Lien à poster
Partager sur d’autres sites

Mais non, ta VG n'est pas filtrée, elle récupère l'ensemble des vacances, c'est dans le VD que tu filtres la ville. Donc une scène et 2 VD à la rigueur.

Partager ce message


Lien à poster
Partager sur d’autres sites

Il me semble sans avoir analysé tout ton code que tu filtres bien sur la ville selon la ligne de code ci-dessous. Ou alors j'ai loupé quelque chose ;)

 

  if jsonTable[j].fields.location == Ville and jsonTable[j].fields.annee_scolaire == Annee then

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, dans le VD et non dans la scène. Donc je te le redis, la variable globale issue de la scène (le json de l'état) renvoi bien l'ensemble des vacances. Donc tu fais 2 VD et une scène si tes enfants sont dans 2 acad différentes.

Partager ce message


Lien à poster
Partager sur d’autres sites

Ou là, je suis un gros boulet. j'ai inversé la lecture du code de la scène et du VD.

Laisse tomber ça fait au mois 6 mois que je n'ai pas remis les mains sur ma HC2. Désolé pour la perte de temps.

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

Huhu non non c'est pas une perte de temps. Par contre je pense qu'il y aura un soucis sur la bascule d'année scolaire. Coder en dur la date du mois d'Aout ça me gène.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à tous,

j’essaye de faire fonctionner ce VD, mais j’ai un message d’erreur :

ERROR] 17:41:17: line 176: bad argument #1 to 'difftime' (number expected, got nil)

Une idée ...? D’avance merci du coup de main !

Partager ce message


Lien à poster
Partager sur d’autres sites

T'as modifié avec la dernière MAJ des messages précédents ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Désolé, le boulet, je n'y arrive pas !!

[ERROR] 20:15:49: line 41: attempt to index field '?' (a nil value)

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @Rem's essaye de mettre l’académie dont tu depends et non pas ta ville, j.ai eu le même souci. 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour à tous, 

J'essaye en vain de faire tourner ce VD, je voudrais me servir des variables vacances pour mes scènes.

 

local Ville = "Marseille"
local dayofchange = 31 -- Jour du changement d'Année scolaire
local monthofchange = 8 -- Mois du changement d'Année scolaire
local Annee = "2019"
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

 

Un coup de main serait chouette !! d'avance merci !!

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Le fork (scene + VD) d'ADN est OK chez moi, as-tu une erreur ?

Partager ce message


Lien à poster
Partager sur d’autres sites

@Rem's, dans mon post précédent, je te disais qu'il fallait mettre le nom de l'académie dont tu dépends, or l'académie dont tu dépends n'est pas Marseille mais"Aix-Marseille"  ;)  .

ps: il faut respecter les majuscules comme dans l'exemple.

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

En fait j'ai même essayé avec Lille et Rouen !! (les pauvres, c'est une honte ...)

J'ai toujours l'erreur

[ERROR] 21:04:34: line 41: attempt to index field '?' (a nil value)

 

J'ai essayé avec Marseille, Aix - Marseille, Aix-Marseille, aix - marseille, 13

 

Faut il bien renseigner l'année entre les "" : soit 2019 ?

 

Merci pour ton aide, au top

Partager ce message


Lien à poster
Partager sur d’autres sites

@Rem's as tu créé la variable globale puis exécuté le script comme indiqué ici :  ? ce dernier va stocker la liste le VD va la parser pour récupérer les info. Il faut que la variable est le même nom que celui déclaré au niveau du VD. Tiens nous au jus.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

bonjour à tous,

J'avance, mais doucement , ... quel boulet !!

 

j'ai une erreur

[ERROR] 19:17:53: line 26: bad argument #1 to 'difftime' (number expected, got nil)

 

J'ai bien la scène qui au début : succès.

Une idée ?

Partager ce message


Lien à poster
Partager sur d’autres sites

ca fonctionne chez vous ?

 

la scene mets success, mais j'ai l'impression qu'il y a rien dans la variable ?

Partager ce message


Lien à poster
Partager sur d’autres sites

@BenjyNet 

j'ai voulu voir si ce VD ce mets à jour, le json semble bien contenir l'année 2021 par contre si je change la date dans le bouton du VD  pour prendre le changement d'année scolaire j'ai ca ?

 

 

[ERROR] 09:09:14: line 39: field 'day' missing in date table

 

 

Modifié par Sakkhho

Partager ce message


Lien à poster
Partager sur d’autres sites

Yep, je pense que c'est parce qu'il n'y a pas de date de vacances d'été encore. Faut rajouter un test pour éviter cette erreur.

Partager ce message


Lien à poster
Partager sur d’autres sites

×