mprinfo Posté(e) le 3 janvier 2016 Signaler Posté(e) le 3 janvier 2016 Classer les jours du Mois par nom (Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche) Ce script permet de classer les jours du mois par le nom du jour. le but de ce script est de permettre de retrouver le x jour d'un mois ou tous les jours qui ont le même nom Exemple : je veux le 3 mardi du mois je veux tous les jeudi du mois Si vous sauvegardez la table Jours dans une variable globale il faudra exécuter ce script tous les 01 de chaque mois vers 00h01 ---------------------------------------------------------------------- -- Calcul du nombre de jours dans le mois ---------------------------------------------------------------------- -- Si année bissextile local function bissextile(Annee) return Annee % 4 == 0 and (Annee % 100 ~= 0 or Annee % 400 == 0) end -- Nombre de jours dans le mois function JourDansMois(Mois, Annee) return Mois == 2 and bissextile(Annee) and 29 or ("\31\28\31\30\31\30\31\31\30\31\30\31"):byte(Mois) end ---------------------------------------------------------------------- -- Initialisation des variables et creation des tables ---------------------------------------------------------------------- local MoisAnnee = os.date("*t") local mois = MoisAnnee.month -- recuperation du mois en cours local annee = MoisAnnee.year -- recuperation de l'annee en cours local Jmois = JourDansMois(mois, annee) -- calcul le nombre de jour dans le mois en cours local Jours = {["Lundi"]={}, ["Mardi"]={}, ["Mercredi"]={}, ["Jeudi"]={}, ["Vendredi"]={}, ["Samedi"]={}, ["Dimanche"]={}} local JourNom = {"Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"} ---------------------------------------------------------------------------------- for jour = 1,Jmois do local tmpdate = (os.time{year = annee, month = mois, day = jour}) local tmpJourMois = os.date("%d", tmpdate) -- recupere le jour du mois local tmpJourSemaine = tonumber(os.date("%u", tmpdate)) -- Numero du jour de la de semaine local tmpJourNom = JourNom[tmpJourSemaine] -- recupere le nom du jour en francais table.insert(Jours[tmpJourNom], tmpJourMois) --fibaro:debug("Jour = "..tmpJourMois.." "..tmpJourNom) end ----------------------------------------------------------------------- -- Affichage ----------------------------------------------------------------------- print(os.date("Aujourd'hui, nous sommes un %A")) fibaro:debug("Nombre de Jours dans le mois "..Jmois) for i = 1,7 do local jour = JourNom[i] fibaro:debug(jour) for j = 1,#Jours[jour] do fibaro:debug(Jours[jour][j]) end end -- Exemple d'utilisation -- Ici on affiche le 2 lundi du mois local toto = "Lundi" fibaro:debug(Jours[toto][2]) -- ici on affiche le 3 lundi du mois fibaro:debug(Jours.Mardi[3]) On peut sauvegarder la table Jours dans une variable globale afin de l'utiliser dans d'autres scripts (il faudra créer la variable globale) -- Sauvegarde des jours de la semaine dans la variable globale JoursSemaine fibaro:setGlobal('JoursSemaine',json.encode(Jours)) On peut récuperer cette table dans un autre script -- Récupération des jours de la semaine de la variable globale JoursSemaine Jours=json.decode((fibaro:getGlobal('JoursSemaine'))); Utilisation dans un Script ------------------------------------- -- Exemple d'utilisation -- ------------------------------------- -- Ici on affiche le 2 lundi du mois local toto = "Lundi" --Affichage fibaro:debug(Jours[toto][2]) ---------------------------------------------------------------------------------------------- -- ici on affiche le 3 Vendredi du mois local Vendredi3 = Jours.Vendredi[3] --Affichage fibaro:debug(Vendredi3) ---------------------------------------------------------------------------------------------- -- Ici on récupere tous les mardi du mois sous forme de table local Mardi = Jours.Mardi --Affichage for i = 1,#Mardi do fibaro:debug(Mardi[i]) end ---------------------------------------------------------------------------------------------- -- Connaitre le nombre de Samedi dans le mois local NombreSamedi = #Jours.Samedi --Affichage fibaro:debug("Nombre de mardi = "..NombreSamedi) ---------------------------------------------------------------------------------------------- --Recuperer le 3 et 4 jeudi du mois local Jeudi = {Jours.Jeudi[3], Jours.Jeudi[4]} --Affichage for i = 1,#Jeudi do fibaro:debug("Jeudi "..Jeudi[i]) end Voici une version Virtual Device : Fichiers virtual device : Jours_Semaine.vfib 7
pepite Posté(e) le 3 janvier 2016 Signaler Posté(e) le 3 janvier 2016 Que vois-je ? je m'absente pour emmenager dans la maison et hop un tuto de @mprinfo !! 2016 par sur de bonnes bases !! Merci beaucoup 1
Did Posté(e) le 3 janvier 2016 Signaler Posté(e) le 3 janvier 2016 Et oui, toujours sur le pont, et ça peut servir pour des tâches récurrentes spécifiques.
Sakkhho Posté(e) le 3 janvier 2016 Signaler Posté(e) le 3 janvier 2016 Oui la discussion initiale était pour mon besoin de TTS àdes moments donnés. (2 et 4ème mercredi de chaque mois par exemple). Merci encore pour l aide. 1
mprinfo Posté(e) le 3 janvier 2016 Auteur Signaler Posté(e) le 3 janvier 2016 On est la pour cela c'est même le but de ce forum Envoyé de mon SM-G900F en utilisant Tapatalk
mprinfo Posté(e) le 3 janvier 2016 Auteur Signaler Posté(e) le 3 janvier 2016 Je viens de mettre a jour le post 1
Berale64 Posté(e) le 3 janvier 2016 Signaler Posté(e) le 3 janvier 2016 T'as rien pour les numéros du Loto !!! Très beau boulot. 1
mprinfo Posté(e) le 3 janvier 2016 Auteur Signaler Posté(e) le 3 janvier 2016 je crois que le 69 n'ai pas sur la grille @Berale plus sérieusement j'ai essayé d'optimiser le code donc pas de if si tu vois des choses a optimiser je suis preneur
Rocketlud Posté(e) le 8 janvier 2016 Signaler Posté(e) le 8 janvier 2016 Excellent ce petit VD;) merci Pascal;)
Sakkhho Posté(e) le 19 novembre 2017 Signaler Posté(e) le 19 novembre 2017 (modifié) hello, avez vous une idée pour determiner les semaines paires et impaires ? j'aimerai faire du TTS sur les jeudi des semaines impaires ;.. merci et bon dimanche Modifié le 19 novembre 2017 par Sakkhho
OJC Posté(e) le 19 novembre 2017 Signaler Posté(e) le 19 novembre 2017 (modifié) Tiens, teste avec ça : function isOddWeekThursday(date) local day, month, year = string.match(date, "(%d+)/(%d+)/(%d+)") myDate = os.date("*t", os.time{year = year, month = month, day = day}) dayOne = os.date("*t", os.time{year = year, month = 1, day = 1}) week = math.ceil((myDate.yday - dayOne.wday) / 7) return (myDate.wday == 5 and math.fmod(week, 2) == 1) end Modifié le 19 novembre 2017 par OJC
Sakkhho Posté(e) le 19 novembre 2017 Signaler Posté(e) le 19 novembre 2017 (modifié) merci, je teste. pour bien comprendre la fonction renvoi quoi ? pour faire le test derriere ? Modifié le 19 novembre 2017 par Sakkhho
pepite Posté(e) le 19 novembre 2017 Signaler Posté(e) le 19 novembre 2017 Salut messieurs, Pour la semaine paire, voila ce qui est utilisée dans la future version GEA ;-) GEA.getFrequency = function(day, number) --day : 1-31 wday :1-7 (1 :sunday) local t = os.date("*t") local semainepaire = os.date("%W") %2 == 0 if (os.date("%A"):lower() == day:lower()) then return (number == 2 and semainepaire) or t["day"] < 8 end end
OJC Posté(e) le 19 novembre 2017 Signaler Posté(e) le 19 novembre 2017 (modifié) @Sakkhho La fonction te renvoie true si la date est un jeudi d'une semaine impaire. Le (%W) est effectivement encore plus simple... Pas documenté sur le site Lua (qui parle de la v. 5.0, ça doit être postérieur...) Modifié le 19 novembre 2017 par OJC 1
Sakkhho Posté(e) le 19 novembre 2017 Signaler Posté(e) le 19 novembre 2017 (modifié) merci @OJC , et je fais ce test True sur quoi ? isOddWeekThursday @pepite , elle sort quand cette version de GEA ? j'ai loupé le truc - c'est quoi les nouveauté? Modifié le 19 novembre 2017 par Sakkhho
Steven Posté(e) le 20 novembre 2017 Signaler Posté(e) le 20 novembre 2017 @Sakkhho On en est à la beta 8 de GEA et @pepite (et tous les contributeurs) ne fait(font) que de me trouver des bugs ou améliorations possible. On aimerait vous sortir une version fiable avec le moins de bugs possible alors malheureusement, avec nos moyens, cela prend du temps. En ce qui est des nouveautés, c'est simple, c'est un peu prêt tout ce qui n'a jamais été demandé sur GEA + des trucs en plus - Possibilité de manipuler plusieurs modules facilement : {"turnOn", {100, 102, 103}} -- allume les modules 100, 101 et 102 - Possibilité de l'éteindre automatiquement après x seconde : {"turnOn", 100, 60} -- 60 secondes - Possibilité d'avoir un niveau d'imbrication : {"turnOn", 100, {"Global", "AutoExtinction}} -- va cherche la valeur dans la variable global - Les tant attendus {"Sleep"...}, {"Or"...}, {"Thermostatlevel"...}, {"Info"...}, {"setArmed"} ... etc etc - Vos scénarios qui peuvent devenir des plugins de GEA - La possibilité d'écrire vos propres contrôle/action aisément sans les perdre lors de mise à jour et de les partager si vous le souhaiter - Plein d'actions et contrôles supplémentaires .. bref ... 2 ou 3 petits trucs en plus 4
Krikroff Posté(e) le 20 novembre 2017 Signaler Posté(e) le 20 novembre 2017 Sympa tout ça , vais finir par craquer...Envoyé de mon iPhone en utilisant Tapatalk
OJC Posté(e) le 21 novembre 2017 Signaler Posté(e) le 21 novembre 2017 @Sakkhho tu le fais sur une date DD/MM/AA
Messages recommandés