Aller au contenu

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


mprinfo

Messages recommandés

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()
Lien vers le commentaire
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
Lien vers le commentaire
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

Lien vers le commentaire
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...

 

 

 

Lien vers le commentaire
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

Lien vers le commentaire
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()
Lien vers le commentaire
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
Lien vers le commentaire
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.

Lien vers le commentaire
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
Lien vers le commentaire
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??

Lien vers le commentaire
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
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...