Aller au contenu

Messages recommandés

Posté(e)

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.

Posté(e)

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

Posté(e)

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.

Posté(e) (modifié)

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
Posté(e)

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.

  • 3 semaines après...
Posté(e)

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 !

  • 2 semaines après...
Posté(e)

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

Posté(e)

@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
Posté(e)

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

Posté(e)

@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.

 

Posté(e)

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 ?

  • 4 mois après...
  • 5 mois après...
Posté(e) (modifié)

@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
×
×
  • Créer...