Aller au contenu
mprinfo

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

Recommended Posts

Voici une proposition

--[[
%% autostart
--]]

function tempFunc()
  
  local currentDate = os.date("*t")
  local sourceTrigger = fibaro:getSourceTrigger()
  local JourChome = fibaro:getGlobalValue("JourChome")
  
  local heureTravail = (JourChome == "NON") and (os.date("%H:%M", os.time()-30*60) == fibaro:getValue(1, "sunriseHour"))
  local heureConge = (JourChome == "OUI") and (string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "08:45"))
  local auto = sourceTrigger["type"] == "autostart"
  
  if (heureTravail or heureConge or not(auto) then
    fibaro:call(112, "open")
    if (auto) then fibaro:call(255, "pressButton", "2") end
    setTimeout(function() fibaro:startScene(33); end, 10000)
    setTimeout(function() fibaro:startScene(32); end, 15000)
    setTimeout(function() fibaro:startScene(34); end, 20000)
    setTimeout(function() fibaro:startScene(37); end, 25000)
  end
  if (auto) then setTimeout(tempFunc, 60*1000) end
end

tempFunc()

Partager ce message


Lien à poster
Partager sur d’autres sites

SUPER

 

merci STEVEN

je suis un pietre debutant et j'ai une erreur

[DEBUG] 17:46:44: line 12: unexpected symbol near ')'

 

je ne vois pas ou ??

 

merci de ton aide

autre question

possible de faire cela en GEA??

 

je louche à  force de lire le support GEA et je n 'en suis qu"à  la page 97 en une semaine!!

Modifié par vjoubin

Partager ce message


Lien à poster
Partager sur d’autres sites

if (heureTravail or heureConge or not(auto) ) then

 

ma faute, j'ai oublié cette fin de parenthèse.

 

Oui, en GEA, c'est possible mais par contre, il n'y a pas d'option pour différer l'ouverture des volets comme tu le fais avec 5s d'intervalle.

 

Après, un bon script qui fonctionne n'a pas de raison d'être remplacé.

 

Page 97 ... tu m'as battu  :D j'en suis toujours à  la 12  :P

Partager ce message


Lien à poster
Partager sur d’autres sites

MERCI 

 

pour tes compétences, ta réactivité

 

je suis tout simplement  EPATE!!

 

BRAVO

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Joli code @Master,

 

J'ai encore appris, je ne pensais aps qu'on pouvait déclarer une variable dans laquelle on peut comparer ;-)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour STEVEN,

 

désolé de revenir sur le sujet mais cette nuit à  minuit ouverture de mes volets !!

 

sinon ce matin pas de soucis

 

as tu une idée d'ou cela peut venir? ma variable JourChome se met à  jour à  minuit...

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

As-tu mis quelques choses dans l'entête de ton script, autre que %%%autostart?

Envoyé de mon SM-G935F en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai relu le code, et je ne pense pas qu'il soit en faute. N'y aurait t'il pas une autre scene qui déclenche celle-ci àminuit ?

Partager ce message


Lien à poster
Partager sur d’autres sites

desole pour la reponse tardive

je suis en voiture

a priori non

je verifie tte a l heure

et je vois cette nuit si ca recommence

la mise a jour de la variable jourchome a minuit n entraine pas le pb?

je reviens vers toi demain soir

merci encore

Partager ce message


Lien à poster
Partager sur d’autres sites

voici mon script STEVEN

 

--[[
%% autostart
--]]
 
function tempFunc()
 
  local currentDate = os.date("*t")
  local sourceTrigger = fibaro:getSourceTrigger()
  local JourChome = fibaro:getGlobalValue("JourChome")
 
  local heureTravail = (JourChome == "NON") and (os.date("%H:%M", os.time()-30*60) == fibaro:getValue(1, "sunriseHour"))
  local heureConge = (JourChome == "OUI") and (string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "08:45")
  local auto = sourceTrigger["type"] == "autostart"
 
  if (heureTravail or heureConge or not(auto)) then
    fibaro:call(258, "pressButton", "1")
    if (auto) then fibaro:call(255, "pressButton", "2") end
    setTimeout(function() fibaro:startScene(33); end, 10000)
    setTimeout(function() fibaro:startScene(32); end, 15000)
    setTimeout(function() fibaro:startScene(34); end, 20000)
    setTimeout(function() fibaro:startScene(37); end, 25000)
  end
  if (auto) then setTimeout(tempFunc, 60*1000) end
end
 
tempFunc()

Partager ce message


Lien à poster
Partager sur d’autres sites

