pepite Posté(e) le 12 septembre 2019 Signaler Posté(e) le 12 septembre 2019 Ah ben j'avais pas vu la nouvelle version..je suis à la rue ;-)
BenjyNet Posté(e) le 16 septembre 2019 Signaler Posté(e) le 16 septembre 2019 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
kioneoranga Posté(e) le 16 septembre 2019 Signaler Posté(e) le 16 septembre 2019 ç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)
kioneoranga Posté(e) le 17 septembre 2019 Signaler Posté(e) le 17 septembre 2019 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?
BenjyNet Posté(e) le 17 septembre 2019 Signaler Posté(e) le 17 septembre 2019 Oui test avec le code du dessus. Moi j'ai pas ce code là, j'ai un code particulier correspondant à mon besoin.
kioneoranga Posté(e) le 17 septembre 2019 Signaler Posté(e) le 17 septembre 2019 so good maintenant Merci bcp
BenjyNet Posté(e) le 17 septembre 2019 Signaler Posté(e) le 17 septembre 2019 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à.
ADN182 Posté(e) le 17 septembre 2019 Signaler Posté(e) le 17 septembre 2019 C'est déjà fait ça BenJ, ou alors j'ai pas compris Envoyé de mon Nexus 5X en utilisant Tapatalk
BenjyNet Posté(e) le 17 septembre 2019 Signaler Posté(e) le 17 septembre 2019 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. 1
pepite Posté(e) le 20 septembre 2019 Signaler Posté(e) le 20 septembre 2019 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")
mikael2235 Posté(e) le 20 septembre 2019 Signaler Posté(e) le 20 septembre 2019 (modifié) 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, Modifié le 20 septembre 2019 par mikael2235
mikael2235 Posté(e) le 20 septembre 2019 Signaler Posté(e) le 20 septembre 2019 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
BenjyNet Posté(e) le 20 septembre 2019 Signaler Posté(e) le 20 septembre 2019 T'es sur que t'as ta scène pour récupérer le json qui fonctionne ?
pepite Posté(e) le 20 septembre 2019 Signaler Posté(e) le 20 septembre 2019 Il faut que tu utilises le code scene/VD d ADN182Envoyé de mon BND-L21 en utilisant Tapatalk
mikael2235 Posté(e) le 20 septembre 2019 Signaler Posté(e) le 20 septembre 2019 Ah ben je veux bien un lien, j'ai du louper quelque chose :-/
BenjyNet Posté(e) le 20 septembre 2019 Signaler Posté(e) le 20 septembre 2019 La scène c'est là : Le VD c'est là :
mikael2235 Posté(e) le 20 septembre 2019 Signaler Posté(e) le 20 septembre 2019 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 :-) 1
Sakkhho Posté(e) le 21 septembre 2019 Signaler Posté(e) le 21 septembre 2019 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 !
MAM78 Posté(e) le 21 septembre 2019 Auteur Signaler Posté(e) le 21 septembre 2019 Hello les potos, pourquoi avoir créé une scene et plus et pas tout mis dans le VD ?
MAM78 Posté(e) le 21 septembre 2019 Auteur Signaler Posté(e) le 21 septembre 2019 ah effectivement, c'est ce que j'avais pensé une fois mon message envoyé. Argh
BenjyNet Posté(e) le 21 septembre 2019 Signaler Posté(e) le 21 septembre 2019 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.
MAM78 Posté(e) le 21 septembre 2019 Auteur Signaler Posté(e) le 21 septembre 2019 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.
Messages recommandés