Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'os.time'.



Plus d’options de recherche

  • Rechercher par étiquettes

    Saisir les étiquettes en les séparant par une virgule.
  • Rechercher par auteur

Type du contenu


Forums

  • Bienvenue
    • Nouveau ? Présentez-vous
    • Le bistrot
    • Mon installation domotique
    • Annonces et suggestions
  • La Home Center et ses périphériques
    • La Home Center pour les nuls
    • HC 2 & Lite
    • HC 3
    • Modules Fibaro
    • Modules Z-wave
    • Périphériques et matériels autres
    • Plugins
    • Quick App
    • Multimédia (audio, vidéo ...)
    • Chauffage et Energie
    • Actionneurs & Ouvrants (Portail, volets, piscines, ...)
    • Eclairage
    • Applications Smartphones et Tablettes
  • Autres solutions domotiques
    • Box / Logiciel
    • Modules Nice (433 & 866 MHz)
    • Modules Zigbee
    • GCE Electronics
    • Modules Bluetooth Low Energy
  • Objets connectés
    • Les Assistants Vocaux
    • Netatmo
    • Philips Hue
    • DIY (Do It Yoursel)
  • Sécurité
    • Alarmes
    • Caméras
    • Portiers
    • Serrures
  • Informatique / Réseau
    • Tutoriels
    • Matériels Réseaux
    • Matériels Informatique
    • NAS
    • Virtualisation
  • Les bonnes affaires
    • Sites internet
    • Petites annonces

Calendriers

Aucun résultat à afficher.


Rechercher les résultats dans…

Rechercher les résultats qui…


Date de création

  • Début

    Fin


Dernière mise à jour

  • Début

    Fin


Filtrer par nombre de…

Inscription

  • Début

    Fin


Groupe


Jabber


Skype


Ville :


Intéret :


Version