je viens de changer manuellement la variable JourChome et JourChomeJ1 à  oui

 

puis je lance manuellement le calcul du vd

 

et la j ai mes volets qui s'ouvrent!!!

 

donc cela vient bien de ça!

 

une idée??

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu n'as pas une autre scene qui est liée àla variable JourChome ?

Partager ce message


Lien à poster
Partager sur d’autres sites

j ai ca

 

--[[
%% autostart
%% properties
%% events
%% globals
--]]
 
local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( ((JourChomeJ1 == NON) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "22:40") )
or
 ( ((currentDate.wday == 2) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "23:00") )
)
then
fibaro:call(255, "pressButton", "2");
end
 
setTimeout(tempFunc, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
tempFunc()
else
 
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
startSource["type"] == "other"
)
then
fibaro:call(255, "pressButton", "2");
end
 
end

Partager ce message


Lien à poster
Partager sur d’autres sites

Ca gere tes volets aussi cela non ?

fibaro:call(255, "pressButton", "2")
  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Attention si tu lance manuellement le scénario il va automatiquement ouvrir tes volets peut importe la valeur de JourChome.

Tu ne peux donc pas tester ainsi.

Créer un scénario qui change la valeur de JourChome pour voir ce qui ce passe.

Changer la valeur depuis le panneau des variables ne démarre pas les scénario c c'est pour cela qu'il faut créer un scénario de test.

Partager ce message


Lien à poster
Partager sur d’autres sites

mon gea  met a jour la variable à  minuit

 

 

 
local id = {
 
--sdb parents
SONDE_EXT_SDB = 184, SDB_PARENTS = 172, SECHE_SERVIETTE_PARE = 19, 
--dressing
CHAUF_DRESSING = 23, 
--chambre parents
SONDE_CH_PARENTS = 183, CHAUFF_PARENTS_JARDI = 174, VOLET_PARENTS_JARDIN = 75, CHEVET_SJ = 156, VOLET_PARENT_GARAGE = 73, CHAUFFAGE_PARENTS_GA = 37, SPOTS_PARENTS = 110, TV_PARENTS = 107, 
--chambre jj
CHAUFFAGE_JJ = 69, VELUX_JJ = 129, FENETRE_JJ_ = 239, TEMP_CH_JJ = 241, CHAMBRE_JJ = 132, 
--sdb jj
SECHE_SERVIETTE_JJ = 35, 
--chambre lj
FENETRE_CH_LJ = 243, CHAMBRE_LJ = 134, CHAUFFAGE_LJ = 25, VELUX_LJ = 108, TEMP_CH_LJ = 245, 
--chambre amis
VELUX_AMIS = 130, SPOTS_CH_AMIS = 136, CHAUFFAGE_AMIS = 27, 
--couloir kids
COULOIR_KIDS = 122, ALARME_FUM_ETAGE = 234, DETECTEUR_FUM_ETAGE = 233, TEMP_DETEC_FUM_ETAGE = 235, 
--sdb amis
CHAUFFAGE_SDB_AMIS = 29, SECHE_SERVIETTE_AMIS = 31, 
--bureau
FGD_BUREAU = 138, TEMP_BUREAU = 150, PRESENCE_BUREAU = 149, LUM_BUREAU = 151, 
--sdj
TV_SDJ = 41, SPOTS_SDJ = 43, PORTE_SDJ = 192, 
--entree
_TEMP_ENTRE = 229, PRESENCE_ENTRE = 228, COULOIR_ENTREE = 198, PORTE_ENTREE = 231, ESCALIER = 55, ENTRE = 230, PRESENCE_ENTRE_ENTRE = 227, LUSTRE_ENTRE = 205, 
--salon
TV_SALON = 8, SPOTS_SALON = 47, VOLET_GAUCHE = 13, SONDE_SALON = 181, VOLET_DROITE = 90, VOLET_SAM_ = 92, VOLET_BAIE_SALON = 112, CAPTEUR_FIBARO_SALON = 79, CAPTEUR_FIBARO_SALON_SALON = 80, _OUV_BAIE_SALON = 160, DETECTEUR_FIB_SALON = 78, LAMPE_SALON = 255, 
--allee
CAM_PORTAIL = 216, PORTAIL = 114, SPOTS_ALLEE = 59, 
--jardin
CHAUF_GARAGE = 118, TEMP_GARAGE = 180, TERRASSE_BOIS = 253, PORTE_SALLE_SPORT = 120, SPOTS_JARDIN = 51, 
--piscine
BAIE_PISCINE = 210, SAS_PISCINE = 190, PORTE_PISCINE_16 = 212, 
--cuisine
CAFETIERE = 6, SONDE_EXT_CUISINE = 182, PORTE_CUISINE = 194, VOLET_CUISINE = 93, 
--chaufferie
PORTE_CHAUFFERIE = 196, CHAUFFERIE = 202, TEMP_CHAUFFERIE = 177, DETEC_FUME_CHAUFFER = 176, ALARME_CHAUFFERIE = 178, 
--scripts et param
ESSAI_REBOT = 179, EVENEMENTS = 165, ZIBASE = 98, JOUR_CHEOME = 256, 
--chambre gj
TEMP_CH_GJ = 249, PORTE_GJ = 247,} 
 
 
 
