Aller au contenu

Vacances Scolaires De Monsieur Steven Adapté


MAM78

Messages recommandés

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

Lien vers le commentaire
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.

Lien vers le commentaire
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
Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

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 !

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

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 !!

Lien vers le commentaire
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

Lien vers le commentaire
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.

 

Lien vers le commentaire
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 ?

Lien vers le commentaire
Partager sur d’autres sites

  • 4 mois après...
  • 5 mois après...

@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
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...