Aller au contenu
mprinfo

Scene Lua - Trigger Horaire Sans Boucle While ... Do

Recommended Posts

supprimer %% autostart du scènario   :60:


 


- changer la variable JourChome et appuyer sur le bouton de ton VD comme tu l'as fait précédément.


- Vérifier les stores              ca ouvre :(  :(  :(  :(


- remettre %%autostart


- rechanger la viariable et appuyer sur le bouton


- revérifier les stores ca ouvre :(  :(  :(  :(


 


scenario 33 ouverture du volet cuisine


 


 


donc fo que je cherche  mon probleme!!!!


 


 


j ai supprime tous les jourchome que j ai pu trouvé dans les entetes ( desole j en ai trouvé 2 :15: ) 


mais le moment c est toujours pareil!!


 


je sui s plus tranquille demain je reviens vers vous dans la matiné je serai peut etre plus frais pour en trouver qui se cache!


 


 


desole de vous faire perdre votre temps


Modifié par vjoubin

Partager ce message


Lien à poster
Partager sur d’autres sites

On aura perdu notre temps si on n'arrive pas à  trouver le problème  :P

 

Sur le modèle d'un autre de mes scénario, je viens de créer un scénario qui va rechercher les mots "JourChome" et "JourChomeJ1" dans toute ta HC2. Il suffit de créer une nouvelle scène LUA, de coller le code ci-joint et de voir le résultat.

 

137318finder.png

Finder_HC2_v1.0.lua

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

merci Steven

 

j ai simplifié le pb

 

j ai créé deux VG avec JC et JCJ1 et avec valeur YES ou NO

 

j ai créé module virtuel ESSAI qui calcul JC et JCJ1

 

j ai modifié les différents scripts en conséquence

 

et .......

 

 

 

 

 

 

CA A l'AIR DE FONCTIONNER car en cas d'appuie sur le calcul il ne se passe rien en ayant la valeur des variables global manuellement avant!!

 

je ne sais pas si je me fais comprendre :P

 

et ce we je vais chercher ou le reste des JourChome est caché!!!!

 

 

merci encore à  vous c est vraiment super ce que vous faites pour les gros bétas comme moi !

 

 

bonne journée et bon we :60:  :60:  :60:  :60:  :60:  

Partager ce message


Lien à poster
Partager sur d’autres sites

On est tous des gros bétas (testeurs) pour Fibaro  :P

 

Une communauté sert justement à  s'entre aider donc hésite pas, si tu as besoin de casser quelque chose ... on est toujours là .

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Désolé de déterrer ce sujet.

Pour info, j'avais un besoin plus ou moins similaire que celui exposé dans le premier post, à la différence que je souhaitais une précision au quart d'heure.

J'ai donc effectué quelques modifications au script d'origine, ai créé deux variables globales : TIME_HEURE et TIME_QUART_HEURE et ai mis ce code dans une scène :

 

Attention toutefois à la valeur de la variable IDScene si vous souhaitez l'utiliser chez vous !

 

 

 

Citation

--[[
%% autostart
%% globals
TIME_QUART_HEURE
--]]
local Minutes = tonumber(os.date("%M", os.time()));
local trigger = fibaro:getSourceTrigger();

local IDScene = 48;

-- Démarrage
fibaro:debug("Démarrage en cours...");

-- On se cale sur un horaire précis
if ( Minutes ~= 0 and Minutes ~= 15 and Minutes ~= 30 and Minutes ~= 45 ) then
  fibaro:debug("Pas un quart d'heure pile. Standbye de 1mn avant d'effectuer à nouveau la vérification.");
  fibaro:sleep(60*1000);
  fibaro:startScene(IDScene);
 
  if fibaro:countScenes() > 1 then
    fibaro:debug("Plus d'une scène active. Scène actuelle tuée.");
    fibaro:abort()
  end
-- xxh00 ou xxh15 ou xxh30 ou xxh45
else
  -- On met à jour la variable QUART HEURE
  fibaro:setGlobal("TIME_QUART_HEURE", Minutes);
  fibaro:debug("Mise à jour des minutes effectuées ("..Minutes.."mn). Prochaine mise à jour dans 15mn.");
  local Heure = tonumber(os.date("%H", os.time()));

  -- On met à jour l'heure si nouvelle
  if Minutes == 0 then
     fibaro:setGlobal("TIME_HEURE", Heure);
     fibaro:debug("Mise a jour VG Heure : "..Heure);
  end
 
 

  -- Tempo 15mn (un peu moins pour compenser le retard qui va être pris au fur et à mesure)
  fibaro:sleep(899850);
  fibaro:startScene(IDScene);

end

 

 

Cela semble fonctionnel et stable !

Peut être existe-t'il plus simple depuis le sujet original ?

Modifié par J3R3M

Partager ce message


Lien à poster
Partager sur d’autres sites

Le but originel étant de se passer d'une boucle synchrone while, il y a désormais setTimeout qui permet de faire le job :

 

local function myFunction()

  instructions

  setTimeout(myFunction, 15 * 60 * 1000)

end

 

Ce qui te relance la fonction myFunction toutes les 15 minutes.

 

PS : La balise code ne marche plus ?

 

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

@OJC, merci de ta réponse.

Je ne connais pas encore cette fonction et vais me renseigner sur celle-ci !

 

Étrangement, non, la balise code charge à l'infini et ne me permet pas de saisir quoi que ce soit.

Mais, je n'ai pas encore essayé depuis un autre ordi ou depuis un autre navigateur.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour, 

Juste pour info, j'ai voulu tester la scène (j'ai besoin de faire un déclenchement tous les soir à 23h00) mais ça ne semble plus fonctionnel.

ma VG Heure ne se met pas à jour et DemiHeure.

Dans le debug j'ai :

[DEBUG] 11:26:11: Demarrage en cours...
[DEBUG] 11:26:11: Nombres de Scéne en cours : 1
[DEBUG] 11:27:11: Mise a jour Variable : 4mn
[DEBUG] 11:31:11: mise a jour VG DemiHeure31

 

et plus rien après

Du coup je vais trouver une autre solution

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour
Tu as mis combien d'instance pour ta scène ?
Chez moi cela fonctionne très bien depuis des années

Envoyé de mon BLA-L29 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Il n'y a que 1 instance (2 maxi de configuré).

 

Je remet la scène complète ici (au cas ou j'aurais loupé qqchose :

 

--[[
%% autostart
%% globals
DemiHeure
--]]

-- https://www.domotique-fibaro.fr/topic/4713-scene-lua-trigger-horaire-sans-boucle-while-do/



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

 

Débug du jour :

 

[DEBUG] 11:39:15: Demarrage via autostart

Partager ce message


Lien à poster
Partager sur d’autres sites

×