-- Ajouter ici les événements à  exécuter / Add here events to schedule
-- Une liste d'exemples est disponible dans un fichier annexe samples.lua / A samples list is available in another file called samples.lua
function setEvents()
 -- eteindre  id si allumé depuis x minutes
GEA.add(id["LUSTRE_ENTRE"], 2*60, "", {{"turnOff"}})
GEA.add(id["SPOTS_SDJ"], 60*60, "", {{"turnOff"}})
GEA.add(id["ESCALIER"], 1*60, "", {{"turnOff"}})
GEA.add(id["COULOIR_ENTREE"], 2*60, "", {{"turnOff"}})
GEA.add(id["COULOIR_KIDS"], 1*60, "", {{"turnOff"}})
GEA.add(id["SPOTS_ALLEE"], 2*60, "", {{"turnOff"}})
  
  
-- Si la variable est à  jour et qu'on est après le couché du soleil, on remet à  nuit
GEA.add({"Global", "jour_nuit", "jour"}, 60, "", {{"Time", "Sunset", "Sunrise"}, {"Global", "jour_nuit", "nuit"}})
 
-- Si la variable est à  nuit et qu'on est après le levé du soleil, on remet à  jour
GEA.add({"Global", "jour_nuit", "nuit"}, 60, "", {{"Time", "Sunrise", "Sunset"}, {"Global", "jour_nuit", "jour"}})
 
-- controle etat bateries faibles  
GEA.add({"Batteries", 25}, 12*60*60, "Message automatiquement remplacé", {{"Repeat"}})   -- Vérifie tout les modules à  piles et envoie un message "Pile faible #name# #valeur#"
 
-- si tv salon éteinte entre 21h et 1 h et conso wp tv salon inf à  30w on allume spots salon
GEA.add({"Sensor-", id["TV_SALON"], 30}, 5, "", {{"Time", "22:00", "01:00"}, {"turnOn", id["SPOTS_SALON"]}})
 
-- notif porte entree ouverte entre 23H30 et 6H  
GEA.add(id["PORTE_ENTREE"], -1, " porte entrée ouverte", {{"Time", "23:30", "06:00"}})
  
-- calcul jour chome
GEA.add({"Global", "", ""}, 30, "", {{"VirtualDevice", id["JOUR_CHEOME"], 3},{"Time", "00:00", "00:01"}})
  
  
end

Partager ce message


Lien à poster
Partager sur d’autres sites

ce que j ai fait toute àl heure j ai changé la variable maunellement de jour chome

puis j ai appuyé sur le bouton calcul du vd jour chome et mes volets se sont ouverts

ca revient àfaire ce que mon gea fait àminuit

par contre si jour chome est deja ànon alors le fait d appuyer sur calcul ne les ouvre pas

donc cette nuit ils ne devraient pas s'ouvrir car il n y aura pas de changement dans la vg??

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu es sûr de ne pas avoir un autre scénario qui traîne avec JourChome dans son en-têtes ? Allez dis moi que oui stp

Partager ce message


Lien à poster
Partager sur d’autres sites

non STEVEN 

rien avec entete jourchome :wacko:

 

j ai créé jourchome ce we et je n ai que 2 scenes qui l'utilisent

 

la tienne et celle que j ai posté tte à  l heure

Modifié par vjoubin

Partager ce message


Lien à poster
Partager sur d’autres sites

Le soucis est qu'il est impossible que le changement de la variable "JourChome" ne déclenche le scénario. 

 

Ce qu'il faudrait faire pour tester c'est :

 

- supprimer %% autostart du scènario

- 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

- remettre %%autostart

- rechanger la viariable et appuyer sur le bouton

- revérifier les stores

 

Cela a pour but de discriminer ou non ce scénario.

 

Tiens maintenant que j'y pense, il y a quoi dans ton scénario 33 (curiosité) ?

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×