3 résultats trouvés

  1. Objectif : Crée des déclencheurs (trigger) toutes les 30mn sans avoir besoin de faire une boucle "while true do" afin de mettre a jours 2 variables globale qui nous servirons a déclencher des scènes. Méthode : Utiliser la variable Globale que l'on mets a jour pour lancer la scèneVariable Globale a créée : Heure DemiHeure Ce script va mettre a jour : La variable DemiHeure sera mis a jour à chaque fois que les minutes seront égales a 0 ou 30 La variable Heure sera mis a jour si les minutes sont égale à 0 Nous aurons donc 1 déclenchement par heure pour la VG: Heure et 2 déclenchements par heure pour la VG DemiHeure Voici le script (a copier dans une scène) : --[[ %% autostart %% globals DemiHeure --]] local Minutes = tonumber(os.date("%M", os.time())) local trigger = fibaro:getSourceTrigger() if (trigger['type'] == 'autostart') then fibaro:setGlobal("DemiHeure", "0"..Minutes) fibaro:debug("Demarrage via autostart") fibaro:abort() end fibaro:debug("Demarrage en cours...") local NbreScene = fibaro:countScenes() fibaro:debug("Nombres de Scéne en cours : "..NbreScene) fibaro:sleep(60*1000) local Pause = 0 if Minutes > 30 then Pause = 60 - Minutes else Pause = 30 - Minutes end fibaro:debug("Mise a jour Variable : "..Pause.."mn") fibaro:sleep(Pause*60*1000) Minutes = tonumber(os.date("%M", os.time())) fibaro:debug("mise a jour VG DemiHeure"..Minutes) fibaro:setGlobal("DemiHeure", Minutes) if Minutes == 0 then local Heure = tonumber(os.date("%H", os.time())) fibaro:setGlobal("Heure", Heure) fibaro:debug("mise a jour VG Heure"..Minutes) end Exemple d'utilisation : Je veux que ma scène se lance à 17h --[[ %% globals Heure --]] local heure = fibaro:getGlobalValue("Heure") if heure ~= 17 then; fibaro:abort(); end fibaro:debug("le script peut être exécuté ") Un peut plus compliquer --[[ %% globals DemiHeure --]] local trigger = fibaro:getSourceTrigger() if (trigger['type'] == 'global') then nomTrigger = trigger['name'] valeurTrigger = tonumber(fibaro:getGlobalValue(nomTrigger)) print("Nom du déclencheur = ", nomTrigger, " - Minutes : ", valeurTrigger) if valeurTrigger ~= 17 then; fibaro:abort(); end else fibaro:debug("La scéne ne peut être lancer que par une Variable Globale") fibaro:abort(); end if nomTrigger="Heure" and valeurTrigger ~= 17 then fibaro:abort() end
  2. 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
  3. jjacques68

    os.time qui perd la boule à minuit

    Bonjour à tous, Je remarque que très souvent la fonction os.time() manque de stabilité. J'ai une scène qui tourne H24 et qui utilise os.time(). J'ai plusieurs fois par semaine cette scène qui bug à exactement minuit (rien dans le code de cette scène ne peut la faire planter à minuit...) alors du coup j'ai créé une autre petite scène pour observer le os.time() : --[[ %% autostart %% properties %% events %% globals --]] local last = os.time() function loop() --1. test la différence d'une boucle à l'autre, si plus d'une seconde alors debug if os.time() - last > 1 then print("error : "..(os.time() - last).." s") end --2. affiche os.time de 23:59:40 à 00:00:20 if os.date("%H:%M:%S") >= "23:59:40" or os.date("%H:%M:%S") <= "00:00:20" then print(os.time()) end --affecte la nouvelle valeur à la variable last = os.time() --bouclage toutes les 1 seconde setTimeout(loop, 1000) end loop() cette scène à 2 rôles : 1- si plus d'une seconde d'écart entre 2 boucles on affiche dans le debug la différence de temps 2- affiche chaque seconde le os.time() entre 23:59:40 et 00:00:20. J'ai fais tourner cette scène hier soir de 22h à ce matin 6h... voilà le résultat pour le premier rôle : [DEBUG] 23:44:49: error : 2 s [DEBUG] 23:44:51: error : 2 s [DEBUG] 23:45:06: error : 2 s [DEBUG] 00:31:02: error : 10 s [DEBUG] 02:16:19: error : 2 s [DEBUG] 02:16:22: error : 2 s [DEBUG] 02:16:30: error : 2 s [DEBUG] 02:16:34: error : 2 s [DEBUG] 04:13:31: error : 2 s [DEBUG] 04:13:48: error : 2 s [DEBUG] 06:11:02: error : 2 s [DEBUG] 06:11:04: error : 2 s [DEBUG] 06:11:11: error : 2 s [DEBUG] 06:11:16: error : 2 s [DEBUG] 06:11:23: error : 2 s [DEBUG] 06:11:26: error : 2 s on voit que c'est qu'il y a des trucs étrange entre 23h44 et 6h11 (heure à laquelle j'ai arrêté le script) et voici le résultat pour le second rôle : [DEBUG] 23:59:40: 1500242380 [DEBUG] 23:59:41: 1500242381 [DEBUG] 23:59:42: 1500242382 [DEBUG] 23:59:43: 1500242383 [DEBUG] 23:59:44: 1500242384 [DEBUG] 23:59:45: 1500242385 [DEBUG] 23:59:46: 1500242386 [DEBUG] 23:59:47: 1500242387 [DEBUG] 23:59:48: 1500242388 [DEBUG] 23:59:49: 1500242389 [DEBUG] 23:59:50: 1500242390 [DEBUG] 23:59:51: 1500242391 [DEBUG] 23:59:52: 1500242392 [DEBUG] 23:59:53: 1500242393 [DEBUG] 23:59:54: 1500242394 [DEBUG] 23:59:55: 1500242395 [DEBUG] 23:59:56: 1500242396 [DEBUG] 23:59:57: 1500242397 [DEBUG] 23:59:58: 1500242398 [DEBUG] 23:59:59: 1500242399 [DEBUG] 00:00:00: 1500242400 [DEBUG] 00:00:01: 1500242401 [DEBUG] 00:00:02: 1500242402 [DEBUG] 00:00:16: 1500242403 [DEBUG] 00:00:16: 1500242404 [DEBUG] 00:00:16: 1500242405 [DEBUG] 00:00:16: 1500242406 [DEBUG] 00:00:16: 1500242407 [DEBUG] 00:00:17: 1500242408 [DEBUG] 00:00:17: 1500242409 [DEBUG] 00:00:17: 1500242410 [DEBUG] 00:00:17: 1500242411 [DEBUG] 00:00:17: 1500242412 [DEBUG] 00:00:17: 1500242413 [DEBUG] 00:00:17: 1500242414 [DEBUG] 00:00:17: 1500242415 [DEBUG] 00:00:17: 1500242416 [DEBUG] 00:00:17: 1500242417 [DEBUG] 00:00:18: 1500242418 [DEBUG] 00:00:19: 1500242419 [DEBUG] 00:00:20: 1500242420 Et là comme par hasard, je n'ai eut aucun soucis... on voit bien les secondes s'enchainées l'une derrière l'autre. Par contre on voit le time code du debug qui ne correspond pas à 00:00:16 et 00:00:17 Mais c'est la première fois depuis au moins 1 semaine que, cette nuit, à minuit, ma scène n'a pas plantée... je relance le test ce soir pour voir... et vous posterai le debug... Est-ce que quelqu'un à déjà constaté ce genre de comportement ?
×