Sakkhho Posté(e) le 31 décembre 2015 Signaler Posté(e) le 31 décembre 2015 Bonjour, Pour faire des annonces TTS, j'aimerai pouvoir identifier les 2 et 4eme mercredi de chaque mois ? mais pas vraiment d'idée pour savoir comment faire ... avez vous déjà codé quelque chose dans le style ? merci
mprinfo Posté(e) le 31 décembre 2015 Signaler Posté(e) le 31 décembre 2015 il faut que tu utilises os.date sous forme de table tu fais un boucle sur le mois et tu comptes les mercredi je crois que c'est 3 pour le mercredi t = os.date('*t') -- time now > table.foreach(os.date('*t'), print) hour 15 min 1 wday 1 year 2003 yday 124 month 5 sec 2 day 3 -- Mercredi isdst true
Sakkhho Posté(e) le 31 décembre 2015 Auteur Signaler Posté(e) le 31 décembre 2015 merci mais pas compris ta boucle et pourtant j'ai pas commencé l'apéro :-) désolé Je souhaite lancer un message TTS, si nous sommes le 2eme ou 4eme mercredi du mois.
mprinfo Posté(e) le 31 décembre 2015 Signaler Posté(e) le 31 décembre 2015 Oui j'ai bien compris donc il faut que tu scan les jours du mois et compter les mercredi Envoyé de mon SM-G900F en utilisant Tapatalk
Sakkhho Posté(e) le 31 décembre 2015 Auteur Signaler Posté(e) le 31 décembre 2015 je remets surtout pas en doute ta solution , c'est juste que je ne comprend pas et donc je vois pas comment l'implémenter
mprinfo Posté(e) le 1 janvier 2016 Signaler Posté(e) le 1 janvier 2016 Bon je te donne une solution On récupere les mercredis du mois dans une table Mercredi il suffisait de regarder les exemples ici : http://lua-users.org/wiki/DayOfWeekAndDaysInMonthExample ---------------------------------------------------------------------- -- Calcul du nombres de jours dans le mois ---------------------------------------------------------------------- -- Si année bissextile local function bissextile(year) return year % 4 == 0 and (year % 100 ~= 0 or year % 400 == 0) end -- Nombre de jours dans le mois function JourDansMois(month, year) return month == 2 and bissextile(year) and 29 or ("\31\28\31\30\31\30\31\31\30\31\30\31"):byte(month) end print(os.date("Aujourd'hui, nous sommes un %A")) local MoisAnnee = os.date("*t") local mois = MoisAnnee.month local annee = MoisAnnee.year local Jmois = JourDansMois(mois, annee) fibaro:debug("Jour dans le mois "..Jmois) local Mercredi = {} for jour = 1,Jmois do local tmpdate = (os.time{year = annee, month = mois, day = jour}) local tmpJourChiffre = os.date("%d", tmpdate) local tmpJourNom = os.date("%a", tmpdate) if tmpJourNom == "Wed" then -- Si mercredi ajout dans la table Mercredi table.insert(Mercredi, tmpJourChiffre) end -- fibaro:debug("Jour = "..tmpJourChiffre.." "..tmpJourNom) end for i = 1,#Mercredi do print (Mercredi[i]) end si tu veux le 2 mercredi print (Mercredi[2]) Voila Monsieur 2
mprinfo Posté(e) le 1 janvier 2016 Signaler Posté(e) le 1 janvier 2016 le résultat dans le debug Aujourd'hui, nous sommes un Friday Jour dans le mois 31 06 13 20 27
Sakkhho Posté(e) le 1 janvier 2016 Auteur Signaler Posté(e) le 1 janvier 2016 C'est top ! la fonction print n'affiche rien dans le debug chez moi normal ? je suis obligé de faire un fibaro:debug(...
mprinfo Posté(e) le 1 janvier 2016 Signaler Posté(e) le 1 janvier 2016 La je sais pas pour le print avec le debug cela fonctionne ? Tu as donc une table avec tous les mercredi il suffit que tu choisisses ceux que tu veux. Il y avait plus simple mais j'ai préféré cette méthode car plus générique
Sakkhho Posté(e) le 1 janvier 2016 Auteur Signaler Posté(e) le 1 janvier 2016 oui avec le débug c'est ok. J'ai fait la meme chose avec le 2nd de chaque mois. merci encore
mprinfo Posté(e) le 1 janvier 2016 Signaler Posté(e) le 1 janvier 2016 Des rien monsieur Si tu veux pour un autre jour de la semaine c'est très facile àajouter Envoyé de mon SM-G900F en utilisant Tapatalk
Sakkhho Posté(e) le 1 janvier 2016 Auteur Signaler Posté(e) le 1 janvier 2016 oui j'ai fait ca ---------------------------------------------------------------------- -- Identifier le numero du jour dans le mois ---------------------------------------------------------------------- -- Si année bissextile local function bissextile(year) return year % 4 == 0 and (year % 100 ~= 0 or year % 400 == 0) end -- Nombre de jours dans le mois function JourDansMois(month, year) return month == 2 and bissextile(year) and 29 or ("\31\28\31\30\31\30\31\31\30\31\30\31"):byte(month) end print(os.date("Aujourd'hui, nous sommes un %A")) local MoisAnnee = os.date("*t") local mois = MoisAnnee.month local annee = MoisAnnee.year local Jmois = JourDansMois(mois, annee) fibaro:debug("Jour dans le mois "..Jmois) local Mardi = {} local Jeudi = {} for jour = 1,Jmois do local tmpdate = (os.time{year = annee, month = mois, day = jour}) local tmpJourChiffre = os.date("%d", tmpdate) local tmpJourNom = os.date("%a", tmpdate) if tmpJourNom == "Tue" then -- Si Mardi ajout dans la table Mardi table.insert(Mardi, tmpJourChiffre) end if tmpJourNom == "Thu" then -- Si Jeudi ajout dans la table Jeudi table.insert(Jeudi, tmpJourChiffre) end -- fibaro:debug("Jour = "..tmpJourChiffre.." "..tmpJourNom) end fibaro:debug(os.date("Aujourd'hui, nous sommes le %A, %d")) fibaro:debug("Les Mardi de ce mois :") for i = 1,#Mardi do print (Mardi[i]) fibaro:debug(Mardi[i]) end fibaro:debug("Les Jeudi de ce mois :") for i = 1,#Jeudi do print (Jeudi[i]) fibaro:debug(Jeudi[i]) end local Mardi2 = print (Mardi[2]) local Mardi4 = print (Mardi[4]) if (os.date("%d")+1) == Mardi2 then fibaro:setGlobal("SortirVerres", "Yes") elseif (os.date("%d")+1) == Mardi4 then fibaro:setGlobal("SortirVerres", "Yes") else fibaro:setGlobal("SortirVerres", "No") end local Jeudi2 = print (Jeudi[2]) if (os.date("%d")+1) == Jeudi2 then fibaro:setGlobal("SortirEncombrants", "Yes") else fibaro:setGlobal("SortirEncombrants", "No") end et avec GEA derrière GEA.add({"Global", "SortirVerres", "Yes"}, 60, "", {{"Time", "20:00", "20:01"},{"VirtualDevice", id["SONOS_REMOTE"], 33}}) -- Annonce TTS5 (Verres) GEA.add({"Global", "SortirEncombrants", "Yes"}, 60, "", {{"Time", "20:00", "20:01"},{"VirtualDevice", id["SONOS_REMOTE"], 34}}) -- Annonce TTS6 (Encombrants)
mprinfo Posté(e) le 1 janvier 2016 Signaler Posté(e) le 1 janvier 2016 je pense que cela suffirai if (os.date("%d")+1) == Mardi[2] then fibaro:setGlobal("SortirVerres", "Yes") Pas besoin de cela local Mardi2 = print (Mardi[2]) en fait tu as une table Mardi avec comme valeur Exemple : Mardi = {5, 12, 19, 26} Donc si tu veux le 2 mardi tu mets Mardi[2] qui te retourne la valeur 12 dans cette exemple 1
mprinfo Posté(e) le 2 janvier 2016 Signaler Posté(e) le 2 janvier 2016 Je viens de m'amuser a faire un variante pour tout les jours de la semaine sans if then donc plus optimisé ---------------------------------------------------------------------- -- Calcul du nombres de jours dans le mois ---------------------------------------------------------------------- -- Si année bissextile local function bissextile(year) return year % 4 == 0 and (year % 100 ~= 0 or year % 400 == 0) end -- Nombre de jours dans le mois function JourDansMois(month, year) return month == 2 and bissextile(year) and 29 or ("\31\28\31\30\31\30\31\31\30\31\30\31"):byte(month) end print(os.date("Aujourd'hui, nous sommes un %A")) local MoisAnnee = os.date("*t") local mois = MoisAnnee.month local annee = MoisAnnee.year local Jmois = JourDansMois(mois, annee) fibaro:debug("Jour dans le mois "..Jmois) local Jours = {{}, {}, {}, {}, {}, {}, {}} for jour = 1,Jmois do local tmpdate = (os.time{year = annee, month = mois, day = jour}) local tmpJourChiffre = os.date("%d", tmpdate) local tmpJourNom = tonumber(os.date("%u", tmpdate)) table.insert(Jours[tmpJourNom], tmpJourChiffre) --fibaro:debug("Jour = "..tmpJourChiffre.." "..tmpJourNom) end ---------------------------------------------------------------------- -- Affichage ----------------------------------------------------------------------- local JourNom = {"Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"} for i = 1,#Jours do fibaro:debug(JourNom[i]) for j = 1,#Jours[i] do fibaro:debug(Jours[i][j]) end end 1 = Lundi, 2 = Mardi etc... Pour récuperer le 3 mardi du mois exemple fibaro:debug(Jours[2][3]) pour avoir le nom du jour devant la date fibaro:debug(JourNom[2].." "..Jours[2][3]) 1
Messages recommandés