mprinfo Posté(e) le 11 mai 2020 Signaler Partager Posté(e) le 11 mai 2020 J'ai un problème avec les fonctions sur HC3 dans les QA mais aussi dans les scènes ca passait sur HC2 mais impossible sur HC3 local VGJourNuit = "Jour_Nuit" ---------------------------------------------------------------------- -- Vérification de l'heure et mise à jour -- -- de la variable si nécessaire -- ---------------------------------------------------------------------- function UpdateJourNuit(NomVG, heure) heure = os.date("%H:%M", os.time()) fibaro.debug("function UpdateJourNuit") local valeurs = "Nuit" -- test si on est le jour ou la nuit if (heure >= leverSoleil) and (heure < coucherSoleil) then valeurs = "Jour" end fibaro.debug(string.format("Lever Soleil : %s - Coucher Soleil : %s", leverSoleil, coucherSoleil)) --UpdateVG(NomVG, valeurs) -- mise a jour de la VG Jour_Nuit end print("demmarrage") UpdateJourNuit(VGJourNuit, os.date("%H:%M", os.time())) message erreur [11.05.2020] [19:09:01] [DEBUG] [SCENE21]: demmarrage[11.05.2020] [19:09:01] [ERROR] [SCENE21]: (load):12: attempt to compare nil with string c'est le 2 paramètre qui ne passe pas la je vois pas pourquoi car en plus cela fonction sur HC2 Lien vers le commentaire Partager sur d’autres sites More sharing options...
TonyC Posté(e) le 11 mai 2020 Signaler Partager Posté(e) le 11 mai 2020 @mprinfo comment et où sont valorisés leverSoleil et coucherSoleil ? un autre truc lors de ton portage, le debug maintenant doit à minima être comme ça => fibaro.debug("", "hello world") entre guillemet tu peux y mettre ce que tu veux pour rendre la lecture plus facile dans ta console de debug => fibaro.debug("Nom de scène / # de scène" , ton message de debug) ou fibaro.trace ("blablabla" , "hello world") Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 11 mai 2020 Auteur Signaler Partager Posté(e) le 11 mai 2020 @tonyC ou j'ai vu mais je n'arrive pas toujours a m'en souvenir donc souvent un debug ou un print oui il manque du code mais je sais que c'est le paramétre 2 qui passe pas voici la scène je l'avais faite avec steven sur HC2 mais la ca plante tout obliger de redémarrer ou j'ai marqué -----------------------------modif cela ne me fait plus d'erreur lors je code de cette facon donc c'est bien un soucis avec le paramètre 2 print("lever : ", fibaro.getValue(1, "sunriseHour")) print("Coucher : ", fibaro.getValue(1, "sunsetHour")) if (trigger.property == "sunset") then print("id:"..trigger.operator) print("type:"..trigger.type) print("type:"..trigger.value) end -- Nom des Variables Globales local VGJourNuit = "Jour_Nuit" local VGLeverSoleil = "SoleilLever" local VGCoucherSoleil = "SoleilCoucher" -- Minutes de décalages par rapport au lever du soleil local TLever = {-60, -45, -30, -20, -10, 10, 20, 30} -- Minutes de décalages par rapport au Coucher du soleil local TCoucher = {-30, -20, -10, 10, 20, 30, 45, 60} -- Id du téléphone --local IdTel = fibaro:getGlobal("TelPascal") --************ Ne rien modifier en dessous de cette ligne ************ ---------------------------------------------------------------------- -- Envoi d'un Push pour avertir que le box à démarrer ou redémarrer -- ---------------------------------------------------------------------- function EnvoiPush(Message) fibaro.debug(Message) --fibaro:call(IdTel, "sendPush", Message) end -- ----------------------------------------------------------------- -- Vérification Variable Globale et création si besoin -- -- ----------------------------------------------------------------- function VerifVG(nom, valeur, enumValeur, lecture) if (fibaro.getGlobalVariable(nom) == "") then -- Test si la variable existe fibaro.getGlobalVariable("") local data = { name = nom, value = valeur, readOnly = false, isEnum = false } -------------------------------------------------------------- -- si lecture = oui alors la variable sera en lecture seule -------------------------------------------------------------- if lecture == "read" then data.readOnly = true end -------------------------------------------------------------- -- si la variable est une variable enumeree -------------------------------------------------------------- if (type(enumValeur) ~= "nil") then data.value = enumValeur[1] data.isEnum = true data.enumValues = enumValeur end -------------------------------------------------------------- -- creation de la variable a partir de la table "data" ------------------------------------------------------------- --print(json.encode(data)) api.post("/globalVariables/", data) fibaro.debug("Scene13", "ok") --print("la variable : ", nom, "a ete cree") else --print("la variable : ", nom, "existe deja") end end ---------------------------------------------------------------------- -- Mise a jour d'une variable global -- ---------------------------------------------------------------------- function UpdateVG(NomVG, Valeurs) if (fibaro.getGlobalVariable(NomVG) == nil) then fibaro.debug("il faut cree la variable "..NomVG) EnvoiPush(string.format("La variable Globale %s n'existe pas ou a ete supprimer", NomVG)) --fibaro:abort() -- fin du programme end --fibaro.debug("Mise a jour de la Variable Globale : "..NomVG.." = "..Valeurs) fibaro.setGlobalVariable(NomVG, Valeurs) end ---------------------------------------------------------------------- -- Vérification de l'heure et mise à jour -- -- de la variable si nécessaire -- ---------------------------------------------------------------------- function UpdateJourNuit(NomVG, heure) heure = os.date("%H:%M", os.time())-------------------------------------------------------------------------modif fibaro.debug("function UpdateJourNuit") local valeurs = "Nuit" -- test si on est le jour ou la nuit if (heure >= leverSoleil) and (heure < coucherSoleil) then valeurs = "Jour" end fibaro.debug(string.format("Lever Soleil : %s - Coucher Soleil : %s", leverSoleil, coucherSoleil)) UpdateVG(NomVG, valeurs) -- mise a jour de la VG Jour_Nuit end ---------------------------------------------------------------------- -- Compare les tables Lever et coucher du soleil -- -- avec sunrisehour et sunsethour -- ---------------------------------------------------------------------- function LeverCoucher(NomVG, TableNom, SunRiseSet, JourNuit) for index, v in ipairs(TableNom) do if (os.date("%H:%M", os.time()+v*-60)) == SunRiseSet then UpdateVG(NomVG, v) if v == 0 then fibaro.debug("il fait : "..JourNuit) UpdateVG(VGJourNuit, JourNuit) end end end end ---------------------------------------------------------------------- -- Conversion Date format texte en format Date -- ---------------------------------------------------------------------- function ConvertionDate(NomDate) -- on extrait l'heure et minute (%d+) est un digit local heure, minute = string.match(NomDate, "(%d+):(%d+)") -- On récupère l'heure et date actuelle sous forme de tableau local TableDate = os.date("*t") -- On modifie l'heure et les minutes TableDate.hour = heure TableDate.min = minute -- Nous pouvons maintenant exploiter "MonHeure" comme une vrai date local MonHeure = os.time(TableDate) return (MonHeure) end ---------------------------------------------------------------------------- -- Calcul la valeur du Sleep en fonction des Max et Mini -- -- des Tables Lever et Coucher -- ---------------------------------------------------------------------------- function calculPause(j, heure, minilever, maxilever, minicoucher, maxicoucher) --fibaro.debug("Heure Actuelle : "..heure) -- mini et max lever local heurelever = ConvertionDate(leverSoleil) local heureleverMini = (os.date("%X", heurelever+(minilever*60))) local heureleverMaxi = (os.date("%X", heurelever+(maxilever*60))) --fibaro.debug("heure Lever Soleil Mini : "..heureleverMini.." - Maxi : "..heureleverMaxi) -- mini et max coucher local heurecoucher = ConvertionDate(coucherSoleil) local heurecoucherMini = (os.date("%X", heurecoucher+(minicoucher*60))) local heurecoucherMaxi = (os.date("%X", heurecoucher+(maxicoucher*60))) --fibaro.debug("heure Coucher Soleil Mini : "..heurecoucherMini.." - Maxi : "..heurecoucherMaxi) if heure >= heureleverMini and heure < heureleverMaxi or heure >= heurecoucherMini and heure < heurecoucherMaxi then j=1 end return (j) end -- =================================================================== -- == Nous avons fini la préparation de notre code == -- == Nous pouvont Exécuter le programme == -- == Script réaliser par MPRINFO Version 3.00B == -- == Grand Merci à STEVEN pour son aide == -- =================================================================== ---------------------------------------------------------------------- -- Envoi d'un Push pour donner la date et l'heure de démarrage -- ---------------------------------------------------------------------- EnvoiPush(string.format("La box a démarré le %s a %s", os.date("%d/%m/%Y"), os.date("%R"))) ---------------------------------------------------------------------- -- Versification si les variables globales existe -- -- et Création ou Modification si Besoin -- ---------------------------------------------------------------------- VerifVG(VGJourNuit, "Jour", {"Jour", "Nuit"}) VerifVG(VGLeverSoleil, "0") VerifVG(VGCoucherSoleil, "0") ---------------------------------------------------------------------- -- Mise a jour de la variable VG Jour_Nuit au Démarrage de la Box -- -- Ou lors de la sauvegarde de la scène -- ---------------------------------------------------------------------- leverSoleil = fibaro.getValue(1, "sunriseHour") coucherSoleil = fibaro.getValue(1, "sunsetHour") print(VGJourNuit, os.date("%H:%M", os.time())) UpdateJourNuit(VGJourNuit)----------------------------------------------------------------modif --UpdateJourNuit(VGJourNuit, os.date("%H:%M", os.time())) --------------------------------------------------------------------- -- Trie des Tables et récupération des valeurs min et maximum -- --------------------------------------------------------------------- -- Traitement de la Table TLever table.insert(TLever, 1, 0) -- ajout de 0 mn dans la table table.sort(TLever) local MiniLever = ((TLever[1]-30)) local MaxiLever = ((TLever[#TLever]+1)) -- Traitement de la Table TChoucher table.insert(TCoucher, 1, 0) -- ajout de 0 mn dans la table table.sort(TCoucher) local MiniCoucher = ((TCoucher[1]-30)) local MaxiCoucher = ((TCoucher[#TCoucher]+1)) --------------------------------------------------------------------- -- Test toute les minutes pour savoir si c'est jour ou nuit -- --------------------------------------------------------------------- fibaro.debug("boucle principale") while true do fibaro.debug("boucle principale 1") local j = 30 local osHeure = os.date("%H:%M", os.time()) leverSoleil = fibaro.getValue(1, "sunriseHour") coucherSoleil = fibaro.getValue(1, "sunsetHour") LeverCoucher(VGLeverSoleil, TLever, leverSoleil, "Jour") LeverCoucher(VGCoucherSoleil, TCoucher, coucherSoleil, "Nuit") j = calculPause(j, osHeure, MiniLever, MaxiLever, MiniCoucher, MaxiCoucher) fibaro.debug(string.format("Valeur du Sleep %s mn",j)) fibaro.sleep(j*60*1000); -- Pause en fonction de la valeur de J end Lien vers le commentaire Partager sur d’autres sites More sharing options...
TonyC Posté(e) le 11 mai 2020 Signaler Partager Posté(e) le 11 mai 2020 (modifié) tu dois valoriser leverSoleil et coucherSoleil, dans le code c'est fait via un get de tes variables globales, mais tu utilises un fibaro.getvalue("varName")mais cette commande n'existe plus il faut la remplacer par fibaro.getGlobalVariable("varName"). Je n'est pas trop regarder le code, mes il y a aussi de nouvelles commandes pour les send push notification. Je pense que la methode pour créer de nouvelles variables à changée, je n'ai pas encore eu à les utiliser, peut être virer cette partie et t'assurer que toutes tes varibles existent bien, au moins dans u premier temps pour dérouler le principal de ton code. il y a 36 minutes, mprinfo a dit : print("lever : ", fibaro.getValue(1, "sunriseHour")) print("Coucher : ", fibaro.getValue(1, "sunsetHour")) devient print("lever : ", fibaro.getGlobalVariable(1, "sunriseHour")) print("Coucher : ", fibaro.getGlobalVariable(1, "sunsetHour")) et il y a 36 minutes, mprinfo a dit : leverSoleil = fibaro.getValue(1, "sunriseHour") coucherSoleil = fibaro.getValue(1, "sunsetHour") devient leverSoleil = fibaro.getGlobalVariable(1, "sunriseHour") coucherSoleil = fibaro.getGlobalVariable(1, "sunsetHour") si tes variables existent et valorisées alors ta fonction devrait être ok. Penses à vérifier le format de tes heures dans tes variables(sunriseHour et sunsetHour) qui doivent être au format %H:%M (13:24) EDIT : Oublie ce que je viens de dire sur le format de l'heure car il y a une fonction qui reformate ... Modifié le 11 mai 2020 par TonyC Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 11 mai 2020 Auteur Signaler Partager Posté(e) le 11 mai 2020 Non pour la création des vg ces okC'est le premier truc que j'ai faisJ'ai posté le code dans le topic snipet Envoyé de mon BLA-L29 en utilisant Tapatalk Lien vers le commentaire Partager sur d’autres sites More sharing options...
TonyC Posté(e) le 11 mai 2020 Signaler Partager Posté(e) le 11 mai 2020 ok nickel alors et merci pour le poste ! donc la correction de la syntaxe du fibaro.getGlobalVariable devrait suffire dans les grandes lignes. Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 11 mai 2020 Auteur Signaler Partager Posté(e) le 11 mai 2020 regarde poste 2 je traite même le readonly des variables 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
TonyC Posté(e) le 11 mai 2020 Signaler Partager Posté(e) le 11 mai 2020 (modifié) Oui c'est vrai j'avais même mis un like ! j'ai une tite tête et donc après modif ça marche ? Modifié le 11 mai 2020 par TonyC 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 11 mai 2020 Auteur Signaler Partager Posté(e) le 11 mai 2020 il y a 25 minutes, TonyC a dit : tu dois valoriser leverSoleil et coucherSoleil, dans le code c'est fait via un get de tes variables globales, mais tu utilises un fibaro.getvalue("varName")mais cette commande n'existe plus il faut la remplacer par fibaro.getGlobalVariable("varName"). Je n'est pas trop regarder le code, mes il y a aussi de nouvelles commandes pour les send push notification. Je pense que la methode pour créer de nouvelles variables à changée, je n'ai pas encore eu à les utiliser, peut être virer cette partie et t'assurer que toutes tes varibles existent bien, au moins dans u premier temps pour dérouler le principal de ton code. devient print("lever : ", fibaro.getGlobalVariable(1, "sunriseHour")) print("Coucher : ", fibaro.getGlobalVariable(1, "sunsetHour")) et devient leverSoleil = fibaro.getGlobalVariable(1, "sunriseHour") coucherSoleil = fibaro.getGlobalVariable(1, "sunsetHour") si tes variables existent et valorisées alors ta fonction devrait être ok. Penses à vérifier le format de tes heures dans tes variables(sunriseHour et sunsetHour) qui doivent être au format %H:%M (13:24) EDIT : Oublie ce que je viens de dire sur le format de l'heure car il y a une fonction qui reformate ... je comprend plus fibaro.debug("Scene21", "demarrage") local LeverJour = fibaro.getValue(1, "sunriseHour") fibaro.debug("Scene21", LeverJour) resultat [11.05.2020] [21:05:25] [DEBUG] [SCENE21]: demarrage [11.05.2020] [21:05:25] [DEBUG] [SCENE21]: 05:58 par contre local leverSoleil = fibaro.getGlobalVariable(1, "sunriseHour") fibaro.debug("Scene21", leverSoleil) resultat [11.05.2020] [21:07:53] [DEBUG] [SCENE21]: demarrage [11.05.2020] [21:07:53] [ERROR] [SCENE21]: (load):3: Assertion failed: Expected string sunriseHour et sunriseHour sont des variables système lié a l'id 1 (compte admin) Lien vers le commentaire Partager sur d’autres sites More sharing options...
TonyC Posté(e) le 11 mai 2020 Signaler Partager Posté(e) le 11 mai 2020 (modifié) C'est quoi que tu ne comprends plus Pascal? mais je vois que tu as laisser un fibaro.getValue que tu dois remplacer par fibaro.getGlobalVariable. Modifié le 11 mai 2020 par TonyC Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 11 mai 2020 Auteur Signaler Partager Posté(e) le 11 mai 2020 regarde j'ai mis a jour le post ta commande ne fonctionne pour sunriseHour il faut utiliser cela LeverJour = fibaro.getValue(1, "sunriseHour") sinon erreur Lien vers le commentaire Partager sur d’autres sites More sharing options...
TonyC Posté(e) le 11 mai 2020 Signaler Partager Posté(e) le 11 mai 2020 mince c'est vrai ça ! attends mais c'est pas une variable qui est réccupérer c'est directement l'heure du sunset/sunrise je suis une quiche ! ok j'ai une idée je vérifie. Désolé de t'avoir embrouillé !!!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 11 mai 2020 Signaler Partager Posté(e) le 11 mai 2020 j'ai pas tout lu, mais dans le premier post, y a des trucs qui clochent avec tes variables ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 11 mai 2020 Signaler Partager Posté(e) le 11 mai 2020 (modifié) l'argument heure, tu le modifie directement dans la fonction !? tu es dans un QA ou une scène ? Modifié le 11 mai 2020 par jjacques68 Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 11 mai 2020 Signaler Partager Posté(e) le 11 mai 2020 les variables lever et cocher de soleil devraient pas être déclaré avant la fonction ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 11 mai 2020 Auteur Signaler Partager Posté(e) le 11 mai 2020 @jjacques68 dans une scène La j envoye arg1 et arg2Mais cela ne passe pas Par contre sur hc2 cela fonctionne nickel Envoyé de mon BLA-L29 en utilisant Tapatalk Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 11 mai 2020 Signaler Partager Posté(e) le 11 mai 2020 (modifié) je parle de la fonction qui est dans le premier post... j'ai eu des cas ou je plaçais mal la déclaration des variables... essaye de placer : local leversoleil, couchersoleil = "", "" avant le code de la fonction. Modifié le 11 mai 2020 par jjacques68 Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 11 mai 2020 Auteur Signaler Partager Posté(e) le 11 mai 2020 Ça c'est la différence entre local ou nonLe soucis c'est que même si je mets rien ou juste un debug dans la fonction j'ai qu'en même l'erreurDans un QA j'ai eu un soucisarg1 disparaît et arg2 passé dans arg1 au niveau de la fonction Envoyé de mon BLA-L29 en utilisant Tapatalk Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 11 mai 2020 Signaler Partager Posté(e) le 11 mai 2020 dans la fonction UpdateJourNuit ? les debug ne fonctionnent pas ? et si tu vires tout dans la fonction et que tu mets juste un debug ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 11 mai 2020 Auteur Signaler Partager Posté(e) le 11 mai 2020 C'est ce que j'ai faisD'ailleurs tu connais pas la commande qui remplace fibaro:abord()Car je m'en servais pas mal Envoyé de mon BLA-L29 en utilisant Tapatalk Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 11 mai 2020 Signaler Partager Posté(e) le 11 mai 2020 non pas fibaro:abord() à ma connaissance. le code que l'on voit dans tes post est à jour ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
TonyC Posté(e) le 11 mai 2020 Signaler Partager Posté(e) le 11 mai 2020 (modifié) j'utilise return, je n'ai plus d'erreur dans ton code mais j'ai pas l'impression que ça fasse ce que ça doit faire car les variables restent à 0 !! je continue ... Modifié le 11 mai 2020 par TonyC Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 11 mai 2020 Auteur Signaler Partager Posté(e) le 11 mai 2020 Et oui je me demande si la gestion des variables n'a pas changerCar si je mets arg2 dans la fonction cela fonctionne Envoyé de mon BLA-L29 en utilisant Tapatalk Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 11 mai 2020 Signaler Partager Posté(e) le 11 mai 2020 j'arrive pas à vous suivre les gars, j'abandonne... 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
TonyC Posté(e) le 11 mai 2020 Signaler Partager Posté(e) le 11 mai 2020 tu peux me dire si c'est un peu mieux : trigger= sourceTrigger print("lever : ", fibaro.getValue(1, "sunriseHour")) print("Coucher : ", fibaro.getValue(1, "sunsetHour")) if (trigger.property == "sunset") then print("id:"..trigger.operator) print("type:"..trigger.type) print("type:"..trigger.value) end -- Nom des Variables Globales local VGJourNuit = "Jour_Nuit" local VGLeverSoleil = "SoleilLever" local VGCoucherSoleil = "SoleilCoucher" -- Minutes de décalages par rapport au lever du soleil local TLever = {-60, -45, -30, -20, -10, 10, 20, 30} -- Minutes de décalages par rapport au Coucher du soleil local TCoucher = {-30, -20, -10, 10, 20, 30, 45, 60} -- Id du téléphone --local IdTel = fibaro:getGlobal("TelPascal") --************ Ne rien modifier en dessous de cette ligne ************ ---------------------------------------------------------------------- -- Envoi d'un Push pour avertir que le box à démarrer ou redémarrer -- ---------------------------------------------------------------------- function EnvoiPush(Message) fibaro.debug(Message) --fibaro:call(IdTel, "sendPush", Message) end -- ----------------------------------------------------------------- -- Vérification Variable Globale et création si besoin -- -- ----------------------------------------------------------------- function VerifVG(nom, valeur, enumValeur, lecture) if (fibaro.getGlobalVariable(nom) == "") then -- Test si la variable existe fibaro.getGlobalVariable("") local data = { name = nom, value = valeur, readOnly = false, isEnum = false } -------------------------------------------------------------- -- si lecture = oui alors la variable sera en lecture seule -------------------------------------------------------------- if lecture == "read" then data.readOnly = true end -------------------------------------------------------------- -- si la variable est une variable enumeree -------------------------------------------------------------- if (type(enumValeur) ~= "nil") then data.value = enumValeur[1] data.isEnum = true data.enumValues = enumValeur end -------------------------------------------------------------- -- creation de la variable a partir de la table "data" ------------------------------------------------------------- --print(json.encode(data)) api.post("/globalVariables/", data) fibaro.debug("Scene13", "ok") --print("la variable : ", nom, "a ete cree") else --print("la variable : ", nom, "existe deja") end end ---------------------------------------------------------------------- -- Mise a jour d'une variable global -- ---------------------------------------------------------------------- function UpdateVG(NomVG, Valeurs) if (fibaro.getGlobalVariable(NomVG) == nil) then fibaro.debug("il faut cree la variable "..NomVG) EnvoiPush(string.format("La variable Globale %s n'existe pas ou a ete supprimer", NomVG)) --fibaro:abort() -- fin du programme end --fibaro.debug("Mise a jour de la Variable Globale : "..NomVG.." = "..Valeurs) fibaro.setGlobalVariable(NomVG, tostring(Valeurs)) end ---------------------------------------------------------------------- -- Vérification de l'heure et mise à jour -- -- de la variable si nécessaire -- ---------------------------------------------------------------------- function UpdateJourNuit(NomVG, heure) heure = os.date("%H:%M", os.time())-------------------------------------------------------------------------modif fibaro.debug("function UpdateJourNuit") local valeurs = "Nuit" -- test si on est le jour ou la nuit if (heure >= leverSoleil) and (heure < coucherSoleil) then valeurs = "Jour" end fibaro.debug(string.format("Lever Soleil : %s - Coucher Soleil : %s", leverSoleil, coucherSoleil)) UpdateVG(NomVG, valeurs) -- mise a jour de la VG Jour_Nuit end ---------------------------------------------------------------------- -- Compare les tables Lever et coucher du soleil -- -- avec sunrisehour et sunsethour -- ---------------------------------------------------------------------- function LeverCoucher(NomVG, TableNom, SunRiseSet, JourNuit) for index, v in ipairs(TableNom) do if (os.date("%H:%M", os.time()+v*-60)) == SunRiseSet then UpdateVG(NomVG, v) if v == 0 then fibaro.debug("il fait : "..JourNuit) UpdateVG(VGJourNuit, JourNuit) end end end end ---------------------------------------------------------------------- -- Conversion Date format texte en format Date -- ---------------------------------------------------------------------- function ConvertionDate(NomDate) -- on extrait l'heure et minute (%d+) est un digit local heure, minute = string.match(NomDate, "(%d+):(%d+)") -- On récupère l'heure et date actuelle sous forme de tableau local TableDate = os.date("*t") -- On modifie l'heure et les minutes TableDate.hour = heure TableDate.min = minute -- Nous pouvons maintenant exploiter "MonHeure" comme une vrai date local MonHeure = os.time(TableDate) return (MonHeure) end ---------------------------------------------------------------------------- -- Calcul la valeur du Sleep en fonction des Max et Mini -- -- des Tables Lever et Coucher -- ---------------------------------------------------------------------------- function calculPause(j, heure, minilever, maxilever, minicoucher, maxicoucher) --fibaro.debug("Heure Actuelle : "..heure) -- mini et max lever local heurelever = ConvertionDate(leverSoleil) local heureleverMini = (os.date("%X", heurelever+(minilever*60))) local heureleverMaxi = (os.date("%X", heurelever+(maxilever*60))) --fibaro.debug("heure Lever Soleil Mini : "..heureleverMini.." - Maxi : "..heureleverMaxi) -- mini et max coucher local heurecoucher = ConvertionDate(coucherSoleil) local heurecoucherMini = (os.date("%X", heurecoucher+(minicoucher*60))) local heurecoucherMaxi = (os.date("%X", heurecoucher+(maxicoucher*60))) --fibaro.debug("heure Coucher Soleil Mini : "..heurecoucherMini.." - Maxi : "..heurecoucherMaxi) if heure >= heureleverMini and heure < heureleverMaxi or heure >= heurecoucherMini and heure < heurecoucherMaxi then j=1 end return (j) end -- =================================================================== -- == Nous avons fini la préparation de notre code == -- == Nous pouvont Exécuter le programme == -- == Script réaliser par MPRINFO Version 3.00B == -- == Grand Merci à STEVEN pour son aide == -- =================================================================== ---------------------------------------------------------------------- -- Envoi d'un Push pour donner la date et l'heure de démarrage -- ---------------------------------------------------------------------- EnvoiPush(string.format("La box a démarré le %s a %s", os.date("%d/%m/%Y"), os.date("%R"))) ---------------------------------------------------------------------- -- Versification si les variables globales existe -- -- et Création ou Modification si Besoin -- ---------------------------------------------------------------------- VerifVG(VGJourNuit, "Jour", {"Jour", "Nuit"}) VerifVG(VGLeverSoleil, "0") VerifVG(VGCoucherSoleil, "0") ---------------------------------------------------------------------- -- Mise a jour de la variable VG Jour_Nuit au Démarrage de la Box -- -- Ou lors de la sauvegarde de la scène -- ---------------------------------------------------------------------- leverSoleil = fibaro.getValue(1, "sunriseHour") coucherSoleil = fibaro.getValue(1, "sunsetHour") print(VGJourNuit, os.date("%H:%M", os.time())) UpdateJourNuit(VGJourNuit)----------------------------------------------------------------modif --UpdateJourNuit(VGJourNuit, os.date("%H:%M", os.time())) --------------------------------------------------------------------- -- Trie des Tables et récupération des valeurs min et maximum -- --------------------------------------------------------------------- -- Traitement de la Table TLever table.insert(TLever, 1, 0) -- ajout de 0 mn dans la table table.sort(TLever) local MiniLever = ((TLever[1]-30)) local MaxiLever = ((TLever[#TLever]+1)) -- Traitement de la Table TChoucher table.insert(TCoucher, 1, 0) -- ajout de 0 mn dans la table table.sort(TCoucher) local MiniCoucher = ((TCoucher[1]-30)) local MaxiCoucher = ((TCoucher[#TCoucher]+1)) --------------------------------------------------------------------- -- Test toute les minutes pour savoir si c'est jour ou nuit -- --------------------------------------------------------------------- fibaro.debug("boucle principale") while true do fibaro.debug("boucle principale 1") local j = 30 local osHeure = os.date("%H:%M", os.time()) leverSoleil = fibaro.getValue(1, "sunriseHour") coucherSoleil = fibaro.getValue(1, "sunsetHour") LeverCoucher(VGLeverSoleil, TLever, leverSoleil, "Jour") LeverCoucher(VGCoucherSoleil, TCoucher, coucherSoleil, "Nuit") j = calculPause(j, osHeure, MiniLever, MaxiLever, MiniCoucher, MaxiCoucher) fibaro.debug(string.format("Valeur du Sleep %s mn",j)) fibaro.sleep(j*60*1000); -- Pause en fonction de la valeur de J end il y a 1 minute, jjacques68 a dit : j'arrive pas à vous suivre les gars, j'abandonne... juste 2 vieux qui codent comme des pieds enfin moi c'est certain !! 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés